hi, I'm Zubin I build highly interactive apps and 3D games for the web and native platforms(iOS and Android)
React, TypeScript, Three.js, game-dev, and AI-native engineering, plus notes on what I learn along the way.
Apps
See all →Projects
See all →- 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 →Hundreds of Draw Calls Down to a Handful with BatchedMesh
7 min read
How Typo's Voyage draws every tile and every 3D letter through four three.js BatchedMeshes, poses a whole treadmill on the GPU with one vec4 a frame, and what breaks when you move instances in the vertex shader.
Stamp DEV on the Debug Icon
4 min read
My Debug builds are their own app: a .dev bundle ID, a Dev name, and the real icon with a DEV ribbon a small script draws across the corner. They install beside the App Store version and never touch its data.
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.
Roll It Has No Outline Pass
9 min read
The ink lines in Roll It aren't a post-process. Each material finds its own edges: the median of three distances on a box, crease barycentrics on a mesh, and a view-angle band on the ball.
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.

