What’s new in my toolbox

I thought I wanted to share some of the tools I use these days. In no particular order:

Tornado. A fast Python non-blocking web server. I’ve been hacking two small apps that will be rolled out in the next two weeks. Tornado is a good match for the two apps because the apps access external web services (i.e. Flickr API), and one app has Comet features via Ajax and long polling — both of these features are easily solved in Tornado. Since its code base is really small, I had no trouble looking around when I hit some roadblock.

Python 2.6. Recently, I updated my Python version to 2.6. Multiprocessing FTW.

pip and virtualenv. When experimenting with Python packages, this is THE way.

Homebrew. A package manager for OSX. Recently, I updated the my Macports system and several of the packages in it. The update broke my other tools (Ruby gems and others) because their dependencies (dylibs etc) are no longer where they expected them to be. I was done with Macports. So after looking around, I found Homebrew. It’s quite convenient and so far I have no issues with it. My impression is it’s pragmatic. E.g. doing brew install mercurial doesn’t install the mercurial package but recommends that you do brew install pip then pip install mercurial. It makes sense. Also, brew system is built in Ruby so I had no trouble looking at the package formulae.

Redis. A very fast key value store. Using redis is fun. It takes a much more (personally) enjoyable approach to storing data — using constructs such as lists and sets instead of rows and sql. I say enjoyable because with redis, the way your data is stored is close to the way you actually model and code your data. I bookmarked its command reference for easy access.

rvm. Ruby Version Manager. Playing around with multiple versions of Ruby without pain. Gemsets are really wonderful. My usual setup is one gemset per web project (be it Rails or sinatra).

Ruby 1.9. Saying goodbye to Ruby 1.8 is not so hard anymore since rvm. But I compiled Ruby 1.9 from source and it is now the default Ruby in my system.

Sinatra. Moving away from Rails is always an option. And could also a very liberating decision. With Sinatra, I write code my way (at least, I think that’s how it is). There are frameworks built on Sinatra (e.g. monk, padrino) so if ever you don’t want to use Rails for some reason, I’d suggest Sinatra.

Monk. A glue framework built on Sinatra.

Nodejs. Wohow. V8 JS not on the browser. I experimented on it a while back since I <3 programming javascript. I wish I can build some crazy service using node soon.

Mercurial. I use this when I’m in Python mode.

GHC. I’ve been reading on Haskell in the past two weeks, and I find the experience fun, exciting, and mind bending.

ZeroMQ. Fastest. Messaging. Ever. For pub/sub, I used ØMQ and its Python binding.

Tags: tools toolbox