A design pattern for implementing depth-first search in Python using a stack of iterators instead of recursion.
A ride around Cambridgeshire, Bedfordshire, Northamptonshire and Buckinghamshire.
A look back at the first couple of years of maintaining the Emacs/Perforce integration.
“The wind was blowing at about 30 km/h from the southwest, and there was an intermittent light drizzle…”
“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.”
“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.
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?
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.
“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.
“A bitter exercise in cynicism and disappointment.” A review of Iain M. Banks’ 2012 novel The Hydrogen Sonata.
“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.
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.
Using Python’s class introspection to implement a non-standard method combination.
A reprint of ‘The hidden dangers of cycling’ by A. Shadwell, M.D., first published in the National Review of 1897.
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.”
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?
I volunteered to run a 200 km audax in September 2012, and it’s never too early to start planning the route.
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).
A response to Iain M. Banks’ unsatisfactory opinion piece, ‘Science fiction is no place for dabblers’.
The hidden location-tracking feature in iOS 4, with some maps to illustrate the accuracy of the recording.
In which we visit the largest Roman burial mounds in northern Europe.
Brief thoughts on Land of the Headless (2007), Swiftly (2008), Yellow Blue Tibia (2009), and New Model Army (2010).
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.”
A ride round the Suffolk downs, with March winds and tractors.
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.
In which we meet the St Neots half marathon.
In which I reveal my lack of understanding of astronomy and spherical trigonometry.
“Carrying our bikes up the stairs was the hardest bit of the ride…”
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.”
“… we were glad to make an extra stop at Clare for ice cream…”
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.
“After tea our luck ran out and we were caught in one last thunderstorm.”
A 207 km audax ride from Haslingfield to Stowmarket, Sudbury and back, 2010-03-21.
A carte blanche with modified entries and a numeric code: Listener crossword 4068.
Can you pack 54 “T” tetracubes into a 6×6×6 cube? Solutions, discussion, and generalizations.
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.
Python code for translating relative URLs in HTML source into absolute URLs suitable for syndication.
A walk from Ingleton to Ingleborough, Chapel-le-Dale, and Whernside.
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.
A brief history of the Advanced Photo System and some photos I took using it.
A cycle tour from Cambridge to Warsash and Staines and back again, with photos and some discussion about how I planned it.
“We were a few minutes late setting off, which was my fault because I rather incompetently tightened some loose spokes in my back wheel…”
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.”
Several approaches to implementing a system of colliding balls, ranging from quick-and-rough to painstaking-and-slow.
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.
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.”
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)?
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.”
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.”
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?
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?
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.”
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.
const type qualifier in the C programming language, and the consequent impossibility of implementing some common operations in a type-safe way.
The 2008 Royston audax: a short ride (as audaxes go), of 107 km, from Royston to Longstanton via Chrishall and back via Gamlingay.
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.”
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.”
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.”
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.”
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.
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.
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.
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.
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.
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.
Why are so many games based on movies no good? The answer lies in the time and effort required to perfect each game mechanic.
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 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.
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.
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.
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…