Inklings: a tumblelog

What To Know Before Debating Type Systems

Oh, if only…

Front-Ahead Design

A parody of stupid design methodologies, it also takes potshots at people who don’t take enough pride in their work to do it well.

Haruki Murakami: On seeing the 100% perfect girl one beautiful April morning

Recursive Make Considered Harmful

Absolutely brilliant paper. If you use make at all, read it!

The Art of Sucking Up

The next bubble: Priming the markets for tomorrow's big crash

More or less the same thing happened here with our housing boom. If only people would have the cop on to realise it.

On Designing and Deploying Internet-Scale Services (PDF)

To read.

On Top

I hate top-posting. Read this to understand why it’s a bad, bad idea.

ports/122305: multimedia/gstreame - gst-inspect-0.10 hangs when checking for playbin, audioconvert, audioresample, gconfaudiosink, and gconfaudiosrc plugins

My pain with this upgrade is unending…


‘This guide aims to show examples of use of all Python Library Reference functions, methods and classes’, fixing one of the weakest areas of Python’s otherwise excellent documentation. I think, however, that given the existence of doctest, a lot of this could be rolled back into the manual itself.


I don’t know why I never gave this a try. I think I’d some idea in my head that it was commercial or something.

Setting up Subversion on Windows

I shall be throwing this in the direction of a none-too-bright individual…

Moving from Bzr to Git

I’ve no intention of abandoning Bzr any time soon, but this might be worth a read nonetheless.


Arimaa is a two-player abstract strategy board game that can be played using the same equipment as chess. Arimaa has so far proven to be more difficult for artificial intelligences to play than chess.

Git for Computer Scientists

Hmm… I thought I’d bookmarked this. Obviously not.

The Thing About Git

A crazygood article about git and cherrypicking. Not that you can’t do it with bzr, mind…

Google App Engine: The Datastore API


The Economic Legacy of Bertie Ahern

Excellent analysis of his true ‘legacy’. Ignore the comments; they’re full of SOS’s nonsensical rantings.

"Stuffy" Dowding

In summa, Joel’s Evidence-based Scheduling is great, but watch for people who’ll use it to manipulate your estimates. Also, stick to your estimates and don’t let anybody force you to make them more optimistic.

User-level transactional programming in Haskell

To quotes from the LTU poster:

I thought this was an interesting paper because it gives a concrete example of a case where you want transactions, but positively don’t want the full suite of ACID properties.

Accessible Data Visualization with Web Standards

Design is in the Details

Now, I can keep on saying this till the end of time, but will people listen…

GIT Howto Index

ImageShack Starts Free BitTorrent Download Service

App Engine: Most Of The Stuff I Want, None Of The Stuff I Don't

How to use a notebook: 7 quick tips

The Death of Read Replication

The Art of Agile Development: Retrospectives

In-depth django-sphinx tutorial

I’m not posting this because of Django, but because of Sphinx, a fulltext search engine, which I’ve never heard of before, but looks quite interesting.

Django Queryset Implementation

The Stunning Truth at the Center of the Pigeon Story

In summa, don’t treat people like Pavlovesque automatons.

My rules of thumb for developers: less code

Larry Lessig: How creativity is being strangled by the law

Throwing Away Your Code

I never actually feel bad about this, especially these days. If anything, deleting code is kind of a release.


Ikiwiki is a wiki compiler. It converts wiki pages into HTML pages suitable for publishing on a website. Ikiwiki stores pages and history in a revision control system such as Subversion or Git. There are many other features, including support for blogging, as well as a large array of plugins.

Leave a Line of Retreat

The principle behind the technique is simple: As Sun Tzu advises you to do with your enemies, you must do with yourself–leave yourself a line of retreat, so that you will have less trouble retreating. The prospect of losing your job, say, may seem a lot more scary when you can’t even bear to think about it, than after you have calculated exactly how long your savings will last, and checked the job market in your area, and otherwise planned out exactly what to do next. Only then will you be ready to fairly assess the probability of keeping your job in the planned layoffs next month. Be a true coward, and plan out your retreat in detail–visualize every step–preferably before you first come to the battlefield.


Think Python + Linq = Dee.

MVC Obscures the Mechanics of the Web

Too bloody right!

Tearing Down the Software Factory

To quote the Tom DeMarco quote at the start:

The idea of a software factory is a joke–that we can build software by rote–that’s ridiculous. If the work is deterministic, we will do with it what we do with any other big piece of deterministic work. We’ll let the computer do the deterministic portion, leaving the person who interacts with the computer–the other half of the system–to do the work whose roteness has decreased, not increased. Every time you automate something, what’s left of the person’s work is less deterministic, until eventually, when you automate enough, there’s no deterministic element left for the person’s work–no rote. […] Our work is not deterministic. It’s far too inventive. We’re knowledge workers, not factory workers.


Kaizen (Japanese for ‘change for the better’ or ‘improvement’; the common English usage is ‘continuous improvement’). In the context of this article, kaizen refers to a workplace ‘quality’ strategy and is often associated with the Toyota Production System and related to various quality-control systems, including methods of W. Edwards Deming.


On simplicity in UI design.

37 Ways That Words Can Be Wrong

Software estimation considered harmful?

SIGGRAPH: Game Graphics During the 8-bit Computer Era

What Does It Take To Become A Grandmaster Developer?

Chunking, basically.

Charles Debugging Proxy

Charles is an HTTP proxy / HTTP monitor / Reverse Proxy that enables a developer to view all of the HTTP traffic between their machine and the Internet. This includes requests, responses and the HTTP headers (which contain the cookies and caching information).

Quote, Unquote

Yep, I’m in the camp that considers straight quotes nothing more than a bastardisation of type.

10 traits to look for when you're hiring a programmer

Requiescat In Pace: John M. Ford

Zeroconf Branch Sharing with Bazaar


dbus-python tutorial

I wish I’d known about this when I wrote the HAL backend for Lithium…

Re: Python factory-like type instances

I could use this to further improve the way the Lithium backends work.

John Gormley vs. China

Kickin’ ass and takin’ names! :-)

Probability Distributions

I’m ashamed to admit it, but this–probability distributions in general–is something that never sunk in for me. Must read.

mod_wsgi: Integration with

Apple IIgs Original Hardware Laptop

If somebody was to ask me to mockup what a laptop in Ill Bethisad looks like, I couldn’t have possibly done a better job than this.

Ketama: Consistent Hashing Library

libketama is a consistent hashing library written in C. You supply a list of servers and ketama will map keys to servers in a consistent way, even after adding or removing servers from the list.


Stop the clock, squash the bug

Three Small JavaScript Libraries

The words ‘holy crap’ come to mind.


Arete in its basic sense means “goodness”, “excellence” or “virtue” of any kind. In its earliest appearance in Greek this notion of excellence was bound up with the notion of the fulfillment of purpose or function; the act of living up to one’s full potential.

"All I need is a Programmer"

Great piece on how severely people underestimate the complexity of what we software developers do for a living.

Those to Come

As a developer, what do I owe to other developers that may come behind me?

Google AppEngine, BigTable and why RDBMS mentality is harmful

More from less...

I’ve become increasingly convinced that what CEOs should be crying out for is not more innovation but fewer self-imposed obstacles.

Testable APIs

Why You Should Write Unit Tests

Tenkai palm

The Tenkai palm is a card magic technique used to palm a card (to temporarily hide it during a magic trick).

Minimizing Code Paths in Asychronous Code

Milliways: Infocom's Unreleased Sequel to Hitchhiker's Guide to the Galaxy

SQL Antipatterns slides

Great talk.

Part of being a good programmer is learning not to trust yourself

Utterly, utterly true.

Content Negotiation is not Broken

Why we are the biggest obstacles to our own growth

Tell your inner curmudgeon to shut up every now and again for your own good.

Various free icons

Generator Tricks for Systems Programmers

Timeframe, a nifty Javascript calendar widget

CSS Variables

If browsers and other appropriate user agents implemented this, it’d be awesome! Till then…

The 13th Duke of Wybourne

The 13th Duke of Wybourne is a fictional character played by the comedian Paul Whitehouse in the popular BBC sketch show The Fast Show. The character’s sketches consisted of the Duke commenting on his presence in various seemingly compromising, unsuitable locations, usually at 3 o’clock in the morning. These, along with the comments after stating his location, alluded to the fact that he was there “by accident” and that women were present.


A multiprotocol IM client. Might be worth using on Windows as an alternative to Pidgin.


A pretty cool Python PDF generation library.


A tale of two Berties

Can’t say I disagree with Adam’s assessment of Ahern.

Up or Out: Solving the IT Turnover Crisis

In summa, rather than treating IT staff turnover as a bad thing, turn it to our advantage as other professions do. Realise that people will eventually quit, that this is a good thing, and maintain a good relationship with former employees. Alex’s idea of seeing former employees as alumni is a good one. Read the whole piece, it’s great.