Recent Posts

Comparison of Chat Message Platforms

If you’re writing a chat app, the first big question to consider is whether you are going to write the actual chat backend. Why would you want to? You would ...

The Role of Specifications in Agile

It’s commonly said that everyone does Agile differently. In my experience, it’s also common to do basically whatever you want and call it Agile. It can be u...

Optimizing Flask client tests

When writing Python integration tests, it’s useful to put slow code such as database access in a setUpClass method, so that they are only executed once for...

Per-OS virtual environments in Python

A common setup for web development is to have a virtual machine on your Mac running all your code. Typically this involves a shared folder containing the cod...

Getting Started with Sphinx docs

Everyone knows that you should write documentation for your code. Writing documentation actually is not that hard. Like any type of writing, the hardest part...

Customizing Celery with Task Arguments

Celery is an awesome distributed asynchronous task system for Python. It’s great out of the box, but a couple of times I have needed to customize it. Specifi...