Using code coverage to find bugs

Yesterday, I found two bugs whilst looking at a code coverage report. I tend to think that shooting for 100% code coverage adds unnecessary overheard - often the last few percent doesn't give you much benefit, and takes a disproportionate amount of time to reach, but it's useful to at least understand why particular lines of code aren't hit by your tests. Perhaps those lines are dead code, or perhaps - as was the case for me yesterday - it's because your code is broken.

Turtles all the way down

One of the programming lessons I find myself re-learning again and again is this: It's turtles all the way down. When I first started my current job, just after graduation, I was working in a frontend development rôle. The app I was working on involved storing customer data in a proprietary database system, and from time to time, I'd get stuck.

Installing PIL on 64-bit Ubuntu

I've just got a new laptop, and wanted to avoid messing around with symbolic links in order to install PIL in a virtual environment. I've just discovered patch, and thought I should automate my process of installing PIL (a process which previously involved me making a trivial edit to the setup.py file).

Bulk Upgrading Django Sites

A new version of Django was released a couple of days ago. I'm currently at 11 sites using Django, so upgrading them all manually (which I did last time) is a pain. To help me out, I wrote a tiny Fabric script to spin through my sites, check if they're using the version of Django that was upgraded, and if they are, upgrade them.

Using a local cache for pip packages

I do a lot of development without an internet connection[1. Mostly on the train to and from work.], so being able to install packages into a virtual environment without a connection to PyPI is pretty useful.

Automated Deployment of Django Sites

I tried out Fabric a while ago, but never really got anywhere with it. Time passed, and I forgot it existed, and wrote my simple scripts for automating deployment of my various sites, using Paramiko. It was incredibly tedious, but meant I could deploy my sites from whatever computer I was on, provided I had a checkout of my code. Then I re-discovered Fabric, and realised I was about to throw away a lot of code.

Supporting Markdown in upcoming Django releases

Upcoming releases of Django will remove django.contrib.markup, but I still want to use it. I looked around for alternatives (perhaps a third party app?), before deciding to roll my own.

Forays into Responsive Design

A good friend of mine alters cards for Magic: The Gathering for fun and profit. Previously, he posted them on his Twitter feed, along with a brief description, but that doesn't provide a great way of seeing at a glance the sort of things he does - a place to point people who ask for examples of his work.

Moving to Ubuntu for mobile development

My web-development office is a fast-moving place. It averages around 50 miles per hour, and I work on a laptop normally squished between two people on the train to and from the office. When I happen to have a spare moment to build websites at home, I tend to use my desktop, which is running Ubuntu. I do my editing in emacs, where I've gradually got things set up more or less as I like them.