Remix.run Logo
torginus a day ago

Personally I'm quite sure this is super interesting, but I don't really have 3 hours to listen to this, even 1.5h at 2x speed is too much.

I would very much prefer something written down, so I could absorb this at my own pace. I know, gift horse, but still.

xen0 a day ago | parent | next [-]

Thanks to modern playback technology, you can pause it and resume play later at your convenience.

DanielHB 5 hours ago | parent | next [-]

Casey mentions that at some point one of these great minds were upset that it was so difficult to write programs because they didn't have things like keyboards or screens. One of them even brings up exciting new developments in electronic typewriters that could be used to improve their workflows.

a day ago | parent | prev [-]
[deleted]
pton_xd a day ago | parent | prev | next [-]

It's worth the listen if you're even mildly interested in the history of computer science. He's a great presenter. I guess at some point you do have to prioritize how to spend your time, though.

MobiusHorizons a day ago | parent | prev | next [-]

It is quite long, but I thought it was worth it if you can find the time. Short of that I think just reading the Knuth article the quote is from might bring similar insights.

andai a day ago | parent | prev | next [-]

Maybe go for a long drive? Long walk? Whatever floats your boat.

I used to do manual labor and I would work my way through like eight hours of audiobooks per day.

torginus a day ago | parent [-]

I've noticed after I've switched to audiobooks that my retention is horrible compared to reading. For actual complex topics, it's even worse.

pitched a day ago | parent | next [-]

I’ve found this too but I think audiobooks still have a place, they just can’t something you rely on being able to perfectly understand. A second book on the same topic or something in a topic loosely related but interesting. Or fiction to help stay awake on long road trips.

Rendello 20 hours ago | parent | prev | next [-]

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)

torginus 19 hours ago | parent [-]

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.

Rendello an hour ago | parent [-]

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.

yoyohello13 21 hours ago | parent | prev [-]

I agree. I use audiobooks for fiction. For learning I need to read the thing to really retain anything.

knollimar a day ago | parent | prev | next [-]

If you want a spoilery TLDR: It's more about the journey. He tracks down the origin, finds the support, finds the support flawed, and leaves you to your own conclusion rather than make a new flawed one.

The basic idea is that the origin assumes a highly critical inner hot loop, don't assume where it is, and optimize there.

There's some other time spent saying this justifies slower abstractions for maintainability elsewhere.

abainbridge a day ago | parent [-]

Another point I liked was that there was, apparently, an influential book called Structured Programming, whose content was so universally agreed upon, that all programming became Structured Programming. Nobody needs the book anymore.

jasomill 20 hours ago | parent | next [-]

https://dl.acm.org/doi/abs/10.5555/1243380

See also

https://dl.acm.org/doi/epdf/10.1145/356635.356640

mrkeen a day ago | parent | prev [-]

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.

tialaramex a day ago | parent | next [-]

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 unbothered by context. Want to go from the middle of this code about employee payroll processing to mid-way through initializing a weather simulation? No problem. Well. No problem for the machine, for a human programmer it's a complete nightmare. Actually that's putting it mildly, nightmares have more structure. You cannot do anything like that with for example C's goto.

You compiler can, and in a few cases (that's what the discussion about the tail-call optimisation is about for example) it will, but the program you wrote doesn't do this and so you don't have to try to keep the whole program in your head.

So in that sense GOTO died out with, maybe BASICs? I think the BASICs tend to have that wolf nature GOTO feature, but nothing modern has it.

a day ago | parent | next [-]
[deleted]
hirvi74 a day ago | parent | prev | next [-]

So, I have never seen anyone actually use GOTOs, so maybe a lot of the stigma comes from excessive, poor usage or something.

However, having written a good chunk of ASM in my life. I don't think jumps or branches are really that hard to follow. Jumps/Branches and GOTOs specify the next location. It is not as though one has to guess where.

It's not the arrow, it's the archer that is the problem.

tialaramex a day ago | parent [-]

Never as in, in BASIC, or you've never seen goto in C? The de-fanged C "goto" is all over the place in Linux and in similar close-to-metal C software. C does not (yet, likely C2Y will fix this) have labelled break, so goto is used to say "I am inside a mess of nested loops, we're done, end the loops" and as a catch-all failure handler in some codebases.

My guess is that your ASM is inflected by structured programming everywhere. Yes, unlike COME FROM we can see where we're going next with GO TO but if you go back 60+ years there is some scary code that even today's optimizers probably wouldn't emit because it's too crazy. Suppose calculate-total-fuel ends with three CPU instructions which copy register F into register H then add register C to it and multiply the sum by four. Over in locate-horizon it so happens we need to add two things together and multiply them by four and we could do that last. So, if those two things were in registers F and C we could just GO TO that last part of calculate-total-fuel.

You're correct that we don't need to "guess where" it goes, but good luck understanding why the program works when it's like this, let alone the ordinary maintenance work of making small modifications.

AnimalMuppet a day ago | parent | next [-]

> My guess is that your ASM is inflected by structured programming everywhere.

I think you're probably right. To expand on this:

In asm, you can have things that are clearly functions. You have a stack discipline going in and out of them. They end with stack cleanup, then a RET or some such, which pops the return address off of the stack and jumps to it. Within that function, you have JMP instructions (or whatever) that move around within the function. You may also call other functions, by pushing variables on the stack, and then calling JSR or whatever to push the program counter on the stack and jump, and when those functions return, you'll be right where you were in this function. That's all sane, and it's "structured assembly".

Non-structured assembly would be like the example in your second paragraph. You're in one function, and you JMP (not JSR) into the interior of a second function. Or, you simply don't have functions, just labels that you jump around do. That's not structured, and not sane.

hirvi74 19 hours ago | parent [-]

I have no idea what the parent meant by, "My guess is that your ASM is inflected by structured programming everywhere."

(I am the GP)

Your response was far better than mine. If those instructions were executed more than a couple of times and the constraints/assertions were identical, I'd absolutely throw them in a function. I'll handle what I need to before/after the function.

I would never branch to some coincidental label. That is why I love ASM so much. If you are sloppy or lazy, you will most likely be punished severely for those choices.

(Tangential, but when I first learned ASM in college, I felt like I learned more in that one semester than all the sum of all classes in my entire degree.)

tialaramex 17 hours ago | parent | next [-]

By "inflected by..." I'm suggesting that Structured Programming has altered how you write assembler even though of course assembler doesn't inherently provide that structure.

When you need to do X here and there, you write code to X and then you call it where it was useful - you don't have code in one function just jump to a label in a completely different function because, in this era where structured programming is taken for granted - that seems crazy. And it is, but only the same way that chattel slavery seems crazy today, in the Antebellum South it was just usual and likewise in 1950s computer software just jumping into unrelated code was normal.

Jach 16 hours ago | parent | prev [-]

One of the principles of structured programming is that you organize your code into functions, and that they have single points of entry, and single points of exit. We still have a lot of multiple points of exit in functions these days, but the reasons for them usually fall into either those of clarity (less nesting/branching) or performance by skipping unnecessary work, and the consequences of them are less dire in modern high level languages because such languages have GC (no fear of skipping a memory cleanup step) and features like try..finally to ensure code closing file handlers or logging or whatever is executed at the end. But we have largely eliminated multiple points of entry from most code. The main remnant I can think of is in the form of coroutines, though they are structured and limited enough (like modern gotos) and have well defined lifecycles that it's more forgivable.

hirvi74 19 hours ago | parent | prev [-]

To be honest, I do not have much experience with C nor BASIC. I only know the extreme basics of C, and I have never written a line of BASIC in my entire life. My first real exposure to programming was in high school (Java). From there, I basically went from high-level languages -> x86 -> high-level languages again -> starting to play with AArch64 in an attempt to but some grooves back in my smooth brain.

> My guess is that your ASM is inflected by structured programming everywhere.

I am not certain what you mean.

> if you go back 60+ years there is some scary code that even today's optimizers probably wouldn't emit because it's too crazy.

Why was this as common as the allegations lead me to believe? Was it just a product of time? No better way to handle such logic at the time?

As for your example, I know it is intended to be interpreted trivially, but I just want to clarify I understand you correctly. Is the issue due to locate-horizon depending on logic from a completely orthogonal operation?

If so, I see the red flag immediately. However, I do not see an issue with creating a separate function. I'd just have to be damn sure H was not storing anything used for some other upcoming operation prior to the function call, I'd check F and C for valid state (if necessary), take other potential side-effects into account, etc.

It feels a lot like the DRY advice being abused in higher-level languages, you know? I agree with expression, "duplication is better than the wrong abstraction."

tialaramex 8 hours ago | parent [-]

> Was it just a product of time?

Same reason that nobody did the Fosbury Flop at the 1948 Olympics - Dick Fosbury hasn't shown this technique yet and it's not obvious if you've never seen it that this is a better way to perform an Olympic regulation high jump. Twenty years later, he does exactly that and wins Gold and by the 1988 Olympics this is how everybody does a high jump, but in 1948 nobody knows it.

Your instinct to "create a separate function" is exactly Structured Programming.

cure_42 a day ago | parent | prev [-]

Windows batch, no?

tialaramex a day ago | parent [-]

COMMAND.COM in its batch mode? Kinda, sorta. The interpreter can AIUI "call" other files but the "goto" is restricted to the same file.

So we can jump over a variable declaration which is pretty confusing, but we can't jump into unrelated code.

Also while COMMAND.COM can't be as old as BASIC it must be pretty old.

knollimar a day ago | parent | prev [-]

No, they're not sarcastic. It was an interesting point; if an idea succeeds well enough people just do it and make it "common sense". It's a point in the talk.

brabel a day ago | parent | prev | next [-]

This is one talk that is worth the 3 hours (the talk is 2 hours, plus a qa with none other than Ginger Bill of Odin fame)!

bena a day ago | parent | prev | next [-]

The last hour is a Q&A. I don't know if that changes your perception of how watchable it is.

It's also a little fluffy. It's basically the history of how the book Structured Programming came about, because it's that book that essentially caused Knuth to write an article that contained the quote.

A lot of it is fairly interesting but it also highlights a big problem I do have with Muratori. He generalizes from self. He didn't fully understand or appreciate the quote about premature optimization, so no one did. And even though he's been told what it actually means, and was probably pointed to the full quote, he would stick on his interpretation. It's likely someone he views as "higher", like Jon Blow, challenged him and then he took the time to actually look at it.

Pannoniae a day ago | parent [-]

"He didn't fully understand or appreciate the quote about premature optimization, so no one did."

He ain't wrong though.... most people definitely don't get the jive for sure. Knuth was talking about a massively different kind of optimisation than what we do today yet people keep continuing to parrot the 97% figure uncritically like as it was some gospel. [0]

[0] http://www.joshbarczak.com/blog/?p=580

bena a day ago | parent [-]

[flagged]

Pannoniae a day ago | parent [-]

He made middleware used by countless games over at RAD. I'd say that counts as contributing to game development.

bena 20 hours ago | parent [-]

I didn't say he didn't contribute. I said he wasn't famous for it. And he's not. He's famous for his streams and talks.

kshallvari a day ago | parent | prev | next [-]

There is a 45 min version at Primeagen's "The Standup"

philippta a day ago | parent [-]

Having watched both, they cover completey different topics.

wpm a day ago | parent | prev | next [-]

Audio transcription has been around for a while, you could solve this problem for yourself quite easily.

andai a day ago | parent [-]

I get the auto-transcript with yt-dlp then ask a cheap LLM like DeepSeek to clean it up.

Though lately I've been uploading the audio to AssemblyAI, I somehow still haven't used up my credits after several years lol

At one point I built a system that would summarize the transcript and I'd be able to ask questions about it, but Gemini can do that natively now so I usually just use that.

ggdG a day ago | parent | prev | next [-]

I asked my clanker to summarize it for me:

https://rentry.co/2ttr46r9

gessha a day ago | parent | prev [-]

It’s on YouTube, pull the transcript and format it with an LLM. If there’s no transcript, there’s Whisper. All of this can be done with local models too.

JavierFlores09 a day ago | parent [-]

Audio transcription is nowhere near the same as a properly written piece of text. Videos are simply a different format, and thus a lot of the communication is held by the fact that there's visual cues to go by. If one were to write an article about the same, you'd use much denser language as well as references/links around the topic. Maybe even restructure the whole thing to communicate it better through text.

It is something you can maybe whip up with the help of an LLM but then you're left wondering whether it is actually communicating what the video intended to begin with, as you wouldn't be as knowledgeable about the topic, one wouldn't be able to spot the parts where an LLM interpreted something horribly and thus reaching the wrong conclusions.

For all of the above, I do not consider audio transcript to be of any help when one prefers written content. It is useful for translation or people with hearing issues, but both of those receive help of the visual parts to convey the topic.

gessha 16 hours ago | parent [-]

Yes but in the absence of a blog version, what are you going to do?