Sign in

noelwelsh.bsky.social

@noelwelsh.bsky.social
175 followers 191 following 222 posts

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

PostsRepliesMedia
noelwelsh.bsky.social @noelwelsh.bsky.social · 13h
That is, more or less, what I would do.
000
noelwelsh.bsky.social @noelwelsh.bsky.social · 13h
"Sorry, sir, your flow too nasty, your beats too sick, your rhymes too classy" Those sucker MCs think I'm the patsy! Now they doing time for their crimes of fantasy!
100
noelwelsh.bsky.social @noelwelsh.bsky.social · 13h
I open up the door, kick the speakers on high Watch the SWAT team put their hands in the sky As my rhymes assault them with the pure force of lyrical mastery straight from the source
100
noelwelsh.bsky.social @noelwelsh.bsky.social · 13h
They got the megaphones out, yelling "drop the pen" But I’m loading up the syllables and counting to ten Got my bars strapped tight and my speakers cocked The bass is tight and its ready to drop One...two...three...four...five...six...seven...eight...nine...ten!
100
noelwelsh.bsky.social @noelwelsh.bsky.social · 13h
They rapping on my door saying "come out quietly" Well stand back officer 'cause I just might be 'Bout to spit straight fire into this mic Show 'em what a real MC sounds like! Yeah, stand back, officer, clear the block 'Cause a rhythmical a-bomb is about to drop!
100
noelwelsh.bsky.social @noelwelsh.bsky.social · 13h
They got the whole block taped off, sirens loud 'cause a couple jealous haters couldn't rock the crowd They filed a false report, said my bars were wack Got the police to put the king's crib under attack.
100
noelwelsh.bsky.social @noelwelsh.bsky.social · 13h
Cops at my door 'cause they been told My rhymes are wack and my flow is old I got a rap for rap that is weak; say I'm a biter Say I'm a sucker MC; no one wants to fight ya'
100
Reposted by @noelwelsh.bsky.social
Carl T. Bergstrom @carlbergstrom.com · 03/10/2026
I have absolutely wondered about this. Amazing.
311800322
noelwelsh.bsky.social @noelwelsh.bsky.social · 15/09/2026
Essentially, Claude Code is implementing editor features (e.g. diffs) and I would rather use emacs than a cobbled together vibe coded imitation
010
noelwelsh.bsky.social @noelwelsh.bsky.social · 15/09/2026
I think there should be some kind of sovereign wealth fund to handle this.
010
Reposted by @noelwelsh.bsky.social
Shriram Krishnamurthi @shriram.bsky.social · 13/09/2026
I've been crystalizing some advice for first-year college students: "Advice to the New College Student in the AI Era". Thesis: "the purpose of going to college is to emerge as close to middle-aged as possible". docs.google.com/document/d/e...
docs.google.com
Advice to the New College Student in the AI Era
1193
noelwelsh.bsky.social @noelwelsh.bsky.social · 12/09/2026
Claude Code on a mission to reinvent Emacs.
120
Reposted by @noelwelsh.bsky.social
Joshua Eaton @joshuaeaton.bsky.social · 02/09/2026
“There’s a new Mr. Beast book.” You bolt awake in your workshop in Mainz. It’s 1450. You’re Johannes Gutenberg, and you’ve changed your mind. The future cannot come to pass. Your printing press must burn.
6979531450
noelwelsh.bsky.social @noelwelsh.bsky.social · 14/08/2026
Really agree with a lot of the points you make, especially how "soft" sciences and humanities are denigrated by CS. This one really annoys me! Anyway, I won't rant at you 😀. Keep it up!
010
noelwelsh.bsky.social @noelwelsh.bsky.social · 14/08/2026
@felienne.bsky.social I really liked your recent episode on the Turing test. One suggestion: perhaps have the host that isn't leading the discussion read out the quotes. This makes is clearer when a quote ends. (Idea stolen from @ifbookspod.bsky.social podcast.)
100
noelwelsh.bsky.social @noelwelsh.bsky.social · 30/07/2026
I'd say it's close, but it only tastes like 🦅🇺🇸FREEDOM🇺🇸🦅 when the butter is measured in sticks, and the liquids in a measure of weight that is actually a measure of volume (or whatever the heck a fluid ounce is)
360
noelwelsh.bsky.social @noelwelsh.bsky.social · 30/07/2026
(It's also worth noting that "radicalization" is a judgement on the outcome, not the path to getting there. The same process applies in many contexts. Much has been written about the shift in Marc Andreessen's politics, and you, dear reader, can decide if it is radicalization or not.)
000
noelwelsh.bsky.social @noelwelsh.bsky.social · 30/07/2026
Not essential: really bad metaphors.
100
noelwelsh.bsky.social @noelwelsh.bsky.social · 30/07/2026
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.
100
noelwelsh.bsky.social @noelwelsh.bsky.social · 29/07/2026
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.
010
noelwelsh.bsky.social @noelwelsh.bsky.social · 25/07/2026
Science should be self correcting. Debate within a field is how this happens. People acting is bad faith will use that debate as a sign a field is corrupt. Same thing happened with the "replication crisis" in psych. At least that's how I'm reading it, without actually reading the article 😁
0110
noelwelsh.bsky.social @noelwelsh.bsky.social · 25/07/2026
I think it's a mistake to apply this to all PRs. Not all coding tasks are the same, even within the same project. My experience is LLMs are, e.g., really good at plumbing and following existing patterns, but fail at architecture and API design. Different tasks should be treated differently.
000
noelwelsh.bsky.social @noelwelsh.bsky.social · 24/07/2026
Sorry, I wasn't clear (I blame the char limit). I'm fairly sure there is more than "nobody knows what it is" but I'm struggling to extract it; the knowledge isn't presented in a structure I know how to parse. I'll give your paper a read.
010
noelwelsh.bsky.social @noelwelsh.bsky.social · 24/07/2026
This is how I think anthropologists view the world. It's also how I feel reading anthropology. E.g. I'll read a chapter on say, culture, that concludes "nobody really knows what it is". Coming from STEM, where we have precisely defined structures of knowledge, has left me floundering a bit 😀
100
noelwelsh.bsky.social @noelwelsh.bsky.social · 22/07/2026
Seppos (yank -> septic tank), which is the Australian term, is also a solid choice
010
noelwelsh.bsky.social @noelwelsh.bsky.social · 21/07/2026
Yes, and it's recursive
021
noelwelsh.bsky.social @noelwelsh.bsky.social · 16/07/2026
This allows building TUIs programs in Scala that run natively, on the JVM, or in the browser. I also think the model is really simple to work with. If you're curious about capability-passing, or other aspects of the design, it's going into a chapter of my book functionalprogrammingstrategies.com
functionalprogrammingstrategies.com
Functional Programming Strategies
010
noelwelsh.bsky.social @noelwelsh.bsky.social · 16/07/2026
Just released v0.6.0 of my terminal interaction library Terminus, adding a complete TUI framework based on capability-passing. No documentation yet (working on that!) but the screenshot below shows a small example program. Check it out: github.com/creativescal...
A simple example program written in Terminus:

val fullScreen = FullScreen { ctx ?=>
  val name = ctx.signal(text.Line(""))

  Column(Size.fixed(50, 5)) {
    Text(Size.fixed(50, 1), _.withBox(_.withoutBorder)) {
      staticText("Type a name. Ctrl+Q to quit.")
    }
    TextInput(Size.fixed(50, 3), _ => inputStyle, name)
    Text(Size.fixed(50, 1), _.withBox(_.withoutBorder)) { ctx ?=>
      ctx.computed {
        val typed = name.get.value
        text.Text(if typed.isEmpty then "" else s"Hello, $typed!")
      }
    }
  }
}

fullScreen.run(NativeTerminal)
110
noelwelsh.bsky.social @noelwelsh.bsky.social · 16/07/2026
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)
000
noelwelsh.bsky.social @noelwelsh.bsky.social · 16/07/2026
Yeah. I saw it was writing memories and decided to poke around to see what it was storing. It was only one project that had a profile. You can check your own projects: look for user_profile.md under ~/.claude Report back if you find anything! I'm curious if this is standard or a one-off.
010
noelwelsh.bsky.social @noelwelsh.bsky.social · 16/07/2026
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.
210
noelwelsh.bsky.social @noelwelsh.bsky.social · 13/07/2026
Just arrived! Curiously, published in 2027 so I'm living in the future. Looking forward to diving in. Should be a quick read as it's less than 200 pages. (Why am I writing a 600 page book? Because I'm an idiot.) Cc: @grimalkina.bsky.social
A copy of the Psychology of Software Teams by Cat Hicks
040
noelwelsh.bsky.social @noelwelsh.bsky.social · 02/07/2026
A Discord or similar where people can read along, and do their homework, could be fun.
000
Reposted by @noelwelsh.bsky.social
Felienne Hermans @felienne.bsky.social · 01/07/2026
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
54419
Reposted by @noelwelsh.bsky.social
zeu @zeu.dev · 29/06/2026
third paragraph killed me
2211
Reposted by @noelwelsh.bsky.social
Crystal Fleming is on sabbatical @alwaystheself.bsky.social · 17/06/2026
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..
52371102
noelwelsh.bsky.social @noelwelsh.bsky.social · 12/06/2026
This time around there isn't the threat of the Church excommunicating you (or worse), so I don't think the pressure for a new dualism is as high 😀
220
noelwelsh.bsky.social @noelwelsh.bsky.social · 12/06/2026
It's a simple example of how blanket application of these principles misses nuance. In this situation a better implementation is trivial (e.g. random UUIDs) so there is virtually no world where what had been implemented made sense. But when better is more effort the right path is not so obvious.
000
noelwelsh.bsky.social @noelwelsh.bsky.social · 12/06/2026
E.g. I worked on a system that generated IDs for documents, and those IDs regularly had collisions. It would have been easy to dismiss a better implementation at the start of the project ("Wait till we see if its a success. This is a premature optimization. YAGNI!")
200
noelwelsh.bsky.social @noelwelsh.bsky.social · 12/06/2026
I think premature optimization and YAGNI are related, and both come down to 1. the time horizon one is planning over, and 2. confidence in predictions over that time horizon
100
noelwelsh.bsky.social @noelwelsh.bsky.social · 12/06/2026
Kicking around the old c2 wiki would probably yield more wiki.c2.com?AntiPatterns... though this runs the risk of paying too much service to the wisdom of the ancients, which is exactly what "The Unix Way" does. Hope that helps!
wiki.c2.com
This site uses features not available in older browsers.
100
noelwelsh.bsky.social @noelwelsh.bsky.social · 12/06/2026
No-one can agree on what simplicity means. Usage often seems to boil down to "the style I am most familiar with". cf "Simple made easy" Pre-mature optimization is a hammer that can be wielded to stop almost anything. The original was about low-level optimization.
210
noelwelsh.bsky.social @noelwelsh.bsky.social · 01/06/2026
So interesting little experiment. As usual it all seems straightforward afterwards but the process of getting there was messy.
020
noelwelsh.bsky.social @noelwelsh.bsky.social · 01/06/2026
To be fair, it was great at the utility classes. It could also confidently and correctly discuss the architecture, but it didn't connect that conversation to the code it produced. When I had to clean up I needed to basically start over, because I need the clarity a new code base provided.
110
noelwelsh.bsky.social @noelwelsh.bsky.social · 01/06/2026
As usual it came down teasing out the separate concepts. Not just the separate capabilities, but the separation between the public API and the internal API was something I also needed to clear up. I had also started this project as an experiment in co-creation with an LLM. It made a mess.
220
noelwelsh.bsky.social @noelwelsh.bsky.social · 01/06/2026
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.
110
noelwelsh.bsky.social @noelwelsh.bsky.social · 29/05/2026
man pages are basically Jeopardy: if you know the answer they'll tell you the question.
020
noelwelsh.bsky.social @noelwelsh.bsky.social · 27/05/2026
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.
010
noelwelsh.bsky.social @noelwelsh.bsky.social · 27/05/2026
Also remember, tonight there is an event to work on proposals: www.meetup.com/london-scala...
meetup.com
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
000
noelwelsh.bsky.social @noelwelsh.bsky.social · 27/05/2026
This year's @scaladays.org is accepting 2 hour workshop proposals, in addition to the more usual 30 minute talks. I'm thinking a workshop on building terminal apps using Scala Native could be fun. What do you think? What workshops would you like to see at the conference?
100