Sunday, March 4, 2012

Thanks EA!

A year late, but as they say, better late than never!

Saturday, March 3, 2012

Toddlers

Are all toddlers crazy, or is it just mine?

Friday, March 2, 2012

Code

Code
Is a poem
Meant to be read
Meant to be read swiftly
To the world
Meant to be read
Langourously
Querulously
In whispers
To friends and self
Meant to be written
Over and over
Until it works
And occasionally
It appears
Beautiful

Tuesday, February 28, 2012

Engineering

In Science Fiction, there's really only two types of engineers that matter - embodied by Montgomery Scott and Geordie La Forge, respectively. (Sure, there's Kaylee from Firefly, R2D2 is good in a fix ... but you'll see where I'm going in a second).

You either get stuff done, or you don't. Anyone who doesn't get stuff done simply should not be calling themselves an engineer. And of those who do, you have the ones who say "It'll take a week" and then do it in an hour (the Scotty approach) and those who say "It'll take a week" and it takes a week (The La Forges).

While I have great respect for the Scot, that's simply not how I roll - padding my estimates leads to a scenario where all estimates are simply ignored, because everyone knows they are padded.

Which leaves me in the current situation, where nearly every estimate I give appears to be met with incredulity and ridicule - even when they are repeatedly borne out, as any later analysis can demonstrate.

So - how do you, as an engineer, handle your estimates? And when you give an estimate, and someone argues with the numbers - how do you approach that conversation?

Friday, February 24, 2012

Those who can, teach

I'm probably coming pretty late to the party, but I've been working through the Udacity online "Introduction to AI and Robotics" course ( http://www.udacity.com/overview/Course/cs373 ) the last few days, and it is, in a word, fantastic. This is truly the best way I've seen or found to learn something technical. The tools and website are absolutely fantastic. The first course unit takes a couple of hours to work through, and it is split up into bitesize (1-2 minute) youtube clips, interspersed with "enter your answer" pages and programming tests, in the browser IDE. Everything is done in the browser window. If you don't understand a section of the presentation - simply rewind or restart that youtube clip! If you need to refer back to a previous section - click on the link! If you don't get what's required for a test - look ahead, see the answer, then go back and re-take the test!

As a platform for education, it's a fundamentally revolutionary step - yes, I know, Khan academy is moving us in this direction, and MIT do online courses, etc - but try it, you'll see what I mean. However, this isn't the most important part of the course - the most important part of the course is the content and the teachers.

These courses are being taught (and introduced) by the people who are at the top of their field - literally the best people in the world right now to teach the material. For example, the CS373 course on artificial intelligence and robotics is being taught by Sebastian Thrun, who has been a driving force behind the Google AI car team and the Darpa challenge winners for automated vehicles. This potentially shifts the adage from "those who can't ..." to "those who can ...". It's a hugely efficient use of their time (given anyone in this situation will certainly be passing on some of their knowledge to their team and upcoming replacements at some point) to be able to, instead, pass it on to anyone in the world who wishes to learn from the masters of the art. This replaces books, written by people at the top of their game, hopefully disseminated to some degree (but invariably at cost in time, space and money) with a "record once, play back infinitely" course for all.

It's bleeding great.

Sunday, January 22, 2012

Weapon of choice

After 7 months of fairly hardcore OSX usage (on a relatively underpowered Mac Mini) I'm finding using Windows both less relevant and, given my latest project focus, harder to use as a default development platform. More and more of the tools and packages I want to use are freeware, and the more I dig into open source hardware, the more I realise that using Windows to develop in is not the best choice. And the correct choice is, obviously - Unix.

Not OSX? I hear you whisper ... Oh yes, you wanted me to say that. Except the really obvious thing I've found over the last 7 months is that I spend a lot of my time in a terminal window, ssh'd into a remote box somewhere doing stuff the old fashioned way. In fact, my machine is becoming increasingly less relevant - the relevant machine is in the cloud, or in that cupboard over there, or under the stairs ... The glitzy GUI is really a thin veneer over a command line which takes me to where I want to actually be. Increasingly, I'm finding my windows-centric CLI skills give more cumbersome results than the equivalent linux results. I've got used to using Bash and Python for the small stuff, I can just about steer Vim between file creation and edits and I'm getting comfortable with greps, finds and some of the other linux CLI utils. OSX makes this effectively seemless, helping me transition between my Mac and a remote Ubuntu/BusyBox/whatever distro. Windows just puts spanners in the way - the file system is different, the tools for security are different, all of the commandline tools I'm getting used to work slightly differently.

So I'm biting the bullet, and from this month, I'll be using raw Ubuntu for my local development. Sure, I could set up a VM or a box in the cloud, but this means I can stop scratching my head and fighting the urge to work inside the prison I've built for myself. No More spending an hour hunting for the Windows install of something before giving up and switching to a different language or my Ubuntu VM.

Once that's set up, I'll be delving into CMUSphinx4, PocketSphinx and Arduino. After that, world domination.

Saturday, January 21, 2012

Tinkering

I've recently bought an Arduino Uno and a small selection of components. I have high hopes that my dream of a voice-controlled house can take a step closer to reality - the only remaining missing piece of the puzzle is the time and inclination to glue everything together from software stack down to the box the end result goes in for my first prototype. There's something quite primal about making motors and sensors work - tapping in some numbers on a keyboard and watching a servo spin is darned cool.