I develop open source software as a way to give back to the open source community, and to keep my skills up to date. Projects I created or am part of include:

Grammars-v4. A collection of formal grammars for programming languages and file formats in including a maven test framework that uses Github CI to ensure that any changes are validated against known input examples. I'm the primary contributor and the repository owner.

Crochet-BSD. I'm a contributor to this project which provides custom build scripts to create FreeBSD boot images for small devices such as Raspberry Pi or Google Chromebook

PDP7-Unix. I contributed to the effort to restore the very first Unix from scans of form-feed paper. UnixV0 is now running on a real PDP-7. YouTube.

ACME. I'm interested in ADL's, and wanted to truly understand ACME. I wrote an ANTLR grammar for it.

Graph Language Marshallers. I wrote Java marshallers for DOT, GML, GraphML and GXL. For the most part it was trivial Java and XML work, other than DOT, which is a language of it's own and required a parser-lexer.

freebsd-ansible. I wrote a simple Ansible playbook to deploy and configure FreeBSD images in AWS. It just made temporarily hosting things in AWS a lot faster.

Pragmatach. I wrote a Java web framework. It didn't experience any adoption at all, but I learned quite a lot about how web frameworks work.

VaxArchive. I have a couple Vaxen and I host the VaxArchive, a collection of documentation of interest to people who are interested in Vax computers.

jvmBasic. I combined my interest in formal grammars and the JVM to write a BASIC compiler that emits JVM byte code. The demand for a solution to run BASIC on the JVM is very low, but I enjoyed the project just the same. I learned how Java bytecode works and a little about compilers.

kPascal. I've always wanted to write an interpreter. I wrote an interpreter for Pascal, in Java. It wasn't as difficult as I thought it would be.

OLMReader. I was a little bored and decided I wanted to read my Outlook OLM archives in Java, and insert them into a database.

hsClient and hsInflux. I got a home controller and wanted to import telemetry from it into a time series database. I wrote hsClient to communicate with the home controller and hsinflux to import the data into InfluxDB. Recently I open-sourced hsMQQT, an MQQT bridge for HomeSeer. I also created hsOpenAPI, an OpenAPI wrapper around the HomeSeeer API.

paradoxReader. A friend of mine inquired about recovering data from an old Paradox database. This is the software that resulted from the effort to recover the data: a java reader for Paradox database files.

kTelnet and kRepl. A Java telnet server and a Java REPL.

kSearch. I have a large archive of PDF files. I decided to write myself a simple personal search engine combining Elastic Search and a web UI. It also works well on email.

gpioexample. In the course of playing with FreeBSD on an rpi, I wrote a simple example of accessing the rpi GPIO on FreeBSD in C.