Skip to main content
Zubin KhavarianZubin Khavarian

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.

Projects

See all →
  • Mathness!

    It's a PWA made for a phone in portrait. You can play it in a desktop browser too. Add it as a bookmark on your phone. You pick +, −, ×, ÷, or mixed, then race four-choice questions. The timer starts at two minutes and you get three lives. A miss kills the streak. Keyboard mode puts the four answers on S, F, J, and L, the home-row keys under your hands, so you hit a choice without looking down.

  • learn-eth

    You place hash, cipher, circuit, and wallet nodes on a canvas and draw wires between them. Values update on the edges as you edit. Six starter graphs come with it. One turns a text block into a hash chain. Another builds an Ethereum address from a twelve-word phrase. Inspired by Austin Griffith's eth.build, which I still think is amazing. I built it on React Flow.

  • Roll It

    WASD rolls a ball over floating tile islands. Collect 24 gems before the clock hits zero. Five levels ship in the player. 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. I built it on React Three Fiber and Three.js.

Recent posts

See all →

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

7 min read

Web games sound flat because they treat audio as event SFX. A soundscape is the layer that fills the silence.

switch(true): The Stylish Way to Simplify Complex Conditionals in React

4 min read

switch(true) is an ordered list of boolean cases. First true wins. Use it when precedence matters. Use a lookup, or a normal switch, when it does not.

Crafting Quality Code with Conventional Comments

4 min read

A code review comment needs two things: what kind of feedback this is, and whether it blocks the merge. Conventional Comments is a prefix that says both.

To Yak Shave or Not: The Art of Procrastination in Software Development

4 min read

Yak shaving is a dependency chain, not a personality flaw. Bike shedding is a meeting. Shave it, stash it, or skip it.