Live data from Hacker News

Casey Muratori – The Root of the Root of All Evil – BSC 2026 [video]

youtube.com

211–220 of 229 posts

Re: Casey Muratori – The Root of the Root of All Evil – BSC 2026 [video]

#211
post #82
post #51

Earlier quoted context omitted.

He’s known for his Handmade hero series (unfortunately archived now) where he developed his game over 500+ episodes: https://hero.handmade.network/ I’m sure you can find bugs in the work of any game dev you would consider legendary, game implementation is generally very messy

660+ and the game was never finished

You have to consider that each episode is only ~2 hours and every line of code was written on stream. That's about 7 months or so of full-time work. Within that time a lot of the hours was spent teaching instead of coding, too.

There is massive amount of knowledge in there for anyone bothering to actually learn something and it was all provided free of charge. Hats off to Casey for sticking to it as long as he did.

Re: Casey Muratori – The Root of the Root of All Evil – BSC 2026 [video]

#212

Earlier quoted context omitted.

It's likely the same for me, but I tend to relisten to audiobooks I like, sometimes dozens of times. I have a hard time focusing on physical books, and I've probably only re-read a handful of them, so the net effect is that I take in more with a good audiobook. I would like to learn to focus... ( https://youtu.be/1IRn8BN3Qhw?t=331 )

Haha. I used read a lot of books when I was younger, then slowly stopped, and found getting back to reading quite hard as well. Armed with the knowledge that I used to be able to do this, I just forced myself to. And after a while, I found I had no trouble committing any more.

I think it really is a matter of distraction. When I was using public transit a lot, I managed to get through books really quickly by substituting them for my phone. And there was a period where I had no phone for a few months in a new city, and I just read constantly. Even outside while walking. I do the same on my phone, after all.

Re: Casey Muratori – The Root of the Root of All Evil – BSC 2026 [video]

#213

Earlier quoted context omitted.

Animal Well is a great game, there's a lot in there and I appreciate it when a game is deep rather than big but I don't see much connection there. Maybe it's like how "Maze: Solve The World's Most Challenging Puzzle" (a book I disliked immensely) inspired Tonda Ros to make "Blue Prince" a game which I enjoyed tremendously.

Animal Well wouldn't exist without Handmade Hero, Billy himself said it in an interview. The first game architecture he made was RAII etc and full of spaghetti and then he actually followed Handmade Hero and started to getting somewhere.

To be fair, there's another adage that comes into play here: Build one to throw away, you will anyhow.

His second attempt, no matter how he made it, was made with the context of his earlier mistakes.

RAII doesn't lead to spaghetti code necessarily. If anything, "unity builds" would more encourage spaghetti as it's easier to reference anything else in your build.

Re: Casey Muratori – The Root of the Root of All Evil – BSC 2026 [video]

#214
post #26

Earlier quoted context omitted.

Hard to tell if sarcastic, but anyway. I think the GOTOers just died out. Some day null, statements (rather than expressions) and side-effects will have always been wrong.

It's not the focus of the talk and so it's hard to tell if Casey understands (the choice to separate the words GO TO in several places suggests he does) but the `goto` keyword you've seen in several modern languages is not the problematic "GO TO statement", it's a de-fanged remnant, the toy poodle to GO TO's wolf pack. The actual GO TO complained of is, like the jump instruction in machine code, just entirely unbothe…

In the early 90s I was doing IT type C with SQL database software. There was one pattern of goto usage common: clean up at the end of a function if something went wrong (close db cursor, log something, return error code, and the like). When that space went to Java and to some extent C++ (and later C#) exceptions could be used instead. A defer statement would have been a more direct replacement for the pattern, though.

Re: Casey Muratori – The Root of the Root of All Evil – BSC 2026 [video]

#215

Earlier quoted context omitted.

Safe Haskell is just a worst version of Rust's unsafe. What it actually does is equivalent to Rust's #![forbid(unsafe_code)] which immediately lead to a question: so Haskell has unsafe, just like Rust? And of course it does. Any practical systems language has unsafe in one form or another, not only for FFI but also for performance, Rust is just honest about it. There's two reasons Safe Haskell is substantially worse…

The thing I really want is a language or environment with no implicit access rights. So, if I call add(a, b) then the add function doesn’t have implicit access to the filesystem, network or global variables in other parts of the program. If you want to give a function access to a subdirectory, you should pass a handle to that subdirectory as an argument and use openat() or equivalent. This would guarantee - at a lang…

I think nextaccountic is not technically fully correct, but he/she is at least correct in the most important part: Safe Haskell is not really practical.

But if you don't want an ironclad guarantee and instead you're content with making wrong code obviously wrong even if it's not formally verified, then I recommend Haskell with a capability system (what the Haskell world calls an "effect system"). As far is I'm concerned there are two practical choices in 2026, Bluefin (mine) and effectful (one of Bluefin's inspirations)

* https://hackage.haskell.org/package/bluefin

* https://hackage.haskell.org/package/effectful

Re: Casey Muratori – The Root of the Root of All Evil – BSC 2026 [video]

#216

Earlier quoted context omitted.

The fallacy is assuming it takes more work to get good performance. When what’s really lacking is clarity about the problem and solution. Optimizing code for max performance does take work. But just not doing incredibly dumb things and writing simple programs just takes education (and re-education). I can’t count how many times I’ve replaced a distributed system with for loop.

You are assuming a greenfield scenario, in large brownfield projects it is quite easy to degrade performance by innocent changes. That is usually when the perf goes to trash. It takes a lot more work to keep performance good in a large project than just letting it degrade.

If you aren’t willing to change the system (have no business reason to) then you can’t implement or benefit from any new paradigms or advice and are necessarily bound by prior decisions.

Re: Casey Muratori – The Root of the Root of All Evil – BSC 2026 [video]

#217

Earlier quoted context omitted.

That quote mostly applies to human organizations where the connection between outcome and metric is questionable. Or where incentives unexpectedly change behavior. If your goal is fast software it can be measured quantively and you’re likely to improve the actual thing using those metrics.

The goal above was to write fast software. The developers made the mistake of seeing that they had saturated all the cores as "We did a good job of using the entire machine" = "our code is fast". They had a measurement and misinterpreted what it meant.

This is just dumb. You wanted to improve performance but measured memory instead? Whoops.

Why not measure performance for which there are many good metrics.

Re: Casey Muratori – The Root of the Root of All Evil – BSC 2026 [video]

#218
post #215

Earlier quoted context omitted.

The thing I really want is a language or environment with no implicit access rights. So, if I call add(a, b) then the add function doesn’t have implicit access to the filesystem, network or global variables in other parts of the program. If you want to give a function access to a subdirectory, you should pass a handle to that subdirectory as an argument and use openat() or equivalent. This would guarantee - at a lang…

I think nextaccountic is not technically fully correct, but he/she is at least correct in the most important part: Safe Haskell is not really practical. But if you don't want an ironclad guarantee and instead you're content with making wrong code obviously wrong even if it's not formally verified, then I recommend Haskell with a capability system (what the Haskell world calls an "effect system"). As far is I'm concer…

How does this compare to Spritely Goblins? I had a good chat with Christine about it at a conference. She said "Ah, you've been infected with the capabilities virus too. My condolences."

https://spritely.institute/goblins/

Re: Casey Muratori – The Root of the Root of All Evil – BSC 2026 [video]

#219
post #213

Earlier quoted context omitted.

Animal Well wouldn't exist without Handmade Hero, Billy himself said it in an interview. The first game architecture he made was RAII etc and full of spaghetti and then he actually followed Handmade Hero and started to getting somewhere.

To be fair, there's another adage that comes into play here: Build one to throw away, you will anyhow. His second attempt, no matter how he made it, was made with the context of his earlier mistakes. RAII doesn't lead to spaghetti code necessarily. If anything, "unity builds" would more encourage spaghetti as it's easier to reference anything else in your build.

I think the mess you'll get with too much "Handmade" / Casey style ZII is actually slightly worse than if you lean too hard on RAII but it may well be less visible and so you don't notice.

For video games you can get things pretty badly wrong on the technical front these days and deliver an excellent game, that's one of the things Blue Prince demonstrates really well, a lot of the guts of Blue Prince are a trash fire, but the player will not ordinarily notice so who cares? Rebecca (of Rebecca's Pixel Quest) noticed, hundreds of hours in, that if she has two of certain special items the game gets confused. That's the sort of bug a better engineer wouldn't have, but she'd been playing the game for over a year when she noticed.

Re: Casey Muratori – The Root of the Root of All Evil – BSC 2026 [video]

#220
post #215

Earlier quoted context omitted.

I think nextaccountic is not technically fully correct, but he/she is at least correct in the most important part: Safe Haskell is not really practical. But if you don't want an ironclad guarantee and instead you're content with making wrong code obviously wrong even if it's not formally verified, then I recommend Haskell with a capability system (what the Haskell world calls an "effect system"). As far is I'm concer…

How does this compare to Spritely Goblins? I had a good chat with Christine about it at a conference. She said "Ah, you've been infected with the capabilities virus too. My condolences." https://spritely.institute/goblins/

Interesting, I have not heard of Spritely Goblins! But neither Bluefin nor effectful could be described as distributed capability systems/effect systems, so I don't think they're comparable.

On infection, I think it's a bit like being infected by mitochondria :)

Post reply on HN