I think about systems and interaction design.
Currently working at Modal.
recently: reading group, furniture, photos, biking, dataviz, wandering the city
Just ran fastseg (semantic segmentation library I wrote when working at Nvidia) on
@modal_labs
and it worked right out of the box, on cloud GPUs
It only took like 5 minutes to write, and in hindsight I should've tried this a lot earlier 🤠
remind me in 20 years that I never want to send an email worded like this in my life. >:(
why do some of the most accomplished and incredible people in our industry, still act in bizarre, unpersonable ways. everything is about power, it seems.
I am very excited to share a project I've been working on since April 2022
sshx is a secure web-based, collaborative terminal.
On an infinite canvas, with live cursors.
It's packaged as a 3 MB binary.
Just run `sshx` and share a link. :)
at work today: all of our users' web traffic is now being handled by a small service I wrote in Rust
it is using like 1% of a CPU and went from 10,000 errors/hr to 0 errors/hr, so far
here's to hoping that our problems are fixed
Someone wanted me to join the two co-founders' startup as the first backend engineer, for 0.30-0.70% of equity
I politely declined, then he asked me to recommend someone — dude, why the hell would I recommend someone I value to carry your whole operation for 0.3% ownership
when I was in school at Harvard, I dated a couple girls from MIT for a bit and remember whispering in their ear “i’ll handle the business side.” it was the lamest joke ever but they laughed anyway, and you know, maybe that’s what matters
I never knew ‘IOI gold medal’ would ever be a credential people talked about, it's niche, but here we are
anyway the difficult skill I learned from IOI was just: how to stare at problems and not get scared when you don’t immediately know how to solve them, i.e., fear of failure
Updated my personal website this week. It's been 3 years since I last did this, and my feelings about web design & type have certainly changed since then!
Something visually simpler, let my work speak for itself.
only on /r/rust do you see a post "I made this project to learn the basics of Rust" and the project is a 2D numerical PDE solver for the nonlinear Schrodinger equation and renderer written from scratch
coming soon, to a city near you!
(if your city is NYC)
—moving forward with making Harvard Systems Reading Group come to NYC. I'm mainly looking for a venue, but hope we'll be able to start soon :)
going to industry events with startup people makes me sad, honestly many founders who hang out at these things are not very nice. in 30 mins:
- sized up by importance
- got unsolicited career advice
i miss running systems reading group — kinder, more welcoming yet passionate
This is written in Rust and Svelte and is my longest-term side project yet. It was a lot of systems + interaction design work :))
But it's available now. Try it out 💚
website at and source code here:
just got another openai recruiter cold email for a second role. no other company does this afaict
i wonder if openai’s job postings are just ‘for show,’ and the actual applicants are people sourced from aggressive random outreach
I was honestly worried before launching because sshx is kind of hard! It's a globally distributed, fault and partition-tolerant, encrypted in-memory stream multiplexer, with complex UI, on a tiny budget!
But my engineering is holding up thus far, will see over the next few days
tell me about what you do for work
ML researchers: "we're trying to solve consciousness, replace human creativity, and guide the future of humanity over the next 1000 years"
DB researchers: "oh yeah we just store lots of keys and values fast"
sometimes I think there's not much new to learn in software engineering, versus e.g., research, but then I remember that there are people who have literally been working on a niche but important problem for 16 years and are now mega-experts
they never told us that Python packaging is more complicated than the rest of the language combined
there are more independent Python packaging tools (pip, conda, venv, pipenv, hatch, setuptools, twine, wheel, poetry, pdm, pipx, build, tox, pip-sync, …) than Python keywords
I met someone at a birthday party, and 5 minutes later he started going "well if I can give you unsolicited career advice…" and I immediately said "please do not"
I am so proud of myself
Week 29 of systems reading group on Sunday, we'll read the Autodidax blog post
JAX is the framework most LLMs are trained on, so it's a real production system. But it's also a fascinating work of language design, and this blog post covers how you can make its guts from scratch
I'm doing this year's Advent of Code in 25 languages again! This time in alphabetical order
Languages are how we express and develop computational ideas; a dialogue between the programmer & designer.
I know most of the popular ones, so I picked some cool ideas I'm curious about
Finished my senior thesis on Datalog! The research has been almost 3 years in the works; I write about two programming language systems that I designed and implemented. So happy to have written something up about Crepe & Percival and even have real-world usage examples! 😭
seems like the only times I hear from most college "friends" are:
1. they want me to listen to them complain
2. they want network / do transactional stuff
3. they want a job
4. they want to crash in my apartment
then they disappear and I need to message them 5 times to catch up
Some initial brainstorming about what a native desktop app for Jupyter notebooks might look like
Think it might actually be faster, simpler, functional, and resolve a bunch of my pet peeves (real-time collaboration, lack of autosaving, visual noise in UI, switching to text mode)
This person made a 5 kHz RISC-V computer, in a video game, with 96 KB of RAM and its own Rust driver! What!
Also he taught himself how computers work during the project? You can really learn anything online 👀
We had a successful, first reading group meeting, reading about the internals of how Git works and writing our own! (partially)
Happy that people came :D
With that, I'm excited to officially announce the reading group publicly:
I might take a break from making user interface-heavy software for developers for a while. Developers are really hard to please! And they don't say nice things very often :')
I'll see what my next project leads, there's plenty of ways systems and design make new things possible
Demo of a real-time collaborative text editor that stores in Postgres and resolves changes over Redis!
Very low # lines of code, no proprietary services, plus server is boring and stateless. I think it's the easiest design to embed OT within a larger app
Man MIT is such a unique place, there are so many people who smile at each other about math and science things while having goals other than “earn $999B”
the part of tech culture that I can never agree with is the arrogance with which technologists think they know what's best for the world.
they loudly, unapologetically force their viewpoints onto others through power: policy, money, rhetoric, marketing and influence.
Why PL — any library with a sufficiently complex API becomes a language.
I picture software systems on two sliding scales of internal complexity and external (interface) complexity, where as you move along the second scale, you go from library-ish, to DSL-ish, to language-ish.
Life update— Now that I am graduating school, I'll be moving back to NYC in July to continue working here at
@modal_labs
It's been so fun making cloud compute fast, delightful & accessible over the past 15 months. Let's experiment + build more and see what's comes next :D
Twitter algorithm discussion session and back-of-the-envelope latency/cost estimation at Harvard systems reading group today, on a quiet Sunday afternoon :)
Can’t believe it’s already Week 18 of reading group
i am now graduated with my bachelor's and master's degrees!
the story of this photo features me instructing my roommate on how to use a camera, and now editing stuff for friends while procrastinating on packing my trip to NYC 🫡
Done! This was fun. Merry Christmas, grateful for small language developers :)
- Day 20: Tcl (1988)
- Day 23: WebAssembly / Rust (2017)
- Day 24: Yuescript (2020)
- Day 25: Zig (2016)
NYSRG! Week 4! Is about! Databases!
so we will read "Database Internals" by Petrov and some other readings about LSM trees, mmap, plus related data structures
this session will be hosted by two of our members, mufeez & rama
done with distributed training nysrg session! that was a lot
here’s some intro slides for the readings if you’re also a systems engineer and don’t fight multi-armed bandits in your sleep
most people won’t mention this, but you can debug 90% of performance issues with good simulations & print() statements, and another 90% of the rest with some perf / flamegraph results
it’s only for the last 1% of issues that you need complex tools; they take time to set up
Student visiting Harvard at our reading group meeting today asked "why doesn't McGill have more stuff like this?" and I felt so validated because I am literally the only person who runs a CS learning group of friends like this at my school
I’m 22 now!
no blog post, but I reread “I Turned 21” from last year. I achieved my goals; also it’s been way better than I expected, mostly meeting people that I’m fond of—a spark of human :)
next: to learn, create, and explore in this big gruff intricate gritty breezy place
I tried out a bunch of apps in the Jupyter ecosystem and still am not very happy with them, doesn't feel good yet
This helped me crystallize what I actually want though, so here's some initial design principles for Jute
i met a guy at a party, he wanted to hang out the next day. so we walk around soho, heard his entire life story, tried to be good-natured, enjoy his company. then at the end he says “i try to keep friends and business very separate. so yeah we can’t be friends.”
me >:( wtf
man, took all those theory classes in university and I have never once spotted the characters in real life:
- expander graphs
- Hamiltonian cycle in Erdos-Renyi graphs with Ω(n log n) edges
- Nisan-Wigderson PRG
- Rademacher complexity
meanwhile, TCP congestion control…
realizing that modal happens to be a pretty good render farm: call a function for every frame of your animation and render them in parallel on 100 GPUs
when I moved to NYC a few months ago, I never thought I’d be able to spend Sunday afternoon with 10 strangers, teaching each other about the guts of virtual machines (read: what are computers?) and writing one with the KVM ioctl interface
Wondering why in 2023 you can't just double-click on a Jupyter notebook .ipynb file and have it open in a dedicated, fast desktop app that starts up its own kernel
Hm if I made a small native desktop app for Jupyter (Python) notebooks, would people use it?
Exploring ideas for an alternate frontend:
- Double-click to open any .ipynb file,
- Or, connect to a running remote Jupyter host by URL
- Real-time collaborative editing in either case
I wrote down a few words about school, my social environment, research, and a recent experience that made me think about this
yesterday I honestly was kind of scared to share this publicly, but now I feel like I can, thanks
@ronawang
for the push
Our over-the-network, persistent blob storage cache at
@modal_labs
now serves over 100 million requests/day, at an average RT latency of 500 us.
It's one of the ways we're trying to get on-demand user containers to start up fast, ideally in under a second.
NYSRG week 21 is about training
we're not an ML reading group but I mean, there's too much juicy stuff here, we have to talk about this eventually right
good ideas that people told me when I was learning programming:
- language is irrelevant
- computers are smarter than toasters
- write code that you'll read later
- learn Git
- tackle hard problems by lowering them to simpler ones
- implementations are today, ideas are forever
Things that sound impossible but are actually possible:
- going to the moon
- editing nanoscale molecules
- genome engineering
Things that are actually impossible
- figuring out if cholesterol is good or bad for people
- fixing nyc traffic
- making a website that works on mobile
I come from open source, places that value inclusivity and learning. So — in startups, I want all of the tech, and none of the wealth/status signaling, mansplaining, power jockeying, and propaganda.
It seems a losing battle to talk about kindness & respect in some groups
Tiny graph database update
#1
: I'm ~5 hours in and have a working parser & basic query executor in Rust. It executes a subset of Cypher.
Will first implement most features _correctly_ before exploring anything fancy/new with optimization, design criteria, etc. :)
a lot of my friends dissatisfied with their work turn to traditional creative outlets: art, music, writing, film, etc., with long and growing history
sometimes I find them hard to talk to. when they can’t find joy in their own lives, it’s difficult to see the beauty in others
NYSRG is back after a hiatus for the holidays :)
Next Sunday: in the spirit of reflection, we'll read two classic pieces on 1) bootstrapping and 2) Futamura projections, then a modern take on incremental computation
Open to all now!
Released the 100x faster Harvard search today! Getting <30 ms search latency here in NYC; likely same from Boston as well.
It's so fast at grabbing data that I added some virtual loading tricks to make your browser renderer not drop frames
For NYSRG week 20, we're reading about how computers find things in text — a bit about linear-time suffix arrays (skew algorithm) and then Andrew Gallant's blog post about the `fst` library in Rust
This is unusual but today over half of systems reading group was MIT students
I only advertise this on Harvard mailing lists, not MIT ones! And the reading group is at Harvard! On Harvard campus! 2 miles away from MIT! 🤣
This week at reading group! we're reading the "Build Systems à la Carte" paper
we don't always focus on papers, but this one seems worth it for the clarity it brings. (I'll try to convert some of the code to non-Haskell beforehand)
hosted by Val and Fang, two of our members
things that happen as a systems engineer: today I found an bug in I/O virtualization that makes outbound HTTP requests 200x slower. But only:
- on Google Cloud
- on a specific Linux network para-driver
- inside a specific container runtime, and
- using epoll_wait/async http
😭
second meeting of NYSRG today! 12 people, ML compilers
We read the Halide ('18) and PyTorch ('19) papers for context, then MLC book
Most controversial part was TVM IR appropriating Python syntax, but endowing it with completely different semantics. People had strong feelings 😅
A simple network latency UI for the collaborative terminal app!
Almost done now, I figured out some tricky failure tolerance & server peer discovery stuff today
when frontend developer makes a bug: a button on a website looks a little funky on screen sizes between 683px and 712px
when infra developer makes a bug: time bomb goes off 7 months later and takes down prod at 2 AM
in just 2 years at Modal, I’ve already become the only person in the world to simultaneously know how Linux containers work, how file systems work, and how the jammed doorknob to my apartment works
Today at
@modal_labs
in one ops change: I net removed 400 lines of code, made user job startup time 15% faster, reduced our total monthly cloud cost by 20%, and resolved a longstanding flaky TCP problem
Moving latency-sensitive systems out of Kubernetes has never felt better
So yesterday I got upset that searching for classes as at Harvard is absurdly slow (10s to login, 5s to type, press button, apply filters, …) and I decided "fuck this, I'm a software engineer, let me fix this"
so now it's 100x faster
sneak peak, will release in a couple weeks
like most people with internet accounts, I am pretty inarticulate and unfunny in real life speech, so I make up for it by doing a lot of personal writing, where I can cultivate words at my leisure
writing an essay to myself is also how I make all of my life decisions
so many people I meet want to grab coffee and pitch how their startup will revolutionize the world, so few want to spend a leisurely afternoon with me viewing galleries, or walking around the high line, or brooklyn bridge park :(
Here's a new project—
I just published Rushlight, a customizable real-time collaborative code editor based on CodeMirror. It's easy to integrate into larger apps and runs on your own infra. Just bring a Redis instance and any database.
I wanted to give a primer on software architecture at Harvard systems reading group, so we're studying
@lichess
, one of the largest chess websites… and I made a code scavenger hunt!
together we will make software, 20,000 lines of code at a time
my 22 year-old realization is that most software is commercial not just because, yes, money— but also, in companies you only need to focus on 1/10 of the process, but an individual hobbyist needs to do _everything_
New project: Just released redis-rope, a native Redis module that provides a new data type designed for storing large strings. It gives exponential speedups for string operations — up to hundreds of times faster.
Memory-safe, written in Zig, open source.
wonder if the new generous, money-laden sponsors of competitive programming will be AI labs instead of quant trading shops (might take a decade of stability for that to happen though 🤔)
Another year of Harvard classes is now available on — the super fast course catalog I made last year with Go/Svelte/Redis
Also excited to be handing this off soon to some students to run in the future!
what if in the middle of prose, you could hover and see images that recall vivid memories of the past?
trying an experiment in combining photographs with text narrative
also: come hang out with me in NYC! :D
Honestly, if you actually reply back to messages consistently and are nice, and we catch up once and again, you are a pretty darn good friend 😅
my bar is pretty low and I think that's how it should be
stumbling around tiny GitHub repos and found possibly the cutest tiny little Python function ever: swop() is like swap(), but it swaps the order of a binary operation 😂
so much talk about building companies, loud voices, what about building •not•companies
classrooms, book clubs, reading groups, chamber music, family, self-organizing collaborations, shared trinkets, writings for yourself, … safe places for people to learn and be a part of
the actual hard part of software performance isn't writing fast code; it's rather the process of removing slow code
all software would be fast if none of its parts were slow. the magic of fast software is just, "we wrote 10000 boring components and none of them are slow"