click here for my current blog

this blog is no longer maintained and is here only for archival purposes

Go at Google

May 2nd, 2010

Late last year I interviewed at Google. It was an interesting experience which, at first, I took kind of whimsically. As the hiring process progressed, I began to realise that I might have actually be in. On Christmas Eve I was told I’d be receiving an offer, and by early January I had given notice at my previous workplace.

The job I took was Developer Programs Engineer for the Go team. Go (see is a new, experimental programming language by a team led by Rob Pike at Google in Mountain View. Being a DPE is basically about being an engineer in service of developers, both inside and outside Google. My primary goal is to make life better for developers interested in Go; to improve the language’s tools, infrastructure, libraries, and documentation, and build the community. Needless to say, I have my work cut out for me.

Go is a really interesting and exciting language. At first glance, it doesn’t appear to offer anything particularly new. Its expressive concurrency primitives (goroutines and channels) are its most eye-catching features, but other languages have done these things before (among them is Newsqueak, for which Rob was also responsible). What excites me most about Go is the care and taste with which it has been crafted. The spec is short, comprehensible, and – most importantly – consistent. Its design addresses the issues of real programmers in a pragmatic way; it is a joy to use.

Recently, I’ve been coding almost exclusively in Go (although I have been using Python for godashboard). The more I use it, the better I like it. In addition to the code I’ve contributed to the Go project, I’ve put a couple of small things up on my github page. There should be some more interesting stuff there over the next couple of months as my productivity picks up.

I started at Google on the 1st of February, I’ve now been there 3 months. I’ve learned a huge amount in that time. It’s taken a while, but I’m now just starting to feel comfortable in my role. It is an amazing privilege to be part of such a star-studded team at a truly extraordinary company. Beyond my small team, the other engineers at Google are – unsurprisingly – the best I’ve ever worked with. (Many of them have quickly become my friends.) There is a wonderful culture of directness, openness, and co-operation which enables some incredible engineering at unprecedented scale. It is both inspiring and humbling to be a part of it.

If you’re interested in learning Go, then have a look at the Go Tutorial as well as the “Writing Web Applications” code lab I recently published.

New work showing at Kudos Gallery

November 26th, 2009

For the next two weeks you can see some of my new work at Kudos Gallery, as an auxiliary to the COFA Annual 2009. It’s a group show, exhibiting the work created by participants in the Porosity Studio this semester. My work is a piece about Shanghai, a computer program written for the in Z80 assembly for the ZX Spectrum 48k. Essentially it is an image slide show, with some simple transitions. The challenging parts were the conversion of the images to something that looks half-decent through the Spectrum’s limited colour palette, and compressing the image data to fit in the ~32k of usable RAM.

I was chuffed to actually install my Speccy in a gallery setting. It really is a beautiful machine, and one which is relatively unknown in Australia (in contrast to its contemporary, the Commodore 64). It’s concerning that a power interruption might cause the program to be lost from memory, and force me to come back in to re-load it from “tape” (ie, a DOS program that emulates a tape), but I think this volatility is part of the charm of the project.

If you’re interested, head down to Napier St in Paddington and check it out. Once the show has closed I will post some documentation and a TAP image of the program so that you may run it in an emulator, or on a real Speccy if you are lucky enough to own one. =)

Syntax Party 2009

November 26th, 2009

A few weeks ago I flew down to Melbourne to participate in Syntax Party 2009, Australia’s largest demoparty. I brought my ZX Spectrum down, and – on the day – hacked together a little demo in Z80 assembly just in time for the competition. It was a simple cellular-automata-style fire effect in a little over 128 bytes, and placed 6th in the Old-School Competition against some truly excellent entries. In fact, there were 10 old-school prods, and only 2 new-school demos. Clearly the retro scene is alive an well in Australia. =)

(Click the screenshot to download the source and TAP image.)

Amusing antics ensued when it was discovered my MacBook can’t output an audio signal loud enough for the Spectrum to demodulate. Firstly, to prove that the demo worked, darkmoon and I painstakingly typed each of the 139 bytes into the machine as decimal DATA lines in a BASIC program. (Incidentally, the BASIC environment on the Spectrum is quite excellent, if slow.) alhazan took a video of us getting it running; it was quite an emotional moment.

When it was time to get it shown on the big screen, one of the party organisers (an4ki rob) was kind enough to lend me his little Behringer mixer so that I could boost the audio signal from my MacBook to successfully load the prod via tape emulation. After some tweaking of levels, it worked splendidly. But then, when it came time to show the product during the competition, disaster struck:

Huge thanks to the organisers and participants of Syntax. It was a great day! For next year I hope to produce a new-school demo with some friends, and a proper Spectrum demo (full-length, with music) of my own.

Updated Projects Page

August 28th, 2009

I’ve updated my projects page, with a lot of stuff I’ve done in the past year or so. Most recently released is flickr-rip: a suite of Python scripts that export photos from Flickr and store their metadata in a MySQL database.

The projects page is now the default landing page for I am going to replace this WordPress blog with something bespoke, but for now (and until I have time to write some things) the blog will stay here as-is. I will attempt to preserve the RSS feed and old articles when  I make the transition.

Sound Construction

March 16th, 2009

I more or less finished my degree last year. All the major work is done. I had my grad show. I suppose I can go out there and be an an “artist” now.

However, technically I’m still two electives short of a BFA. I’ve decided to spread those two subjects out over the remainder of this year, in part to allow enough time to concentrate on work, and also to keep my toe in the water at COFA. I’ll still have borrowing privelges with the 4×5″ view camera (with which I produced my most recent work), even if I’m given the lowest possible priority.

For this semester I have enrolled in ‘Sound Construction 2‘, which is taught by Simon Hunt (possibly best-known for his work as Pauline Pantsdown in the mid 90’s). Since my teens I’d wanted to formally study sound and music, and in that sense it’s surprising that it’s taken me this long to do so. This particular class is part of the Master of Digital Media postgraduate degree, and is geared toward people with some experience in sound design.

The assessment is centred around a single free-form personal project, which suits me perfectly. My intention is to produce several ambient, musical works based on field recordings made at the industrial sites featured in my photographic work. To give an idea, some of my inspiration and references are: the music concrete work of Matthew Herbert (whose stunning Opera House performance I saw last month – the new album’s pretty great, too), the ambience of Stars of the Lid, and the tech/glitch aesthetic of Pan Sonic. I’ll post a more fleshed-out run down of my plans around the time my formal ‘proposal’ is due  in a week or so. More than anything I’m looking forward to working with recorded – as opposed to synthesized – sound, for the first time in a while.

twexpire v0.2

January 31st, 2009

Announcing twexpire version 0.2. This new release includes two major updates:

  • Support for pruning sent and received DMs, and
  • Unicode support.

I also rewrote a large chunk of it, making it generally a bit nicer. Enjoy.

GBA Development: Phase 1

December 11th, 2008

Christmas season has arrived, and with it gift ideas. Ava was begging us for a Nintendo DS. And if you know me, you know you don’t have to ask me twice to buy a new gadget. They’re surprisingly affordable, so much so that I half considered buying one myself.

What stopped me, though, was that I still have a previous-generation Gameboy Advance (which the DS is backwards-compatible with). This realisation, coupled with my recent hankering to do some low-level coding, resulted in me reading up on GBA development. It’s surprisingly straightforward, and, as the platform has been around for quite a while, there is a lot of good documentation out there.

GBA Development

The results of a couple of hours work this morning were: a basic working knowledge of the GBA platform, a functional development environment, and my first functioning ROM image. It’s a simple thing: it displays the two photographs I recently showed at the COFA Annual (and won a prize for!). Press A and you see Botany Industrial Park Study #1, press B and you get Study #2. Neat-o.

I hope to put together a small game. Hopefully this won’t just peter out into yet another unfinished side project. (”This time for sure!”)

Syntax Party 2008

November 14th, 2008

Last weekend I flew down to Melbourne to attend Syntax Party 2008, one of the few Australian demoparties. It was a great day, with lots of great work presented. I was struck by amount and quality of it, considering the meagre size of the Australian scene.

On the day, my friend sh0ck and I hacked together a JavaScript demo called ‘Syntaxed’. I roped sh0ck in at the last minute to help out, and was impressed by his “coloured ball effect”, and at how quickly he picked up programming for the canvas element. Our demo ended up placing second in the newschool demo competition! This took me by surprise – I suspect the novelty value of platform itself was what attracted the votes.

You can view the “extreme party version” (ie very hacky and not cross-browser compatible) of the demo here. It will only run under Firefox 3. (This is because it uses Mozilla-specific text drawing routines. I have since written a much faster version of the mandelbrot zoomer, too.)

I’ll definitely be back next year, by which time I hope to have a better demo, and something to enter in the music and graphics compos. Big thanks to all the Syntax Party crew (especially Ript and cTrix) for their efforts.

It’s meme time again

November 14th, 2008

Infected by Jonathan Oxer, this time.

  • Grab the nearest book.
  • Open it to page 56.
  • Find the fifth sentence.
  • Post the text of the sentence in your journal along with these instructions.
  • Don’t dig for your favorite book, the cool book, or the intellectual one: pick the CLOSEST.

My book? If on a winter’s night a traveller by Italo Calvino. The quote:

“I felt a kind of vertigo, as if I were merely plunging from one world to another, and in each I arrived shortly after the end of the world had taken place.”

It’s a great book!

My first prod

October 20th, 2008

Those of you who are familiar with the demoscene might know what I mean by ‘prod’, if not, you may need to get some context.

Yesterday, inspired by the work of p01, I put together a demo effect using JavaScript and <canvas /> in 512 bytes. You can view it here*, and also see the entry on Pouet (where it has already received some positive, encouraging feedback). I have also made the un-crunched version available.

(* requires Firefox, Safari, or Chrome. I haven’t tested in in Opera, and IE doesn’t support canvas.)