Designer of the Kit programming language. Software Engineering, Machine Learning, Data Science, Clojure, Crystal, Elixir, Go, Nim, Ruby, Python, Zig, Raspberry

Tampa, Florida
Joined May 2007
Edward J. Stembler retweeted
as my final act of failure I will convert my codebase to Rust
3
9
148
8,859
Edward J. Stembler retweeted
Moved to tsrs over the weekend. Drop-in replacement. Around 5x faster for OC. Kind of amazing that it took Microsoft a team and two years to rewrite the TS compiler in go, and now you can just let an agent rip and get sth significantly better within weeks.
Introducing tsrs: a Rust port of the TypeScript compiler 🦀 We are not forking TypeScript! ◆ In close collaborating with the TypeScript team ◆ Up to 8x faster than TS 7.0 & ~70% less memory ◆ Runs in WASM, so it works in your browser & on Workers ◆ Soon part of the Oxc toolchain npx tsrs blog.cloudflare.com/typescri…
99
53
14
1,956
144,499
Edward J. Stembler retweeted
To whom it may concern 🙃️ In abstract terms, I think of a software system (e.g. a web server, database, message queue, ...) as a collection of dynamic activities. Multiple things are happening: handling of requests, background tasks, periodical jobs, error handling, reporting, and recovery. Many of this things are completely independent, but some of them are working together. These activities have their lifecycles. We want to be able to start the activities in the proper order. We want to be able to dynamically start more activities. We want to be able to stop the activities in the reverse order. If Bar depends on Foo, we want to start Foo first, Bar second, and we want to stop them in the reverse order. Some activities will be decomposed into smaller subactivities. So if Foo internally runs Bar and Baz, we want to be able to stop the entire subtree. For example, if a user hits the cancel button, we want to be able to stop all the activities related to that task. And we want to be able to do this even if the task is stuck in some CPU processing loop. A software system has non-binary success semantics. Just because something fails, doesn't mean everything should stop working. But whatever is tightly coupled to the failing activity should stop too. However, the failing thing should not leave inconsistent mess (state, dangling resources) behind. BEAM & OTP is give us the primitives that address just that. The way I think about my systems in abstract maps very closely to the way I implement them. This vastly reduces the mental overload of thinking about the code. The conceptual view of the system maps very closely to the actual physical model (process structure). This is a power of a good abstraction. For more details, see my talk Soul of Erlang and Elixir, where I tried to explain the underlying ideas. The conceptual properties I mentioned above will have to be supported, because they are inherent to a software system. If you're building a software system without this support, these concerns will get entangled with your business logic. Whether you're doing it manually or vibe it, this work becomes more complicated. You or your agent have to deal with non-functional requirements together with the functional ones. This will make your job and the jobs of agents more difficult. Remember: code is the part of the context, perhaps its largest part. So in the age of agentic development, my position about BEAM remains the same. If you're building a software system, it is the tool that fits the problem, and it will simplify your life. You might bump into situations where some other properties will be more important (e.g. raw processing speed), but you can then implement these parts of your system in another language, say Rust, and manage them from a BEAM-powered system. As many of you know, I'm a long-time user of Erlang and Elixir. But I don't choose those languages for the syntax. For the record, I actually prefer C-style curly-braces syntax. I use those languages because of the runtime properties and guarantees, and because this technology reduces the impedance mismatch between the way I think about the system and the way I implement it. I also actually mostly prefer Erlang syntax over Elixir (minus some exceptions). The reason why I use Elixir is mostly tooling & some language features (e.g. macros). But the choice of the language was never a fanboy choice for me. If you're not building a system, BEAM langs are most likely not your hammers.
7
35
2
177
6,863
Local DeepSeek V4 versus serverless DS4 from @FireworksAI_HQ 🤔
1
2
74
My 1st attempt at using @OpenAI Dots and it failed. "Are you able to optimize the apps on my iPhone using this mac computer? Organize most frequently used apps on first page and optimize groupings, etc.". It could not, recommended trying in "Work". That failed too
1
51
Hey @dhh please use some of those Omarchy AI credits to figure out how to install Omarchy over an existing Ubuntu installation. Overwriting Ubuntu with Omarchy - but keep user files 🙏
1
1
92
Edward J. Stembler retweeted
Every company wants agents. Very few have written down how their best people actually make decisions.
37
7
7
88
17,492
We wrote Kit code which downloads @LlmStats data + @FireworksAI_HQ pricing data to calculate the best models to use with oh-my-pi
1
2
59
Edward J. Stembler retweeted
🚨 OBAMA ON AI: "If we are thinking about AI just in terms of how do we cure cancer or get better energy, you can do that without having agentic AI and having it just roaming free in the internet. The reason you are doing that is because you have to market a product that people will pay money for. That’s a misalignment between what our society needs and the commercial imperatives that these companies are facing, not because necessarily they’re trying to do bad things, but because they’ve got to justify these valuations. So, that’s one more reason why it is really important for us to have a competent government and a serious bipartisan conversation around this issue, and we have to do it fast. And I would encourage voters to pay attention to this. If somebody does not have a serious plan for how to deal with this, then they’re not meeting the moment, and you should probably look for somebody else."
826
3,848
805
19,980
7,138,037
Ended up cancelling my @OpenAI and @AnthropicAI subscriptions again. Both Astra and Fable 5.1 burn through weekly limits in 1 day. Not worth it. Switched to @deepseek_ai V4.1 Flash on @FireworksAI_HQ
1
56
GPT-6 Astra seems to burn tokens too fast. Medium has already consumed the weekly limit in less than 24 hours. 😞
62
Edward J. Stembler retweeted
They tried to deploy Astra but it took down Claude, Grok, Cursor, and finally... itself. LMAO
279
238
94
5,998
370,485
Edward J. Stembler retweeted
Stop trying to build a software factory and start trying to turn yourself into one
147
82
31
2,391
121,628
Edward J. Stembler retweeted
All models, no matter how smart, will eventually build systems that they can no longer understand or maintain, if you let them. Fable 5 finally outbuilt itself, and flailed on me for a week. Fable 5.1 looks like it will fix it. For now. But you have to keep an iron grip on system size, or it'll run away from you.
102
76
37
965
153,862
Edward J. Stembler retweeted
Some of the mistakes I've had to correct when coding with LLMs this week (mostly Fable): - Complex and unnecessary dependency injection instead of using functions directly - Hand-rolling encryption routines instead of using a library - Keeping unnecessary state - Not accounting for memory leaks in tracked state in failure cases - Incomplete test coverage, especially on failure modes - Grossly inefficient file handling because "it will work fine at dev scale" - Overly complex locking schemes that were full of bugs - Missed race conditions - Unnecessary configs introduced prematurely Had I not corrected the mistakes, every future iteration would keep compounding the structural and semantic problems. If you don't do this, it "works" until you realize the code is full of bugs, performs terribly, and can only be fixed with a rewrite.
70
31
13
518
43,145
Edward J. Stembler retweeted
Why Microsoft didn't have LLMs do their recent Typescript native rewrite in Go Anders Hejlsberg (Creator of Typescript): "If we just let AI loose on, what is it, half a million lines of code that we have in the old compiler? Well, I don't know that that would absolve us from then having go in and carefully examining every line that came out of it to make sure that there were no hallucinations. Right. Unless you have 100% perfect test coverage, you probably still gotta go check all of that. Now I think a better approach, quite honestly, would be enlist AI to write a program that helps you translate from TypeScript to go, because at that point you can park the stochastic ness in that program and then you can get deterministic behavior whenever you run the program, which means you get the same transformation every time you run it. Right. That's always the thing about AI that people forget it's not deterministic. Right. So you can't really trust that it's going to do the same thing twice. For the full conversation, you can search Anders Hejlsberg's name on my YouTube, Spotify or Apple Podcasts (link in bio)
38
94
22
602
84,892
Edward J. Stembler retweeted
First, they stole our data. Then, they sold it back to us. Now, they watermark it. Soon, they claim they own it all.
149
456
40
3,421
93,659
Edward J. Stembler retweeted
Spend less time configuring and more time creating. The CORSAIR 300 AI Workstation 300 is making its way back to shelves, and you can pre-order it now. Shop now: cor.sr/workstation-300
4
7
1
81
58,905