
Principal Investigator at @inkandswitch Formerly at Alan Kay's research groups (YCR/HARC, CDG, VPRI), and Google Creator of OMeta, co-creator of @_ohmjs
Los Angeles, CA
Joined April 2009
- Tweets197
- Following657
- Followers1K
- Likes469
Pinned Tweet
Everyone’s seen the Sketchpad demo. Few understand how it actually works.
I reimplemented Sketchpad from scratch, and I’m making short videos that recreate Sutherland’s demos and explain how they work. The first 8 are up — from drawing a line to the famous rivet.
Link below 👇
You don’t have to just watch my Sketchpad videos — you can follow along in the web browser.
Try the first demo: hold ⌘ and click to draw two lines. Drag an end point of one onto the other. Now move that line and hold the spacebar to solve — the point stays on it.
Link below 👇
Here it is: alexwarth.github.io/projects…
(⊞ instead of ⌘ on Windows.) All the controls are in the README: github.com/alexwarth/sutherl…
And the videos, if you want the guided tour: youtube.com/playlist?list=PL…
The full series, in order — “A Guided Tour of Sketchpad”:
youtube.com/playlist?list=PL…
Coming soon: the bridge demos and the “dismember” operation, then a few demos of my own.
Replying to @daningalls
@daningalls wanted an LLM inside his Morphic world. He'd put off writing a harness. Then he realized Livelymerge was already multi-user, so the agent could be just another user. An hour later, a morph saying "Hello from Grok 4.5!" appeared on his screen.
Nearly every general-purpose programming language is Turing complete. So ask not what you can do with a language, but what a language makes worth the effort. A short note on "effective expressiveness": inkandswitch.com/malleable-s…
Dragging a morph in Livelymerge used to cost four Automerge ops per pointer move. At 30 fps, that's 120 ops/sec, bloating the document forever. Even worse, the morph's movement looked jerky to everyone else. Now it costs zero ops, and it's smoooooooth.
New lab note with @daningalls and @pvh on how we made Livelymerge even more lively™: inkandswitch.com/livelymerge…
This week in Livelymerge, @daningalls gives us a tour of Morphic: the scene graph, halos, text editing, and programming tools of the live, malleable kernel that lives inside an Automerge document.
inkandswitch.com/livelymerge…
Alex Warth retweeted
Last year, I was invited to write an essay, to be included in a book on the occasion of Java's 30th anniversary. The book never materialized, and I forgot about it.
So belatedly, for historians/archaeologists/pathologists:
bracha.org/java_at_30_essay.…
Alex Warth retweeted
giving a talk tomorrow evening at recurse center in nyc!
luma.com/rc-dynamic
We put a live programming system's entire heap inside an Automerge document — every object, class, method shared + persistent. It all worked, but it was sloooow.
New lab note with @daningalls and @pvh on the optimizations that made Livelymerge 64× faster: inkandswitch.com/livelymerge…
Alex Warth retweeted
Friends! Our next release:
Ada Lovelace's Notes on the Analytical Engine, in a unique construction, with a new typesetting, and a facsimile of Note G's fold-out.
Available in September. Sign up for an email notification at the link.
More details below!
buddybindery.com/products/ad…
Alex Warth retweeted
New side project: Samuel, a model I trained to mimic speech using Pink Trombone, a (pre-existing) silly vocal tract simulator. 🧵
Everything in Livelymerge is persistent and shared — yay! Then I cmd-clicked a rectangle, and my halo popped up on your screen — whoops!
New lab note with @daningalls and @pvh on the need for local state, and the simple mechanism that supports it:
inkandswitch.com/livelymerge…
Alex Warth retweeted
I've been prototyping a tool for manipulating paths as if they were a malleable material.
The primary quality I'm aiming for is that the final path feels authored. Control point placement should feel intentional — not machine-generated.
We put a program's entire heap inside an Automerge document. Every object is persistent and shared: you and I can live in the same running program — and change it while it runs.
New Livelymerge lab note, with @daningalls and @pvh:
inkandswitch.com/livelymerge…
New Livelymerge lab note! Two users each make a valid edit to a linked list. Automerge merges them exactly as designed... and the result is either a truncated list or an infinite cycle 😬
The CRDT did nothing wrong, but convergence is not enough: inkandswitch.com/livelymerge…
The 2nd lab note in my series about the local-first task framework I've been working on w/ @pvh is out! Topics include distributed coordination, the router takeover protocol, offline resilience... check it out at inkandswitch.com/patchwork/n…
I've been working with @pvh on a local-first task framework at @inkandswitch. It distributes computation across users' computers, keeps working while you're offline, and syncs results back to everyone when you reconnect. First lab note is up. inkandswitch.com/patchwork/n…






