Back to selected work

ENGINEERING PROJECTS

All projects

Compiler integrations, typed bindings, reactive systems and concurrency tools. Each project links to its implementation and documentation; expand its technical details to read more about the work.

Project list

InteropTypeScript and F# are connected through a shared binding layer.

Xantham

Generate typed Fable bindings from TypeScript libraries through the compiler's own API.

F#TypeScriptCode generation

I built an F# generator around the TypeScript 7 compiler API, with generated protocol bindings and batched requests. It also produces the DOM and Node bindings published alongside the tool.

CompilersF# components pass through a compiler and branch into Solid JSX output.

Partas.Solid

F# components compiled to Solid JSX, with typed props and reactive control flow.

F#FableSolid

Building on Oxpecker.Solid, I developed the DSL and Fable AST transforms for typed components and JSX output. This site's interactive project explorer is compiled from an F# script.

Reactive SystemsA signal fans out through dependent computations and converges on an effect.

Ranvier

Fine-grained reactive computation for .NET, built around explicit dependencies.

F#.NETReactive graphs

I built a reactive graph engine for .NET and Fable with dynamic dependency tracking, deterministic ownership and explicit pending/error boundaries. Its trace log powers the live signal maps in this site's walkthrough.

AutomationBuild stages form a pipeline with branches for checks and reports.

Partas.Build

Keep build stages and CLI options in sync by deriving each command's flags from its pipeline.

F#.NETCI/CD

Building on Fun.Build and FSharp.SystemCommandLine, I designed a typed DSL where stages declare the options they use. This site's build, checks and GitHub workflows run through the same CLI.

ConcurrencyMultiple producers pass work through a FIFO queue to multiple consumers.

loony

A lock-free queue for passing reference objects between concurrent producers and consumers.

NimLock-freeMPMC queues

A pure Nim implementation of the Giersch–Nolte concurrent FIFO algorithm, developed for CPS continuations, with deterministic memory reclamation and cache-aware queue layout.

ConcurrencyWrite, read and free states form a synchronisation cycle with parallel readers.

wrflock

Coordinate writing, concurrent reading and memory reclamation with a compact synchronisation primitive.

NimFutexesSynchronisation

A pure Nim implementation of Mariusz Orlikowski's WRFLock: an eight-byte state machine with separate write, read and free capabilities, using futex waits or configurable yielding.

InteropCompiles F# from the same source as electron TypeScript bindings

Fable.Electron

Electron-js bindings for Fable, with F# type safe IPC

F#electron-jsFable

Bindings for the Electron-js API, with F# type safe IPC, with cron workflow regenerating the bindings for new Electron versions, and creating PRs on Major releases or errors.

More work on GitHub