Personal Projects
TanScript
A compiled programming language built from scratch using TypeScript
Key features:
- Compiles to AMD64 instruction set
- Functions and lambdas that can be passed around as first class citizens.
- Signals implementation that allows for easy event driven mathematics using a dependency graph models to update variables only as needed.
- Full support for all math operators, and nested expressions with parenthesis.
- Support for strings
- Support for objects which can have methods and properties
Ray Tracer
A ray tracer built in Rust
Key features:
- Uses Bounding Volume Hierarchy (BVH) to speed up to cull faces to speed up rendering.
- Supports object instancing to minimize memory usage, allowing whole scenes to fit within L1 cache for maximum performance.
- Supports .obj, .mtl, and .gltf file formats for easy importing of 3D models and materials, including a hand-written glTF deserializer built on serde.
- Organized as a multi-crate Cargo workspace (geometry, materials, parser, and the renderer) with Rayon data-parallel rendering across all cores.
- Ships as a clap CLI with live indicatif progress bars.

tmail - Mail Server Stack
A from-scratch SMTP + IMAP mail server written in Rust
Entire e-mail stack hosted on my at-home Linux Server that I use every day through Thunderbird
Key features:
- Hand-written SMTP and IMAP protocol parsers — command/response types and a per-connection state machine, with no protocol crates.
- Four-service architecture: SMTP ingest, IMAP server, and a RabbitMQ consumer that persists mail to PostgreSQL, all wired together with Docker Compose.
- Compile-time-checked SQL via sqlx with versioned migrations; async services built on Tokio.
- Integration test suite driving real IMAP flows (LOGIN, SELECT, FETCH, APPEND) against the running server.
rs-http2
An HTTP/2 server implementing the binary protocol from the ground up
Key features:
- Full HTTP/2 framing layer — DATA, HEADERS, SETTINGS, PING, GOAWAY, RST_STREAM, WINDOW_UPDATE, PRIORITY, PUSH_PROMISE, and CONTINUATION.
- HPACK header compression and the complete per-stream state machine (idle / open / half-closed / reserved / closed), each state modeled as its own type.
- TLS via OpenSSL with ALPN negotiation and a per-core thread pool, serving static files at roughly 150k requests/sec on a Ryzen 9 7900X.
Open Deck
An Elgato Stream Deck MK2 driver and web UI, shipped as one Rust binary
- Reverse engineered first-party Elgato StreamDeck software to create a driver of my own.
- Polls the Stream Deck over raw HID and renders text/images onto its keys, with nested folder pages for organizing actions.
- An axum web server with a WebSocket channel keeps the React UI in lockstep with the physical device; the compiled frontend is embedded into the binary, so distribution is a single file.
- Drives the local Discord desktop client over its RPC IPC socket to join voice channels; cross-compiled for Linux and Windows in CI and published to a rolling release.
Budgie
A budget tracker app that allows users to keep track of recurring bills, grocery budgets, and one time expenses. I was the lead front end eningeer for the website and helped oversee the development of the expressJS API.

Note Taker
A note taking app that utilizes markdown to render styled notes
- Takes advantage of hyperlinks to quickly reference other notes, and allows for easy navigation between related notes
- Graph feature to visualize the relationships between notes.
- Stores and displays notes in file system tree structure for easy organization

DynamiCalc
Most calculators have static variables that do not change after being set. DynamiCalc allows users to create dynamic variables that change as the user inputs new values.

Lion
Lead Developer of Lion, a discord bot developed in TypeScript with over 30 contributors. Helps manage the UCF CS Discord, making the life of the average user and moderator easier, serving 14,000+ users.



