F# tooling.Typed bindings.Reactive systems.Build automation. Across ecosystems.
I build compiler integrations, typed bindings and build tools for F# and .NET. My work connects these ecosystems through reactive interfaces, generated APIs and repeatable workflows.
Independent work. Shared openly.Compilers / Integrations / Reactive systems
01 — SELECTED WORK
Tools, from source to use.
Compiler integration, typed interop and workspace automation.
Interop
Xantham
Generate typed Fable bindings from TypeScript libraries through the compiler's own API.
F#TypeScriptCode generation
Technical details
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.
F# components compiled to Solid JSX, with typed props and reactive control flow.
F#FableSolid
Technical details
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.
Fine-grained reactive computation for .NET, built around explicit dependencies.
F#.NETReactive graphs
Technical details
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.
Keep build stages and CLI options in sync by deriving each command's flags from its pipeline.
F#.NETCI/CD
Technical details
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.
A lock-free queue for passing reference objects between concurrent producers and consumers.
NimLock-freeMPMC queues
Technical details
A pure Nim implementation of the Giersch–Nolte concurrent FIFO algorithm, developed for CPS continuations, with deterministic memory reclamation and cache-aware queue layout.
Coordinate writing, concurrent reading and memory reclamation with a compact synchronisation primitive.
NimFutexesSynchronisation
Technical details
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.
Electron-js bindings for Fable, with F# type safe IPC
F#electron-jsFable
Technical details
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.