Recent Posts

Ubuntu keyboard shortcut cheatsheet

Everyone assumes that using keyboard shortcuts is more efficient than using the mouse. But by how much? One 2005 study found that keyboard shortcuts are app...

How to not get caught in spam filters

Reliably sending email without getting caught in spam filters is a full-time job, for someone. Surely not for an end-user, but for every end-user email, the...

useful decorators for Django views

Python implements a light version of aspect oriented programming via decorators. I find myself using them often, specifically for Django views. Here are a f...

Too cute: Django schema migration tools

Like Ruby on Rails, Django uses a model API to abstract the database layer. A command-line script creates schema for new object definitions. Unlike Ruby on ...

scripting multiple gnome terminal tabs

Sometimes it feels like I'm looking at logs all day. Certainly there are times when this is more true than others. If you find yourself in one of those time...

MySQL drop column if exists

Idempotence describes the property of operations in mathematics and computer science that means that multiple applications of the operation do not change th...