Projects

Filter projects by category

The platform hanging from its four lines: a black printed box with a small OLED showing a smiling face, and a two-jaw claw on a stalk beneath it.

Petbot

A cable-driven parallel robot that hangs a camera and a claw from four ceiling corners and flies them anywhere in a pet room.

  • Arduino
  • Raspberry Pi
  • ESP32
  • Computer vision
2026
A 3D render of the instrument's circuit board seen at an angle: four 16-channel multiplexers, sockets for the instrumentation amplifier, a header for the microcontroller, and two rows of screw terminals for the electrodes.

Electrical Resistivity Tomograph (ERT)

An Arduino-based instrument that images subsurface soil by injecting current into the ground and measuring millivolt potentials. Validated on 1D, expanding to 2D.

  • Arduino
  • C++
  • Analog electronics
  • Instrumentation
  • PCB design
2026
Datum's interface: a fossil's provenance record with verified and broken-seal badges.

Datum

Tamper-evident provenance records for fossils, from discovery to sale.

  • React
  • TypeScript
2026
Tonify grading 你好: both syllables marked as sounding right, with a pitch chart per syllable plotting the learner's curve against the native's shaded acceptance range.

Tonify

Mandarin pronunciation, graded.

  • Python
  • PyTorch
  • Parselmouth
  • wav2vec2
  • Computational Linguistics
2026
Line chart of probe accuracy against how long an object has been out of view. The LSTM and RWKV lines fall from about 0.69 to the chance line by 65 steps, while the BDH line holds near 0.28.

Hebbian Belief-State World Model

Does a Hebbian synapse state hold readable beliefs about what a model can no longer see?

  • PyTorch
  • World Models
  • Linear probes
  • Mechanistic Interpretation
  • Post Transformer Architecture
2026
Shaded render of the machine's cable spool: two slotted flange discs on a cross-braced hub.

NEMA 17 Cable Line Spool

A cable spool fitted to a stepper-driven NEMA 17 and motor bracket; modeled in Fusion 360.

  • Fusion 360
  • CAD
2026

Shakespeare GPT

A decoder-only GPT built from scratch in PyTorch with every component implemented by hand; trained to generate Shakespeare.

  • Python
  • PyTorch
  • LLM
  • Transformers
  • Hugging Face
2026
Two rows of CarRacing frames: real frames above, the VAE's slightly soft reconstructions below.

CarRacing World Model

A world model in PyTorch. A conv-VAE compresses CarRacing frames into a latent space where an MDN-LSTM learns the dynamics, then dreams coherent driving that never happened.

  • PyTorch
  • VAE
  • MDN-LSTM
  • World Models
2026
Shaded render of a ribbed cylindrical bike grip with a flanged end.

Bike Grip

A ribbed replacement handlebar grip, modeled in Fusion 360 for 3D printing.

  • Fusion 360
  • CAD
2026
Shaded render of the door stop: a tapered wedge with ribbed side walls, hollowed by two circular bores and a scalloped top edge.

Door Stop

A tapered, ribbed door stop modeled in Fusion 360 for 3D printing.

  • Fusion 360
  • CAD
  • 3D printing
2026
Shaded render of an A-series light bulb: a curved envelope narrowing into a threaded Edison screw base.

Light Bulb

An A-series light bulb modeled in Fusion 360 for 3D printing.

  • Fusion 360
  • CAD
2026
Shaded render of a dog bowl: a round basin with tapered walls widening into a flared base.

Dog Bowl

A dog bowl with a flared, weighted base, modeled in Fusion 360 for 3D printing.

  • Fusion 360
  • CAD
2026
Shaded render of the pulley mount: a slotted base plate with two rounded upright tabs, each pierced by an axle hole.

Pulley Mount

A mount for the pickup mechanism's cable pulley, with a slotted base and twin axle tabs; modeled in Fusion 360.

  • Fusion 360
  • CAD
2026
Shaded render of the edge wall pulley bracket from inside the corner: two mounting plates at a right angle with twin axle tabs between them.

Edge Wall Pulley Bracket

An anchor pulley for a cable-driven parallel robot: a corner bracket that carries a pulley across a wall edge; modeled in Fusion 360.

  • Fusion 360
  • CAD
2026
Shaded render of the case seen into its open front: a thin shell with rounded corners, three camera openings, and cutouts along its edges.

iPhone 17 Case

A press-fit case for an iPhone 17, modeled in Fusion 360 for 3D printing.

  • Fusion 360
  • CAD
2026
The projects page: filter chips above a grid of cover-led project cards.

This Site

A static portfolio I built.

  • Astro
  • TypeScript
  • CSS
2026

API Weather App(opens in a new tab)

A desktop weather application that uses the OpenWeatherMap API to fetch real-time weather data for any city. Built with Python and PyQt5, it displays the current temperature, weather condition, and a corresponding emoji through a clean GUI interface.

  • python
2026 ↗

Character-Level LSTM

A character-level LSTM in PyTorch that learns to predict and generate text one character at a time. Demonstration of the recurrent memory and the sequence-modeling components behind world models.

  • python
  • PyTorch
  • RNN
  • Deep Learning
2026

Git Producer Tag

A git hook that gives your commits a producer tag. Your Mac announces commits, pushes, and merges with macOS speech synthesis. Zero dependencies, never blocks git.

  • bash
  • git-hooks
  • macos
  • text-to-speech
2026
The Streamlit app: an uploaded photo of a handwritten letter beside the model's prediction and confidence scores.

Handwritten Letter Classifier

A convolutional neural network that classifies handwritten letters from real photos with the OpenCV preprocessing pipeline

  • python
  • pytorch
  • opencv
  • streamlit
2026
A grid of handwritten digits, every one generated by decoding random noise.

MNIST VAE

From-scratch Variational Autoencoder in PyTorch with digits generated from pure noise, and the reconstruction-versus-KL tradeoff made visible.

  • python
  • pytorch
  • vae
  • generative-models
2026
PPO training curve on CartPole: the moving average climbs to high reward and recovers from dips instead of collapsing.

Policy Gradients on CartPole

REINFORCE, Actor-Critic, and PPO implemented from scratch in PyTorch: a progression where each method fixes the collapse mode of the one before it.

  • python
  • PyTorch
  • reinforcement-learning
  • PPO
2026
A morning digest in Telegram: a three-bullet 'above the fold' intro composed by the bot.

Tech Digest

A self-hosted bot that composes a personalized morning tech digest: primary sources detect, press confirms, and thumbs-up/down feedback tunes tomorrow's ranking.

  • python
  • claude-api
  • embeddings
  • telegram
2026