Hey, I'm Zubin
I build for the web and write about what I learn along the way. React, TypeScript, Three.js, game-dev, and AI-native engineering.
Apps
See all →
Mathness! Math WorksheetsPrintable K-5 math worksheets for every Common Core standard, with Maryland, Texas, Florida and Virginia standards too, each with an answer key laid out like the sheet.
The web · Free
Treble TroubleLearn to read music one small step at a time: piano keys, treble and bass clef, beats and tunes.
IPhone and iPad · Free, one-time full version
Mathness!Learn addition, subtraction, multiplication and division one strategy at a time, then race a timed drill.
IPhone and iPad · Free, one-time full version
MahbanouA Persian and Zoroastrian calendar: Solar Hijri, Gregorian and Iran's lunar Hijri side by side, the four Zoroastrian calendars with roj, mah and gah times, Iranian and Zoroastrian feasts, widgets and an Apple Watch app.
IPhone, iPad and Apple Watch · Free
Projects
See all →- Typo's Voyage
Typo rows a boat through tropical water and types words to clear mines and other obstacles on a voyage to get faster. I led the 3D team at edclub that built it. Built with Three.js.
- Keyboard Express!
You type the words on the track before the train hits them and try to bring every wagon of cargo to the finish. Built with React Three Fiber and Three.js.
- connect-it
You place timers, QR codes, logic gates, displays, and music nodes on a canvas and draw wires between them. Values update on the edges as you edit. An extensive node library helps you find nodes and learn about each, and a starter template library comes with it. Inspired by Austin Griffith's eth.build, which I still think is amazing. Built with React Flow.
- roll-it
WASD rolls a ball over floating tile islands while you collect gems. Rapier runs the physics. A sketch shader inks the world. When the ball rolls behind a wall or a tree, that scenery turns see-through. Built with React Three Fiber and Three.js.
Open Source
See all →Recent posts
See all →Your Shader Stutter Happens at First Draw
8 min read
A three.js hitch the first time an effect appears is usually a WebGL program link. It blocks at the first draw, not at compile, and a warm-up only fixes it if it links the same program variant your frames use.
Soundscapes for Web Games: A Pluggable Howler Implementation, Part 2
12 min read
The soundscape engine is one class under a hundred lines. A six-function adapter is the seam.
Soundscapes for Web Games: The Layer Beneath Your SFX, Part 1
8 min read
Most web games go silent the moment the player stops moving. A soundscape is the quiet layer underneath your SFX that keeps the room alive.
switch(true) in React: First True Wins
5 min read
switch(true) runs the first case that is true, which makes it a tidy way to write ordered conditions. It is the right tool less often than it looks. Here is when it earns its place.
Conventional Comments: Say What It Is and Whether It Blocks
5 min read
Most code review friction comes from not knowing whether a comment blocks the merge. Conventional Comments is a short prefix that says what kind of feedback it is and whether you have to act on it.