Category: Software development
Keeping things in sync: derive vs test
There are times when we need to stop trying to make everything sync automatically, and just test that it is synced. Tips for Python and web dev.
Never, Sometimes, Always
Just like the only numbers programmers care about are zero, one, infinity, the only frequencies we care about are Never, Sometimes and Always.
pyastgrep and custom linting
Methodology and sample code for using pyastgrep to do custom linting tasks on Python source code.
Programming mantras are proverbs
Proverbs are supposed to encapsulate a bit of wisdom, but you still need know when to apply it.
No one actually wants simplicity
We think we do, but in fact every web developer will happily sacrifice simplicity to the first shiny thing promising them relief from the mildest of ailments.
The curse of scalable technology
Some of the downsides of technology stacks that are massively scalable and general purpose
A Django PAGNI: efficient bulk properties
When using Django database models and adding a calculated property of some kind, you should probably ensure it will be efficient in bulk even if that isn’t needed yet.
Life on the diagonal – adventures in 2-D time
A post to help illustrate and popularise the concept of 2-D time, a technique which is essential for some situations.
YAGNI exceptions
A list of some exceptions to the principle of “You Ain't Gonna Need It” – that is, times when doing a bit more up front usually pays off.
Everything is an X
Analysis and examples of the popular high-level pattern of making all the things in your system conform to a common interface.
Test smarter, not harder
Tips for winning the automated testing battle.
Announcement: Django Views - The Right Way
Announcement of my guide to writing Django Views.
You can’t compare language features, only languages
Why I think we need the context of a language to have meaningful debate about language features.
Things that can be self-hosting
An attempt to put something down about the idea of self-hosting software
Zero-based indexing in the real world
An example that might help a new programmer struggling with the insanity of counting from zero.
Wedding hacks - seating planner using simulated annealing
Some attempts to solve the seating headache with software.
Wedding hacks - making A4 booklets from A5 PDF sheets
The order of service requires some Python hacking
Wedding hacks - John Lewis gift list hyperlink
Using my programming skills for higher purposes, part 1
Bundling dependencies
Some answers and questions on the subject of bundling copies of dependencies in a project
Never fix a bug twice
A response to "Things you should test" by Noah Sussman.
A prayer to the programming gods
O gods of software development and operations, I have sinned. Your anger falls on me, and I feel your wrath...
My Bash prompt
My bash prompt, including git/hg branch name.
Docs or it doesn't exist
Writing good quality documentation for the software libraries you publish always matters. Otherwise, you are doing the world a disservice by publishing.
Class Based Views and Dry Ravioli
Class based views are very cool. I am starting to clean up an existing project using them, and lots of existing views are turning into declarative code. But it makes me worried about the ravioli effect.
Mercurial tree visualisation
I discovered hgview, a really great replacement for hgk.
Eclipse and Mercurial with existing checkout
How can I get the Mercurial Eclipse plugin to just recognise an existing folder as a Mercurial repository?
Python and copyright
A lot of discussion recently has missed the point: the big question is whether the terms of any software licence are really relevant to dynamic languages...
Managing Django patches using Mercurial
A simple way to use Mercurial Queues in a Subversion working directory to manage patches before committing to Subversion.
Null pointers vs None vs Maybe
Why Haskell's 'Maybe' totally pwns Python's 'None' and null pointers.
Adventures in Haskell - ODBC under Windows
Attempts to use Haskell+ODBC under Windows.
Why learning Haskell/Python makes you a worse programmer
A rant about how annoying programming in C# is, really.
Pyrex and Lisp
Paul Graham was right again...
A Django website that took (a lot) more than 20 minutes.
An attempt to debunk some of the '20 minute web app' hype that is so prevalent at the moment, and present a more realistic and balanced account of the Django site I have just finished.
Empty files and templates
I've noticed in Python and in Django I almost always create a module or a template by starting with a completely empty file, and typing...
Clipboard diff
Ever been refactoring code or HTML templates and wanted to compare two chunks of text? This is what you need if you use KDE...
Django validator app. And fuse/webdav/bazaar
I wrote a quick Django application to help me develop compliant web sites, and put it together so it's easy to distribute...
chroot with X applications
How to create a chroot and run X applications from it, side by side with windows from your normal system.
Phishing phloored
It's very satisfying when a feature you programmed is finally tested...
Accumulator Generator in PHP
Here's my solution to writing an `accumulator generator `_ in PHP, listed here because Paul Graham is no longer accepting submissions...
My blog code
Source code for my new blog is now available
New blog system
I finished my new blog software, back to actually writing some blog entries...
GMail invite, anyone?
GMail invitations up for grabs, and whines about living with other people's code
Kompare - a tool of beauty
A wonderful tool for Linux developers
For no-one
My paid work is pretty dull, but occasionally there is the satisfaction of doing a nice bit of coding...