What’s wrong with the names ‘top’ and ‘bottom’ for the two ends of a stack?
A design pattern for implementing depth-first search in Python using a stack of iterators instead of recursion.
Using gadgets to translate combinatorial problems into exact cover instances, and how to avoid the gadgets using multiset covers.
A look back at the first couple of years of maintaining the Emacs/Perforce integration.
“At this point, if you are used to the way strings work in most programming languages, you ought to be asking yourself, how does this work?”
“When confronted with a problem, have you ever stopped and asked why five times? It is difficult to do even though it sounds easy.”
“It is stressful to know that something is wrong in your code, but not to know what it is or how to find it, and to have it hanging over your head day after day as you fail to make progress towards solving it. This nightmare scenario is the driver behind Ellen Ullman’s 2003 novel The Bug.”
Systematic use of software inspection could have fixed the Heartbleed bug without having to find it first.
Drawing the triangulations of an oriented n×n square using only lines joining the 4n integer points around the edge of the square.
The desire to add a user option often indicates that you have skimped on a important piece of usability work and are trying to put off doing it.
Dynamic programming is an important technique for writing combinatorial algorithms. But the name sucks!
“Languages are not just for describing algorithms to computers: they are for communication with other people.”
Handling bogus foreign keys in legacy databases in the Django web development framework.
Using Python’s class introspection to implement a non-standard method combination.
Theo Jansen is a Dutch artist who, for the last couple of decades, has been building increasingly elaborate kinetic sculptures that he calls strandbeesten (beach-animals).
The hidden location-tracking feature in iOS 4, with some maps to illustrate the accuracy of the recording.
A bug report (mostly so that other people who encounter the problem can search for and find the workaround).
A finished game, with smooth gameplay and polished graphics, gives little evidence of the many twists and turns along the path of development. Here, in twenty-four screenshots of level 24, I show some of the trials, mistakes, and modest triumphs from the development of Floe.
Emacs 23.1 was released on 2009-07-29. In this review, I describe some interesting and useful features of this release, and give some historical background to multilingual support in Emacs.
A program to allow you to run your XHTML document through the W3C validator and step through the errors and warnings conveniently in Emacs, and a brief discussion of why someone might want to do this.
Implementing a match-making user interface for an ad-hoc wireless networked video game shows us that a user interface needs to be able to run asynchronously with respect to the implementation.
Discussion of video game build pipelines and the development difficulties that they entail.
The trouble with the build tool
make is that because it uses file modification dates to determine whether a dependency has changed, it often rebuilds targets unnecessarily.
A detailed look at the encoding of bitmap images in the PNG file format, leading up to the discovery of the smallest possible transparent PNG, only 67 bytes long.
The technical challenges involved in implementing a sudoku puzzle generation algorithm on a handheld video game console, and how the developers at Zoonami solved them in the production of Zendoku for the Nintendo DS and Sony PSP.
A C programming language technique for embedding relations (tables of data) into programs in a way which is easy to check, safe to update, and requires no tools other than the C preprocessor.
It’s common and convenient to represent relational databases in the form of spreadsheets, especially using Microsoft Excel. But it’s surpisingly hard to carry out relatively simple database operations on such spreadsheets. This article explains how to implement simple selects and joins as Excel formulae.
A study of the errors found and fixed during the development, testing and release history of the adventure Christminster, together with a suggested categorization of defects in adventure games.
Lists the requirements for a statement coverage tool for Python, describes some issues in design and implementation, and compares
coverage.py with other statement coverage implementations.