Experiments and Projects

A selection of personal projects and experiments. You can find more on my GitHub ↗ .

Chat-Tea

This project is a Rust-based, asynchronous chat application with a Terminal User Interface (TUI), leveraging Tokio for efficient async operations and Ratatui for the terminal interface.

ChatTea adopts an Elm-like architecture, centralizing application logic around a single Model and processing events via messages through an update–view cycle, inspired by Elm. 'Tea' in Chat-Tea is for "The Elm Architecture".

Chat gif
View on GitHub ↗

Terminal Radar Sim

A real-time radar simulation rendered in the terminal using Ratatui. Built to explore how to implement a smooth event and render loop in pure Rust, without relying on an async runtime like Tokio.

The radar sweeps across a simulated grid, detecting moving targets that fade or disappear when out of range. Built around a simple model-update-view pattern inspired by Elm, it stays responsive using only threads and channels, no async runtime needed. I write a bit more on my Github, link below.

Radar TUI gif
View on GitHub ↗

Nannou Audio Visualizer

This is a real time audio visualizer I created in Rust using Nannou, rustfft, and Audrey. It does basic beat detection using spectral flux and reacts to both volume and frequency. You can feed it an audio file or let it run from live input.

I tried to make the strings respond more to string like tones, and the synthwave sun pulse with kicks and snares. It's not rhythmically perfect, but the visual pulse holds up. Some audio files (like the example song) are sampled at 44100 Hz, but Nannou expects 48000 Hz by default, so playback might be slightly faster unless adjusted.

View on GitHub ↗

RawRustServer

A simple multithreaded web server written in Rust using only the standard library, powering a small "Galactic Hunter Portal" demo site. Unlike languages such as Go, C#, or Java, Rust's standard library doesn't include a built-in HTTP server or async runtime, only lower level primitives like sockets and threads. I built those pieces from scratch, implementing a custom thread pool for concurrency and manually parsing HTTP to serve HTML, CSS, and JavaScript. The GIF below shows me logging into the portal.

It also includes a lightweight logger for terminal and file output, and a simple key-value database layer for handling user data.

Raw Rust Server usage example
View on GitHub ↗

Aang

A micro JavaScript single-page application framework built with Web Components. Created as a personal reference for exploring native web APIs and experimenting with vanilla JavaScript. I may revisit later and expand and, reimplement with Typescript. Inspired by Angular hence the name.

View on GitHub ↗

Interactive Demos

Here are a few things that can run right in the browser.

Game of Life

ScreenShot of Game of Life preview

Sand + Water Particles in TIC-80

A sand and water particle simulation written in Lua for the TIC-80 fantasy console.

ScreenShot of Sand + Water Particles in TIC-80 preview

Image to ASCII

A React app that converts images to ASCII art using the Canvas API.

ScreenShot of Image to ASCII preview