Kevin Ma

I'm a software engineer and designer building interactive systems.

Now in SF! Available for work
  • Funcalling

    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 2025
  • ThinkBliss

    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 LiveBlocks

    AUG 2024
  • Clusternova

    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.

    MAR 2024
  • The Dummy Wakening

    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.