Real time face substitution

Put together using mostly open-source tools.

What in the name of Sir Isaac H. Newton...

I'm not often fussed about shoes, but I want a pair of these.

Games I've been playing

I don't write about games very often, so here are a few games that I've been playing recently and why I like them.

From Dust

By Eric Chahi and Ubisoft Montpelier, From Dust is a god game, playing like a modern Populous. In fact it feels lot like a Peter Molyneux game except with more emphasis on helplessness than on morality.

Despite having the ability to manipulate the elements at whim, you soon discover that it's very easy to upset the balance of nature – blocking the flow of a river for some short term gain can quickly lead to bigger problems when the river breaks its banks.

This is a game about order and chaos, and about the difficulty of regaining control over a badly planned situation. I don't want to give any examples in case I spoil the fun, but trust me when I say it's clever and infuriating in equal measure.

Bastion

Bastion is a top down action RPG in which everything that you do is narrated.

Having someone describe your every move is weird, but it adds an interesting dimension to the game. The narrator tells the story as someone who has already experienced it to the end, occasionally hinting at what the future holds, leading to a sense of foreboding.

Child of Eden

I love Tetsuya Mizuguchi, the creator of Rez, and while Child of Eden isn't dramatically different from Rez in terms of gameplay, being another on rails shooter, it is certainly better looking than its predecessor. Where Rez was minimalist and polygonal Child of Eden is decadent and organic.

Another game based on Mizugughi's obsession with synesthesia, this time the conceit is that you are saving a developing artificial intelligence called Lumi from a destructive virus:

Child of Eden thrusts you in the center of a battle to save Project Lumi, a mission to reproduce a human personality inside Eden, the archive of all human memories.

Much like Rez, the plot doesn't really matter. Child of Eden manages to put me into "the zone" like few other games are capable of.

Minecraft

I know I'm late to the party but I've been playing Minecraft a lot recently. So far I have a little house, a pet wolf and a farm. I also found some iron the other day. I have a new appreciation for Creepers, possibly the most terrifying creatures ever imagined.

Here's a picture of my wolf and my farm, and an axe that I'm holding.

A picture of my wolf and my farm, and an axe that I'm holding

Jonathan Blow – How to program independent games

Jonathan Blow, creator of Braid, gave a talk to UC Berkeley computer science students on his style of programming.

Most of the talk is about the aesthetics of code, and about how it's possible for an individual to write the ~90,000 lines of code needed to write a game like Braid.

There is some great advice on ways to code to get things done, but probably the most important thing that Blow says isn't really about programming at all (transcribed below):

Back when I was an undergraduate the Internet existed but it really wasn't the thing that we have now. There wasn't that much of substance online then. Now of course the Internet is huge and it's in everybody's life and it's full of all these people saying things and trying to share information with each other, and I think what happens very often is that you read something somebody said on the Internet and you're like, yeah I get what that guy is saying but he's wrong, or yeah I get what that guy's saying, he's right, but I already knew that and he's stupid, I know better than that now.

Please entertain the idea as you go out into the world that usually neither of those things are true, usually you don't actually understand what the other person is saying. They may be using words where you think you understand each individual word, but the way that they interpret their phrase is different to the way you interpret their phrase and this leads very quickly to problems and it can prevent you from coming to a better understanding of computer science.

Worth a listen, especially for the context surrounding this section that really emphasises the point.

NY Times on Dwarf Fortress

A happy dwarf

I love Dwarf Fortress, and the New York Times have a feature on it.

Git caret and tilde

I spent a little bit of time playing with Git today, specifically the way that the ^ (caret) and ~ (tilde) work and thought I'd document it here in case I forget.

The short version

If you want a deeper explanation skip down to "The long version".

ref~ is shorthand for ref~1 and means the commit's first parent. ref~2 means the commit's first parent's first parent. ref~3 means the commit's first parent's first parent's first parent. And so on.

ref^ is shorthand for ref^1 and means the commit's first parent. But where the two differ is that ref^2 means the commit's second parent (remember, commits can have two parents when they are a merge).

The ^ and ~ operators can be combined.

Here's a diagram showing how to reference various commits using HEAD as the starting point.

Referencing commits from HEAD using ~ and ^

The long version

I've created a dummy repository with several commits in it.

$ git log --graph --oneline
* 8329384 Seventh commit
*   f5717b0 Merge branch 'my_branch'
|\  
| * 956c87d Fourth commit on a branch
* | a8fe411 Sixth commit
|/  
* c7c2590 Third commit on a branch
* 86362ff Second commit on a branch
* 748855b First commit on a branch
* 1855b25 Fifth commit
* 67cf3a7 Fourth commit
* ea29778 Third commit
* 28c25b1 Second commit
* cd00b76 First commit

Starting at the bottom, the early commits were made straight onto master.

The commits starting at 748855b and moving up to c7c2590 were made on a branch and merged into master, but no changes had been made on master in the mean time.

The commits a8fe411 and 956c87d were made on separate branches at the same time. They were merged together in commit f5717b0.

Finally, 8329384 was committed straight onto master.

We can use git show to look at individual commits.

You'll already know that HEAD points to the tip of the current branch:

$ git show --oneline HEAD
8329384 Seventh commit
...

Putting the caret symbol (^) next to a commit means the parent of that commit. So the following will show the parent of HEAD:

$ git show --oneline HEAD^
f5717b0 Merge branch 'my_branch'
...

HEAD^ is shorthand for saying HEAD^1, which literally means show me parent 1 of that commit. You can also say HEAD^2 but in this instance it won't make any sense:

$ git show --oneline HEAD^2
fatal: ambiguous argument 'HEAD^2': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions

Because HEAD only has 1 parent.

But f5717b0, the point where the two branches were merged, has two parents, one on master and one on the branch:

$ git show --oneline f5717b0^1
a8fe411 Sixth commit
...

$ git show --oneline f5717b0^2
956c87d Fourth commit on a branch
...

The tilde symbol (~) works in a similar way. In fact HEAD~ will reference the same commit as HEAD^:

$ git show --oneline HEAD~
f5717b0 Merge branch 'my_branch'
...

Again, HEAD~ is shorthand for HEAD~1, but here this means the first ancestor of HEADHEAD~2 is not the second parent of HEAD but the grandparent of HEAD:

$ git show --oneline HEAD~1
f5717b0 Merge branch 'my_branch'
...

$ git show --oneline HEAD~2
a8fe411 Sixth commit
...

$ git show --oneline HEAD~3
c7c2590 Third commit on a branch
...

As you can see, 956c87d Fourth commit on a branch is not visible when using the tilde operator. This is because the tilde operator always presumes you want to view the first parent's parent.

To access the second parent's parent the tilde and caret symbols can be combined:

$ git show --oneline HEAD~1^1
a8fe411 Sixth commit
...

$ git show --oneline HEAD~1^2
956c87d Fourth commit on a branch
...

In this way you should be able to reference any commit in your repository's history.

Editor-in-Chief of Ars Technica on reddit – IAmA

My favourite news site on the Internet, Ars Technica's Editor-in-Chief Ken Fisher answers questions on reddit.

bitcoin

For the last few months I have been running bitcoin.

Bitcoin is a peer-to-peer currency. Peer-to-peer means that no central authority issues new money or tracks transactions. These tasks are managed collectively by the network.

So far I've generated precisely 0 coins, but it's a really interesting technology and there's some debate over whether it might be the future of currency.

Anatomy of a Mashup: Definitive Daft Punk visualised

Interesting visualisation of a Daft Punk mashup by The Man In Blue.

I'm with Jacob

I'm with Jacob

I love this poster by Sir Mitchell, and also that the print run is limited to 815.