Pardon the brevity, but I am just getting rolling with this page as an alternative to linking folks directly to my GitHub account. Hmmm… how about an annotated Table of Contents for my repositories?
Check it out! A sophisticated little search tool for the massive Hacker News monthly “Who is hiring?” question with hundreds of openings listed. Sophisticated but new with many features and refinements to go, but those will come only in response to issues raised here. Discussion/documentation will appear shortly.
The Matrix takes on the Challenge. In eighty-four SLOC.
We stumbled onto this dataflow hack quite by accident, while working on a sticky UI layout problem back in 1996. A re-creation of that story is here. In brief, we ended up with a tree of objects where selected properties could be expressed as formulas over other properties of other objects, as if our application were a spreadsheet. It could not be rules all the way down, of course: some properties were assigned to by event handlers. Any property could have an application-supplied observer to reflect changes in the “sheet” back to the outside world, say by disabling a widget via the widget API.
It was wonderful, a something-for-nothing silver bullet, and now we have ported it to JS and CLJS. (See below.)
The original implementation of Cells, my spreadsheet-like dataflow library first shared in 1996. This is the one served by quicklisp. There is not much documentation other than the annotated tests, but one day in 2008 I dashed off a blog piece called The Cells Manifesto that turned out to be fairly comprehensive, including motivation, prior art, and the key definition of what I called “data integrity”, a functional contract that pretty much just says “no glitches”. Cells has been applied to substantial, enterprise-level applications, including a clinical drug trial management system and a Web-based algebra learnng system. Each application is controlled in every respect by the Cells engine.
A fun JS mxWeb playground of micropipelines as described in Ivan Sutheland’s Turing Award paper.
TodoMVC Classicin Matrix
Perhaps unwisely, my TodoMX repo contains two separate and complete implmentations of the TodoMVC classic. One is pure JS, the other ClojureScript(CLJS) all the way down. Each is offered purely as a proof of concept, the concept being:
If one builds a Web framework atop a generic dataflow library supporting dynamic, transparent, “point” dependency tracking, and state change propagation, then declarative authoring and efficient DOM maintenance comes for free. More comprehensively and more efficiently, by the way, than with ReactJS.