28th March 2011
Dave, Dan, Moh and myself went to the National Hack the Government 2011 hackday and created Nabbd - an iPhone application and server that helps you keep track of your valuables, and report them stolen. The server is live at nabbd.org.uk, but isn't much use without the iPhone app that isn't distributed at the moment.
21st February 2011
I haven't been adding any new entries here for a while, but I have uploaded various bits of code to my GitHub repository.
- scala-xom - a library to make using the XOM XML library and Saxon XPath 2 easier from within Scala
- a Maven plugin to display licenses for dependencies. This is on Maven Central, too, so you can
use it against a local Maven project with just
- jquery-explode - a trivial plugin to make a set of divs explode out from the centre of the screen. This uses CSS transforms, so won't work with any but the latest browsers.
- jquery-hover-window - a JQuery plugin to show the contents of a link when you mouseover it
- (human) language detection code in Scala that uses an approach based on n-grams to recognize whether a given piece of text is in English, French or German
- automated accessibility testing using XProc and Schematron.
- metatribble - a Ubiquity plugin for semantic annotation of web pages in Firefox using RDFa, written with Kal Ahmed. Sadly, the Ubiquity plugin framework has changed substantially since this code was written, and it's unlikely to work now.
They are using a variety of licenses, but generally either the GPLv3 or Apache v2.
17th February 2009
24th August 2008
Redisplaying the Olympics using Semantic Web technologies: some alternative visualizations of 2008 Beijing data, created from data in RDF and SPARQL, processed in Jena and Scala, and displayed in Prefuse Flex, Processing and Exhibit.
11th March 2008
I've now written up some notes on the OOXML BRM, and what you can do about it.
5th March 2008
Last week, I was attending the Ecma376/OOXML (Office Open XML) BRM (Ballot Resolution Meeting) in Geneva. The best description of it so far has been from Tim Bray, although I'm not yet commenting on his opinion of the process.
6th November 2007
The Oxfordshire Semantic Web Interest Group (OxonSWIG) is meeting this evening at the Oxford University Computing Labs from 6:30pm. There will be talks from Professor Ian Horrocks of OWL and SWRL fame, and from Boris Motik, Yevgeny Kazakov and Birte Glimm.
17th August 2007
After several happy years of employment, I've now left CSW, and I've set up a small consultancy company 67 Bricks with an old friend and colleague. We are providing "Insight from Information" - and I'm looking forward to using a lot of the experience in knowledge management, the Semantic Web, XML, and team building that I've acquired over the last few years. I'm blogging our progress at the 67 Bricks blog.
4th August 2007
This year, I was presenting again at the XML Summer School. My talks were "Blueprint for an XML application" and "Automating the Recognition and Identification of Knowledge". As always, it was a lot of fun, and it was really enjoyable to meet or catch up with some of the greatest XML experts in the world, as well as having some great discussions with the delegates.
2nd June 2007
I'm a member of the BSI's expert group to review OOXML, and I've recently been writing code to automatically validate the XML examples in the specification.
14th May 2007
10th March 2007
I'm giving a presentation at the Oxford SWIG (Semantic Web Interest Group) on Wednesday 14th March - the title is "Birds, Kittens and Ann Widdecombe". I'm mostly talking about SKOS, an RDF syntax for controlled vocabularies such as thesauri and taxonomies.
15th February 2007
My partner Michelle Reid has set up as a freelance proofreader and editor, after some time working directly for companies such as Oxford University Press as an editor. She's promoting her services via her blog, and her most recent post The Rights of the Writer provides a list of rights that authors have, echoing Daniel Pennacís "The Rights of the Reader".
19th April 2006
18th April 2006
My employer CSW Informatics has launched its new website.
11th December 2005
14th February 2004
Speeding up Log4J in JDK 1.5 by removing unused log methods from the bytecode - a longer article explaining how the log-removal code that I posted yesterday works.
13th February 2004
Remove all overhead from log4J calls that are not used using JDK 1.5beta's instrumentation packages. Just a zip of the code at the moment - more to follow.
22nd November 2003
I've tweaked the site design to use slightly different CSS. The hardest thing to make work was the code listings - the HTML pre tag prevents lines from wrapping, and there doesn't seem to be any way within CSS to turn off the wrapping behaviour while maintaining the whitespace-preservation behaviour (that is - the CSS "whitespace: pre" includes the "whitespace: nowrap" behaviour, and there's no way of disabling nowrap while enabling pre).
21st September 2003
An Ant task to deploy WAR files to an iPlanet 6 server (zip). Just the code at the moment without any docs, but it's simple to use.
7th March 2003
I've finally written up how to do client side SVG image generation with XSLT. To see any of it working, you'll need Internet Explorer 6 with the Adobe SVG plugin, or a build of Mozilla that includes SVG support.
2nd December 2002
Write a program to count the number of words contained in the Project Gutenberg version of Shakespeares first folio. Also output the ten most used words, along with the number of times they were used
The objective is to make as fast a program as possible. My entry is in Java, and on my computer it runs faster than the Perl and Awk submissions, and one of the C++ submissions, but is slower than the other C and C++ submissions.
Java NIO is a lot faster reading a file in earlier versions of the JDK. It's the half second that the JVM takes to start up that really slows the Java down - some of the C++ entries can run entirely in that time.
24th October 2002
- Records everything that happens when you run a Java program
- Steps back to where a variable was set, so null pointer exceptions become much less nasty
- Changes variables in the middle of the program, and then creates a new timeline to see the effects
I haven't yet had a chance to try it on anything serious.
20th October 2002
18th October 2002
Okay, so I have to admit the "more details tomorrow" was a blatant lie. In fact, I went to Canada for two weeks, and then worked on a contract to introduce the Communiqué CMS to QinetiQ. I'm planning to do a full write-up of the client-side XSLT/SVG thing - in the meantime, email me if you want more information.
26th August 2002
I've got client-side generation of SVG with XSLT working. More details tomorrow.
21st August 2002
I've been redesigning my website to use DocBook XML. Why DocBook? Mostly because there are so many existing DocBook stylesheets and associated tools to convert DocBook XML into HTML, PDF, RTF, etc. It's been very easy to convert the existing articles with an XSLT stylesheet because they were in XHTML already.
Now I'm using DocBook, I can start using all the advice I was giving about client-side XSLT in Practical XML for the Web Professional. The message is:
- Client-side XSLT works in todays browsers. That is, IE 6, NN 6 and Mozilla all support XSLT 1.0, and even IE 5.x supports enough XSL for simple formatting
- XML and XSLT make repurposing of content easier, because of the separation of content from presentation
- You can use XSLT for newer browsers and fallback to HTML automatically
I'm using a set of JSP taglibs that I wrote for these pages, such that browsers capable of using client-side XSLT will do so, and those that can't will have the content rendered server-side with Xalan and sent down to them. This page is still normal HTML, but the programming articles below are in XML.
I'm still experimenting with getting the JSP tag library OpenSymphony OSCache to work on this server, so pages may render slowly.
18th August 2002
I've started reading Ray Ozzie's new weblog, at about the same time as I'm starting Bruce Schneier's "Secrets and Lies: Digital Security in a Networked World". Ray Ozzie's Groove seems like a response to Bruce Schneier - the message of Groove is that:
- Bruce says Firewalls don't work so Groove says make secure connections from PC to PC, not from firewall to firewall
- Bruce says people do what is easiest, not what is most secure, so Groove says you have to make the most secure channel the easiest to use
17th August 2002
This book makes excellent reading for anyone involved in the content management process. It will guide you through the process of arriving at a content management solution, including the background knowledge you need to know, how to go about getting a solution, implementing the solution, and migrating existing content to it.
I wrote part of the chapter on "Building your own Content Management System" - the focus of the chapter was to say:
- Building your own CMS is hard work, but it should then meet your requirements exactly
- So-called off-the-shelf CMS systems always require extensive customization
- If you do decide to write your own CMS, we outlined some approaches to take, and some things to be wary of
I find it amazing that there are still plenty of companies paying web agencies thousands of pounds to update their sites on their behalf, when they could be spending hundreds of thousands on buying a CMS. I think it's said best by Martin Burns on Evolt:
The night your site advertised PCs at £10.00 (rather than £1000) and you couldn't correct it until the design agency came in the next morning. Now that's an epiphany.
16th August 2002
Having finally got my domain name surguy.net sorted out by Verisign, I've resolved to start updating this web page more frequently. My web hosting is coming from KGB Internet, a Canadian company that sells good value hosting for Java/JSP/Tomcat sites.
- Applying the Visitor pattern to a hierarchy where the member classes are not fixed, by using reflection: (as seen in Heinz Kabutz's Java Specialists Newsletter issue 40)
- Communicating between two classes with identical names loaded in different classloaders
- Using BCEL to dynamically add tracing to compiled code
- Avoiding NullPointerExceptions by using a BCEL classloader. (This article is unfinished)
- An Ant task to deploy WAR files to an iPlanet 6 server (zip) (code only)
- Speeding up Log4J in JDK 1.5 by removing unused log methods from the bytecode
- Speech recognition in Windows using the MS Speech API
- Scripting JBuilder using Jython macros (I am now unlikely to ever write this up, since I've stopped using JBuilder in favour of the much superior IntelliJ IDEA)
- Generating webpage images dynamically from XML using XSLT, BSF and Jython
- Client-side image generation with XSLT and SVG (examples require an SVG capable browser)
Note: Topics without links are things that I've done, but not yet written up in XML form