VP of Community @ Zig Software Foundation • Zig Livecoding twitch.tv/kristoff_it • Creator of softwareyoucan.love • Host of zig.show • 📧 loris@sycl.it

Joined June 2012
483 Photos and videos
Sometimes I run out of steam, sometimes I go down the wrong path, and some other times I deliberately take detours, but nobody can trick me into mistaking lesser stars for my true destination. kristoff.it/blog/north-star/
4
6
96
11,142
Loris Cro ⚡ retweeted
Andrew’s interview with JetBrains on investing in human contributors passes 400,000 views (and not stopping).
Our full conversation with Andrew Kelley, creator of Zig, is out now. No AI policy, leaving GitHub, a $670K nonprofit, and why there's no 1.0 (yet).
10
20
235
14,416
New Zig Devlog about ELF linker improvements, featuring 30ms rebuilds of a Tetris game. Incremental is coming and y'all not ready. ziglang.org/devlog/2026/#202…

9
20
245
12,125
For some people AI is an autoadaptive dunning-kruger system.
4
1
47
2,683
Mitchell is the kind of person you would love to have sitting next to you at a Zig Day
I've got an agent in a loop optimizing a renderer with the goal to minimize frame times (and tests to measure). It got times down from 88ms to 2ms and allocations down from ~150K to 500. Sounds good, right? Wrong. This is exactly why agent psychosis is a big fucking problem. As an experiment, I rewrote the Ghostty core render state in Go, with access to identically laid out data structures as Ghostty and the exact same validation tests. I made a purposely naive renderer (simple, correct, but slow). 88ms per frame with 150,000 allocations (horrendous, lol)! I then kickstarted a Ralph loop to bring the frame times down. I told it it can't modify input data structures or the public API or tests (they're correct), but it can do anything else it wants. It got to work. It has worked for about 4 hours. I've spent around $350 on this experiment so far. The results? 88ms => 1.5ms 150K allocs => ~500 allocs Incredible right? Nope. My hand-written renderer I ported has frame times (same benchmark) of ~20us (0.020ms) and 0 allocations in the update path. This is the problem with psychosis and lacking systems understanding. If you don't understand the system, you're going to accept that this is an incredible result. If you understand the system, you'll see better solutions immediately and can do roughly 75x better on throughput. The people who blindly trust agent output are in the former camp. They're sheeple, overdrinking from a fountain of mediocrity. Standard disclaimer: I use AI all the time. I like AI. The point I'm making is to not blindly accept results. Think. Analyze. Learn.
3
1
143
8,889
Loris Cro ⚡ retweeted
I've got an agent in a loop optimizing a renderer with the goal to minimize frame times (and tests to measure). It got times down from 88ms to 2ms and allocations down from ~150K to 500. Sounds good, right? Wrong. This is exactly why agent psychosis is a big fucking problem. As an experiment, I rewrote the Ghostty core render state in Go, with access to identically laid out data structures as Ghostty and the exact same validation tests. I made a purposely naive renderer (simple, correct, but slow). 88ms per frame with 150,000 allocations (horrendous, lol)! I then kickstarted a Ralph loop to bring the frame times down. I told it it can't modify input data structures or the public API or tests (they're correct), but it can do anything else it wants. It got to work. It has worked for about 4 hours. I've spent around $350 on this experiment so far. The results? 88ms => 1.5ms 150K allocs => ~500 allocs Incredible right? Nope. My hand-written renderer I ported has frame times (same benchmark) of ~20us (0.020ms) and 0 allocations in the update path. This is the problem with psychosis and lacking systems understanding. If you don't understand the system, you're going to accept that this is an incredible result. If you understand the system, you'll see better solutions immediately and can do roughly 75x better on throughput. The people who blindly trust agent output are in the former camp. They're sheeple, overdrinking from a fountain of mediocrity. Standard disclaimer: I use AI all the time. I like AI. The point I'm making is to not blindly accept results. Think. Analyze. Learn.
308
979
8,937
791,074
The next Zig Day Seattle (WA) is going to be on Jun 13! Make sure to RSVP if you plan to attend! zig.day/usa/seattle/2/
2
2
26
2,351
Loris Cro ⚡ retweeted
Andrew is relentlessly building the world’s most powerful systems programming language (and toolchain). He has my full support and trust (and frankly, sheer gratitude for holding firm on quality). Props to @jetbrains for putting together a terrific interview.
Our full conversation with Andrew Kelley, creator of Zig, is out now. No AI policy, leaving GitHub, a $670K nonprofit, and why there's no 1.0 (yet).
8
41
494
26,561
well it's been fun rolling in the mud, I'm logging off to do actually relevant stuff, see you all next drama
3
42
4,908
Loris Cro ⚡ retweeted
People often get this wrong: But per systems thinking, correctness is not a { language, static allocation, testing, etc. } problem. Correctness is a design problem.
We’ve had on the order of 3 memory bugs in 6 years of TigerBeetle. None RCEs. On the other hand, our own simulators have proactively found hundreds of (devastatingly catastrophic) distributed systems correctness bugs per year. Given how hard TigerBeetle’s domain is, in terms of mission critical financial transaction processing, I’ve never for one minute believed that writing TB in a memory safe language such as say TypeScript would somehow magically (!) make any material impact compared to the 100x correctness multiplier of TigerStyle. That’s because—rather than fall for the fallacy of composition, i.e. to see distributed correctness as a language problem—TigerStyle instead takes ultimate responsibility for the “end to end” correctness of the distributed system as a whole. Per systems engineering, correctness is always a systems design problem. For example, how to build a reliable whole, (especially) out of unreliable parts, such as broken firmware, bitrot, programmer error etc. In other words, application of the end to end principle. But when you TigerStyle the design in this way, the world of systems engineering also completely opens up to you and changes how you evaluate systems languages (now things like “power to grammar ratio”, or explicitness, checked arithmetic and precision become more critical and valuable to you). Of course, it is harder to care about correctness, to take responsibility for correctness end to end. Yes, you’re forced to begin to worry about the more serious concerns, starting with the basics of static allocation, explicit limits, assertions, deterministic simulation testing and moving to more advanced topics like protocol-awareness and storage fault-tolerance. But then again, TigerStyle is such a force multiplier, that you achieve mission critical quality, and in less time and with greater velocity. If you’re tired of production issues, and if you want to “engineer your engineering”, I would encourage you to lift up your thinking to the level of systems design and end to end correctness. Start thinking about your methodology and begin embracing TigerStyle. tigerstyle.dev
9
12
223
32,186
Loris Cro ⚡ retweeted
Fork your dependencies, trim them to only your use case, never update unless it breaks for your users. I’ve been vocal about this for 10 years. I’ve always said that updating is way riskier than latent bugs (which can be tracked and CVEs monitored). If you are updating a dependency, it’s on you to analyze every single commit in the full transitive set of dependencies. If you dont see anything compelling, dont update! I remember at HashiCorp once in awhile an engineer would try to update a dep or replace a DIY lib with an external one and id always ask “show me the commit we need.” Dont update for the sake of it. Feeling pretty swell about this mentality with all the supply chain attacks happening.
292
778
8,955
1,184,519
that blog post is taking a while to come out, I guess some things still require some good hammering to be made look good enough :^)
7
3
139
7,310
Loris Cro ⚡ retweeted
Which loop is more likely to 10x your team’s design/code/test/debug/release/maintenance velocity, but also with mission critical quality, faster performance, more beautiful code, deeper understanding as a 2nd order effect, and lower total cost of ownership?
16% Agentic coding
53% TigerStyle DST
32% 🍿
38 votes • Final results
8
6
52
7,341
I sincerely hope that Node does not plan to vibe-port its entire codebase, regardless of the target language. Node is the only truly open source runtime for JS and I hope that its maintainers will prioritize stability and responsible stewardship of the project, ideally protecting their own version of contributor poker (i.e. guaranteeing that contributors can grow into future maintainers), none of which is helped by vibe-porting the entire codebase in one commit.
Bun rewrote itself from Zig to Rust. AI did most of the work. 98% of the test suite passed on the first run. The question isn't hypothetical anymore. Should we rewrite Node.js in Rust?
10
5
134
17,249
Yeah, luckily it's impossible for Anthropic to buy the Zig Software Foundation. Some things in life money alone just can't buy, like a functioning codebase that you understand, and a trust relationship with your users :^)
Replying to @samlambert
You would need Zig to be acquired by Anthropic. The things Bun they did in their codebase are also possible, becuse Bun is owned by Anthropic and they could go programmatically into files. You don’t believe it, but @theo made video about it
13
24
397
28,701