Seiji Smith

Software engineer · creative tools, canvas, and 3D graphics · Los Angeles

I build interactive tools that run in the browser, on desktop, and on mobile. At Genies I've built Unity SDKs, React and Go platforms, and real-time notification systems. Before that I worked on a WebGL CAD renderer at Zea.

On my own I'm building a GPU drawing engine and an animation editor in Rust, plus a few multiplayer experiments. Three of them are live below.

Projects

Varyia Drawing SDK

Rust, wgpu, WebAssembly, Swift

A GPU drawing engine that runs in the browser with WebGPU and natively on iOS. It renders a tiled raster canvas and has pressure- and tilt-sensitive brushes, selection, fill, undo, and SQLite persistence.

Most of the work went into keeping the pen responsive. Input, rendering, and saving run separately. The canvas only redraws when something changes, and browser storage runs in a worker, so disk work never delays a stroke. Coalesced pointer events and Apple Pencil's predicted touches go through the same coordinate mapping as pan and zoom.

Open the demo · best with a pen or stylus

Sandbox Proto

TypeScript, three.js, Rust, WebTransport

A multiplayer 3D sandbox where players grab, move, and throw props together, then record, scrub, and export a take. A Rust server runs the simulation at 30 Hz and owns the result.

The challenge is making a prop feel like it's in your hand when the server decides where it is. The client predicts locally, reconciles against delta snapshots, and recovers after a dropped connection. Rooms run on Edgegap and connect over WebTransport (QUIC) where the browser supports it, falling back to WebSocket elsewhere.

Open the demo · choose “Play alone” to try it solo

Collab Circle

TypeScript, Cloudflare Durable Objects, WebSockets

Two side-by-side views of the Collab Circle demo, each showing an orange and a teal circle on a grid, connected through the same room.

Live cursors and a shared draggable object, synced through one Cloudflare Durable Object. The demo opens two connected views side by side so both ends are visible at once.

Because one Durable Object owns the room, there's nothing to merge. Clients batch their input, and the receiving side adjusts its interpolation to the network so remote motion stays smooth when packets arrive unevenly.

Open the demo · drag the ringed circle in either view

Varyia Animator

Rust, wgpu, WebAssembly · in progress

A 2D/3D animation editor that layers drawings, 3D scenes, and images on one timeline. One authoring SDK drives the editor UI, a command-line tool, and MCP clients, across desktop, web, and mobile.

Experience

Genies

2025 – now

Full Stack Engineer

Admin and creator portals in React and Next.js, with Go APIs and OpenAPI contracts for avatar assets and content catalogs. Generated SDKs for Unity/C#, C++, and TypeScript. Durable WebSocket notifications with reconnect replay, acknowledgments, and multi-region routing.

Genies

2022 – 2024

Software Engineer, Unity

SDK and runtime systems that let outside developers build experiences for a shared Unity launcher on iOS and Android. Designed much of the launcher's physics-layer and collision-matrix integration. Also built dialogue tools, visual-scripting APIs, native mobile integrations, and image caching.

Zea

2021 – 2022

Graphics Developer

Migrated a browser-based 3D CAD rendering SDK to TypeScript, cleaned up its render-state and shader interfaces, and fixed WebGL rendering regressions. Wrote unit and end-to-end tests, CAD memory tests, and developer docs.

University of British Columbia

2021

BSc, Computer Science

Skills

Graphics & tools
Rust, wgpu, Metal, GPU shaders, Swift, C#, Unity, pen and touch input
Web
TypeScript, React, Next.js, three.js, WebGL, WebAssembly, WebSockets
Services
Go, OpenAPI, gRPC, SQLite, PostgreSQL, Cloudflare Durable Objects, AWS