Blog Entries

Argparse Shell

I recently built a toy project for Riak that allows me to tag files with tags and various other metadata. In the course of building it I continually thought that it would be nice to have a shell to issue commands in, perhaps even an extension of zsh that temporarily sets in scope functions, somewhat like virtualenv does. At the same time I came across argparse. It is a nice extension to OptionParser which I used a great deal, with included support for things like subcommands which fit nicely into the shell parsing area. It turns out that it worked perfectly as a simple parser.

Failing Properly

Recently I've run into more and more code from programmers that simply don't know how to handle errors and exceptions. The other day I had to replace something like 30 generic try/excepts to actually figure out what the bug was that I was trying to fix. And unsurprisingly, there were numerous bugs that were hiding beneath the generic try/excepts. Below are some guidelines for failing properly. Though the code is in python, the concepts apply to many languages.

New Django Project

Recently I've been working on a new project in django, Squirt Blurt. It's been taking up a large majority of my time, so I haven't had much time to create new posts or work on other projects, but I just thought I would give a few impressions of things I learned/did along the way.

Lenovo S10-3T Netbook Review

I recently bought a Lenovo S10-3T convertible tablet/netbook PC on a great deal through best buy.com. Its primary purpose was as a reading/programming tool on my commute. It has the Intel ATOM 1.66 GHz processor, 1GB RAM, and a 160GB hard drive. Read more for impressions.

NoSQL Impressions

Lately I've been playing with what seems like a multitude of NoSQL databases. Three in particular (MongoDB, CouchDB, and Riak) have caught my eye, though there are many more that have interesting concepts. Features such as ease of use and scalability typically impress me, so these three stand out because of their ease of use, ingenuity, and python/erlang compatibility.