Skip to content

{ Author Archives }

Literate Programming with LibreOffice

This post comes in the form of an OpenDocumentFormat document containing a program that can extract programs from ODF documents, including the program contained in this document.

Prototypical object-oriented programming

Some people think that the notion of classes is intrinsic to object-oriented programming. Bertrand Meyer even wrote a textbook about OOP called A Touch of Class. But back in the 1980s, Alan Borning and others were trying to teach object-oriented programming using the Smalltalk system, ostensibly designed to make simulation in computer programmers accessible to […]

In defence of assertions

The year is 2017 and people are still recommending processing out assertions from release builds. many assertions are short tests (whether or not that’s a good thing): this variable now has a value, this number is now greater than zero), which won’t cost a lot in production. Or at least, let me phrase this another […]

In defence of large teams

Seen on the twitters: 1) Bad reasons why tech startups have incredibly large mobile teams even though from an engineering perspective they don’t need it. This is the No True Scotsman fallacy, as no true software department needs more than, say, 20 people. I’m not going to get into the details of what you do […]

Your build needs to be better

I’ve said it before, build systems are a huge annoyance. If your build is anything other than seemingly instantaneous, it’s costing you severe money. Your developers are probably off reading HN, or writing blog posts about how slow builds cost them, while the build is going. When they finish doing that, which may be some […]

Acne cream

I just want to point out that even the best of us aren’t doing what we expect the makers of acne creams to do. What we actually know about software development, and why we believe it’s true by Greg Wilson.

Why your app is not massively parallel software

That trash can Mac Pro that hasn’t been updated in years? It’s too hard to write software for. Now, let’s be clear, there are any number of abstractions that have been created to help programmers parallelise their thing, from the process onward. If you’ve got a loop and can add the words #pragma omp parallel […]

Working Effectively with Legacy Code

I gave a talk to my team at ARM today on Working Effectively with Legacy Code by Michael Feathers. Here are some notes I made in preparation, which are somewhat related to the talk I gave. This may be the most important book a software developer can read. Why? Because if you don’t, then you’re […]

Build systems are a huge annoyance

Take Smalltalk. Do I have an object in my image? Yes? Well I can use it. Does it need to do some compilation or something? I have no idea, it just runs my Smalltalk. Take Python. Do I have the python code? Yes? Well I can use it. Does it need to do some compilation […]

Tsundoku

I only have the word of the internet to tell me that Tsundoku is the condition of acquiring new books without reading them. My metric for this condition is my list of books I own but have yet to read: the last three parts of Christopher Tolkien’s Histories of Middle-Earth Strategic Information Management: Challenges and […]