Selected work

Things I build when I'm not doing client work. If it's here, it survived long enough to be worth sharing.

Grayscale Flappy Bird clone at game over: score, pipes, bird trail, and modal with bot-mode instructions

Neuroevolution Flappy Bird

Genetic algorithms

Evolutionary strategy with 240 agents per generation, top 24 survive. 5-6-1 MLP, 41 parameters total. Gaussian mutation at 12% per weight, sigma 0.18. Fitness = pipes * 1000 + survival time. No backprop. Converges in ~60 generations.

Screenshot of the vector image search app UI with gallery grid and upload tabs

Vector based image search

Vector search

Upload an image, get back visually similar ones: no tags, no keywords required. It matches by what things look like, not what they're called. Simple to use, but the mechanics underneath are genuinely interesting.

GitHub
Reel Estate modal for choosing a reel template: pitch a home, open houses, hot deals, and rap duel options

Reel Estate

Real estate & video

Built at a hackathon with Naamche and reAlpha. Drop in a property link and it spits out a TikTok-ready promo reel in minutes: script, voiceover, video, the whole thing. Paste a link, wait a bit, walk away with something you'd actually post. What would normally take a day of editing just... doesn't anymore.

Singly linked list diagram: head pointer, value nodes, next links, and null terminator

Linked list visualization

Data structures

Explores a real singly linked list in memory: one head pointer, each node holding a value and a single next reference, and the last node pointing to null. You drive insertions and deletions at the head, tail, or a zero-based index, remove the first node matching a value, search for a value, or clear the list—so you can see how next pointers get reassigned when the chain grows, shrinks, or splits in the middle, including boundary cases at the ends.

Abstract bubble graphics: overlapping teal circles and scattered multicolor dots on black

Bubble graphics

Canvas

A full-screen HTML canvas experiment: hundreds of small circles drift and bounce off the edges while a simple animation loop clears and redraws each frame. Move the pointer around and nearby bubbles grow, then shrink again when you leave. It is a compact playground for 2D context, requestAnimationFrame, and a bit of motion without a framework.