Link: http://incubator.apache.org/jackrabbit/

I've had a long interest in CMS, mainly in the model->transformation->model view of refinement in engineering design, and the facilities that CMS + common, queriable formats + hypertext can give for ambient design capture.

Jackrabbit is an apache incubator project acting as the reference implementation of JSR-170, a fine grained repository API. I've been thinking about some form of XMI based versioned network database for some modelling tools I've been playing with, and there isn't anything much in terms of repositories that allow the update mechanisms, so this is interesting. Also, I've had half an ear to what's happening in grid data systems and heard some talk about RDF triple-store synchronization using RSS, though I don't yet see XML based traffic or JSR-170's API as quite becoming congruent with the shunting big grid datasets around the net - that's still the arena of binary. (Then there's tools like BitTorrent that do the shunting well, but at the expense of being a 'pure functional' API and not providing any update or synchronization). Each is trying to keep a distributed model consistant or make best use of network bandwidth; there's various levels of maturity in the technology from CVS to WebDAV to JSR-170 to data grid to XMI update, and I think something interesting may be about to happen if they can come together.

Can you embed XMI models in Atom and use pub/sub as the synchronization mechanism and leverage some of the existing infrastructure? Or do we flatten the models to RDF? I'd rather not lose XMI's advantages, and the RSS infrastructure doesn't seem to be leveraging RDF's relational properties, so it may just be useful as a packaging mechanism.

Does the lack of standardized 'modification counter' in JSR-170 make pub+sub difficult, or would the update mechansim be behind the API? You could just add a deep event listener for the whole repository that manages the mod counts, but I'm not sure that is quite elegant. The XMI update mechanism doesn't provide a modification count either, so it may be that points to it being at the transport level. The modification event listener adds increments to modification state of nodes as updated (or just logs the node UUID and a global increment), and so provides a query interface for list of nodes updated since a given global increment. The query returns a list of the nodes, UUID and path, maybe as Atom (which allows link, uuid, and inband and outband data), with logic to restrict query to sub-branch of repository. That should then allow clients then to request updates on said nodes. The mechanics of updating don't need to be part of the modified content stream, but could be, depending on bandwidth.

Need to find more time to play.

Oh, and the Fedora Core 3 installer finds the CD-ROM on my Sony just fine :)



More toys

I spent half the weekend putting back together a laptop (Sony Vaio N505X) that I'd had for five years, so I'd have something with an rs232 port if I needed to set up some cheap servers I was bidding on (and have just bought) on eBay. Surprisingly, after being in bits in zip-loc bags for eighteen months it booted the first time I put it back together, though I did have five little screws left over, despite spending half an hour looking for holes. The reason it was in bits was the power cord socket broke, so there's now a flying lead soldered on to the pcb; the space bar is also rather knackered, but in the while I wasn't using it I converted to dvorak, which meant I had to learn to touch type, so that doesn't seem to be so much a problem as it was, as I'm not typing ahead before I realise the space hasn't fired.

I also removed the Windows98 partition on the drive, which was excessively painful, as I'd forgotten the incantation to start the RedHat installer (currently I'm downloading Fedora via BitTorrent, but I had RedHat 9 on CD already from 2002). It's linux nopcmica ide2=0x180,0x386. That shouldn't be hard to find on the web, except as part of the process I reset my router.

A few months ago, my ISP nicely upgraded my ADSL line to a new, better service plan with. Now, the user id for the router is @.pipex.net. Since I'd got the router two years ago, service-plan-id had been dsl. But as my service plan had changed, so had the id. They had sent an email, which I'd filed, saying they'd changed my plan from dsl to solo extreme, but didn't mention the id change, so I had to guess. Basically I tried every variant of dsl, solo, extreme and .net or .com I could think of, and ended up having to wait from Friday night to Monday before I could go into work and get the service plan id off their website. Basically I got disconnected because someone in marketing decided it would be cool to write xtreme2 instead of extreme. But then I only have had to reset my router once in two years.

So I'm playing a guessing game with the router, and the same with the RedHat install. Tried re-installing Windows 98 to see if I could get my analogue modem working, but the system restore disk for the Sony can't write to the non-FAT partition. Evertually I get RedHat installed, but no internet for the weekend.

Anyway, I now am expecting a delivery of a couple of old Sun Netra T1 servers, which I will play with getting my tinkering-with language kin, a simple language for HPC agents, to work on.

All good fun.



More JavaScript diagramming

Tidied the code a bit so the arc drawing is DOM based rather than trying to use innerHtml when on IE, which meant it wouldn't work in IE at all (as new nodes don't have innerHtml, you can't use a test that detects innerHtml to find whether it's an innerHtml using browser, but DOM is more portable anyhow); the content-editable version of the concept graph demo is still Firefox only, but the draggable and display only versions now work with IE, modulo IE's appalling rendering of background png images - see this flow diagram rendered in safari, IE and Firefox. IE also takes a few seconds to redraw each time you move, whereas Firefox and Safari are much quicker; I'm not sure if that is inherent in IE's DOM implementation, or a difference in caching the images the arcs are made up of.

The inner of the backgrounds of the Step nodes are transparent, in Firefox the blue of the screen background and the (same hex valued) blue saved by the servlet as png come out the same; on Safari the png blue is noticably darker than the page background which is the same as the Firefox blue, and on IE the page background is the dark blue Safari has for the png image blue, and the image is the lighter blue Firefox uses for both. AFAIK, there's no gamma correction encoded in the generated png.



JavaScript Graph Editor

With all the Ajax hype, I decided to have a play at starting to make a concept graph editor, based on JavaScript and DTML.

Currently it uses html <div> and <span> you can only drag the things around. There's also some anamolies with displacements of the arcs less than 2 x the size of the images used to build the paths.

When the DSN happens, it should appear here.

It uses Walter Zorn's wz_dragdrop scripts for the drag and drop, and builds the paths in dynamic HTML layers. A servlet provides the stock arrows, lines, bends and shapes as I got bored trying to photoshop 200 different arrow heads.


[eta: dns for lapisblue is now up; pages work with firefox or safari on OS X but are untested on other platforms, and crash IE on OS X]