Research & Projects

Building toward AI for science

I'm a self-directed engineer moving into machine learning and systems research, with the long-term goal of working on AI for science. The work below is artifact-driven: from-scratch GPU kernels, emergence simulations, interpretability experiments, and a compiler. I'd rather show the code and the questions than overclaim the results.

Current Research & Systems Work

CUDA Transformer Inference Engine

From-scratch GPU inference for a bi-encoder In Progress

A from-scratch CUDA inference engine for the all-MiniLM-L6-v2 bi-encoder, written to actually understand what a transformer forward pass costs on a GPU. I hand-wrote the kernels (MatMul, LayerNorm, GELU, Embedding) rather than reaching for a library, and built parity tests that check each kernel's output against PyTorch.

Underneath the kernels sits a custom DeviceBuffer/Tensor runtime for memory and shape management, a CMake build, and a Python benchmark pipeline that measures the engine against torch.compile as a baseline. I worked through the full CUDA Programming Guide while building it.

CUDA C++ CMake PyTorch Transformers

Artificial Life - Abiogenesis

Emergence in a computational primordial soup Research Build

A Rust reimplementation and extension of the Computational Life research - the BFF primordial-soup simulation in which random programs interact and, over time, begin to self-replicate. The question that pulls me in: how does self-replication and complexity emerge from a simple computational substrate, with no goal baked in?

This is the work that sits closest to where I want to end up. Studying emergence in artificial systems is squarely adjacent to AI for science, and rebuilding it from the paper is how I'm learning to ask the questions rigorously instead of just watching the pixels move.

Rust Artificial Life Emergence Simulation

Mechanistic Interpretability for Ontology Induction

Sparse autoencoders for reproducible taxonomies Research Direction

A research direction I've scoped but not yet built, asking whether ontology induction can be made deterministic. The idea: train sparse autoencoders to expand a fine-tuned embedding model's representations, surface the composite features the model is actually using, and distill those features into a reproducible taxonomy, instead of relying on prompt-by-prompt LLM guesses.

It's grounded in the mechanistic interpretability literature (Elhage, Bricken, Park, Turner) and it's a proposal rather than a result so far, but the goal is concrete: a pipeline that turns learned representations into structure you can re-derive and audit. A natural extension is runtime feature steering, nudging the encoder's activations to handle categories that split, merge, or emerge at inference time, without retraining.

Mechanistic Interpretability Sparse Autoencoders Embeddings PyTorch

cljrs - Native Clojure Compiler

A Clojure dialect compiling to native and GPU In Progress

A Clojure dialect implemented from scratch in Rust. It compiles to native machine code through MLIR/LLVM, targets GPU kernels via a compute DSL, and offers Rust and WASM/JS interop. The shorthand I keep using: "Mojo, but Clojure."

It's the systems-and-compilers counterweight to the ML work - a way to go deep on codegen, MLIR, and GPU compute while keeping a language I enjoy thinking in.

Rust MLIR / LLVM Compilers GPU Compute WASM
Other Work

Earlier projects from before this research turn - graphics, games, music tooling, and a podcast. They were fun, and a few are still live, but they're novelties next to the work above.

FourthsHub

Guitar theory & visualization web app

FourthsHub is a free, ad-free web app for guitar players exploring alternative tunings - interactive scale, arpeggio, and chord visualizers built around fourths and other non-standard tunings. Built with SvelteKit and still actively maintained.

FourthsHub Scales Visualizer showing A Major scale in fourths tuning

3D Guitar Configurator

Commission for Tosin Abasi (Animals as Leaders)

A real-time 3D guitar configurator built for Tosin Abasi of Animals as Leaders, letting users visualize and customize guitar designs in the browser. Built with Three.js and React.

Graphics Programming & Renders

Blender, WebGL, shaders, software ray tracer

A run of graphics experiments: 3D environment art in Blender (Cycles), WebGL and shader work, generative art, and a software ray tracer written from scratch in C++ - ray-plane intersection, basic materials and lighting, and Python scripts to drive animations. Where my interest in GPU programming first took root.

Grave Defender

Game jam tower defense / shooter

Grave Defender is a tower-defense / top-down-shooter hybrid built in five days for Brackeys Game Jam 2021.2 - learning Godot from scratch while handling programming, music, and design.

The Virtual World Podcast

Programming languages & systems - on hiatus

A podcast on programming language design, the Rust ecosystem, and systems engineering. Currently on hiatus, but it scratched the same systems-programming itch the compiler work does now.

I've also built a fair amount of internal developer tooling over the years - editor extensions, CI/CD improvements, and static analysis for government projects - but that's day-job work rather than research I'm featuring here.

Get in Touch

Working on AI for science, interpretability, or systems?

I'm looking to go deeper into ML and research, and I'm happy to talk about any of the work above - collaborations, questions, or just comparing notes. The fastest way to reach me is the contact page.