Tag programming

Well, that was hectic…

After a last minute decision to go to Ludlow and eat nice food with good friends, a student-style last minute coding orgy in B23.

Which meant that this:

descended very rapidly into this:

and this:

I’m now exhausted, sitting in the physics library typing up notes (but that could just be the stairs.) We’ve already realised there are at least two problems with the version we submitted – one is a bug, the other is an out-of-date piece of documentation – and there are bound to be more. Still, there’s a lot of functionality in it, and is fairly robust (if not polished.)

Would you believe in 30 years of coding I’ve never, ever implemented a multilevel undo before? Not much call for it in games.

Happy birthday, ZX81



Thirty years old? How time flies. This was the first computer I actually owned – I’d done a bit of programming because the school had an ASR-33 teletype link to a minicomputer at the local college, but this was the first machine I had at home. I still remember writing dumb vertical scrolling racing games (possibly the easiest genre on such a machine.) (Want to do the same? Here’s an online emulator. Written as a Java applet.)

And above all, I remember the feeling of power when I got my 16K RAM pack. 16K? How could I ever use up that truly vast amount of memory? Heh.

But I still sometimes long for the days when it took only two or three lines of code to test out an idea, to see some graphics up on the screen. And for the days when kids learned how to program in their bedrooms.

Maybe those days are coming back, just a bit, with Linux and – particularly – Android. Perhaps Android is tempting people into coding because it is pretty easy to get something running. Nowhere near as easy as in the old days, but not too bad.

To end, here’s a quote from Bill Gibson’s novel Pattern Recognition:

Walking on, he explains to her that Sinclair, the British inventor, had a way of getting things right, but also exactly wrong. Foreseeing the market for affordable personal computers, Sinclair decided that what people would want to do with them was to learn programming. The ZX81, marketed in the United States as the Timex 1000, cost less than the equivalent of a hundred dollars, but required the user to key in programs, tapping away on that little motel keyboard-sticker. This had resulted both in the short market-life of the product and, in Voytek’s opinion, twenty years on, in the relative preponderance of skilled programmers in the United Kingdom. They had their heads turned by these little boxes, he believes, and by the need to program them…

…”But if Timex sold it in the United States,” she asks him, “why didn’t we get the programmers?”

“You have programmers, but America is different. America wanted Nintendo. Nintendo gives you no programmers. Also, on launch of product in America, RAM-expansion unit did not ship for three months. People buy computer, take it home, discover it does almost nothing. A disaster.”


3D Monster Maze screenshot

The Citadel

When the first shadow came, he was invisible. When the second shadow came, he could be seen – but he was not in the world, he stood instead in the void. When the third shadow came, the universe died.

Now the shadows can see each other, but still they glide through like ghosts.

(alternatively, some weird database problems but now entities appear in the world and are served to the client correctly, and two users can log in, move and see each other. This is quite a Big Deal.)

(Also, I forgot to mention the thing where user A logged in, followed by user B; then user B left – and user A disappeared from A’s screen, leaving a zombie user B standing there drooling.)

Procedural landscapes with L-systems and voxels

This guy is doing some very, very shiny things indeed, building detailed graphics from simple rules. It’s something I’ve been thinking of looking for some time, but have never had the time to do more than knock up some test code in (of all things) Python. The maths gets hard fairly quickly, but maybe using voxels – treating the world as a load of tiny, 3D cubes (rather like Minecraft) – is a way round this. I was too busy thinking in polygons.

Rendered L-system church

It’s definitely how things have to go if we want more Shiny Content in games – currently, it takes years to construct the worlds we see, and even then there’s an awful lot of duplication. If we use procedural techniques like L-systems, which can build complex fractal structures from recursive rules, we can create an awful lot of variety without a great deal of work for our 3D artists, and (if we’re clever) save on storage space too.

The Citadel

The halls are dark, and filled with ghosts who cannot see each other and pass through the walls with ease. Soon there will be light and the ghosts will know each other, and their footsteps will become burdened with the knowledge of that which they can pass and that which they cannot.

(in other words, the next jobs are the ontology, the static and dynamic light maps, and terrain types…)

“Were they sane, they could not understand their programs.”

To offer a third analogy, a folk definition of insanity is to do the same thing over and over again and to expect the results to be different. By this definition, we in fact require that programmers of multithreaded systems be insane. Were they sane, they could not understand their programs.

Linked from the SQLite FAQ, this wonderful paper on the evil that is multithreaded programming.

Greenspun’s Tenth Rule

Any sufficiently complicated C or Fortran program contains an ad hoc informally-specified bug-ridden slow implementation of half of Common Lisp.

Found here.

computers in 1965

An article on what computers can’t do, from Playboy in 1965 (back when you could honestly say that you read such things for the articles). Via BoingBoing. As true today as it’s ever been:

The shortage [of programmers] is understandable. Computer programing is self-inflicted torture. The problem is to make a mindless machine behave rationally. Before you can tell the machine how to solve a problem, you must first figure out how your own brain solves it – every step, every detail. You watch your brain as it effortlessly snakes its way along some line of reasoning that loops back through itself, and then you try to draw a diagram showing how your brain did it, and you discover that your brain couldn’t possibly have done it – yet you know it did. And there sits the computer. If you can’t explain to yourself, how are you ever going to explain to it?

Interesting philosophical dialog boxes

One of our games just popped up this dialog:

Why am I NULL?
Yes / No


An absolutely beautiful indie strategy game with abstract, crisp graphics. Download it – it’s stunning. It runs on Windows and Linux, and you should be able to run it on a Mac by using Mono on the command line or using Wine.

Copyright © Found
Jim Finnis' personal blog

Built on Notes Blog Core
Powered by WordPress