Eric Zhang
@ekzhang1
Computer systems person, interaction designer. → dreams of: a simpler, more honest, more human sort of software (people are good, be kind!)
Wrote a bit this morning on the internals of ML compilers, and how I'm going about porting JAX to pure JS ekzhang.substack.com/p/how-the-jaxj…

drops an absolute banger, does research to figure out the hardest IMO math problems with sheer number crunching and reasoning muscle over hours I guess dropping in on our olympiad training programs to flex on the high schoolers years ago wasn’t enough, had to automate it away:D
1/N I’m excited to share that our latest @OpenAI experimental reasoning LLM has achieved a longstanding grand challenge in AI: gold medal-level performance on the world’s most prestigious math competition—the International Math Olympiad (IMO).
…and, 500 lines of code later, jax-js now supports advanced indexing! it turns out this is roughly a "gather" operation, so I named it that internally in my IR, following XLA. however, backprop through this requires a "scatter" op which is much harder, so I'm skipping that 😅

tens of millions of hours have been spent on software that… records a mapping of keys and values
trying to figure out how to use the Google Cloud console is probably harder than defusing a bomb
I have fixed it 🤩 yay now that MNIST is finally debugged for sure, I can do some more features and move onto trying some harder problems with this library
hmm something is still subtly wrong with my kernels jax-js is generating, specifically in a loop-unroll optimization. :( it's not evident at first, but in this little mnist inference demo, it's def not working when the training used a batch size divisible by 4 and was unrolled
the story was, in June, I was so excited about a "Marimo cloud" that I went to their office & we hacked together the first prototype of a Modal Sandbox backend for Marimo in a couple hours. just a month later, guess they have a whole new cloud-based product, still on Modal :D
Announcing molab: a cloud-hosted marimo notebook workspace with link-based sharing. Experiment on AI, ML and data using the world’s best Python (and SQL!) notebook. Launching with examples from @huggingface, @weights_biases, and using @PyTorch marimo.io/blog/announcin…
so I was up coding last night and then I checked the time and realized I turned 24 slight panic for a few seconds (like when you realized you missed a deadline or something) and then I remembered… there was no deadline after all


before I worked in infra, I used to read cloudflare’s incident writeups and think they were cool and mature now, since I notice every cloudflare outage, multiple times per month, my attitude is like “ok I get you can do good writeups, but please—just stop having outages”
On July 14th, 2025, Cloudflare made a change to our service topologies that caused an outage for 1.1.1.1 on the edge, resulting in downtime for 62 minutes for customers using the 1.1.1.1 public DNS Resolver as well as intermittent degradation of service for Gateway DNS:…
this is still very scuffed, but I got MNIST to train in jax-js finally! spent like a week debugging, it's quite humbling to struggle so much on MNIST, found some tricky bugs in my autograd implementation & WebGPU kernel compiler anyway this, I guess, is another milestone :)
i feel a bit of emotional whiplash from past couple weeks, but it's been alright good things that happened recently: - ran into grade school classmate - learned tensor calculus - card game club - company acq'd jamsocket(yay!) - back into jax-js - used my notebooks product a lot
some notes from nysrg today, running a couple profiling tools on uv and touring it a bit to get situated from the performance angle github.com/ekzhang/nysrg-…
the weather has no business being like this. it’s kind of a holiday in itself, strolling through a city under the sun

i am currently in indexing hell trying to understand all the edge cases of numpy that I never thought about apparently if you combine slices and broadcasted integer array indexing, it orders the axes, _unless_ the arrays are non-contiguous, in which case they hoist to the front

This month at NYSRG, we'll do some systems studies through the lens of performance by looking at open-source software and profiling them on some workloads. the systems: uv, vLLM, an image renderer in Rust, and various language/compiler tools in Go the tools: flame graphs, ebpf,…

somewhere, under all of the politics and business of this AI hiring news, previously-unheard names; there's an optimistic message that these researchers' work is finally recognized — just as all great work may be
a milestone for jax-js — it's _working_ enough to generate and dispatch a few hundred GPU compute kernels for a Mandelbrot set render, all from your browser in milliseconds :D (this does a separate allocation + kernel dispatch on each iteration, so it's a nontrivial benchmark)

btw modal is hiring for a product engineering manager. we have a very cool product engineering team that works with svelte to turn infrastructure into tech that developers love, since it helps them do more :) apply here jobs.ashbyhq.com/modal/51d11ce0…
yesterday i voted and i think the most surreal part of it was that my family member who got all of us to go to the polls and vote for him is literally a wall st banker, like damn i’ve never been very politically involved but it did feel nice to imagine what could be
In the words of Nelson Mandela: it always seems impossible until it’s done. My friends, it is done. And you are the ones who did it. I am honored to be your Democratic nominee for the Mayor of New York City.