garethrees.org

Cambridge Diss’d Clare 200 audax
2017-01-21

A wintry expedition to Diss in Norfolk.

The stack of iterators pattern
2016-09-28

A design pattern for implementing depth-first search in Python using a stack of iterators instead of recursion.

Visual C/C++ incremental linker bug
2016-09-27

The Microsoft Visual C/C++ incremental linker sometimes fails to update the executable with the updated object code.

Cambridge Pork Pie 200 audax
2016-07-23

A ride to Melton Mowbray in Leicestershire and back again.

Exact cover III
2016-06-04

Using gadgets to translate combinatorial problems into exact cover instances, and how to avoid the gadgets using multiset covers.

Round trip
2015-12-15

How I combined a parser and a serializer to achieve an elaborate no-op.

Plan to throw one away
2015-12-14

How I had to write a JavaScript engine in two weeks.

Exact cover II
2015-11-17

Solving and setting Sudoku problems in Python using an exact cover solver.

Exact cover I
2015-11-09

Solving the exact cover problem in Python using ‘Algorithm X’.

Cambridge Four Counties 200 audax
2015-09-05

A ride around Cambridgeshire, Bedfordshire, Northamptonshire and Buckinghamshire.

Cambridge Market 200 audax
2015-08-22

A ride to Framlingham in Suffolk and back again.

A performance regression
2015-08-09

A debugging story.

The ping that wouldn’t die
2015-08-07

A debugging story.

Emacs/Perforce integration: a retrospective
2015-08-07

A look back at the first couple of years of maintaining the Emacs/Perforce integration.

CTC ride to Lavenham
2015-08-02

“Cambridge CTC is currently undergoing some soul-searching about the future of the Sunday all-day ride…”

CTC ride to Whitwell
2015-05-31

“The wind was blowing at about 30 km/h from the southwest, and there was an intermittent light drizzle…”

Osama
2015-05-01

“I was disappointed that Tidhar hadn’t been more daring. But maybe that’s too much too ask of any author in the current political climate.” A review of Lavie Tidhar’s 2011 novel.

The Quantum Thief
2015-04-29

“Jean le Flambeur, gentleman thief, is sprung from prison by the beautiful Mieli, who persuades him to undertake one last job. Author Hannu Rajaniemi works hard to obscure the familiar outline of this hoariest of heist plots, by layering on the worldbling with a trowel.”

CTC ride to Braughing
2015-02-22

“There was a hard frost overnight, and although the sun was shining, it was just a couple of degrees above zero…”

Completion colours
2015-02-11

“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?

Completion annotations
2015-02-09

“Interactive completion works poorly in the case of changelists and jobs, because all you get when you type TAB is a list of opaque identifiers that give you no help in choosing the item you want.”

Five whys
2015-02-07

“When confronted with a problem, have you ever stopped and asked why five times? It is difficult to do even though it sounds easy.”

The Bug
2015-01-18

“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.”

Software inspection and the Heartbleed bug
2014-05-08

Systematic use of software inspection could have fixed the Heartbleed bug without having to find it first.

“Double Dutch” audax
2014-04-19

Around the fens in a north-easterly.

Password purgatory
2014-04-15

I’m seeing what it’s like to try to follow “best practices” for password management, but I find myself wondering if these practices are really suitable for human beings?

DIY 200 audax to Wendover
2014-04-05

Across the Chiltern Hills and back.

“End of Hibernation” audax 2014
2014-03-23

A ride round the Suffolk downs, with snow and hail.

A localization failure
2014-01-21

Google Maps has not been properly localized to the UK, so it’s useless for finding your way about rural Hertfordshire and Essex.

Emitremmus 2013
2013-10-27

“It was all good fun until we hit the turn at Saffron Walden…”

Drawing square triangulations
2013-08-09

Drawing the triangulations of an oriented n×n square using only lines joining the 4n integer points around the edge of the square.

Shrinking SVG
2013-08-02

Generating smaller Scalable Vector Graphics (SVG) from Python.

One in three?
2013-07-29

Despite the claim appearing in a BBC headline, it’s not the case that one in three journeys in Cambridge is by bike.

Scalable vector triangulations
2013-06-15

Generating Scalable Vector Graphics (SVG) from Python.

Square triangulations
2013-06-14

Computing the number of ways to triangulate an oriented n×n square using only lines joining the 4n integer points around the edge of the square.

User options considered harmful
2013-06-13

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.

Software archaeology and technical debt
2013-06-12

It doesn’t take long to reach a ‘mature programming environment’ in which complexity is overwhelming and change is expensive and error-prone. We’re all programmer–archaeologists now.

The tabular method
2013-06-11

Dynamic programming is an important technique for writing combinatorial algorithms. But the name sucks!

Circular logic
2013-05-15

Truth tables, graph colourings and a surprising sequence in Project Euler problem 209.

Language-oriented programming
2013-05-09

“Languages are not just for describing algorithms to computers: they are for communication with other people.”

Emacs/Perforce integration: back from the dead
2013-05-01

I’ve forked the abandoned Emacs/Perforce integration, and started fixing it. In particular, it no longer hangs Emacs when it can’t connect to the Perforce server.

Bogus foreign keys in Django
2013-03-24

Handling bogus foreign keys in legacy databases in the Django web development framework.

CTC ride to Buntingford
2013-03-10

“It was chilly out: just barely above freezing, and there was a cold north-easterly wind. Just the kind of day on which it would have been nice to sit in a warm house…”

Great North Road
2013-01-15

“This down-to-earth milieu reveals the presence of shackles on the imagination.” A review of Peter F. Hamilton’s 2012 novel Great North Road.

The last lousy bug
2013-01-06

A debugging war story: “Bug 142 was especially mysterious because it happened after the program quit running…”

The Hydrogen Sonata
2013-01-02

“A bitter exercise in cynicism and disappointment.” A review of Iain M. Banks’ 2012 novel The Hydrogen Sonata.

By Light Alone
2012-12-28

“Malthusianism is a topic that many science fiction writers have tackled, but the genre can not be said to have come out looking particularly good.” A review of Adam Roberts’ 2011 novel By Light Alone.

Regenesis
2012-12-27

“Unlike in the Roman Empire, on the planet Cyteen the slaves cannot even dream of freedom.” A review of C. J. Cherryh’s 2009 novel Regenesis.

Cambridge audaxes
2012-09-02

On Sunday 2nd September I organized three audax rides with the support of CTC Cambridge.

Big Bike Ride
2012-07-08

201.2 km around the fens in the rain.

CTC ride to Hatfield Forest
2012-07-01

In which we get lost on National Cycle Route 16.

Just Ride
2012-06-19

Grant Petersen’s book is addressed to a readership that have no idea how to cycle and for whom the only role models are professional bicycle racers and people who have something to sell them.

Fiasco
2012-05-31

In his final novel Fiasco, Stanisław Lem returns to one of his idées fixes, the impossibility of meaningful contact with aliens.

Method combinations in Python
2012-03-22

Using Python’s class introspection to implement a non-standard method combination.

A credo for critics
2012-01-28

“Bad reviews are a basic fact of literary life, you might have thought…” Some thoughts on the reaction to Liz Bourke’s review of Michael J. Sullivan’s fantasy novel Theft of Swords.

The hidden dangers of cycling
2012-01-10

A reprint of ‘The hidden dangers of cycling’ by A. Shadwell, M.D., first published in the National Review of 1897.

Law-breaking among cyclists: perception vs reality
2012-01-10

The public perception of law-breaking among cyclists, how this arises and persists through cognitive biases, and some consequences for campaigners.

Polystom
2011-12-29

A review of Adam Roberts’ 2003 novel Polystom: “Easy travel to other planets has been one of the dreams of science fiction—perhaps the dream. But everything we’ve learned about the universe has only made it clearer that this dream is an illusion.”

The Clockwork Rocket
2011-12-27

All right-thinking people are aesthetic relativists, and for us this means that there’s a lacuna in most reviews: who’s to say, for example, that “characterization” is an appropriate yardstick to judge the work under examination?

A foolish consistency
2011-12-25

We all know why literature should be consistent—to help our willing suspension of disbelief—but might there be positive literary effects from an artful application of inconsistency?

Five minute foreshadowing
2011-12-21

What links J. J. Abrams’ 2009 film Star Trek with Christopher Tolkien’s History of the Lord of the Rings?

Emitremmus 2011
2011-10-30

An autumn ride from Stevenage.

Tour of Britain
2011-09-17

In which we go to Bury St Edmunds to see the start of stage 7 of the Tour of Britain.

Planning the Cambridge 200
2011-09-13

I volunteered to run a 200 km audax in September 2012, and it’s never too early to start planning the route.

Python has no precedence grammar
2011-07-17

A surprising fact about Python: it cannot be expressed by an operator precedence grammar.

Theo Jansen’s Strandbeest
2011-07-04

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).

Turning circles
2011-07-02

Using vector geometry to compute a turning circle. Plus a Javascript/canvas demo.

Dabblers welcome
2011-05-17

A response to Iain M. Banks’ unsatisfactory opinion piece, ‘Science fiction is no place for dabblers’.

Three novels by Adam Roberts
2011-05-14

Brief thoughts on Salt (2000), On (2001), and Stone (2002).

Cambridge 300 audax
2011-05-01

To Wymondham in Leicestershire.

Splinter
2011-04-24

A review of Adam Roberts’ 2007 novel Splinter. At the same time, the narrative does its best to assist in the denial: instead of a science-fictional examination of the catastrophe, the story heads off into middlebrow psychological territory…

iOS location tracking
2011-04-21

The hidden location-tracking feature in iOS 4, with some maps to illustrate the accuracy of the recording.

Gradisil
2011-04-16

A review of Adam Roberts’ 2006 novel Gradisil. Merely pastiching the surface features of this genre won’t by itself produce something that’s recognizable as ‘hard’ sf to the aficionados.

CTC ride to Horseheath
2011-04-10

In which we visit the largest Roman burial mounds in northern Europe.

“Double Dutch” audax
2011-04-09

The fens of Cambridgeshire, Norfolk and Lincolnshire.

Four novels by Adam Roberts
2011-04-02

Brief thoughts on Land of the Headless (2007), Swiftly (2008), Yellow Blue Tibia (2009), and New Model Army (2010).

CTC afternoon ride to Ickleton
2011-03-27

A short ride with daffodils.

Surface Detail
2011-03-25

A review of Iain M. Banks’ 2010 novel Surface Detail. “Any long-running science-fictional series ends up suffering from … the accretion of incompatible details to the point where it becomes impossible to imagine a consistent universe to which they could possibly belong.

River of Gods
2011-03-25

A review of Ian McDonald’s 2004 novel River of Gods. “I would have liked a bit less of the ontological mystery and the big sf ending: I would have been quite happy to carry on with the tour.

“End of Hibernation” audax 2011
2011-03-20

A ride round the Suffolk downs, with March winds and tractors.

The Devil is an Ass
2011-02-08

Post-processing a critical edition of the Ben Jonson play for Project Gutenberg Distributed Proofreaders.

Encapsulation is not always right
2010-12-09

In object-oriented programming, encapsulation is sometimes a bad idea, and motion planning and collision are areas where this is particularly likely to be the case.

Using the Autodesk FBX Python module on 64-bit Macs
2010-12-08

A bug report (mostly so that other people who encounter the problem can search for and find the workaround).

CTC ride to Waresley, West Perry, and St Ives
2010-11-21

In which we meet the St Neots half marathon.

Indentation advice
2010-11-16

Supposing, just supposing, that you actually wanted to make your dots line up vertically in Emacs, how would you go about it?

Daylight puzzle
2010-11-16

In which I reveal my lack of understanding of astronomy and spherical trigonometry.

Hauxton 200 audax
2010-09-26

“A baptism by wind and rain…”

London Sightseer audax, 2010
2010-09-07

“Carrying our bikes up the stairs was the hardest bit of the ride…”

CTC ride to Barkway, Ardeley and Royston
2010-08-22

“How can I put these keen new riders off the club, I thought to myself? How about taking them down the muddiest lane in Hertfordshire?”

Zendegi
2010-08-17

A review of Greg Egan’s novel Zendegi. “An entertaining but rather slight novel that places Egan’s usual concerns—transhumanism, uploading of minds, the morality of artificial intelligence—in a democratic Iran in the early and mid twenty-first century.

Manifold: Space & Origin
2010-08-14

A review of Stephen Baxter’s novels Space (2000) and Origin (2001), the second and third books in the Manifold trilogy. “If you’re looking for serene contemplation of disaster and suffering, Baxter’s your man.

CTC ride to Stradishall, Lavenham and West Wratting
2010-07-25

“… we were glad to make an extra stop at Clare for ice cream…”

CTC ride to Haverhill, Clare and Ashdon
2010-07-11

“It was a tough ride on my own in the heat…”

History of level 24
2010-06-17

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.

CTC ride to Hinxworth, Old Warden and Gamlingay
2010-06-13

“The selection of destinations made route-setting quite a challenge.”

CTC ride to Stradishall, Clare and Stetchworth
2010-06-06

“After tea our luck ran out and we were caught in one last thunderstorm.”

John Sturrock is an idiot
2010-05-11

The translator of Notre-Dame de Paris gives the impression of not having read his own book.

Hexes by Stick Insect
2010-04-23

Girls, interrupted: Listener crossword 4080.

Sine Qua Non by Shackleton
2010-04-16

Symphonic Movement: Listener crossword 4079.

The Fragmentation of Reality by Lavatch
2010-04-09

Sixteen choices: Listener crossword 4078.

The Undertones? by Schadenfreude
2010-04-07

Clashing lines: CAM 59 crossword.

Forced Entry by Mr Lemon
2010-04-02

Several ways in: Listener crossword 4077.

Labour by Elint
2010-03-26

Out on a limb: Listener crossword 4076.

“End of Hibernation” audax 2010
2010-03-21

A 207 km audax ride from Haslingfield to Stowmarket, Sudbury and back, 2010-03-21.

Square-bashing by Arden
2010-03-19

Left and right: Listener crossword 4075.

Printer’s Devilry by Qid
2010-03-12

A temporary marking slug: Listener crossword 4074.

Quartet by MynoT
2010-03-05

Ancient wisdom: Listener crossword 4073.

The Isolated Word by Ten-Four
2010-02-26

A self-descriptive puzzle: Listener crossword 4072.

Five Dots by Franc
2010-02-19

Sense, reason, and intellect: Listener crossword 4071.

The Glady Marsh by Salamanca
2010-02-12

Chercher la femme: Listener crossword 4070.

Conversion by Samuel
2010-02-05

A knockout puzzle provides a tough fight: Listener crossword 4069.

364 263 by Xanthippe
2010-01-29

A carte blanche with modified entries and a numeric code: Listener crossword 4068.

Packing the “S” tetracube
2010-01-17

In how many ways can you pack 54 “S” tetracubes into a 6×6×6 cube?

Rentokil by Jago
2010-01-15

Tricky manipulation required: Listener crossword 4066.

Saturn’s Children
2010-01-09

A review of Charles Stross’s 2009 science fiction novel Saturn’s Children, with analyses of the problems with the narrative voice and some of the flaws in the world-building.

Packing the “T” tetracube
2010-01-09

Can you pack 54 “T” tetracubes into a 6×6×6 cube? Solutions, discussion, and generalizations.

Absolute Friends
2010-01-07

A review of the 2003 novel Absolute Friends, in which John le Carré contrasts the Cold War and the War on Terror through the viewpoints of the two spies of the title.

How the anti-cycling lobby poisons public discourse
2009-12-11

How anti-cycling propagandist Edmund King of the AA promotes negative stereotypes of cyclists in order to blame them for their own deaths and injuries.

CTC ride to Wilburton and Ely
2009-11-22

“It was a day of attrition…”

Why I hate FaceBook
2009-10-25

Eight reasons why FaceBook sucks for serious discussions.

Paying for postcodes
2009-10-13

An appeal for the Royal Mail’s Postcode Address File to be freely licensed to individuals and not-for-profit organizations.

Using html5lib to resolve relative URLs
2009-10-09

Python code for translating relative URLs in HTML source into absolute URLs suitable for syndication.

Is Robin Lustig prejudiced against Japanese men?
2009-10-08

A criticism of Robin Lustig’s absurd and offensive explanation for Japan’s low fertility.

Ingleborough and Whernside
2009-09-24

A walk from Ingleton to Ingleborough, Chapel-le-Dale, and Whernside.

Emacs 23
2009-08-19

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.

The fractal dimension of Mellon Udrigle
2009-08-19

The BBC programme Coast bravely tackled the fractal nature of coastlines but missed the historical origins of the subject in Lewis Fry Richardson’s statistical study of warfare.

Commuting and health in Cambridge
2009-07-18

While taking part in this study (run by the MRC Epidemiology Unit at the Institute of Metabolic Science) I amused myself thinking about possible sources of bias.

Advanced Photo System
2009-07-16

A brief history of the Advanced Photo System and some photos I took using it.

CTC ride to Hare Street
2009-07-05

“After tea we split up…”

Cycle tour to Warsash and Staines
2009-06-29

A cycle tour from Cambridge to Warsash and Staines and back again, with photos and some discussion about how I planned it.

BNP press office on mixed-race marriages
2009-06-02

An e-mail exchange I had a few years ago with “Dr. Phill Edwards” of the British National Party.

Punctures
2009-05-31

A ride with the Cambridge Cycling Club suffers a visit from the puncture fairy.

Pillars of the community
2009-05-26

Some comments on the sabotage of the Étape Caledonia and the lorry driver who nearly killed Boris Johnson.

CTC ride to St Neots, Keysoe, and Caxton
2009-05-10

“We were a few minutes late setting off, which was my fault because I rather incompetently tightened some loose spokes in my back wheel…”

Improving road safety
2009-05-08

A look at the National Audit Office report Improving road safety for pedestrians and cyclists in Great Britain. “You can see that the normalized figures are not nearly so flattering to the UK. Is this just plain incompetence, or a deliberate attempt to mislead?

Manifold: Time
2009-04-08

A review of Stephen Baxter’s 2000 novel Manifold: Time. “Baxter completely lacks control over his material in this novel. He has potentially powerful themes and ideas, but handles them so inconsistently that they lose all their power.”

Roberts on Incandescence
2009-03-20

A commentary on Adam Roberts’ review of Greg Egan’s novel Incandescence in Strange Horizons.

Colliding balls
2009-02-17

Several approaches to implementing a system of colliding balls, ranging from quick-and-rough to painstaking-and-slow.

Snow preparedness
2009-02-08

The cost of and responsibility for snow preparedness: “it’s not just a matter we can leave to government, we all have things to do.

Validating XHTML
2009-02-07

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.

Apple Mail crash: “bad external relocation length”
2009-02-02

A serious crash in the Apple Mail application, with some analysis and a possible remedy. “It’s a bit worrying that the entire world can make my mail application crash just by sending me some junk mail.

User interface asynchrony
2009-01-31

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.

Super Paper Mario
2009-01-22

A review of the 2007 Nintendo Wii game Super Paper Mario by Intelligent Systems, directed by Ryota Kawade. “Super Paper Mario has two significant innovations. One is graphically and conceptually spectacular, and was hyped in the game’s advertising, and is somewhat of a failure. The other is subtle, little commented on, and a big success.

ISA decision-making
2009-01-19

If you have a debt and some surplus income, under what circumstances should you pay down the debt and under what circumstances should you invest in an Individual Savings Account (ISA)?

Einstein and Eddington
2008-11-26

A review of the BBC/HBO television drama, with particular attention to the accuracy of the depiction of the science. “If these stars on this photographic plate of the eclipse overlap with the comparison plate, Einstein’s theory is wrong and Newton’s theory holds. If there is a gap between the two images, then the sun’s gravitational field has shifted the stars’ position, and we have a new theory of gravity.

Crash II
2008-11-06

A look at house prices in November 2008. “The first figure attempts to suggest where the bottom of the current crash might be by comparison with the bottom of the last crash.

Anatomy of a manufactured controversy
2008-11-03

How a harmless piece of advice to the staff of Bournemouth Borough Council was inflated by The Telegraph into a nationwide cultural crisis.

Quest for the 2m cycle lane
2008-10-22

Some bullshitting by a Cambridge City councillor prompts the question of whether any of the cycle lanes in Cambridge meets the official recommended width anywhere along its length?

Why doesn’t Google Maps use OpenStreetMap?
2008-10-20

OpenStreetMap has better coverage of Cambridge than Google Maps. Google Maps combines mapping data from many sources. Why doesn’t it make use of OpenStreetMap?

Financial crisis: Northern Rock’s balance sheet
2008-10-18

Like every other fool with a blog, I’m trying to understand what caused the financial crisis. I start by looking at the collapse of Northern Rock in some detail and trying to work backwards from there. What happened to this bank?

Database state
2008-10-16

A letter to David Howarth MP, asking him to work to defeat Home Secretary Jacqui Smith’s proposal to create a government database of telephone calls and e-mails.

Incandescence
2008-08-25

A review of Incandescence by Greg Egan. “In a genre dominated by fantasy dressed in a spacesuit instead of a wizard’s robe, Greg Egan stubbornly sticks to extrapolations from the physics we know. He rules out from his fiction faster-than-light travel or communication, or spaceships that couldn’t possibly be fueled by any form of energy we know. This self-denying ordinance deprives him of the props and conventions of the genre: no galaxy-spanning empires or interstellar wars for Egan.”

What commuter cyclists can’t learn from Chris Hoy
2008-08-20

I demolish an absurd article about cycle commuting from the BBC.

Fourteen years of e-mail
2008-08-11

Counting and graphing e-mails. With a digression on non-standards-conformant mail user agents and how to use Perl to parse their non-conformant Date headers.

How deep is your build pipeline?
2008-08-09

Discussion of video game build pipelines and the development difficulties that they entail.

Constant, qualified, and less attemptable
2008-08-06

The const type qualifier in the C programming language, and the consequent impossibility of implementing some common operations in a type-safe way.

Make my day
2008-06-24

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.

Royston audax
2008-05-18

The 2008 Royston audax: a short ride (as audaxes go), of 107 km, from Royston to Longstanton via Chrishall and back via Gamlingay.

Newlands valley watershed
2008-04-26

An account of a walk I did back in 2002, from Little Town in the Newlands valley in the Lake District, to Buttermere, and back. (In the form of a map with mouseover text.)

Three times is a pattern
2008-03-31

Three cases in which a motorist hit a cyclist, there was CCTV or eyewitness evidence, and yet the police took no action. “The message that cyclists are getting loud and clear is that the police are not interested in protecting them from assault by motorists.

Multi-way mortgage calculator
2008-03-24

There are many thousands of mortgage calculators on the web that compute the monthly payments based on the capital sum, interest rate, and duration. But this one lets you compute any of these four values based on the other three.

None of the above
2008-03-01

A merciless nitpicking of the 2006 Edexcel GCSE Science: Physics P1b exam paper. “This paper covers waves, electromagnetic radiation, astronomy, cosmology, and seismology, and features some really, truly, horribly poor questions.

Megalotropism is the key insight
2008-02-01

A review of Matter by Iain M. Banks. “The book initially appears to be about the political and military conflict between two humanoid civilizations. But a kind of pull-back reveals that this conflict is a small event taking place in a corner of a much vaster canvas, like two colonies of ants fighting over a mound of earth in a city park.”

Paper Mario
2008-01-15

A review of the 2000 Nintendo 64 game Paper Mario by Intelligent Systems, directed by Ryota Kawade. “Paper Mario is deliberately designed to be an RPG for beginners, and after playing it I can glimpse what people see in proper RPGs.

Crash
2007-12-09

A look at house prices in December 2007. “I’ve been wondering about what the UK housing market crash is going to look like, and how far prices might fall.

Smallest possible transparent PNG
2007-11-15

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.

Smart quotes in Emacs 22
2007-10-17

Smart quotes mode, a minor mode for Emacs 22 that makes it convenient to type ‘smart’ “quotes”.

Cram101
2007-10-11

A publishing scam using misleading bibliographical data to fool Amazon customers into thinking that a study guide might be good substitute for a real textbook.

Rulebound
2007-10-06

Why rules can’t tell us how to make good video games; we need understanding of their purpose and effects as well. With an extended digression on neoclassicism and John Dryden.

Stars, I have seen them fall
2007-09-28

A tongue-in-cheek look at the metaphors in A. E. Housman’s poem starting “Stars, I have seen them fall…” and whether they really make sense.

Murder in the cathedral
2007-06-10

An analysis of the dispute between the Bishop of Manchester and the video game developer Insomniac over the use of Manchester Cathedral as a setting in the game Resistance: Fall of Man.

Zendoku puzzle generation
2007-06-10

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.

Zendoku tactics
2007-06-07

Tactics and tips for winning at Quest Mode in Zoonami’s Zendoku, a video game for the Nintendo DS and Sony PSP. With lots of diagrams.

The Python Challenge
2007-05-07

The Python Challenge is a website of puzzles compiled by Nadav Samet. The puzzles are a mixture of riddles, codes, and programming challenges, with the Python language being a recommended tool. Here are some of my notes and solutions.

Relational macros
2007-04-24

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.

Powers of two
2007-04-19

Bram Cohen poses a programming question for job applicants: it’s easy to solve by searching but how can you be confident that you’ve searched far enough? Trying to answer this question leads to interesting mathematical analysis.

PSP loading times
2007-01-18

Why video games on the Sony PlayStation Portable take so long to load, and what game developers can do to reduce loading times.

Mechanics spread over too much game
2007-01-11

Why are so many games based on movies no good? The answer lies in the time and effort required to perfect each game mechanic.

Juno in Hades
2006-09-05

Commentary on an extract from the television series Miracle Planet II, portraying a collision between a small planetoid and Earth, of similar scale to ones which occurred during the “late heavy bombardment” of the Hadean era (about 4 billion years ago).

Excel
2006-04-25

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.

The puzzle structure of Ocarina of Time
2004-12-01

The structure of the puzzles in the Nintendo 64 video game The Legend of Zelda: Ocarina of Time. With diagrams and maps.

Type inference for Python
2002-02-26

A sketch of a type system for the typeless programming language Python. The system would allow a limited form of type inference that would detect some type errors at compile time.

The errors of Christminster
2001-12-15

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.

Statement coverage for Python
2001-12-04

A tool to support statement coverage testing for Python. It accumulates coverage data over many runs, generates coverage reports, and annotates Python source showing which statements have been covered.

Statement coverage for Python: design and analysis
2001-12-04

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.

Can we ship yet? Using Perforce fixes to measure product quality
2001-09-01

How to use Perforce to efficiently measure the quality of a product in a software development environment where there are many branches, customers, and product versions. Presented at the Perforce User Conference 2001.

Christminster
1995-08-08

A text adventure game set in the ancient university town of Christminster. A telegram from your brother Malcolm, a teacher at Biblioll College, draws you in to investigate the mystery of his disappearance, the history of the college, and the ambitions of the scheming Doctor Jarboe and Professor Bungay…

The Magic Toyshop
1995-07-26

A text adventure game on the theme of toys and puzzles. Looking for a birthday present for your niece Isabelle, you wander down a dim Victorian arcade and come across an old toyshop, with a peeling rocking-horse behind a grimy window…