I'm David Winterbottom, a minimalist software engineer living in London.

I'm Head of Engineering at Octopus Energy, a UK energy supplier. Previously, I was Head of Engineering at Yoyo Wallet, a mobile payments startup, and a Technical Director of Tangent Snowball, a digital agency.

I spend most of my free time hacking. I am the author of commandlinefu.com and the e-commerce framework django-oscar amongst other things.

I used to be a mathematician; I have a PhD in Mathematics from the University of Nottingham and an associated interest in cryptic crosswords, chess and bad puns.

More about me »


Monday, 23 November 2015
Octopus Energy

A modern, high-tech energy supplier

Friday, 2 October 2015
A useful template for commit messages

A simple heuristic for preferring the imperative mood

Wednesday, 2 September 2015
Copying Postgres output into a spreadsheet

Quick tip on tweaking the output of psql

Saturday, 2 May 2015
An SSH tip for modern AWS patrons

Slightly useful tip for SSHing onto EC2 instances

Saturday, 4 April 2015
All writing »


2 days, 13 hours ago
RT @Symbo1ics: Bad code isn't just bad at syntax level. It's usually bad in layers—Failure to understand problem,failure to model,failure t…
3 days, 19 hours ago
RT @joncstone: also does anyone else find it weird that the middle of the House of Lords is basically laid out like a shoe shop https://t.c…
4 days, 18 hours ago
RT @susanthesquark: I wrote something up this weekend about my year at Uber, and why I left: https://t.co/SyREtfLuZH
5 days, 16 hours ago
RT @AliceAvizandum: FRANCE: we're fancy
FRANCE: a fried ham sandwich is our national lunch
FRANCE: a fried ham sandwich wi…
1 week, 2 days ago
RT @BenNadel: “Write code that’s easy to delete, not easy to extend.”

… is one of the best pieces of programming advice I’ve ever read.
1 week, 3 days ago
RT @isoiphone: git commit -m "fixed issue with fan" https://t.co/pckLms3VqU
2 weeks ago
Alternative definition: AI = "A shitload of If statements" https://t.co/pdEFHSxesi
2 weeks ago
RT @mode7games: COMPUTER: I can render the shimmering fantasy worlds of your dreams 60 times a second

ME: search some emails for a string…
2 weeks ago
Word of the day: agendum
2 weeks, 4 days ago
Test if a child is using vim: https://t.co/AELMHNE87S
3 weeks ago
3 weeks ago
RT @Law_and_policy: My thread on why pardons after punishment (and especially posthumous pardons) make no legal sense. https://t.co/CszuNqr…
4 weeks ago
RT @patrys: Dev hint: it's still DRY if you do the same things twice for entirely different reasons that may change independently of each o…
4 weeks ago
RT @econbuttonwood: In a move backed by "christians", Russia shifts towards decriminalising violence against women https://t.co/hbEXKtStvj
4 weeks ago
RT @bengoldacre: Don't cosy up with a rapey, racist, muslim-hating, torture-supporting, liar.

Even tho Brexit has made us desperate.

@codeinthehole »


10 hours, 10 minutes ago
Feb 24, 2017
10 hours, 11 minutes ago
Feb 24, 2017
11 hours, 31 minutes ago
Feb 24, 2017
  • @codeinthehole 6dd4658
    Add initial version of module
11 hours, 34 minutes ago
Feb 24, 2017
  • @codeinthehole 7f728d7
    Add initial version of module
12 hours, 13 minutes ago
Feb 24, 2017
  • @codeinthehole 58f5e6c
    Add initial version of module
12 hours, 20 minutes ago
Feb 24, 2017
  • @codeinthehole c149d37
    Add initial version of module
13 hours, 45 minutes ago
Feb 24, 2017
  • @codeinthehole bb0c0fb
    Add initial version of module
13 hours, 47 minutes ago
Feb 24, 2017
  • @codeinthehole 1cb0fde
    Add initial version of module
github.com/codeinthehole »

Selected projects

A few spare-time projects I've worked on:

  • commandlinefu.com - a mildly popular repository site for sharing linux one-liners. Grown men have been known to weep with joy when they discover sudo !!

Python packages on PyPI:

  • purl - an immutable URL class for python
  • foiegras - simple CSV loading for Postgres
  • csvfilter - like cut but for CSVs
  • pyvideo2quicktime - for downloading PyCon videos to your iPhone
  • unittest-xml - additional assertions for unit-testing XML documents with python's unittest library.

Oscar and related packages:

Other Django packages on PyPI

node.js packages on npm:

  • nurl - a simple URL library for node.js