Aaditya comments if I have tried evolution. Yes, I have. It occupies too much screen real estate and consumes too much resources for my taste (just check the number of background processes it needs). However, I'd probably give it another shot because my office has already moved to Exchange and will probably move to Exchange calendaring pretty soon. I've checked that Evolution exchange connector does work as advertised.
I must say it's quite galling for a guy like me who runs a lean and mean desktop with fluxbox (earlier WindowMaker) and screen) inside a plain rxvt without background images to see so much bloat in modern GUI apps. I mean, I remember having a tough time reconciling with Emacs memory bloat. Oh well, I am getting old I guess.
Leena Dasnurkar wants to know which programming language I am using with SQLite and BerkeleyDB. For this particular test I was obviously using C because the internal Btree API of SQLite is not exposed through any scripting language. However, for my applications I use SQLite with Python. As to which is better, I am biased towards SQLite. Despite the extensive documentation, I find BerkeleyDB's APIs pretty painful to use if you want transaction support. The big advantage with using an SQL engine like SQLite and Python is that if you really need to scale bigger it's easier to migrate to PostgreSQL.