Unfortunately, I've had to use a captcha for the comments. Akismet is no longer working for a large majority of spam on my site. Sorry for any inconvenience.
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.
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.
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.
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.
We just released the first version of Johnny Cache. It's very exciting to see it done and available to the public. Jason wrote a great write up about the path Johnny has taken recently, so I won't re-hash what he said. Instead, I thought I would give an overview of query cache-ability using the framework.
In a language like Python, not many things are lazy evaluated by nature, as opposed to a language like Haskell where everything is lazy by nature. Python does have generators that provide lazy iterations, but it is easy to also create lazy dictionaries and other data structures.