Justin du Coeur (jducoeur) wrote,
Justin du Coeur

Lest we forget that Tim Bray reads good stuff

I am, of course, way behind in reading my tech blogs. So I just got up to a post last month in Tim Bray's ongoing blog, in which he did a link clearing. It's got a lot of neat stuff, so I'll signal-boost a few of the cooler-looking ones.

I hadn't previously come across the Maglev project, but it looks quite intriguing. Basically, it's a VM for Ruby with built-in persistence -- even what looks like a simple Transactions framework. The notion appears to be that, instead of having to go through an ORM level, with the usual friction associated with that, it just lets you declare objects persistent in a fairly native way. I can see lots of issues with the idea, but it's promising: I look forward to seeing where it goes.

This article isn't so much talking about anything new: instead, it is observing a common pattern that seems to be hitting steam-engine time, which he tentatively calls "Persistent Trees", and which gets corrected on update as "Purely Functional Trees". The central observation is that we have more and more systems being built that (a) don't care *too* much about disk space, and (b) don't especially want to ever lose data once it is committed, so (c) are constructed around immutable, ever-growing trees. He shows how this idea is being used in three rather different instances -- git, Clojure and CouchDB -- and briefly discusses some of the common ideas that are floating to the top. Fairly short, and neat food for thought: structures like this are generally more straightforward to scale up, and are probably applicable in a lot of places. (I find myself observing that CommYou could have used this general architecture for most of its data, and probably would have benefited.)

Finally, he points to a long, deep, but pretty great tutorial on Continuations, which itself points to a base tutorial on Monads. This is deep waters, not for the programming novice, and the examples are all written in Clojure (essentially a dialect of Lisp). But both look to be unusually clear introductions to a pair of concepts that are usually *miserably* explained, and therefore often treated as pure black art. I'm still making my way through both (I started on the Continuations one, then backtracked and dove into the Monads one, which I recommend first), but I'm feeling like I'm starting to internalize the ideas better than I have before...
Tags: programming

  • Post a new comment


    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded