Ulf, A Day @ The Zoo

:: The hacker

There's an idea that holds some romance for me.

It's about a hacker. There are hackers that work in packs. But not here. For
the scene I am painting, it is an individual.

In some tellings, it would be late at night. A labcoat before a wall of
monitors. The lab is dark, but the figure is bathed in screenlight. But the
scene could as easily be sunrise by a rice field in rural Indochina. Jeans and
tshirt, hammering at an ancient Thinkpad with a pile of notes at one side,
a mug holding the papers down from the wind.

What's important is not the place, but the sense of isolation. The hacker is
like an astronaught or dinghy at sail and far from land. With sparse but deft
tools, and the power of thought, they interact with a vast world.

:: Ulf's "A DAY @ THE ZOO"

There was a stand-out entry in this year's 7-day roguelike festival. Few
crowds would be more tolerant of quirkiness or aware of subtlety than
roguelike developers. Yet I think many would still have overlooked this game.
It's Ulf's 'Zoo'. http://happyponyland.net/zoo.php

The premise is simple. You are at the entry to a zoo. You wonder around
looking at the space... and that's it. Eventually you get bored and head for
the exit.

It's a study in a single idea - the idea of field of view. As you move around,
animals appear and disappear based on walls and trees. Very occasionally, the
animals move.

For what must be a first, I've spent more time and had more fun looking at the
code than playing the game it defines. When I opened it, I was surprised at
how sparse it was. He uses no libraries, and generates the FOV entirely from
an algorithm that's plain to see in the code. Everything interesting is

After spending some time with the game and the code, I notice subtleties, such
as the elegant way that the field is only redrawn as the player gets near to
an edge of the field of vision. The procedural generation of the zoo is also

:: Code

I'm in awe of this style of hacking. Ulf started with a standard tool box:
unix, a text editor and the C compiler. With just this, he has constructed the
thing to demonstrate the ideas he held.

There are mechanisms that would not work in larger games with which he'd be
familiar. But rather than import then here - using a chainsaw to break a twig,
he has just gone for simple solutions.

The result is beautiful, but the act is more beautiful still.

Mainstream code these days is based around the idea of frameworks. If you want
to build a web application, then you find a purpose-build language for doing
this, and a mainstream webserver, and you build your app a bit like lego from
these building blocks. There is sense to it. Down the line someone you'll
discover you need some vast new feature like SSL. Rather than build it
yourself, you can just flick on a switch to get the thing that you want, which
is already there waiting in case you ever need it.

But what Ulf has done harks back to a much older tradition. Where all you had
was an operating system. The hacker must understand all the ideas in play, and
then just write all the code that realises their goal.

Best-of-breed systems are still written like this, by people who intimately
understand their domain and who drive their tools rather than being driven by

I've been semi-consciously chipping my way into this thinking for as long as I
can remember. But I'm still prone to thinking in frameworks. A few weeks ago,
I thought this post would be about what a good foundation for a 7-day
roguelike Zoo would make. Maybe it could be used like this. You could, but
what would be the point?

Zoo reminds me of the mysterious richness that unix projected when I
encountered it as a teenager. It's a beautiful study.