Archive Page 2



Entourage 2004 is stuck in the pre-OS X interface days. Although the application has received some overhauls, it still feels clunky. On OS 9, Entourage was best of the breed. I lived and died by Entourage, no other app could hold a candle to it, but Entourage has not matured like I wish it had. It’s now slow, buggy, and maybe worst of all: hideous. I decided that it was time to leave behind the dinosaur and find something new. My first stop was Mail.app.

My biggest gripe with Mail.app is that it does not have a widescreen/3-pane view like Entourage does. I figured that it might be possible to modify the Nib file and move the preview pane. After a short hacking session it became evident that it wasn’t going to work. The splitter between the preview and the message pane is drawn via code. If the splitter is switched from horizontal to vertical it gets all messed up and the window doesn’t display correctly. So I was out of luck with Mail.app.

Then I remembered hearing about Thunderbird supporting a widescreen view. Since I have been very impressed with the polish and usability of Firefox and I decided to give Thunderbird a shot. And I have to say, it seems like I made the right decision. I am very impressed; it’s incredible the quality of software that the Mozilla foundation has been churning out lately. The application is cross platform but it feels very OS X native. While it may not have the same level of integration as Mail.app, it really holds it’s own. I’ve found Thunderbird is very very fast at downloading new message, and order of magnitude faster than Entourage. All of my mailing lists are on a Pop3 account so that increased speed up is a big win for me. The threading support is nice, oh and did I mention it has a widescreen view.

But Thunderbird is not perfect. I would really like to see support for looking words up in a dictionary via a pop-menu, integration with Spotlight and the Address Book. Besides the above, it’s a great client. It’s prettier than Entourage and more heavyweight than Mail.app, a perfect fit for me. Here’s a screenshot of my new and old setups. Thunderbird vs. Entourage

ThunderbirdEntourage

POP3 to IMAP

I’m a member of a number of online mailing lists, which I have an e-mail address specifically for. I’ve connected to my e-mail mailing list account through POP3 and I then sort them using a e-mail client rules. However, i’ve gotten tired of waiting for hundreds of messages to downloaded everyday, now I have moved all of my rules server side and I’m using IMAP.

On my Dreamhost account, I have setup filters to direct all of my mail to different folders in my IMAP account. Mail for UIUC stuff gets filled into a folder, ACM stuff has a folder, Mac OS X Talk has a folder and etc. I have all of my e-mail being funneled into one account but parsed into seperate folders. So if I need to check e-mail anyway, I can just connect to my IMAP account and everything is at my fingertips, including my archive of e-mail. I’m hoping to eventually condense everything down into one e-mail address, sweet indeed.

Ecto + WordPress + Dreamhost

NetNewsWire Pro rocks my socks, so when I went looking for a desktop tool to tie into WordPress I figured MarsEdit would be it. While, MarsEdit is a cool app, it just doesn’t feel as complete and polished as NetNewsWire. What I was really looking for was a tool to write on my blog without fussing with HTML tags, but MarsEdit still made me mess with HTML formatting. Sorry, but hand coding HTML is too old school for me. Why should I have to mess around with HTML tags?

So I looked around the market to see what else I could find, and I stumbled across this little gem called Ecto. If you are a blogger and have not seen this app, I recommend you check it out right now. It makes blogging painless, you can categorize things, format posts, upload pictures, insert iTunes and Amazon links, it plain rocks.

Oh, and another thing, it’s shareware.
And I have to say that more often I lean towards shareware/indie developed software than their commercial siblings. It feels really good to “stick it to the man” in a sense and support the little guys out there. Plus, things like blogging tools are a little to cutting edge for the major companies to have caught on as of yet.

Check out Ecto, combine that with DreamHost and WordPress and you’ve got yourself a kick ass blogging platform.

Command-X on Scissors

I found this in the ACM office here at the University of Illinois. Picture thanks to Nicholas Riley.

Photo 43

IMAP Libraries

Due to my dissatisfaction with existing mail clients, I’ve been slowly grinding out a simple IMAP client. There was no way I was going to write my own IMAP client, so I scoured the web and came across a few libraries. So I wanted something that was clean, fast and written in C, C++ or Objective-C and ideally thread safe.

C-Client
C-Client was written by the man at the University of Washington who invented IMAP4rev1, so you can be sure it implements the RFC fully. However, the code is downright atrocious, it’s a mess of spaghetti code and undecipherable documentation. There are two programs which are samples to help aide in understanding the library. One of the samples is an old mail program written for NeXt and the other is Pine. If you haven’t looked at the Pine code, I urge you not to, it burns the retinas. So despite C-Client implementing the spec perfectly and being a very fast library, I found myself unable to understand the wild style that the library was written in.

JavaMail
The JavaMail API’s look really clean, but I was leery of implementing a core part of my e-mail app on the Java-ObjC bridge. In a past project, LaserLine at UIUC MacWarriors, I was forced to use the Java-ObjC bridge and was not pleased. I found it a hassle to deal with and a slow alternative to native C code.

Camel
Camel is the mail library that rests under Evolution and it’s designed to access a number of different kinds of data stores. It’s written in plain C and relies on a number of data structures that reside in the underlying Gnome libraries. The libraries that it does rely on are non-graphical so getting them up and running wasn’t a big deal. The code base is massive, with support for an amazing array of data stores. Some people are very leery of the IMAP support inside the library, apparently it works but it’s not exactly thread safe. Camel really is a mountain of source, and the fact that they pretended C is object-oriented when writing the library doesn’t help things. What really made me drop the ball was this:

Even with all of it’s problems, this is the most stable and featureful remote backend in existence. It just isn’t very easy to maintain. I should really add more detail here, but I just don’t care - I barely understand the code either, and I rewrote it anyway. Maybe others can update it. Source

When the guy who created the monster says he doesn’t understand it, I’ll look elsewhere.

Pantomine
Pantomine was the only Cocoa/Objective-C IMAP library that I found, which is a huge plus for this library. But it’s slooooowww and no one has done any work on the project for a number of years. One of the objectives of my mail client is for it to be blazing fast, so Pantomine is a no.

LibEtPan
LibEtPan is the best IMAP library I have found. It’s fast, written in pure C and it doesn’t require really any dependencies. The function names are clear and the data structures are intelligible. There is documentation provided with the library but it’s lacking in a number of respects, but the code is so clean that many times you don’t even need the docs. The implementation is very robust with support for high level access, so that different mail drivers can sit underneath. For example you can use the high level function to talk to either IMAP or POP3 without having to change any code, you just change the driver. The available functions for the high level stuff is limited because it has to be the intersection of both IMAP, POP3 and the other protocols it implements. The lower level stuff is very clean as well, and implementation specific. For example, in my project I am using the lower level IMAP drivers because I don’t intend on supporting any other protocols and I get the niceties of IMAP. This library is in active development and the developer is very responsive to questions, if you’ve got a need for a mail library I highly suggest this one.

screen

I discovered the incredibly useful unix program screen just recently. It allows multiple terminal sessions running at once and it provides easy access for switching between sessions. To run the command type:
screen
Once screen is running you can do Control-AC to create a new window and use Control-A followed by a number to switch to that session number. And the best I’ve saved for last, if you close your terminal session and want to get back to the screen you were working on, just type:
screen -r
Magically, screen will come to life just as you left it, which makes it great for running on remote servers.