Kevin Ma
I'm a software engineer and designer building interactive systems.
Now in SF! ●Available for workFuncalling
Video call with games
Video calls are passive. I wanted something that recreates the energy of playing games together in person over a call. You can sword fight with motion tracking, play piano duets, draw together, or compete in word games and more!
Built with Svelte, WebRTC, and a custom signaling server. Game state syncs via a P2P protocol I designed (wrote about it here).
Currently getting ~80 calls/month from organic users.Citibike Stories
Data visualization
How do we make sense of millions of Citibike trips in a day? Every trip has a story.
I clustered hourly trips using HDBSCAN, and fed each cluster to Claude Haiku to compose a story unique to that movement pattern, day, and time. E.g. clusters on January 1st, 2025 midnight have stories of returning home from New Year's Eve celebrations. I then used Deck.GL with self-hosted Protomaps tiles on Cloudflare to create an interactive map.
I posted this to Twitter and got some love. If I have time, I will update to the latest data.MAR 2025ThinkBliss
Collaborative AI canvas
I built a multiplayer spatial interface for AI-assisted brainstorming and research that reached 400 users.
I implemented HDBSCAN in Typescript for this project to support the clustering feature. I also implemented a parser to allow LLMs to edit the documents via full rewrite or diffs format. The code written by LLMs are executed in iframes via Sandpack. Bliss v1 was shipped with Yjs; and v2 was shipped with LiveBlocksAUG 2024
Clusternova
HDBSCAN in Typescript
HDBSCAN is a versatile hierarchical clustering algorithm.
I was working on a feature for ThinkBliss that could organize related sticky notes into stacks. It used a text embedding model to embed the text into a 512-dimension vector, which was then used by HDBSCAN to find the clusters. However, there was no HDBSCAN implementation in Typescript/Javascript so I implemented my own and open sourced it.
It's getting 100-200 downloads/week on npm now.
The Dummy Wakening
3D animated short film
I made this 3D animated short film about dummy figures gaining consciousness for my first college animation class. I modeled most things in Maya and used Arnold renderer. I rendered every frame on my Macbook Air. It took two whole days! I voiced all the characters myself, created foley sound effects by recording objects in my dorm kitchen, and edited everything together in Premiere. For the music, I recorded a catchy riff I came up with on the guitar.
It was selected for the Oregon Short Film Festival, Canberra Short Film Festival, and LA Lift-Off Film Festival.DEC 2019