I'm a fan of Mac Mail (Mail.app). It looks nice, it renders fonts very nicely it creates mails conforming to the relevant RFCs and it basically supports most of the requirements I've posted back in 2003.

There are some drawbacks though. First one is no proper IMAP search support. This is not as bad as it sounds as the local full text index works very nicely (faster than our exchange server) and it's even integrated into Spotlight.

Then, the threading support sucks as it's not multi-level. This does not matter as much as back in 2003 though as my daily dose of technology-update now comes from RSS and blogs. Actually I'm currently not subscribed to any mailing list.

Everything else on that list is supported and the beautiful UI and font-rendering convince me to live with those two drawbacks and not use Mozilla Thunderbird for example which supports the whole set of features but looks foreign to OS X.

BUT. There's a big BUT

Performance is awful.

Even though I'm using IMAP, Mail.app insists on downloading all messages - probably to index them. I know that you can turn this behavior off, but then it doesn't download any message at all, rendering the program useless in offline situations. In Thunderbird you can make the program just download the messages as you read them and then use the contents of the cache for later offline display.

Then again: I have no problem with downloading and it even displays new mail while still downloading in the background. It does a better job at not blocking the UI than Thunderbird too.

What sucks is the performance while doing its thing.

I have around 3GB of mails on my IMAP server and before I could use Mail.app for the first time, the program downloaded the whole thing, utilizing 100% of one CPU core (it's not SMP capable ;-) ), forcing my MacBook Pro to turn on the fans - it was louder than after playing 4 hours of World of Warcraft in Windows (via Boot Camp - it's around twice as fast than the mac version).

It also took lots and lots of RAM making working with the machine a non-fun experience.

Later I decided to throw away two years worth of Cron-Emails containing a basic "Job done" which were filtered away on the server so I never noticed them. Deleting those ~22000 emails took two hours - again with 100% CPU usage on one core.

Even worse: Mail.app does not send an IMAP move command to move the messages to the trash (or just mark them as deleted). It actually manually copies the messages over! Message by Message. From the local copy to the server. Then it deletes them. And then begins the awful "Writing Changes to disk", completely killing the performance of my MacBook.

Also annoying: Mail.app does not support IMAP folder subscriptions. It insists to fetch all folders - if you have a full calendar on your exchange server, it's going to fetch all those (useless for Mail.app) entries aswell - and we know now how well Mail.app works with large folders.

My conclusion is: Mail.app is perfect for reading and writing your daily mail. It fails miserably at all mail administration jobs.

I'm going to stick with it none the less as reading my daily mail is what I'm doing most of the time. It's just a good thing that Thunderbird exists and I'm going to use that for the next round of cleanup (hoping that Mail.app picks up the changes and does not take too long to mirror them to its local store).

Read on →

Today, another GB of RAM for my MacBook Pro arrived (I bought it at Heiniger AG. It's no original Apple RAM, but it's about a third as expensive as the original).

Installation was very easy to do (I link the instructions for the 17" model because that's what I found on the web - it works the same for the 15" model).

And I tell you: This is the best thing to ever happen to a computer of mine performance-wise.

While the system feels a lot snappier in "default mode", it shines even more when I'm running Parallels Workstation in the background (at full screen - using VirtueDesktop).

I'm inclined to say that the parallels-thing just got usable with this upgrade.

Funny thing: When you are working with Windows XP, you won't notice as much as a speed increase in normal operating mode when you upgrade your RAM from 1GB to 2GB. I guess the memory manager of OSX is just more eager to swap out stuff if RAM gets scarce. And as we all know: Swapping kills a system.

Read on →

I thought I'd give a little update on what's going on in my Asterisk installation as some of the stuff might be useful for you:

Speed Dial

If you have Snom Phones and want to program the function keys to dial a certain number, be sure to select "Speed Dial" and not "Destination" when entering the number.

Destination was used in earlier firmwares but it now used to not only make the phone dial that number, but also subscribe to the line to make the LED light up when the line is used.

This obviously makes no sense at all with external numbers and requires some configuration for internal ones (see below). The additional benefit is that buttons with "Speed Dial" assigned don't turn on the LED.

Dial by click

You can dial a number from the Mac OS X address book aswell. Asterisk will make your phone ring and redirect the call once you pick up (just like AstTapi on Windows). I had the best experience with app_notify. I don't quite like the way how it notifies clients of incoming calls (hard-coding IP-Addresses of clients is NOT how I want my network to operate), but maybe there will be a better solution later on. Currently, I'm not using this feature.

Dialing works though.

You don't have to modify manager.conf, btw, if you already have the entry for the AstTapi-Solution. app_notify will ask for username (manager context) and password when it launches the first time.


As noted above, your Snom Phone can be advised to monitor a line. The corresponding LED will blink (asterisk 1.2+) when it's ringing and light up when the line is busy.

Snom-wise, you'll have to configure a function key to a "Destination" and enter the extension you like to monitor.

Asterisk-wise you have to make various changes:


  • Add subscribecontext=[context], where context is the context in extensions.conf where the corresponding SNOM phone is configured in. I've put this to the [general]-Section because all phones are sharing the same context (internal).
  • Add notifyringing=yes if you have Asterisk >= 1.2 and want to make the LEDs blink when the line is ringing.

This is a bit hacky: In the sip-context add a notify extension for every line you want to be allowed to be monitored. Unfortunately, you can't use macros or variables here, so it's messy.

On my configuration it's:

[internal] exten => 61,hint,SIP/61 exten => 62,hint,SIP/62 exten => 63,hint,SIP/63 exten => 64,hint,SIP/64 exten => _6[1-9],1,Dial(SIP/${EXTEN},,tWw)

While I would have preferred

[internal] exten => _6[1-9],hint,SIP/${EXTEN} exten => _6[1-9],1,Dial(SIP/${EXTEN},,tWw)

Though this may have been fixed with 1.2.2, but I'm not sure just yet.

You may have to reboot your phone after making the configuration change there. To check the registration in asterisk use SIP show subscriptions.

You should get something like this:

asterisk*CLI> SIP show subscriptions Peer User Call ID Extension Last state Type 62 3c26700b57e 61 Idle dialog-info+xml 1 active SIP subscription

This is not quite tested as of yet because the guy at extension 61 is currently in his office and I don't want to bother him ;-)

Update while editing/correcting this text: It works. They guy has left and I checked it.

Read on →

Today, my hardcopy of Pragmatic Ajax arrived. I bought the bundle edition consisting of the PDF beta version of the book and the printed edition.

It's a wonderful book. I have been doing AJAX since a bit earlier than the launch of Google Maps, but I still thought that I need some brushing up especially in the matters of usable frameworks (I've been doing everything from scratch) and useful practices.

Considering that I liked every book of the Pragmatic Programmers I've read so far (we share the same mindset I guess), the decision to buy that book was a non-issue.

I've been reading the PDF-edition so far and completed about the first half of it, but I'm very happy now to see the dead-tree edition as reading that is much easier in terms of handling (no cheap printouts and no computer needed to read it).

The first half was very interesting, but I think I'll better write a complete review once I'm through with it.

And in case you wonder what that picture above means... Well... Here in Switzerland, we have a brand of cleaner fluid which is called AJAX.

And we have had that for years, so they are not just riding some strange fashion mood like these guys. I wonder if the inventor of the AJAX acronym knew :-)

Read on →