Archive for August, 2008

The users of Hotmail

Monday, August 18th, 2008

On this box one of our customers has, the mailqueue never gets empty. Here’s why:

# mailq | perl -ne ' /\@(.*ot.*)\.com/ and { print $1 . "\n" } ' | sort | uniq -c | sort -n
2 hootmail
2 hotail
2 hotmain
2 hotmeil
2 notmail
3 hotmaill
3 hotmial
4 jotmail
5 hotmail2
5 hotmaile
5 hotmaol
5 hotnail
8 otmail
14 hotmai

Now, how difficult is it?

How I made the iPhone sync my calendar over air

Monday, August 18th, 2008

Some days ago a friend of mine upgraded his iPhone to firmware 2.0, and boasted modestly on how he could sync his MS Exchange Calendar over air. Note that working calendar sync, and even by air is, of course, the holy grail of all mobile equipment, even for sales people.

Some months ago, I used the quite crude tool called ical2sqlite and some simple perl scripting, and built a proof-of-concept one-way sync from an ical source (OpenXchange) to the iPhone calendar via a Linux box. Now, recently I tested Saurik’s awsome porting work of a more or less complete Debian based GNU/Darwin userland, with dpkg, apt-get and a complete GCC based tool chain. Then the thought awoke: The hack should be doable again, and this time with nothing but the iPhone. No cross compilers. No helping computers. Just a simple over air sync.

And some hours later, it was done. The hard bits:

  • The standard C++ libraries lacked a symlink. This gave confusing linker errors.
  • GNU autotools do not support the iPhone “unix” environment yet. Thus, it was a bit difficult to get the standard configure script to understand the underlying platform, and it took a bit of guessing and trying to force through a working string.
  • Find and fix a WIN32 related bug in the ical source. (The bug is fixed in version 0.31, but I could not get that to build)

I have only tested the following on a “standard” jail-breaked iPhone, running sshd on firmware 1.1.4. You need to know the root password. Google it up and change it if you have not done so already. Note that some of the steps may take quite some time.

Also note that this is not for the faint hearted first time iPhone users. This receipe will probably brick your phone, make random calls to your friends and call them unmentionable names, spring to pieces, and hurt your uncle Bob with the shards. If something breaks, you may keep all the parts. Don’t blame me. You have been warned. On the other hand, if you know some UNIX, this is just simple downloading, patching, compiling and scriping, and no rocket science.

Remember that this is a one-way sync. All info in your iPhone calendar will be erased, and replaced with the contents of the ical source.

Start with making sure the phone does not autolock, to prevent it going into “sleep” mode, so you don’t break your network connection while it’s at its most exciting (yaaawn).

From the Apptapp installer, install Perl. Then install Cydia. This may take som time, so make yourself som coffee while you wait. Follow the on-screen instrucions.

Quit the AppTapp installer, and start Cydia. Install Tapp, wget, SQLite v3, iPhone-headers, patch, libgcc, ssh, gcc, bison, flex and make. Did I forget something? Probably. This will take a while, so drink some of the coffee while waiting.

You should now have a somewhat semi-complete GNU-like build environment on a kind-of computer that is almost, but not completely different from a GNU-based UNIX-like system.

If you haven’t done this already, change the root password. The info is all over the net.

Now log into the phone using ssh. (If you are of the kind of people that likes to hurt themselves, it might also be doable via a local console shell.)

$ ssh root@iphone

Add a missing symlink for libstdc++

# cd /usr/lib
# ln -s libstdc++.6.0.4.dylib libstdc++.dylib

Change user to mobile

# su - mobile

Now we are ready for some serious work. First, we need to get a working version of FreeAssociation, that is, libical. Note that the newer version 0.31 won’t compile because of some bison/yacc issue. If you find a solution to this, add a comment or send me a mail.

$ wget http://garr.dl.sourceforge.net/freeassociation/libical-0.30.tar.gz

Unpack the source

$ tar xvzf libical-0.30.tar.gz

Get a small patch that moves an error related to WIN32 away from our context

$ wget http://init.linpro.no/ingvar/iphone/icaltimezone.nowin32.patch
$ patch -P0 < icaltimezone.nowin32.patch

The source needs perl to build, so add it to your path first.

$ export PATH=$PATH:/opt/iphone/bin # perl is there

Then configure and build the source.

$ cd libical-0.30
$ ./configure -build=arm-apple-darwin9.0.0d1

Have another cup while waiting. Fun, isn't it? Then Build the binaries.

$ make

Have yet another cup. Take a walk. Visit a friend you haven't seen for a while. Then return to your compilation. If you're lucky, it's finished.

Exit to root. Then install the binaries. They will go to /usr/local.

$ exit
# cd ~mobile/libical-0.30
# make install

libical is unable to use the iPhone's own timezone database, so install it's own

# cd zoneinfo
# make install

So, we have a complete libical. The next step is to get that hideous thingie called ical2sqlite. Become the mobile user again, download and unpack the source.

# su - mobile
$ export PATH=$PATH:/opt/iphone/bin
$ wget ftp://ftp.uninett.no/linux/ubuntu/pool/universe/i/ical2sqlite/ical2sqlite_0.1.orig.tar.gz
$ tar xvzf ical2sqlite_0.1.orig.tar.gz

Now, configure and build the source. Have your coffee pot ready.

$ cd ical2sqlite
$ ./configure -build=arm-apple-darwin9.0.0d1 && make

Exit to root and install the binary

$ exit
# cd ~mobile/ical2sqlite
# make install

The binary bits are now ready. Time for some scripting action.

# su - mobile
$ wget http://init.linpro.no/ingvar/iphone/update_calendar
$ chmod +x update_calendar
$ vi update_calendar

You know how to use the vi editor, right? You should at least change username, password, timezone and zuluoffset according to your calendar settings. Correct timezone and zuluoffset=0 worked well with my settings. For more info about the script, see my previous posting.

Then, you are ready to try the magic. From Cydia, install MobileTerminal. Start the terminal. Run the script

$ ./update_calendar

You're done, and might want to check the calendar.

To access this without starting a shell, I used the tool "Tapp". Now, what I want is a tool that makes this available as a Springboard icon, but without building a complete package. I think Erica Sadun's tool "Launch" can do this, but it is not available for firmware 1.1.4.

Next stop: Make a real two-way sync? That would take som serious programming. I'm not serious.

Mark Twain: The Humor of Mark Twain

Sunday, August 17th, 2008

En samling noveller, historier og anekdoter av og med Mark Twain, de fleste fulle av en herlig blanding av løgn, påhitt, og spor av sannhet. Noen av dem er bare fantastisk morsomme. Andre er ganske bitende sarkastisk parodi på samfunnslivet i USA på tiden fortellingene ble skrevet. Alle er svært leseverdig. Anbefales varmt.

Anne-Cath Vestly: Åtte små, to store og en lastebil + Mormor og de åtte ungene i skogen

Sunday, August 17th, 2008

Som høytlesning for guttene underveis i bilen i sommer pløyde vi de første bøkene i serien om Mormor og de åtte ungene. De fenget like bra for mine unger som for meg da jeg var liten, selv om de ble skrevet på slutten av femtitallet. Jeg var innom en bokhandel i Ålesund og spurte etter bok nummer tre, men ble latterliggjort av en arrogant bokhandler som mente at disse bøkene burde rives ut av bokhylla, fordi de ikke var up to date. Han var en dust. Serien anbefales sterkt for alle barn. Burde være obligatorisk.

Boris Akunin: Murder on the Leviathan

Friday, August 8th, 2008

1878. Lord Littleby, hans to barn, og hele tjenerskapet hans blir drept i Paris, og hele Europa snakker om det. Det finnes ledetråder på åstedet som sender politietterforsker Gustave Gauche på et cruise til India, ombord i The Leviathan, et luksusskip for de velbeslåtte. Der treffer han vår helt Erast Fandorin, som går fra å være hovedmistenkt til å nøste opp trådene og løse mysteriet.

Denne boka er en ren etterlikning av Agatha Christie, uten at den blir det minste mindre leseverdig av den grunn. Anbefales.

Jan Guillou: Riket ved veiens ende

Thursday, August 7th, 2008

Avsluttningen av historien om Arn og Cecilia. Arns tjeneste som tempelridder er over, og Cecilia slipper til slutt ut av kloster. Arn starter på hjemreisen, men Cecilia blir bedt om å ta klosterløftene og bli priorinne i et nytt kloster. Rekker Arn fram i tide? Spenningen er til å ta og føle på i damebok-fra-middelalderen-stil. Arn har med seg masse penger og masse krigserfaring hjem, og er dessuten en levende legende i hjemlandet. Han blir overbevist av Jomfru Maria at han skal bruke alt dette til å skape et rike for alle i distriktet, og resten av boka går med på å fortelle hvordan han får til dette, med kamp og renker mot den ene fienden etter den andre. Masse å kose seg med både for kvinnelige og mannlige lesere. En av historiene som blir vevd inn er en skikkelig røversak der Arns spion blir sendt inn i fiendens leir, og i James Bond / Romeo og Julie -stil, vinner kongens tillit, nedkjemper marsken i kamp, og får prinsessens gunst. Flott bok, morsom avslutning på historien, og resultatet blir selvsagt Sverige. Anbefales.

Jan Guillou: Tempelridderen

Thursday, August 7th, 2008

Historien om Arn og hans tilkommende Cecilia fortsetter. Cecilia og Arn venter barn, men det blir oppdaget at Arn har hatt en affære med Cecilias søster, og de blir dømt til soning i 20 år i Guds tjeneste for å unngå bannlysning. Cecilia blir sendt i kloster, og Arn som tempelridder til det hellige land. I klosteret utsettes Cecilia for stygg behandling av priorinnen, men allierer seg med en kvinne som muligens blir den neste dronningen. Disse delene av boka er underholdende, men har litt for høy damebok-fra-middelalderen-faktor for min smak. Mer artig er selvsagt historiene om Arns bedrifter i Gaza og Jerusalem. Arn møter hovedfienden Saladin over et glass ved leirbålet, er på nippet til å skape fred i Midtøsten (slik som sin “grandonkel” Carl Hamilton), men taper til slutt kampen om det hellige land mot Saladin på grunn av udugelige og ugudelige renkesmeder/politikere i Vatikanet og ved hoffet i Jerusalem. Noen spark til andre kjente korsfarere blir ikke utelatt, og riktig så artig blir det underveis.

Guillou skjuler ikke sin politiske agenda, men det er helt i orden. Arns evne til å forstå og tale muslimenes sak, gjerne med våpen i hånd, i en kristendominert kultur er ikke akurat forkledd. Hovedpersonenes rene og inderlige tro på Gud og den hellige jomfru, og deres gode vilje er flott og overbevisende beskrevet, og speiler sannsynligvis den tidens gudsbilde godt. Man blir nesten religiøs av å lese den, som en kompis som også har lest boka nevnte.

Anbefales, like gjerne som den første boka.