Inklings: a tumblelog


Radiohead truly rock my world!

iPhone Human Interface Guidelines

Might have some good ideas and guidelines for webapp interfaces in general.

There is no One Answer

So true. Now if only more langauges with strong static type systems had a decent type system like O’Caml or Haskell…

How to measure MySQL slave lag accurately

Factoring quadratic equations

It’s so long since I’ve needed to do this that I’d forgotten. How embarrassing!

Good Shell Coding Practices

Software Is Hard

A miniature classic!

Talking about a software development schedule more than a year out is like talking about where we go after we die. Everyone has some idea where we’ll end up, but those ideas differ wildly, and there’s a lack of solid evidence to support any of them.

Bazaar Project Templates


Javascript Parser Combinators

Inheritance is evil, and must be destroyed: part 1

To read.

Software Branching and Parallel Universes

Branching in svn fills me with the fear of jeebus, but there’s one circumstance in which I use it, kinda. I maintain at least two branches of most of my work project, the mainline branch being in SVN at work and the other on my laptop. I don’t have internet connectivity in my house (long story), so I move work back and forth using a USB stick. I merge work back and forth between the two. All my works stuff is kept in Bazaar repositories at home, but all my other stuff is kept in my SVK repository. I really have to ditch SVK.

Network Performance Effects of HTTP/1.1, CSS1, and PNG

Designing for a security breach


An interesting looking anti-phishing mechanism.

Ubercharger Lacks Only Diamond-Encrustedness

Holy crap! Must have!

Train-Wreck Management by Mary Poppendieck

Great piece on how backwards general management practices are and how they can be improved.

Boilerplate code says a lot about a language?

Y Combinator Tattoo

Damnit, I wish I’d thought of that!

Beautiful Code Chapter 17: Another Level of Indirection

On the beauty of indirection (and the FreeBSD VFS).

Abstraction and Variation

Envy Code R

Not a bad programming font by any means.


Another programming font.

"Scroogled" by Cory Doctorow

Google controls your e-mail, your videos, your calendar, your searches? What if it controlled your life?

Scary stuff.

Secure Business Data Interchange Using HTTP


"Practical Principles for Computer Security" by Butler Lampson

Principles and patterns of codebase structure?

The 97% Rule


We don't write tests. There just isn't time for luxuries

Agreed, but some of the commentators come across as morons and don’t seem to get that automation is our friend and you will eventually need to run those test again. The guy who came up with ‘Big Testing Up Front’ seemed as if he was aiming to look particularly moronic. There also seems to be some confusion between white-box testing, which is what developers do, and black-box testing, which is what dedicated testers do. They also don’t seem to get that automated tests are meant to hit the bit below the water, not the user interface, and even then there are ways to ameliorate this. Sigh. Automated testing isn’t a panacea, and has never been marketed as such, but it does make development easier because at least you’ve some chance of catching bugs and getting a feel for the problem and how your code will be used.

OAuth Core 1.0 Draft 4

To read.

Roll out your own JavaScript Interfaces

Good thinking there.

An unordered list of thoughts I had during a conference call with a potential client today

Been there… ;-)

Bazaar-NG: Repository/Branch Layout

Bazaar Bundles

Bazaar bundles as part of a review process

Signed Revisions with Bazaar

RFC5023: Atom Publishing Protocol


Red squirrel under threat: Report

All those grey rat bastards from America should be exterminated. They’re nothing but vicious vermin.

The Greatest Compliment A Developer Can Receive

10 Things Every Programmer Should Know For Their First Job

What would MacGyver do?


Bazaar plugin that adds support for foreign Subversion repositories. This allows committing changes to Subversion branches as if they were native Bazaar branches.

Well, that pretty much removes any reason I have for bothering with SVN out of work anymore.

Herv: Flot and Retent

bug 162 - global namespace pollution in IE

Internet Explorer, you bloody suck.

The editing pass

Once you get a piece of code to the point where you believe it works–it’s passing its tests–go back over it and edit it. That is, go back and edit it for clarity, flow, and style. Just as if it were an essay.

Now, if only more people would do that…

Radiohead's Web-Only Release Threatens Music Industry

Hah, hah, hah, hah! Stick it to ‘em, Thom!

The Right Brain vs Left Brain (Optical Illusion)

Ack! It’ll only go clockwise for me, but some of the guys here on the office and on #linux see it going anticlockwise or oscilating. I don’t think I agree with the left/right brain associations though, they seem bogus.

nose: a discovery-based unittest extension

Relax NG Compact Syntax: The xsd: datatypes


RNV is an implementation of Relax NG Compact Syntax validator in ANSI C. The command-line utility uses Expat.

Why test parallelism on a simple function?

A Visual Explanation of SQL Joins

To throw at people who still won’t use friggin’ joins properly.

Three stories about The Tao

Seriously, read this.

Programming: You're still doing it wrong.

Now, ain’t that the truth! That’s John McCarthy for those who don’t recognise the face.

Using the jQuery test suite for your own projects

Why Does Software Cost So Much?

Why not S/MIME?

Configuring Apache httpd (from scratch)

Because the default apache.conf/httpd.conf file is horrible.

Why Accessibility? Because It?s Our Job!

And this, kids, is why I’m a hardass about how you do your markup.

Coworkers Considered Harmful


Interesting, but butt-ugly, and the interface could do with work.

Top Down Operator Precedence by Douglas Crockford

Crockford’s chapter in ‘Beautiful Code’, which implements a parser for a version of JavaScript with all the cruft dropped and a number of design errors fixed. The method used for implementing the parser is the main focus of the piece and is really, really elegant. If you’ve any interest in parsing, it’s worth a read. In fact, read it anyway.

Http-https transitions and relative URLs

It appears that you can have relative URLs that drop the protocol, but keep the server name. Didn’t know that.

LOLCats Bible Project

Instant comedy gold!


A to-do list for Vim.

CouchDB "Joins"

Opening winmail.dat (TNEF) files in Thunderbird (on Ubuntu)

The people who wrote Outlook are Tardmonkeys.


A PHP extension that tells you what is being included, where it’s being included, and when.

How software warps your brain

These considerations add a layer of complexity to software design. As developers, we tend to think of adding new features simply as adding optional ways of usage that users can ignore, but there’s more to it than that. As users, we feel like we should use the options that are provided to us, whether it makes sense or not. I suspect this is one of the reasons for software spoilage.

This is why I’m very cautious about giving in to feature requests: while well-intentioned, they’ve a habit of ultimately making the software worse. Witness WinAmp: it steadily got worse after WinAmp 2. And it’s not alone.

Evidence Based Scheduling

Mozilla Prism

Looks pretty cool, and I can see it being useful for some apps in work.

Live Pagerank

SVN Time Lapse View

Continuation-Passing Style (and why JavaScript developers might be interested in it)

Using colour in information display graphics

Read the via link too. It explains why I learned ages ago to do things up in black-and-white first, and then add colour carefully.

Dynamo: Amazon's Highly Available Key-value Store

Also read this.


From Objects to Functions in OCaml

Michael Feathers reimplements JUnit in O’Caml as a learning experience.

Squeak by Example

Programming with Streams

Exploring Erlang