About Me
I co-founded 67 Bricks Ltd. with Sam Herbert, and grew it to be a respected and award-winning company with over 40 employees. We work with major information providers such as the Economist Intelligence Unit, Taylor and Francis, Springer Nature, and the British Medical Journal.
I enjoyed every aspect of building the company, including talking to our customers and understanding their problems; strategic technical decision making as CTO; hiring and managing a talented team; and hands-on software development. We’ve always been innovative and have been working with AI for the last decade, and I’m very excited about the new possibilities that generative AI provides. I’m also proud to have founded a company that has always cared about its impact on society and on the environment.
With 67 Bricks now independently thriving, I’m looking at new areas where I can apply my expertise. In particular, I believe that climate change is the most important problem that we face today, and software solutions can help address this critical global challenge.
Writing
Most of my public code is on my Github account. Some specific projects are:
- Fossil Registry Extractor - extracts fossil fuel extraction data from PDF documents relevant to the Global Registry of Fossil Fuels, using Python
- (human) language detection code that uses an approach based on n-grams to recognize whether a given piece of text is in English, French or German
- Scala JS implementation of Minesweeper with a hosted version
- bitburner-scripts - automation scripts in TypeScript for playing the cyberpunk hacking game Bitburner
- scala-xom - a library to make using the XOM XML library and Saxon XPath 2 easier from within Scala
- Under Hollow Hills Foundry module - a FoundryVTT module to help play Meguey and Vincent Baker’s game Under Hollow Hills
- Nanoleaf MacOS widget - a MacOS widget to change scenes on a Nanoleaf Shapes instance, written in Swift
- Automated accessibility testing using XProc and Schematron.
These are older articles I’ve written:
- Rediscovering JavaScript (2006)
- Client-side image generation with XSLT and SVG (2003)
- 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) (2003)
- Communicating between two classes with identical names loaded in different classloaders (2002)
- Speeding up Log4J in JDK 1.5 by removing unused log methods from the bytecode (2002)
- Speech recognition in Windows using the MS Speech API (2002)
- Generating webpage images dynamically from XML using XSLT, BSF and Jython (2002)
- Producing pop-up menus with CSS only (referenced by Eric Meyer’s css/edge) (2002)
For a number of years, I was a member of the British Standards Institute’s IST/41 committee, representing the UK on the ISO/IEC SC34 committee responsible for international standardization of document description and processing languages (such as OOXML, ODF, and Schematron). I was involved in the contentious discussions around whether OOXML should be standardized, and wrote several articles relating to it at the time: