These are skills that I am confident in using professionally. This includes both theory, as well as practical skills and tools.
The following represents projects I have worked on, either individually or as part of a larger team, as well as what skills I developed or used on each. For those projects whose outputs are open source, you can also find links to them.
bytestringI implemented a SIMD-accelerated UTF-8 validator for the bytestring Haskell library. The implementation had to be both portable and performant across a range of platforms. This included only-SSE x86, SSE-and-AVX x86 and NEON, as well as a non-SIMD fallback. Inline assembly was used to ensure performance regardless of compiler use.
Link: C source
Relevant skills: C, Haskell, SIMD, asm, automata theory, parallel programming, algorithms and data structures
I processed NASA AOD Terra optical reflection data as part of a PhD project. This required me to convert a combination of several years’ worth of NASA satellite data, combined with regional data from all of New Zealand, to produce CSV files correlating and summarizing both data sets per geographic region.
Relevant skills: PostgreSQL, PostGIS, Julia, parallel processing, performance engineering, Unix command-line data processing tools
I won competitive funding (via an academic grant) to process a large amount of CSV data, provided by Fisher and Paykel Healthcare, into the ARFF format, as well as an SQLite relational database, using command-line tools and Haskell. I then used WEKA to run various machine learning algorithms on the data, followed by aggregation of the results. Due to my choices in optimization and tooling, I was able to complete work budgeted for 1 month in 1 day, including revisions requested at the end.
Relevant skills: SQLite, parallel processing, performance engineering, grant writing, Unix command-line data processing tools, Haskell
I won competitive funding from Catalyst Fund 13 to design and build an intermediate, Turner-total, call-by-push-value language, called Covenant. Covenant was designed to serve a similar purpose to LLVM, but for the Cardano ecosystem.
Link: Project on Github
Relevant skills: Haskell, Cardano, compiler design and construction, type systems, grant writing, testing
I helped design, and currently maintain, an eDSL for UPLC scripts called Plutarch. Plutarch is designed to provide both significant type safety by way of its host language (Haskell) while allowing low-level control over performance-sensitive details where needed. I have been Plutarch’s primary maintainer since 2025; prior to this, I was a co-maintainer.
Link: Project on Github
Relevant skills: Haskell, Cardano, compiler design and construction, type systems, grant writing, testing
nonempty-vectorI contributed support for unboxed vectors to the nonempty-vector library.
Link: Project on Github
Relevant skills: Haskell, testing, performance engineering
I implemented CIP-49, CIP-121, CIP-122 and CIP-123 into Plutus Core. This also required tests and benchmarks to demonstrate correctness and performance.
Link: Project on Github
Relevant skills: Haskell, testing, performance engineering, algorithms and data structures
I implemented bindings to SECP256k1 functionality to cardano-base, as part of the work required to implement CIP-49. This also required tests to demonstrate correctness and safety.
Link: Project on Github
Relevant skills: Haskell, C, testing
I have designed a range of parts, mostly for FDM printing.
Link: Printables
Relevant skills: FDM, SLA, FDM and SLA slicing, FreeCAD, Blender, design optimization for FDM, design optimization for SLA, FDM printer maintenance, SLA printer maintenance
I self-host several services, as well as two PWAs (see the Web section for details), as well as this site. I use the following technologies and systems.
Relevant skills: Nginx, Prosody, Linux, PWAs, XMPP, HTML
I produced several reviewed standards documents for Cardano Improvement Proposals (or CIPs). In all cases, I was responsible for writing the original proposal, then amending it after review. All of the CIPs listed here were accepted.
I also implemented support for these CIPs into Plutus Core. The specifics are listed in the Haskell section.
Integers and builtin ByteStrings, with support for different choices of endianness and padding requirements.ByteStrings.ByteStrings.Relevant skills: Technical writing, Haskell, Cardano, performance engineering
I have written two PWAs, which I also host on my own hardware:
Relevant skills: HTML, PWAs, CNC machining, FDM printer maintenance and construction, Linux, Nginx
I have written several blog posts on a range of topics, mostly, but not entirely, related to Haskell. These are currently hosted by MLabs, where I previously worked:
massiv: Getting the Most Out of Your Hardware in Haskell. Describes the use of the massiv library to get high performance out of arrays using CPU parallelism, in the context of cellular automata.Term to Script: How PlutusType Drives Plutarch. A detailed description of the role of PlutusType within the Plutarch eDSL, drawing parallels to Monad from Haskell. Also describes how to produce instances of this type class, including using helpers provided by Plutarch.n-queens solver (a UPLC benchmark) using rank-select dictionaries in combination with a technique from Qiu. The performance difference is also measured and explained.Relevant skills: Technical writing, performance engineering, Haskell, SIMD, SWAR, C, Cardano, algorithms and data structures