Writing

63 posts
Building LinkedIn Growth OS: A 10,000-Line Personal CRM I Never Planned to BuildFull-Stack · AI

What started as a simple post log turned into 19 API routes, 41 React components, and a scoring engine I designed from scratch.

June 2025
↗
APEX: Launching a Spectroscopy Payload to 100,000 FeetEmbedded · Hardware

Hardware that works at -60°C, 1% atmospheric pressure, and has to survive both ascent and descent. Here's what that actually involves.

June 2025
↗
Crawl / OpenClaw: Building an Autonomous SEO Agent in a WeekendAI · Web Scraping

SEO and GEO are manual, slow, and disconnected. We built an agent that handles the whole pipeline autonomously. In a weekend.

March 2025
↗
VantageAI: Fine-Tuning an LLM to Grade DECA CasesAI · Fine-tuning

DECA Ontario has thousands of students competing in business case events. Grading is slow and inconsistent. I built a model to fix that — and got it into a real pilot.

January 2024
↗
Pyros: Wildfire Detection AI in 24 HoursCV · Voice AI

Hack Canada 2025. 24 hours, a wildfire problem, a team, and a working system by Sunday morning.

January 2025
↗
commitgpt 2.0: Building a Commit Message System, Not a Prompt TrickPython · CLI · Developer Tools

Not about generation. About output control under unreliable model behavior.

January 2025
↗
ASL Translator: Real-Time Sign Language Recognition with MediaPipeCV · Python

Real-time American Sign Language recognition from a webcam feed. What it took, what works, and what the honest limitations are.

January 2024
↗
Blue Banner, Rookie Year: What FIRST Robotics Actually Teaches YouRobotics · C++

A Blue Banner in FRC means you won a regional. Winning it in your rookie year — first time competing — is rare. Here's what that season actually looked like.

January 2024
↗
Using a Laptop Chassis as an Input DeviceSwift · macOS

Most input devices are external. I wanted to see if the laptop itself could become one.

2025
↗
Grabby: Turning Push-Ups Into Currency, a Cursor, and a RobotCV · Hardware · Hackathon

A hackathon project that turned push-ups into mouse clicks, voice commands into cursor control, and a laser pointer into a physical robot.

2025
↗
Simulating Mission Control Instead of Another DashboardSpace · Full Stack

Space software often visualizes data after the thinking is done. I wanted the interface to participate in the reasoning.

2025
↗
Building a Fitness System Instead of Another Habit TrackerHealth · Full Stack

Most fitness apps track isolated metrics. I wanted a system that treated training, recovery, and consistency as one loop.

April 2026
↗
SEOClaw: Building an Orchestration Layer for Search, Not Another SEO ToolAI · Systems

Most SEO tools report problems. I wanted to model a system that could analyze, queue, decide, and act.

2025
↗
Infragility Web: Designing an Agent Dashboard Before the Agents ExistedWeb · Systems

I built the interface before the backend was fully real, which forced me to think hard about architecture before integration.

2025
↗
Infragility Web Site: Building a Real-Time Agent Interface Before the Agents Were RealWeb · Systems

I was less interested in another polished dashboard than in testing how an agent interface should actually behave under uncertainty.

2025
↗
Visioiner: Using Eye Tracking to Turn Attention Into Browser ControlCV · Python

Ads are built around attention. I got curious what happened if attention itself became the input.

2024
↗
Auto-Tune 3000: Learning Signal Processing by Building a Pitch EditorAudio · Python

I did not start with plugin architecture. I started wanting to understand what pitch correction was actually doing.

2024
↗
Simulating Human Typing Without Faking Human BehaviorPython · Automation

Typing automation is easy until you try to make it look human instead of scripted.

2026
↗
SimRacingGame: Learning Vehicle Physics by Building a Highway That Never EndsGame Dev · Unity

Driving games feel simple until you try making traction, drift, and road generation all agree at once.

2023
↗
Seeing Motion, Not Just Frames: Building a DIY Security System Around Real-Time DetectionCV · Python

Real-time systems get interesting when vision, voice, and control all have to run at once.

2024
↗
Life in the Terminal: Building a Productivity System Without Leaving the Command LinePython · CLI

Productivity tools often add friction through complexity. I wanted to see how far a terminal app could go with less.

2024
↗
FPV Steering Wheel Robot: Driving an FRC Robot With a Virtual TransmissionRobotics · Java

Most FRC robots use gamepads. I wanted a steering wheel, a gear shifter, and a first-person view.

2024
↗
Building a Finance Dashboard Around Questions, Not ChartsNext.js · Data Viz

Personal finance tools often drown simple questions in interface. I wanted to make the data answer first.

2025
↗
Job Scrapers Break at the Seams. I Built One Around the Seams.Python · Data

Most scraper projects fail from architecture debt before they fail from blocked requests.

2025
↗
MacroDeck: Five Buttons and a Potentiometer Is Sometimes All You NeedHardware · Arduino

Keyboard shortcuts add up. I built a physical controller with five buttons and a knob to skip them.

2024
↗
RPG Quiz Game: A 724-Line RPG Where Correct Answers Deal DamageJava · Game

Learning Java from a textbook is boring. Answering questions to survive is not.

2024
↗
PROMETEO Car Controller: Learning Vehicle Dynamics Through One Script That Kept GrowingPhysics · Unity

Good driving controls are mostly invisible. You only notice them when traction, weight, or drift feels wrong.

2023
↗
Counting Reps With Angles, Not GuessworkCV · Python

A small computer vision project taught me more about state, noise, and motion than the push-up count itself.

2024
↗
Pull-Up Counter: Counting Reps With Shoulders and ElbowsCV · Python

Fifty-seven lines of Python, one webcam, and a MediaPipe model. It counts pull-ups.

2023
↗
Hand Controls: Learning Human Input Through 130 Lines of Computer VisionCV · Python

Mouse input feels fixed until you realize a webcam and a few geometric checks can replace it.

2024
↗
Hand Distance Tracker: What I Learned From 106 Lines of Hand TrackingCV · Python

MediaPipe gives you 21 hand landmarks per frame. I wanted to see what I could do with just coordinates.

2023
↗
LeverLens: 163 Lines of Pose Estimation for a Niche Fitness ProblemCV · Python

The elbow lever is hard to learn without a coach. I built a webcam to judge my form instead.

2024
↗
Handstand Tracker: What It Takes to Tell a Computer You Are Upside DownCV · Python

LeverLens tracked elbow levers. Handstands needed the same treatment, but inverted.

2024
↗
RPS Proof of Concept: Teaching a Computer to See Three Hand ShapesCV · Python

Recognizing rock, paper, and scissors is easier than most people think when MediaPipe gives you the landmarks.

2024
↗
Gesture Duel: Two-Player Rock Paper Scissors With One WebcamCV · Python

Rock Paper Scissors needs no hardware. I wanted to see if a webcam could replace the verbal call.

2024
↗
DanceBox: 174 Lines of Pose Estimation Meets Rhythm GamingCV · Python

Just Dance requires a console and a phone. I wanted to see how close a webcam and 174 lines could get.

2024
↗
Arduino Radar: Making Invisible Distances Visible With 169 LinesHardware · Arduino

A servo, an ultrasonic sensor, and a polar coordinate display. It shows you what the sensor cannot.

2023
↗
Arduino Person Tracker: Closing the Loop Between a Webcam and Two ServosHardware · Arduino

A camera that follows you is a common robotics feature. Getting it to work from scratch is a good test of the full pipeline.

2023
↗
RFID Door Lock: 56 Lines to Open a Door With a CardHardware · Arduino

An RFID lock sounds more complicated than it is. An MFRC522 reader, a servo, and 56 lines of code.

2024
↗
RFID ID Displayer: 36 Lines to Read a Card and Nothing MoreHardware · Arduino

Before you can unlock a door with a card, you need to know the card's ID. This does exactly that and nothing else.

2024
↗
Eye Scanning in 134 Lines: Learning What Biometric Systems Actually NeedCV · Python

A simple iris authentication prototype taught me more about system reliability than about biometrics.

2023
↗
Visualizing Atomic Structure with Pygame, Before I Knew Enough to Be CarefulPython · Simulation

A simple atom model taught me that good educational software often depends on what you choose to simplify.

2023
↗
Quantum Orbitals in 165 Lines: Building a 3D Visualization Without a 3D EnginePython · Scientific Viz

Quantum mechanics made more sense once I could rotate an orbital and inspect the shape instead of staring at diagrams.

2023
↗
3D Chess Visualization: When Matplotlib Becomes a 3D RendererPython

Matplotlib is not a 3D modeling tool. But with enough parametric equations, you can make it look like one.

2023
↗
4D Cube Simulation: A Wireframe Cube That Cycles Through Every ColorPython

A rotating cube with a full RGB spectrum cycle and an inverse background. No models. No shaders. Just matrix math.

2023
↗
Bouncy Balls v2: Learning Physics Through a Deliberately Unstable SimulationPython · Pygame

Simple collision rules created behavior that looked far more interesting than the code behind it.

2023
↗
Elastic Collisions in 167 LinesPhysics · Pygame

A small simulation taught me that making motion look right is mostly about handling edge cases.

2023
↗
Chess with Random AI: Playing Against a Random Number GeneratorPython · Game

A chess game where the computer picks moves at random and the starting position changes every time. Under 150 lines.

2023
↗
Goofy Chess: A Board, Some Images, and a Library Doing All the WorkPython · Game

Two-player local chess in 92 lines. The library handles the rules. The code just draws the board.

2023
↗
Building a Voice Assistant Before I Knew What an Assistant Really NeededPython · Voice AI

A simple voice assistant taught me more about interfaces and failure states than bigger projects did.

2023
↗
Automating a Test Interface With 24 Lines of PythonPython · Automation

A fragile screen bot taught me more about constraints than many larger projects.

2023
↗
Building a Budget Tracker to Learn Where Simple Systems Get InterestingPython · CLI

A small budgeting tool taught me more about state, persistence, and design tradeoffs than I expected.

2024
↗
Budget Tracker GUI: Same Data, More VisiblePython · Desktop

A CLI budget tracker with a GUI layered on top. Charts make the same numbers easier to read.

2023
↗
Building a To Do App to Learn Where Simple Software Stops Being SimplePython · Desktop

Task managers look trivial until state, search, persistence, and interface behavior start colliding.

2023
↗
Math Tools CLI: 12 Calculators in One Terminal WindowPython · CLI

A menu-driven math tool that covers geometry, trig, matrices, quadratics, and graphing. Most of it is formula one-liners.

2023
↗
Math Tools GUI: The Same Calculators, Now With WindowsPython · Desktop

A Tkinter wrapper around the same CLI math functions. Each tool opens in its own window with dropdowns and error handling.

2023
↗
Recipe Finder: Learning GUI State Through a Small Search AppPython · Tkinter

Searching five hardcoded recipes taught me more about interface state than the recipes themselves.

2023
↗
Virtual Plant Simulator: Learning State Through a Plant That Could MutateJavaScript · Frontend

A tiny plant simulator taught me more about state transitions than projects ten times its size.

2023
↗
Matching Game: Pygame Memory in 126 LinesPython · Game

A 4x4 grid, eight image pairs, and a timer. No sound, no animations, no restart button.

2024
↗
Java Array Assignment: Same Validation Library, Different ProblemJava · CLI

A school assignment about arrays that shares a validation library with the grade analyzer. The interesting part was state management.

2023
↗
Java Grade Analyzer: What I Learned Writing Input Validation From ScratchJava · CLI

Reads section-based grade files, computes stats, and writes results. The most interesting part is a validation library I overengineered.

2023
↗
Bad Cree ISU: Building a Literary Analysis as a System, Not a Slide DeckWeb · Research

Most school projects stop at interpretation. I wanted this one to connect literature, history, and interface design.

2023
↗
Project 01: Learning GUI State Through a Calculator That Almost Fit in One FilePython · GUI

Small projects teach you where software state gets messy faster than big ideas do.

2023
↗