What Tom Did Next

August 24, 2012 | Comments

Next month I'm joining Google, where I'll be working as a Product Manager in the London office. I'm super-chuffed; can't wait to start.

It's going to be quite a change. I'll have a boss for the first time in a dozen years, and be working inside in a far larger company than ever before. I'm looking forward to both those things, along with the other classic attractions of Google: a large group of extremely talented colleagues, the opportunity to work at a global scale, and an ambitious breadth of purpose.

Between now and then, I'll be handing in my dissertation and finishing what's been a fantastic year at the Sussex University. I've really enjoyed the Master's, even more than I expected to: it's been a chance to refresh and put in some practice in a few familiar places (software engineering, HCI, web apps and services, and business and project management), spend some time revisiting a theoretical side to CS which I've long lacked (computability and complexity theory), and think about a few completely new subjects (adaptive systems and pervasive computing). Plus, working on a brace of (mostly) self-selected projects has been extremely liberating; I've scratched plenty of itches. At some point I plan to post all my project work here, on the off-chance that you're interested or might find it useful.

Green Goose

August 20, 2012 | Comments

Have you seen Green Goose? They're doing some beautiful stuff with sensors for consumers: turning everyday activities into games. I love the mundanity of it all: keeping the toilet seat up, brushing your teeth, walking the dog. One of their apps is called "BrushMonkey". It doesn't get any better than this.

They've been around for a little while - there's a story on RWW about them from early 2010, but they seem to have changed tack since then, away from financial monitoring and towards fun'n'games. Here's an interview with their founder from December last year. Green Goose seem to be spreading themselves thinly across many applications: "We’ve got about 50 or so other sensors in development right now that we will fairly quickly release over time".

Their hardware seems similar to Little Printer, in that they have their own gateway (the "station egg") which plugs into the spare port of a hub.

Smart Interconnected Devices Hackathon

August 13, 2012 | Comments

If you're at all interested in this sort of thing, you might want to wander along to the Smart Interconnected Devices Hackathon at Google Campus this coming Saturday: a chance for Android developers to Plug Things Together in interesting configurations...

Superoptimising

August 06, 2012 | Comments

I posted this onto G+ last week, and totally forgot to crosspost it here:

My superoptimiser has found a more efficient version of Math.abs() than that which ships with the Java runtime, which I think demonstrates that the approach of superoptimisation /can/ have merit for VMs - whether by producing shorter code than the optimiser inside the Java compiler, or by finding non-obvious algorithms. Either that, or the Math.abs() that ships is a weak implementation...

I'm now running a search for Math.max() and Math.signum() (the latter being the target of the original Massalin experiments). My suspicion is that signum() will need a longer sequences than I'm currently generating; I can add one operation to my current sequences (which take 13 hours to generate on a single EC2 instance) by parallelising the process across IRO 500 EC2 machines. Going beyond that would need 25,000 machines which at $1,500/hour will be well out of my budget. So, fingers crossed...

It's probably worth optimising the code further, but I'm completely out of ideas for order-of-magnitude improvements and I've spent quite a bit of time inside a profiler over the last couple of weeks.

Still, feels like I've achieved /something/ here.

Since then, a couple of small updates: I've run a search for Math.max() and found another sequence shorter than that which ships with the JVM; so in two cases I now have superior superoptimised code. Before I start the write-up proper, I'm spending another week looking into a more efficient Math.signum() function by parallelising the superoptimiser across a few hundred Amazon EC2 instances; I think this will buy me another instruction, which might juuuuust be enough to get something. We shall see.

Design Notes For The Web

July 30, 2012 | Comments

Steph's pointed to this interesting set of documents. I'm going to dip into them over the next few weeks, but particularly enjoyed hearing how they're structured:

"I have found that, having started this set of notes in 1990 in the (for me) novel medium of hypertext, it has been difficult to tear free of it: my attempts to lend hierachical or serial order have been doomed to failure. Further, as ideas and these web pages have evolved, it has been important for me to be able to reorganize my thoughts, grab a new leaf, shake the tree and regard it as the root. So the reader needs to be aware of this, that each page may be an attempt to put across a given concept serially, but if you are looking for an order of concepts and subconcepts, you have as much hope as you would with words in the dictionary. "