Projects

I spend most of my free time writing code (usually Xojo but increasingly Swift) or building small technical projects. Over the years I’ve done quite a few. On this page I'll try to list the more interesting ones. Click the project name to dive deeper.

A Xojo module for encoding and decoding objects for storage and transmission using JSON.

A Xojo module implementing the Fowler-Noll-Vo hashing function.

A 2D rigid body physics engine for Xojo. Based on Randy Gaul's Impulse engine.

A 100% CommonMark compliant Markdown parser for Xojo written in pure Xojo code. I needed a fast and robust parser that not only would reliably generate the correct output but would also run on iOS. After looking around I realised that there was no other solution available for Xojo and so I decided to write one myself. MarkdownKit is a labour love, taking months of hard work and containing over 8500 lines of code.

An open source object-oriented scripting language written in Xojo that is designed to be embedded in a Xojo app. it's fast, production-ready and easily extensible.

After a lot of work, I've managed to bring Erin Catto's amazing Box2D library to Xojo.

Strike is a static site generator. Put simply, it takes a folder of Markdown files and a theme (a collection of HTML files) and uses those to create a completely self-contained website. Strike is the name of the engine (a Xojo module) and strike is the name of the command line tool.

SyntaxArea is a free, open source, code editor written in 100% Xojo. It's built upon the open source TextInputCanvas desktop control (originally created by Xojo Inc and now maintained in an open source manner by Einhugur) and implements all standard keyboard shortcuts and fully supports international input.

The XUI framework is a collection of user interface classes and helper modules for Xojo desktop projects. Many of the helper and utility modules (such as MarkdownKit) may be used in any Xojo project (e.g. console and iOS).

A collection of classes for parsing Xojo projects. It’s capable of parsing .xojo_project and .xojo_xml_project projects into an abstract XKProject that represents all items (classes, interfaces and modules) contained within a Xojo project. The items are populated with the members (e.g. properties, methods, etc) and all source code.