Geeks are people too...sort of.

Just about a year and a half ago I decided it was time for a change, so I started looking around for something new. Not just a new job, but something that would take me way out of my comfort zone as a developer.

This was partly because I had spent the previous few years working with some good friends of mine who were old farts like me, and I'd started noticing something...disturbing: a tendency to be very rigid in how we all were approaching development, the tools we used, and how we thought about the problems. I've started

“A foolish consistency is the hobgoblin of little minds, adored by little statesmen and philosophers and divines." - Emerson

Continuing with my ideas from the other day, I wanted to move from the abstract to the more concrete, which is to say that I wanted to talk about what such a system would look like.

To begin with, let's assume that this system is a fairly large-scale distributed system, so that, were we to design it the way such things are typically designed these days, we would probably have some sort of cache between our business logic and the data

Just storing it on your computer isn't such a big problem - hopefully, you're storing it encrypted using software whose encryption you trust.

However, backing them up - that's another issue. Do you trust storing them in the cloud? I don't. Do you keep them on a backup disk or USB dongle? What if they fail?

After looking over the options, I found this post at the ever-excellent StackExchange. Basically, the idea is that you convert the ASCII exported private key to a QR code, print that, note the key ID on

It seems like such a simple question. Of course, to a certain extent, it is - if you've designed the system properly up front. By this I mean that, if you've broken the overall system down into components which are a) decoupled as much as possible, and b) as internally cohesive as possible.

However, when it comes to distributed computer systems - ones with, say, a UI, a bunch of business logic, and a database - it somehow becomes much more complicated. We know how to scale the UI and business layers, but

So, I've moved my blog over to Ghost from Octopress. I did this for a few reasons.

My main reason for wanting to move away from Octopress was that updating my blog was getting to be a huge pain. You have to run a rake task to create the markdown page, edit it in a markdown editor (which never looked right because of the metadata that it insists on putting at the top of the file), and then run another rake task to generate the site, run another task to preview it, and then run yet another task to deploy

I've done quite a few interfaces which I've referred to as "RESTful", because I've done what most people call "REST" - using HTTP as the transport, modeling everything as resources, and using the HTTP verbs (GET, POST, PUT, etc) to access the resources. I mostly wanted to do REST because the alternative, SOAP, was so onerous - it required translating a WSDL document to proxies, serializing and deserializing error objects, and, worst of all, was a nightmare to version. I had read about HATEOAS, and had kind of thought, "Wow, that sounds...strange", but nobody seemed to think much about