Hey, I’m Dawson.
I’m studying computer science at the University of Waterloo and previously worked full-time at General Learning (YC F24).
I specialize in backend systems and UI/UX for web and mobile apps. Now, my free time goes to machine learning, mostly inference and reinforcement learning.
If I’m not at the keyboard, you might find me at the gym or the poker table.
Built 1500 Blueprint’s study planner, practice tools, pricing page, and account management, and bolstered the platform’s security.
Helped grow RevisionDojo from 250K to 750K+ users, OnePrep to 450K+ users, MathsGenie to 1M+ users. Shipped the mobile app (20k+ downloads, 4.8 stars) and lots of high-retention learning features.
Led the migration from WordPress to Next.js. Built a custom CMS for blogs and an encrypted payments system.
Reviewed coding problems for LLM training data and helped tighten evaluation quality.
Turns everyone’s phone into a camera network to find a missing person
Swift, Python, JavaScript, SwiftUI, FastAPI, Expo, ARKit, Three.js, YOLOE
More
- Searchers scan a QR code to join, then a Swift app streams each phone’s camera frames and ARKit position over WebSockets to a FastAPI hub
- A Baseten GPU service spots people with YOLOE and matches them to reference photos with OSNet in about 127 ms
- VGGT rebuilds the room in 3D from the phones’ frames, and the console guides searchers with a live heatmap, arrows, flashes and haptics
- In simulation, a PPO policy rescued 47.6% more people than greedy search
Use Kanye's Stem Player right in the browser. Splits any song into its stems.
TypeScript, Python, vinext, React Three Fiber, Web Audio, Cloudflare Workers, Modal, Demucs
More
- Upload a song or paste a link and the file goes straight to Cloudflare R2, then a Modal GPU job splits it into four stems with Demucs
- The stems come back through a webhook and play in sync with Web Audio, and the sliders on the 3D model turn each one up or down
- It also has echo, reverb and filter effects, a speed control and a mix recorder
- Cut a split from a minute to under 8 s, with sound in 1.5 s while it separates
A performance-first Rust macOS app with 22 file conversion tools, from video transcription to PDF splitting.
Rust, TypeScript, Tauri, React, Tokio, Tailwind, FFmpeg, whisper.cpp
More
- The React UI sends typed jobs to Rust over Tauri, which runs FFmpeg, ImageMagick, Pandoc or whisper.cpp and streams progress back
- If only the container changes, like MP4 to MOV, ffprobe catches it and the file is repackaged instead of re-encoded, which is near-instant
- Each Tokio job has its own cancellation token, so encodes stop cleanly
- It handles 29 input formats and 202 conversions, all offline
MonkeyType in the terminal, with blazing fast performance built using Go.
Go, Bubble Tea, Cobra
go install github.com/dawsonxiong/thock@latestMore
- The whole app is one Bubble Tea model that runs every screen at 120 FPS
- It uses Monkeytype’s scoring, so fixed typos still count against accuracy
- Race rooms announce themselves on your network and show everyone’s cursor live, and each room’s two-word code also spells its address
- Each keystroke and redraw takes about 4 µs, 2,000× under a 120 FPS frame
An npm package that renders LaTeX in React Native as a native SVG, with no WebView. Peak 143 weekly downloads.
TypeScript, React Native, MathJax, react-native-svg
More
- MathJax turns LaTeX into SVG paths and react-native-svg draws them natively, so it works offline and renders instantly
- Inline and display math mix with plain text, with a KaTeX WebView fallback
A Chrome extension that replaces the new tab with a high-signal developer news feed. Think daily.dev but cleaner and more relevant.
TypeScript, Next.js, React, WXT, Tailwind, Prisma, Postgres, Redis
More
- A daily Vercel cron job pulls about 40 RSS feeds from blogs and tech sites
- Headlines that overlap within 48 hours are merged into one card per story
- Stories are ranked by recency, your tags and how trusted the source is
Turns a photo of a handwritten or printed equation into LaTeX.
Python, JavaScript, Flask, Next.js, PyTorch, OpenCV, Tailwind
More
- OpenCV splits the photo into symbols, rejoining broken ones like = and i
- An 81-class PyTorch CNN reads each 64×64 symbol, left to right, into LaTeX
- I trained five versions of the model on 49k+ symbols: 24k rendered across 25 fonts and 25k handwritten from CROHME
- A Flask API serves the model to a Next.js front end
Finds the right people to contact at a company for sponsorship.
Python, JavaScript, Flask, React, Selenium, Vite, Tailwind
More
- Flask drives headless Chrome with Selenium to search LinkedIn
- Matches come back as JSON and show up as profile cards in React
Monkeytype
- 15 seconds
- 166
- Top 2.77%
- 30 seconds
- 161
- 60 seconds
- 141
- Top 2.33%
Currently bumping
9 months & 50 hoursFred again.. & LATIN MAFIA- 1Hey Hey2:05
- 2Alvafro3:58
- 3Bonita3:06
- 4benjy chord2:45
- 5Cmon (LATIN MAFIA & Fred edit)Fred again.. & Brian Eno4:15
- 6QuieremeLATIN MAFIA, Fred again.. & bby2:55
- 7casino143 (Rue De La Fortuna Remix)IVOXYGEN, LATIN MAFIA & Fred again..2:59
- 8Film Scene SoundtrackFred again.., KatzPascale & LATIN MAFIA2:45
- 9Open Eye Signal (under the fabric)Jon Hopkins4:01
- 10Piensas En Mi3:18
- 11HaloFred again.., LATIN MAFIA & Lil Yachty3:03
- 12Te Estoy Correteando3:14
- 13MabeFred again.., LATIN MAFIA & Mabe Fratti4:54
- 14I wish it wasnt3:46
BlondeFrank Ocean- 1Nikes5:14
- 2Ivy4:09
- 3Pink + White3:05
- 4Be Yourself1:27
- 5Solo4:17
- 6Skyline To3:05
- 7Self Control4:10
- 8Good Guy1:07
- 9Nights5:07
- 10Solo (Reprise)1:19
- 11Pretty Sweet2:38
- 12Facebook Story1:09
- 13Close to You1:26
- 14White Ferrari4:09
- 15Seigfried5:35
- 16Godspeed2:58
- 17Futura Free9:24
Nothing Was the SameDrake- 1Tuscan Leather6:06
- 2Furthest Thing4:27
- 3Started From the Bottom2:54
- 4Wu-Tang Forever3:38
- 5Own It4:12
- 6Worst Behavior4:31
- 7From Time (feat. Jhene Aiko)5:22
- 8Hold On, We’re Going Home (feat. Majid Jordan)3:51
- 9Connect4:56
- 10The Language3:44
- 11305 To My City (feat. Detail)4:16
- 12Too Much4:22
- 13Pound Cake / Paris Morton Music 2 (feat. JAŸ-Z)7:14
- 14Come Thru3:57
- 15All Me (feat. 2 Chainz & Big Sean)4:32
Favourite poker hand


