Tanner Sandlin

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
  • TypeScript logo

    TypeScript

Project

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.
  • C++ logo

    C++

  • Rust logo

    Rust

Project

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.
  • Rust logo

    Rust

  • SQL logo

    SQL

  • Docker logo

    Docker

Project

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.
  • Rust logo

    Rust

Project

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.
  • Rust logo

    Rust

  • React logo

    React

Project

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.

  • React logo

    React

  • Firebase logo

    Firebase

  • Flutter logo

    Flutter

  • ExpressJS

Project

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
  • React logo

    React

  • TypeScript logo

    TypeScript

Project

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.

  • React logo

    React

  • TypeScript logo

    TypeScript

Project

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.

  • TypeScript logo

    TypeScript

  • Discord.js logo

    Discord.js

  • MongoDB logo

    MongoDB

  • Docker logo

    Docker

Project