Small and healthily skeptical is good

Tim Malbon says he’s pleased to be involved in this Web thing, but appears to conflate lack of full assimilation with brain-washing. One can be a tiny bundle of techno-lust and not believe that successive versions of the Web will lead directly to a shiny new future. Posting photos to Flickr (Web2.0) seems like something…

Diff for Javascript

Toward the end of last week, I found myself wondering about implementing a diff algorithm in Javascript. It turns out there’s already at least one available attempt at this, by John Resig (direct link: jsdiff.js). Unfortunately, the implementation is a little buggy (try diffString("the quick", "the quick fox"), for example), so I went hunting for…

Subclassing in JavaScript, part 2

In my last entry, I described a problem, and promised a solution. There are many solutions online and in various JavaScript toolkits; as far as I can tell this one is the most elegant of the bunch, and I'd be pleased to see it replace the various other solutions out there. The main goals of this approach are: * The problem described in the previous post are avoided. What is per-instance stays per-instance, and what is shared stays shared; subclassing doesn't change one into the other. * The code to create a subclass looks reasonably elegant and straightforward and not too wordy. * The result is reasonably efficient in space and time The approach here also meets one nice but less important goal: * The approach can be used to subclass from a class not specifically built to work with this approach - in other words, when not subclassing, you make classes in the normal way. I shan't include a comparison with any other specific solutions here, but if there are any you're interested in, ask me.

Fair messaging in Erlang

One of the new projects that I’m working on involves a messaging infrastructure in Erlang. Without boring you with the details, the basic idea is that there are two types of messages, A and B and these are both sent to a thread (or a *process* in Erlang). One A must be paired with one…