Lessons from memory

Every now and then I take a stroll down memory lane and read some old blog posts, both mine and colleagues’.

After I stop cringing at how naive and earnest we all were I try and contrast my current opinions with those of my younger self and his young friends.

Some thoughts from tonight’s history lesson:

  • Be aware of your biases, preconceptions and beliefs. Consider how they might colour your interpretation of events.
  • Throwing away an acceptance test suite representing ten person-years of work because you want to use a different test tool is almost always a shockingly irresponsible thing to do.
  • A major high street bank based in Poole could have had an award-winning business banking website if they hadn’t (ostensibly) cancelled the project because it was going to deliver 3 months late. That was 5 years ago. It’s still not finished.
  • Technical excellence is meaningless without effective governance.
  • High performing teams are messy, loud, exhausting, chaotic fun and will still be discussed fondly whenever 3 or more members get together, even 5 years later.

The future is noded

The future is noded.

NOsql, Dynamic, Event driven, Distributed.

A tipping point has been reached. The JVM is past its peak. Dynamic languages with a low cost of change and greater expressive power are in the ascendance. Scaling through multithreading has been eclipsed by non-blocking single-threaded, multi-process architectures. Centralised databases are being out-evolved by distributed, eventually-consistent, semi-structured storage. Commodity hardware and designing failure-tolerance into the fabric of the system are winning out over specialised, high-cost solutions.

I’m seeing a lot of innovation in this area. It feels to me a lot like the ajax explosion. Before the term was coined, there were a lot of us ‘doing ajax’ without realising what it was we’d got our hands on, or just how amazing it could be. The XMLHttpRequest object was relegated to the back of the O’Reilly Javascript book and the most comprehensive documentation was a single page on Apple’s website. Once Jesse James Garett gave it a name, ajax was suddenly everywhere.

Thus: noded. A noded system is, generally: built on commodity hardware, horizontally scalable, fault-tolerant, (usually) in a dynamic language and operates at a scale far larger than any traditional solution.

So who has a noded architecture? Among others, Google (Bigtable, MapReduce etc…), Facebook (Cassandra), Twitter (FlockDb, Gizzard), Amazon (Dynamo). You may have heard of them.

A number of impressive open-source projects have been released by these organisations and others, and more have been inspired by them: Hadoop, Riak, MongoDB, CouchDB to name a few.

The platform that has me most exited at the moment is node. Javascript is a hugely expressive language (even more so with tools such as CoffeeScript) and node is rapidly accumulating an impressive collection of libraries that make building highly efficient, ultra-scalable applications incredibly easy. It’s not a coincidence that I like the term noded. I’d also settle for ‘nodular’ but Charles claimed that one in 2003.

Cheeky monkeys

It was when the backup file for my old blog reached 650 megs that I discovered that some naughty rascals had managed to store a bunch of mp3s on my server. Kudos to them for not buggering anything up so I didn’t notice until now.

The almost annual blog migration

Finding myself once again spending the christmas-new year limbo period mucking about with a year’s worth of backlogged blog administration and semi-traditional experimentation with alternative hosting. I wouldn’t mind except it’s almost impossible to avoid reading stuff I wrote 8 years ago and cringeing. I think I knew more then than I did now. Or perhaps was just more enthusastic about broadcasting it.

Javascript: 2010

The year we make contact with javascript as a platform in its own right?