Magic the gathering is Turing-complete

I just mentioned Conway's Game of Life as an example of a Turing-complete system.

Though it's called the "Game" of Life, and some people describe it as a zero-player game, it's not really a game in the traditional sense of the word.

For an unexpected example of an unambiguous game which is also Turing-complete, check out Magic: The Gathering. It has been shown that a Universal Turing machine can be constructed inside Magic, and hence that it is Turing-complete.

I played a lot of Magic in high school, though it's too expensive of a habit to keep up for long. If, like me, you remember Magic fondly, but don't play it so much any more, might I recommend Mark Rosewater's Drive to Work podcast?

Life in Life

Conway's Game of Life is a well-known cellular automaton in which, every tick, the state of each of the cells on a giant grid is determined only by the states of its immediate neighbours in the previous tick. Despite its extremely simple definition, it is famously Turing-complete, which is roughly to say that it can compute any computable function.

And so, of course, someone has written a Life emulator, in Life.

Perhaps it's Life all the way down...

VideoBrains

Near London? Like thinking and talking about video games? You should check out VideoBrains. It's a monthly meet of games journalists, developers, academics and other enthusiasts which takes place in an esports bar near-ish Kings Cross.

Each event features panels and talks by smart people, who so far have had only interesting and thoughtful things to say. If it sounds like your thing, you should really check it out.

Also, previous talks are posted on their Youtube channel, so you can get a flavour of what it's like. But if you do watch them, consider throwing the organiser a dollar or so; he puts a hell of a lot of effort into making it as good as it is.

Glitch Pigeon

Screenshot: Glitch pigeon in a painted autumn sky.It's been a pretty horrifying couple of weeks on Twitter, hasn't it? At least it has on my timeline. Two unrelated, awful events in particular came right on top of each other, each whipping up a social media storm. First the violent incursion of militarised police into peaceful democratic protests in Ferguson, Missouri. Second the eruption of sickening misogyny and violent threats directed at female game makers and games journalists, in particular Anita Sarkeesian and Zoe Quinn.

In both cases, my Twitter stream did what it always does. First came the reports from those directly affected, amplified and retweeted by other journalists. Fear, indignation, outrage, disbelief, heartbreak. Then came the wave of initial commentary. What does this mean, why now, how did things get like this. Then came the meta-commentary. Actually things have always been like this, privilege blinkers those not directly affected, look how existing power structures even suppress discussion, which sources can we really trust.

Endless echoes in endless voices of an event, now refracted in endless dizzying facets and meta-facets and ironic subtweets.

It was in the midst of thinking this, and my own feelings of helpless-but-mustn’t-look-away, that I encountered Glitch Pigeon, a little prototype crafted by Hannah Nicklin and George Buckenham at the Oxford Playhouse. Continue reading

A javascript hack to have Spry CollapsiblePanels remember their state

Adobe Dreamweaver uses the Spry CollapsiblePanel plugin to create boxes that expand and collapse when a heading is clicked.

The following code allows the open/close state of the panels on a page to be remembered when the page is reloaded, or when history is accessed. It can also be used to share the open/close state between many pages containing the same panels.
Continue reading

Robert Yang: Let's Play Anomalous Materials from Half-Life

Robert Yang (who I've mentioned here before) made such a good let's play of the first room and corridor of Half-Life.

A "let's play" is traditionally a narrated video of one or more people playing through a video game. Usually they are just to document the video game so that it can be experienced or understood without playing it, but some of the best ones are made by people who know the game inside out and are able to add some amount of context or commentary to the play-through, drawing the viewer's attention to specific details and not getting side-tracked by any difficulty in progression. There are many great let's plays on the Let's Play Archive.

Robert Yang's video is not really about the game as it is played, but about the design of the game from the perspective of a level designer. It was made for a let's play event.

I don't think he has plans to do more but I would listen to that guy talk about level design any time. A couple of the comments under his post of the video are worth reading too.

A quick javascript hack to fake adjusting HTML5 audio elements' timeupdate event frequency

I was trying to make a bunch of elements change position as an audio file played, using a snippet something like:

But the trouble was that the audio element's timeupdate event only fires once every 200ms or so on my browser (this is set by the HTML5 audio specification and isn't modifiable as far as I know).

200ms was slow enough that the animation of the elements looked jerky (5 fps).

Instead, I used a 10Hz setInterval clock to trigger the movement functions, and used the audio's play and pause events to create and destroy the clock:
Continue reading

PGP public key

So the GCHQ and the NSA are apparently teaming up to do a whole lot of extremely legal warrantless mass surveillance.

I am not against spying or surveillance per se. Anyone who lives in the UK and says "if you've nothing to hide you've nothing to fear" doesn't understand the purpose of judicial oversight and probably doesn't speak arabic. I believe in judicial oversight. An amoral-nerd-handler is not a judge. And political bias, false-positives and chilling self-censorship are the only outcomes of the GCHQ program I can see on the horizon.

So, if you're emailing me, please feel free to encrypt your message with my PGP public key.
Continue reading