Put together using mostly open-source tools.
Put together using mostly open-source tools.
I'm not often fussed about shoes, but I want a pair of these.
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.
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 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.
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.
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.
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.
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.
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.
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.
956c87d were made on separate branches at the same time. They were merged together in commit
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
$ 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
HEAD only has 1 parent.
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
$ git show --oneline HEAD~ f5717b0 Merge branch 'my_branch' ...
HEAD~ is shorthand for
HEAD~1, but here this means the first ancestor of
HEAD~2 is not the second parent of
HEAD but the grandparent of
$ 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.
My favourite news site on the Internet, Ars Technica's Editor-in-Chief Ken Fisher answers questions on reddit.
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.
Interesting visualisation of a Daft Punk mashup by The Man In Blue.
I love this poster by Sir Mitchell, and also that the print run is limited to 815.