Everything old is new again redux

Lindsay did an excellent blog post yesterday titled “Everything old is new again“, about the re-emergence of multi-dimensioned databases.

Great title, but just to prove his point, it applies even better to a post he shared on Google Reader a few days ago, written by Kurt Schrader and titled “Living in a Post Rails World“. To quote that post:

I think that the Ruby world is eventually going to end up in a model like this, writing small simple apps that all talk to each other, and can be replaced or upgraded at any time.

<snip two paragraphs>

All of my hard/long running logic is well tested, encapsulated, and most likely running in little agents on the wire.

Sound familiar? It should. Kurt has re-discovered the same principles that the Holy Fathers of Unix discovered, over a quarter of a century ago. Doug McIlroy, circa 1978:

(i) Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new features.

(ii) Expect the output of every program to become the input to another, as yet unknown, program. Don’t clutter output with extraneous information. Avoid stringently columnar or binary input formats. Don’t insist on interactive input.

Later, he simplified it:

This is the Unix philosophy: Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.

Of course, Henry Spencer said it the best:

Those who don’t understand UNIX are condemned to reinvent it, poorly.


  1. Sherif says:

    Man we just go around in circles… I’m reading through the Old Testament (as you do), and Israel went around in Circles with God, over and over and over again..( I know I’m stretching the analogy – but same thing!)

    Its the with technology, as you have described above…look at the fact that we are even going back to the ‘thin’ client / dumb terminal – everything is being pushed into the cloud… here we come around the circle again..

  2. James Polley says:

    But even as everything is being pushed into the cloud, Gear (and HTML5) are championing the idea that it can be better to push the data and processing back out to the nodes – Gmail “Flaky Connection Mode” and Myspace both push data to the web browser, so that searches can happen there and be nice and fast..

  3. You should categorise this as “slugworthy”. 🙂

  4. Kieran says:

    Atomic-SOA…BPEL to orchestrate them…and wham. magic.

  5. Kieran says:

    SOA defines a paradigm for building what is, in my opinion, highly agile, reusable and flexible software. Simplified:

    1. Expose all logical units of functionality as a service without any coordination. E.g., expose “Take Loan Application”, “Validate Tax File Number”, “Validate Address”, “Validate Email address”, “Income meets our lending criteria”, “Approve Loan”, “Deny Loan” as individual services.

    2. Orchestrate those processes with a language called BPEL. E.g. A BPEL process, “Process loan application”, calls the “Take Loan Application”, and then calls “Validate Tax Number” (etc), and then calls “Income meets our lending criteria”, then depending upon the result the BPEL process calls either approve or deny loan. This “Process Loan application” is exposed as a web service for consumption in a larger process.

    This then allows for software to be built in a manner whereby the individual components can be consumed individually and also to be orchestrated in a larger process, which then can be reused and easily adapted.

    kill `ps auxww | grep firefox-bloat | egrep -v grep | awk ‘{print $2}’` (and yes, I know of pgrep).

Leave a Reply