🚀 Sr Eng @v7labs 👨‍💻 Elixir Fan 🌐 https://xitter.cf/t.co/JUhgTo2oZX | https://xitter.cf/t.co/P3ugfHdAHu | https://xitter.cf/t.co/mGDPPW4o98 | https://xitter.cf/t.co/dPt1Z9gy5g | https://xitter.cf/t.co/P7OOZOWLJI | https://xitter.cf/t.co/1IbweEfgcw 📖 Wrote https://xitter.cf/t.co/xPnRYbTY0y

London
Joined January 2011
Chris Gregori retweeted
Kage's first sponsor is live - @beehiiv 🙌 62,000 people browsed Kage last month looking for design references and prompts to paste into their coding agents Glad to have Beehiiv in front of them for the next two weeks. If you're writing a newsletter, they're the ones to use 💪🏼
1
1
6
246
Chris Gregori retweeted
Since we’re all rewriting everything in Rust, here’s my contribution: Dialyzer. ~3× faster on cold runs, matching warnings on tested projects. Uses more memory though.
5
2
1
9
564
Chris Gregori retweeted
Me explaining my billion dollar SaaS idea to Opus 5.5 at 3am
62
293
43
5,286
416,766
Chris Gregori retweeted
72
1,432
93
20,705
556,286
Chris Gregori retweeted
Ten years of Sad Affleck memes and it turns out he'd just been trying to install CUDA drivers the whole time.
58
1,155
67
15,471
271,424
Chris Gregori retweeted
In programming, "speed" is not so simple to measure. There are a few measures you look at: Concurrency: The number of things your system can handle at once. Throughput: The actual number of requests served per second in real world conditions. Latency: How long it takes for any one request under real world conditions to complete. This includes queueing delay. Queueing Delay: How long a request has to wait at the front door before your system even starts processing it. You typically are playing a balancing act between maximizing throughput and minimizing latency on any single server, while increasing number of servers (capacity) to account for actual load. A system under load does not behave the same as a system with spare capacity. Raw speed doesn't save you under contention, because "just do the thing as fast as it can possibly be done" is just insufficient. Instead, you have to write your code in such a way that any one given thing can "yield" to other things. If you don't, the requests you're working on finish quickly, but once all of your threads/processes are fully utilized, you have no way to handle more load without introducing queueing (which eventually becomes failures/timeouts) on callers. This brings us to queueing delay. When the system is processing all of the data that it can, the callers have to all just sit there and either wait, retry or fail. If your system were able to accept more concurrent work, you can lower this queuing delay under heavy load. If you can't do that, you end up trading away too much of your goodput (requests that actually succeed within their deadline) in exchange for consistently low latency for the operations that you do handle. When building systems at scale, the general guiding light is keeping the queue delay low, and keeping goodput as high as possible. To do this, you accept as much work as the internal system can track (increasing memory usage typically), allowing latency to go up, in order to accept more concurrent traffic internally. You still need backpressure and load shedding, since no scheduler saves you from arrival rates that permanently exceed what you can serve, but within those bounds you keep goodput maximized. For this to actually work, your internal schedulers need to be able to do something called "preemption". This is where any given operation cannot take an entire CPU core for longer than some given period of time, or for some amount of operations. A "preemptive scheduler" balances work fairly across all of the operations that are asking for CPU cycles. (Work stealing, where idle cores pull queued work from busy ones, helps too, but plenty of cooperative runtimes have that. Preemption is the key part.) The BEAM is a powerhouse for this. It preempts processes by counting "reductions," so no process can hog a scheduler. Immutability and share-nothing processes make that preemption cheap and harmless: a process is never paused while holding a lock someone else needs, and every process has its own heap and garbage collector, so there are no global stop-the-world pauses. This allows BEAM applications to achieve maximal goodput, with very low failures due to queue delay, while spreading latency across all work fairly. Without that preemption, you would see a huge spread among the latency of your system. i.e some requests happening practically immediately, while other requests take pathologically large amounts of time to complete. I get that people want programming language not to matter these days, but at a very minimum you cannot escape the limitations of your runtime. The BEAM's runtime is built for operating at scale, and will always be smoked on benchmarks for tight loop operations where there is no resource contention. #ElixirLang
BEAM is not faster than Rust so something is wrong with the Rust code
7
45
5
275
8,286
Chris Gregori retweeted
José Valim
@josevalimOct 5
Oh FFS. It turns out the req/s in the initial vibed Rust version is within the same order of magnitude as the initial vibed Elixir/Go versions, and even performs worse in some of them. The history is in the repository! The Rust version only got faster with a bunch of additional work. The initial Elixir/Go versions presented in the tweet below saw none of this additional work. It was comparing a 300 commits Rust version with a 2-3 commits Elixir/Go version. Source: github.com/basecamp/once-cam…
DHH
@dhhOct 4
I've had agents implement and optimize the Campfire web app in Elixir, Go, and Rust. Yes, Ruby is the slowest. I didn't care about that when the pay-off was huge in terms of productivity and developer joy. But if you're no longer reading the code? github.com/basecamp/once-cam…
Readers added context they thought people might want to know
The shown benchmarks use non-equivalent implementations: Elixir routes all DB queries through a single GenServer with Redis for jobs (retained from Rails), while Rust uses in-process queues, omits CSRF tags/fields, and applies other caching changes. github.com/basecamp/once-… raw.githubusercontent.com/basecamp/once-… github.com/basecamp/once-… github.com/basecamp/once-… x.com/zachsdaniel1/s…
77
109
32
1,361
170,436
Chris Gregori retweeted
LOTR might genuinely be one of the greatest things humans have ever put on a screen and I’m not even exaggerating. You can watch it as a kid and think it’s about hobbits and swords and this terrifying ring. Then you watch it as an adult and realize it’s basically about everything that actually matters. Power corrupts people and evil usually starts really small..Good people can be tempted and courage isn’t about being fearless. Friendship can literally carry you when you can’t carry yourself anymore. The smallest person in the room can change the course of history. You do the right thing not because you know you’re going to win, but because it’s the right thing to do. Honestly… I think it should be mandatory viewing for kids at some point. Not just “watch the movie” but actually dissect it. Why does Boromir fail? Why can Sam resist what other people can’t? Why does Frodo show Gollum mercy? Why is Aragorn a good leader when he spends half the story reluctant to have power? What happens when someone becomes consumed by resentment, fear, or the desire to control other people? Then make kids apply those questions to their own lives. Friendship, temptation, loyalty, courage, responsibility, choosing who you want to be when nobody is forcing you to choose correctly. There are probably more useful lessons about becoming a decent human being buried in those movies than in half the stuff we make kids memorize in school…and those are learnings and lessons that would stick and could carry you through all of life. My favorite part is that the heroes aren’t these invincible characters either. They’re tired, scared, tempted, and completely outmatched. Half the time they have no idea what they’re doing but they just keep going…. Then somehow Peter Jackson took ALL of THAT and made three epic movies at the same time, filled them with real sets, real landscapes, thousands of extras, incredible music,… and made something that still looks better than movies being made with $200M budgets 25 years later. I really don’t think we’ll ever get another thing like it.
The prologue of THE LORD OF THE RINGS: THE FELLOWSHIP OF THE RING (2001) packs more worldbuilding, scale, and spectacle into a few minutes than most fantasy films manage in an entire runtime.
161
1,186
47
9,495
372,872
Chris Gregori retweeted
Come on. Your agents run all SQL queries through a single genserver, with all queries awaited via `GenServer.call`. This is a moronic Elixir implementation. I've staid fairly agnostic on the whole "rewrite everything in rust" thing but if this is the Elixir that your agents are writing, I'd hate to be a rust expert looking at their rust. github.com/basecamp/once-cam…
DHH
@dhhOct 4
I've had agents implement and optimize the Campfire web app in Elixir, Go, and Rust. Yes, Ruby is the slowest. I didn't care about that when the pay-off was huge in terms of productivity and developer joy. But if you're no longer reading the code? github.com/basecamp/once-cam…
Readers added context they thought people might want to know
The shown benchmarks use non-equivalent implementations: Elixir routes all DB queries through a single GenServer with Redis for jobs (retained from Rails), while Rust uses in-process queues, omits CSRF tags/fields, and applies other caching changes. github.com/basecamp/once-… raw.githubusercontent.com/basecamp/once-… github.com/basecamp/once-… github.com/basecamp/once-… x.com/zachsdaniel1/s…
53
53
22
650
89,846
Chris Gregori retweeted
I have a branch with various performance improvements to the Elixir version, focused on specifically the websocket side of things. I didn't spend much time on the rest. The load generation code was flawed in overload scenarios because any socket that had an issue just stayed disconnected forever, so I assume no benchmarks were run in this fashion prior. Now those reconnect on disconnect and continue sending traffic (a more realistic scenario). Most relevant finding: In an overload situation, the rust implementation delivers a whopping 1% of messages to all connected clients, and the Elixir implementation delivers 100% of messages to all clients, applying natural backpressure to writes. Speed is cool. Rust is fast. Speed is not even close to the most important thing when building real applications.
DHH
@dhhOct 4
I've had agents implement and optimize the Campfire web app in Elixir, Go, and Rust. Yes, Ruby is the slowest. I didn't care about that when the pay-off was huge in terms of productivity and developer joy. But if you're no longer reading the code? github.com/basecamp/once-cam…
Readers added context they thought people might want to know
The shown benchmarks use non-equivalent implementations: Elixir routes all DB queries through a single GenServer with Redis for jobs (retained from Rails), while Rust uses in-process queues, omits CSRF tags/fields, and applies other caching changes. github.com/basecamp/once-… raw.githubusercontent.com/basecamp/once-… github.com/basecamp/once-… github.com/basecamp/once-… x.com/zachsdaniel1/s…
26
64
19
599
34,314
Chris Gregori retweeted
One of my recent favorite AI use cases: asking it to try and break the stuff I built. Adding lots of data, long names, unusual emails, labels, etc. Coming up with worst case scenario basically. This is a vibe-coded demo, but you get the idea.
90
152
30
4,117
197,559
Chris Gregori retweeted
Sites every design engineer should have bookmarked: dialkit.dev - Dial-based UI controls glass.samasante.com - Beautiful glass effects uisfx.com - UI sound effects for the web typeface.fyi - Find the perfect typeface libraries.dev/orbs - Interactive animated backgrounds screenshottocode.com - Turn screenshots into code kage.design - 1,000+ real UI components for design inspiration Save this for your next build ↓
7
22
201
10,245
Chris Gregori retweeted
After co-inventing ChatGPT, I kept asking myself: why have superhuman chat models not led to AGI? I’ve spent the last 2 years in stealth building a new way to train models (RLCD), and a new type of frontier AI model that we are releasing today: Jev • 20-200x faster • 40-400x cheaper (w/ output tokens free) • Frontier composable intelligence optimized for decisions AFAICT the shortest path to AI-based economic revolution
4,030
8,288
6,819
76,637
40,118,864
Chris Gregori retweeted
github.com/k-dense-ai/scient… - Turns AI into a scientific agent circleloaders.dominikakissi.… - 24 free modern circle loaders openui.com - The Open Standard for Generative UI kage.design - 257 design inspirations, ready to build glass.samasante.com - Open-source liquid glass effect for the web
33
27
2
234
13,375
Chris Gregori retweeted
Where do you get inspiration before building a new landing page ? Real product designs. Reusable UI sections. Build-ready inspiration. AI Skills. A pretty useful bookmark for #Frontend developers. Try kage.design
145 products analysed 1358 components with prompts for AI agents 257 design example Full screen landing page capture Categorised, analysed and turned into prompts 100% free. kage.design
1
1
121
Chris Gregori retweeted
On the left - convex's landing page On the right - a one shot of a new dev tool using kage.design's prompt and Fable 5.1 100% totally free - try it out
1
9
928
Chris Gregori retweeted
Tibo
@thsottiauxSep 3
We will give one banked reset for every day you don't have access to Astra on your paid ChatGPT plan, starting today. Team is moving mountains to give access as fast as we can. First one will land in ~ 3 hours. There is still time to create your account if you don't have one.
5,574
3,449
3,541
48,143
9,180,453
Chris Gregori retweeted
Theo - t3.gg
@theoSep 3
GPT-6 Astra is world class at Blender and 3 dimensional reasoning. This was a 1-shot game it created, all running in browser.
407
411
180
12,796
2,530,739
23 YEARS AGO TODAY, @TheWeebl posted BADGERS to @Newgrounds.
319
3,459
710
15,122
1,943,027