28 June 2005

[httpRange-14] Resolved

Well this clears it up: [httpRange-14] Resolved! Seriously, this is common sense, let's hope it sticks.

Kowari: A Platform for Semantic Web Storage and Analysis

Paul, Dave and my Kowari paper has finally been published (officially that is).

Large-scale Semantic Web applications require large-scale storage of Resource Description Framework (RDF) information and a means to analyze that information via the Web Ontology Language (OWL) in near real time. The Kowari Metastore was designed as a purpose-built RDF database to fulfill this requirement. Kowari provides a scalable, transaction-safe storage infrastructure for RDF statements and an expressive query language for their analysis, with or without the use of a subset of the RDF Schema and/or OWL languages. OWL Lite plus the full cardinality constraints from OWL Full are currently supported via the interactive Tucana Query Language (iTQL) or the Simple Ontology Framework API (SOFA). The native quad-store indexing scheme used in Kowari has been shown to scale to hundreds of millions of RDF statements on a single machine. Kowari is an Open Source project licensed under the Mozilla Public License, version 1.1.

This is an overview paper, intended to give a good overview of the workings of Kowari without going into too much detail. This is good timing, as Andrew and I have been working on JRDF updates recently, including adding SPARQL support.

Flame on!!!

Keith's Law of System Updates

Well, wouldn't you know it, our performance report was almost finished and I decided to run a system update: $ sudo yum update. Of course, I should have listened to Keith's advice on the matter.

Keith's Law of System Updates: Don't be the first to update your system when new software becomes available.

So I ended up hosing my system 3 hours before we were due in a meeting with the business. Luckily, there's a few spare machines at work, so all was not lost. I'm now thinking that the move to a more supported (by our sysadmins as well as RedHat) distribution of Linux won't be that bad after all.

15 June 2005

The old way of building software

In the not so distant past, developers built software without tests, without refactoring and consequently without hope. The company I currently work for has inherited one such piece of software, which we're now tasked with developing a plan of attack to fix it. I can't begin to explain the number of bad decisions that were made in developing this software, they range from architectural, to code, to build and deployment. From where I sit, most of the problems stem from a lack of process.

The last project I worked on used the notion of "going dark". This is where you spent a considerable length of time going off on your own, without using the test, code, refactor cycle (with regular commits). I've seen this (and used it myself) for most of the time that I've been developing software, and had previously thought it the norm. This style of development lends itself to isolated development, lack of knowledge transfer, integration hassles, non-testability and poor code. As this is the norm in the software industry, it's not surprising that it isn't questioned and other methods are not considered. I certainly wasn't aware of another way until very recently.

However an alternative does exist, and it's not that hard to achieve. This alternative involves short development cycles, doing a small amount of tested fully refactored work, and regular commits. There's no magic involved, and it lends itself to fully tested code, constant integration, knowledge transfer and robust code that is easy to update as requirements change (which they always do). Of course if you throw pairing in on top, you get even more of the benefits, however judging by recent experiences this is something that managers and most developers are not ready for, even if it produces excellent results.

10 June 2005

Apple Intel Summary Posts

Once again, Ars Technica provides a great summary of the Apple to Intel news.

A Guide For The Un-Initated To Buying Guinness In An Irish Pub

Choose your pub carefully. A pint of Guinness does not appreciate loud music, loud people or bright flashing lights.

Ask politely for a pint of Guinness. Depending on the pub, it is possible to catch the barmans eye and mouth the word "pint", he will translate this accurately.

The barman will fill the glass between 70% and 80% capacity. It will then be put to the side for a few moments to allow it "to settle". Once the brownish liquid has almost turned to a solid black the barman will then fill the rest of the glass. NB: do not under any circumstances take the glass before it is filled. Some virgins seem to think that the settling stage is the final stage and walk away with an unfinished pint. At this point we Irish DO understand the predicament, but I assure you it causes endless mirth as well.

Once you have received your pint, find a comfortable stool or seat, gaze with awe into the deep blackness, raise the pint to your mouth and take a large mouthful. Be firm.

A good pint can distinguished by a number of methods. A smooth, slightly off- white head is one, another is the residue left on the inside of the glass. These, surpise surprise, are known as rings. As long as they are there you know your're okay. A science of rings is developing - the instance that comes to mind is determining a persons nationality by the number of rings (a ring is dependent on a swig of Guinness each swig leaving it's own ring). An Irishman will have in the region of 5-6 rings (we pace ourselves), an Englishman will have 8-10 rings, an American will have 17-20 (they sip) and an Australian won't have any at all as they tend to knock it back in one go!

As you near the end of your pint, it is the custom to order another one. It is a well known fact that a bird does not fly on one wing.

Link: http://www.ivo.se/guinness/beginner.html.

03 June 2005

Monty Python Semweb Jokes

I'm always up for some Monty Python take offs, Dave Wood mentions a couple. Semantic Knight and The Dead Spec Sketch.

Quick links

Publish and Subscribe Using C++ and the Observer Pattern
Separation of concerns is increasingly on the programmer's radar. Given the growing range of data access products and platforms, it is now essential to separate data producers from data consumers. The observer pattern provides a simple but powerful model for achievin
The Corporate Developer
Been seeing a lot of this lately where I currently work...
Web Services Invocation Framework (WSIF)
Looks like an interesting way to expose services.