Skip to main content

This page lists some personal and work projects. Many of the personal projects are no longer actively maintained.

Selected Personal Projects

Newt

Newt is a self-hosted dependent typed programming language that I wrote. It is similar to Idris or Agda. I wrote it to learn how to implement dependent typed languages.

After getting the Idris2 compiler to work when compiled to Javascript, I made a web playground for it based on the one I did for Newt. The playground use Preact, Typescript, and Codemirror6. Codemirror is less batteries-included than monaco, but works better on mobile.

I wrote utilities to extract documents from the Apple Notes database. I use this to back up my notes. I haven’t looked at this in a while, the table decoding needs to be updated to handle changes on Apple’s side, and newer features need to be handled.

Go code to convert iWork documents (Pages, Sheets, Keynote) to HTML. I haven’t maintained it in the last decade. I partially did this because I wanted longevity for my files and Apple deprecates file formats, but also because it was fun.

idris2-js

Patches to get the Idris2 compiler to run on nodejs. Includes a pre-built distribution for devices that are too small to build the chez Idris and I also used this for the idris2-playground.

A utility to decrypt iOS backups. I wrote this so I could poke around in the files to see how apps store their data and to extract keychain information. It is written in Go, but shows its age a little. Based on iphone-dataprotection - a python based tool that was hosted on google code.

A sous vide calculator that I originally made as a little javascript application and then converted to ObservableHQ to kick the tires there. Sometime I’ll build my own observable-like thing and use this as a test case.

Work Projects