noelwelsh.bsky.social

@noelwelsh.bsky.social

I'm writing a book, online at https://functionalprogrammingstrategies.com/ My personal site is https://noelwelsh.com/

The 3N model of radicalization: * Need: a threat to personal significance that creates openness. * Narrative: an ideology that explains the loss and offers a path to restore significance. * Network: a social group that validates the narrative and rewards adoption of it.

"It was during that rough going where Andreessen came in. We were a small company of 60 people and 20 took the offer and left. That's almost a third of the company that decided to leave and we got to a point where we were thinking that not many more have to leave before we need to worry about whether we can keep the lights on.

And it was actually Tobi who then put me in contact with Marc Andreessen because Marc had been exposed to this phenomenon at some of his portfolio companies. 

And Marc gave us reassurance and a bunch of contacts. Marc said, "Do you need someone to come in to help do programming or help with operations or whatever?" 

And I was floored by the generosity because Marc and I haven't always seen eye to eye on things. Especially in terms of venture capital. He's been one of the main faces of venture capital for decades and I've been kind of critical at times.

And it was just a realization that all those grievances we might have thought to be so big once upon a time were actually minuscule. We were fighting the white walkers on the other side of the wall and all our internal squabbles were going to be for nothing if those f*ckers got inside the wall and destroyed everything. And that felt like a real threat at the time. That could've happened. They could very well have just ripped the whole thing apart.

And Marc clearly saw that that this was a collective, almost existential threat to the entire industry. If these activists were able to take over these institutions in the same way that they have taken over academia we would be f*cked and not just for a little while but potentially for decades. That couldn't stand. 

And Marc was incredibly helpful not just in terms of these contacts and introductions and so on but it was very powerful. When you have literally 40,000 people on Twitter calling you all the worst things in the world even the strongest individual might go for a second like "Holy sh*t. The mob is coming for me and there's no one else there."

And there are other people there. Tobi was there. Marc was there.

And it was incredibly helpful to give us the fortitude to go like "No do you know what? We're going to stick with it. We're not going to grovel. We're not going to apologize. We're not going to revert."
And then what Marc also did was he gave me a syllabus for understanding the history of wokeness going all the way back to the '60s and beyond. 

That this didn't just come as lightning from a blue sky. This had an institutional grounding that was set in motion particularly in the '60s and the long march through the institutions, Herbert Marcuse and a lot of The Frankfurt School and all of these groups that had designs on how to reshape society and create the revolution they so dearly wanted, but with a timeline and a roadmap that was demarcated in decades. 

That it wasn't just like "Well we're going to put something together and then in two years something's going to happen." No they were sitting in the fucking '60s fantasizing about how to overthrow everything in the 2000s.

It's actually incredible in a Dr. Evil sense of it but when you're on the receiving end of it it seemed a little less incredible and it was just difficult not knowing where's this coming from? Why is this happening all of a sudden?

Well it wasn't happening all of a sudden. There was this long history of it and when you understood that history it made a lot more sense. We weren't just making a rejection for our little corner of the world. We were chipping in in the great civilizational battle of where this country was going to go, whether the white walkers beyond the wall were going to win.

LLM-for-programming discourse really needs more nuance. It's great at some tasks and sucks at others. E.g. for work with any design requirements I've found it makes bad decisions. The framework I'm working on really doesn't need two event queues, for example. For filling in the blanks it's great.

I'm now curious if Claude writes profiles for other people. Only one of my projects had a profile, so it's not automatic. For science: check projects within your ~/.claude for user_profile.md and report back! fd user_profile.md ~/.claude (or the equivalent w/ find)

noelwelsh.bsky.social@noelwelsh.bsky.social · 3w ago

I discovered that Claude had created a user profile for me for a project we're working on. I didn't ask it to write this, but I'll take it! 😆

A screenshot reading: Experienced Scala developer building a terminal UI toolkit (Terminus). Deep understanding of FP, type theory, and UI framework design. Thinks carefully about architecture before implementing — prefers extended design discussions to establish the right model, then moves quickly to code. Values principled design that can evolve; dislikes premature optimisation but wants the scaffolding for future work to be in place. Conversational style is concise and expects concise responses.

Podcast alert!!!! Together with Hanna Schraffenberger I am launching the Computer Science Off Course Podcast Today! Computer Science curricula are very very narrow in scope with a lot of math and algorithms, but very little meta science, philosophy or history.

A laptop screen showing our new podcast Computer Science Off Course on rss.com

I could scarcely believe my intuition was right. I sort of said it as a joke -- "How do we know your talk wasn't written by AI?" But in truth, something in the rhetoric, argumentation, possibly even the tone, felt AI-ish. When he shifted in his seat, I thought he was offended by the implication..

Today is the day all the pieces came together and I figured out the capability-passing UI library 🎉 The idea has been obvious to me for a while, but the details (if you want to the type system to be useful) had eluded me.

I'm a committee member this year, and I would rank >90% of the current proposals more highly if they fixed some basic mistakes. The number one mistake is not including enough information to allow me to properly assess the proposal. I'll be at this event, and will offer all the advice I can.

London Scala@londonscala.bsky.social · 2mo ago

Interested in speaking at Scala Days? Join us this evening at the Scala Days proposal hack! Informally discuss your proposal with members of the program committee and other speakers. Join us online at 7PM BST / 6PM UTC: meet.google.com/uay-ynsm-djx Find out more: www.meetup.com/london-scala...

Scala Days CFP is open and the London Scala User Group is running an online event to help people create a proposal: www.meetup.com/london-scala... I'll be attending to help out. I'm also on the program committee this year. I encourage any potential speakers to attend!

Scala Days proposal online hack, Wed, May 27, 2026, 7:00 PM | Meetup

Are you interested in speaking at [Scala Days](https://scaladays.org/), but not sure what to speak about? Join the Scala Days proposal hack! Come and discuss ideas in a fri

meetup.com

Coding agents are great at minutiae, but lack taste. Given the chance, they will quickly turn a code base into a big ball of mud. The question is, is this a limitation of the reasoning ability of LLMs, or is it replicating the patterns in the training data?

I hold this truth to be self evident (until I get around to writing it up): Capability passing is a great way to structure a UI toolkit. In fact it's the model implicitly behind many current frameworks. Capability passing effect handlers formalize what is already going on, and add expressive power

What are the best practices for creating APIs in a post-LLM world? I think that was is good for humans is also, broadly, good for LLMs. But what about a builder API, that optimizes for dot-driven development (press . and follow the autocomplete). Does that still make sense, or is it unnecessary?

🛠️ sbt 2 is nearing stable release - let’s migrate the plugin ecosystem together! The new sbt2-compat plugin was developed by the Scala Center to simplify cross-building sbt plugins for sbt 1 and sbt 2. Learn more on how to migrate:

Migrating sbt plugins to sbt 2 with sbt2-compat plugin

A case study of how sbt-assembly uses sbt2-compat to cross-build for sbt 1 and sbt 2, and a guide of how to use it for your own plugins.

scala-lang.org