Live data from Hacker News

Is software abstraction killing civilization? (2021)

datagubbe.se

191–200 of 219 posts

Re: Is software abstraction killing civilization? (2021)

#191

Earlier quoted context omitted.

The details being hidden on toys doesn't mean they're not relevant to a course training people to be developers...

Yes, but it does mean they might not know what they are before they take said course.

Dunno, that's what high school level computer courses are for. I was in high school in the early 00's and they taught us stuff like Word, Excel, HTML, basic computer literacy stuff like filesystems, how to touch type, etc... And that was a required course in a public high school...

Re: Is software abstraction killing civilization? (2021)

#192

Earlier quoted context omitted.

I don’t think you can blame him for not having a large scale systemic solution to the problem. Imagine if there was a chef on YouTube who was telling everyone how bad it was that we are eating over processed food, and he makes videos showing how easy it is to make your own food at home. Would it be reasonable to comment to people who share the chefs message that you don’t like how his cooking videos don’t solve the r…

But he says that he has a large-scale systemic solution, it is literally the reason for his videos. He isn't doing it so I can get my CPU trivia, but because he believes it will result in better software. Been at it for years, and so far I don't think it's going better. My opinion is that better software will not come from CPU-aware people, but from people having enough of all the BS and switching to simpler solution…

This is such an absolutely wild take to me. Screw those Mythbusters guys trying to explain the scientific method to people. That's not a systemic solution to fixing scientific illiteracy in the US. Sesame Street teaching kids to count? Those guys are way off the mark because it's not going to measurably improve economic performance. You'll never actually change anything just by teaching people stuff.

I'm 100% certain that Casey Muratori doesn't think that his paywalled course is going convince literally every programmer to to care about performance, or to stop Facebook from building slow apps.

He's trying to convince some small percentage of people that performance is something they should be thinking about when they program, and that they should understand the tradeoffs they are making when they choose to use some slow method, algorithm, library, language, or system because it provides some other benefit.

When someone writes a book like "math for dummies" that says on the back cover "I think basic math is a useful skill for everyone to have, and if we all learned basic math the world would be a better place!"

That's not the author stating their true belief that their book is going to literally teach the majority of the world basic math. That's an aspirational goal or in the worst case it's sales copy.

Publicly calling that person out for wasting their time is really something else.

Creating straw men to attack like "You will never be able to force developers worldwide to start writing everything in C/Assembly" when he explicitly states that this isn't his goal makes me think you're just looking for some reason to shit on the guy.

>You speak about language/libraries, what make you think it would come from those?

I have no idea when if or how a technical solution will be found.

Re: Is software abstraction killing civilization? (2021)

#193

Earlier quoted context omitted.

But he says that he has a large-scale systemic solution, it is literally the reason for his videos. He isn't doing it so I can get my CPU trivia, but because he believes it will result in better software. Been at it for years, and so far I don't think it's going better. My opinion is that better software will not come from CPU-aware people, but from people having enough of all the BS and switching to simpler solution…

This is such an absolutely wild take to me. Screw those Mythbusters guys trying to explain the scientific method to people. That's not a systemic solution to fixing scientific illiteracy in the US. Sesame Street teaching kids to count? Those guys are way off the mark because it's not going to measurably improve economic performance. You'll never actually change anything just by teaching people stuff. I'm 100% certain…

"Math for dummies" book writers don't argue that mathematicians are stupid/incompetent because they do not spend enough time on the basics.

It has also nothing to do with teaching people to count, read, or the scientific method. Every. Single. Software I use is bloated, I am unaware of any software solely consuming that it should, nothing is close to the theoretical limit, this is not a knowledge issue. If you have such software in mind feel free.

Casey continuously says that the problem with software is that developers do not understand performance, and so that the problem will be solved once they do. I am not overly familiar with his paid course, but he did stuff before that. He has essentially the same opinion as Jonathan Blow.

The course being paywalled isn't really an argument for either of us, on his side it is most likely a compromise, just because this isn't the grand plan to convince millions of developers doesn't mean he doesn't intent for it to help his cause.

Casey believing the problem at scale to be cultural isn't some guess, I actually asked him: https://x.com/cmuratori/status/1687138791356833793

> that this isn't his goal makes me think you're just looking for some reason to shit on the guy.

You can consider it a hyperbole if you want, but essentially what I am saying is that he wants to put the burden on the developers, without really changing the underlying structure.

I am not shitting on him for the sake of it. I do really like his (and Jonathan) observations, and I will continue to watch them, I just find it unfortunate that both waste their time on solution that will not affect anything at scale (one with a custom language, the other with specialized course)

Re: Is software abstraction killing civilization? (2021)

#194

Earlier quoted context omitted.

Yes, but it does mean they might not know what they are before they take said course.

Dunno, that's what high school level computer courses are for. I was in high school in the early 00's and they taught us stuff like Word, Excel, HTML, basic computer literacy stuff like filesystems, how to touch type, etc... And that was a required course in a public high school...

Computer classes in HS don't really cover that anymore. It gets worse the less relevant file systems are to non-techies. Documents are just a thing search for these days. People also learn and retain learning of what they practice, you would have to get them to use file systems, and then get them to continue using file systems for that information to stick.

Re: Is software abstraction killing civilization? (2021)

#195

I think JavaScript on the server and React and these things has really made the web a mess of software development compared to how little stuff it actually does. I know for a fact a bunch of kids now do not even know that HTML is what gets rendered in the browser. They think that React is itself what browsers render. Not to mention the absolute idiot of a CEO of Vercel who thinks React is the Linux kernel of developm…

> a bunch of kids now do not even know that HTML is what gets rendered in the browser. They think that React is itself what browsers render.

Ironically, they are right and you are wrong.

HTML is a serialization format, which browsers use to construct a DOM in memory.

React renders directly to the DOM without ever serializing anything to HTML.

The fact that you got this wrong and are so highly upvoted really drives home the “old man shakes fist at clouds” nature of this thread.

Re: Is software abstraction killing civilization? (2021)

#196

I teach the systems class at Montana State, where we go from transistors up to a real computing system, and I have students that don't understand what a file system really is when they start my class I agree that blow is wrong on some details, but I really think we need to be thinking hard around a NAND-to-Tetris style education that starts in high school for our technical students. I use "outdated" models like Littl…

> But How Do It Know? The Basic Principles Of Computers For Everyone https://archive.org/details/jclarkscottbuthowdoitknowthebasi...

i teach two weeks from this book, great resource

Re: Is software abstraction killing civilization? (2021)

#197

Earlier quoted context omitted.

This is such an absolutely wild take to me. Screw those Mythbusters guys trying to explain the scientific method to people. That's not a systemic solution to fixing scientific illiteracy in the US. Sesame Street teaching kids to count? Those guys are way off the mark because it's not going to measurably improve economic performance. You'll never actually change anything just by teaching people stuff. I'm 100% certain…

"Math for dummies" book writers don't argue that mathematicians are stupid/incompetent because they do not spend enough time on the basics. It has also nothing to do with teaching people to count, read, or the scientific method. Every. Single. Software I use is bloated, I am unaware of any software solely consuming that it should, nothing is close to the theoretical limit, this is not a knowledge issue. If you have s…

>"Math for dummies" book writers don't argue that mathematicians are stupid/incompetent because they do not spend enough time on the basics.

His argument isn't that they don't spend enough time on the basics. His argument is that they don't know the basics even exist.

This is true in my experience. I've interviewed scores of candidates over the years who just have absolutely no mental model of what is going on under whatever abstraction layer they generally work in.

Making trade offs to sacrifice performance for things like developer speed is fine. But if you're not aware you are making those trade offs, I might not call you stupid, but I will call you ignorant.

>Every. Single. Software I use is bloated, I am unaware of any software solely consuming that it should, nothing is close to the theoretical limit, this is not a knowledge issue.

It's not binary. There's a continuum. No software is ever going to use exactly the minimum theoretically possible number of instructions and memory over the entire program.

But some software is worse and some is better.

It is possible to believe that the problem can be solved by changing the culture, while simultaneously believing that you aren't going to be able to completely change the culture. While also believing that you can shift the culture ever so slightly such that you make it just a little bit better.

You can also hold all of the above beliefs while believing that there is a systemic underlying issue that you have no idea how to solve.

From my observations (having watched a good bit of early handmade hero and a good bit of his paid course) the above is pretty close to his beliefs.

It's also fairly close to my own thoughts on the subject. The underlying issue is that software is an industry that primarily competes on features, not quality. I think the reasons for that are numerous--everything from software being an immature industry, to the distorting effects of cheap money flowing into the industry from the previous few decades.

I believe this will work itself out to some degree over time as the industry becomes more mature and we start to see more diminishing returns for just adding new features. Developers will start to look towards other things to differentiate themselves and quality/performance could be one of them.

I don't think there's anything I or Casey can do to change the market dynamics, and I can't think of a technical fix to this issue. I suspect Casey can't either.

I also think that there are niches today where performance and quality can outcompete more features.

Given all the above, I think pushing to convince a small percentage of people that spending a bit more time thinking about performance is a rational goal. Maybe it's the best you can do. But maybe you end up with just a few less wasted cycles in the world. Maybe you end up with a few more pieces of software that feel snappy and pleasant to use than you otherwise would have.

Re: Is software abstraction killing civilization? (2021)

#198

Earlier quoted context omitted.

"Math for dummies" book writers don't argue that mathematicians are stupid/incompetent because they do not spend enough time on the basics. It has also nothing to do with teaching people to count, read, or the scientific method. Every. Single. Software I use is bloated, I am unaware of any software solely consuming that it should, nothing is close to the theoretical limit, this is not a knowledge issue. If you have s…

>"Math for dummies" book writers don't argue that mathematicians are stupid/incompetent because they do not spend enough time on the basics. His argument isn't that they don't spend enough time on the basics. His argument is that they don't know the basics even exist. This is true in my experience. I've interviewed scores of candidates over the years who just have absolutely no mental model of what is going on under…

I completely agree that some (if not the majority of) developers aren't aware of what's happening under abstraction layers, but then I have to ask: is it the developer fault, or the abstraction's?

If you were to ask a new programmer to make a very simple calculator which would then be distributed to various people using various devices, what would they use? How long would it take them? How much would it consume? Does this cost have anything to do with the programmer being unaware CPUs have multiple cores or that memory access is slow? Theoretically I would struggle to find a way to make this calculator takes up more than 10mb of memory (which is already more than Mario 64), both as CLI and GUI. You literally have 4 bytes instructions for add/sub/mul/div and a framebuffer, it is not like I am talking about micro-optimization, this should be the default and simplest path.

Discord takes around 400mb on my machine and will happily take a whole +3ghz core from me if I start scrolling. If I were to give a new programmer a method to query messages, and another to render to a framebuffer through software rendering, would they even succeed matching discord/chromium's bloat? Seems to me it would require some genuine effort.

You could explain me that this bloat come from fancy/convenient features, but it does not change that programmers are always exposed to complex problems even though theoretically easily composable and therefore friendlier to changes.

If you were to ask me for less theory and for a more practical example, I would say that each programs should be written/compiled to a potentially different format with the common point of being easily interpretable (stack machine, Turing machine, lambda calculus, cellular automata). Each platform (OSes, hardware) should come with a program that expose every single potential IO action, and to run an actual program requires finding an interpreter for the specific format (either made yourself in an hour at most, or downloaded) and mapping your exposed IO calls through the platform app, in the same way you would configure keybinds in a video game.

- Developers are always exposed to their lowest layer

- Programs are always cross-platform, even to future ones

- Programs are stable, increasing the chance of being optimized over time

- Heavily limit dependencies (and therefore additional abstractions)

In this example, none of it depends on understanding how CPUs work. Also does not require a change in market dynamics, individuals can start, and make it slowly gain relevance as anything written this way cannot (easily) break and become abandonware.

Ultimately, even unaware programmers are able to explain their webapp in few words, the problem is that they cannot easily map those words and have to work around frameworks which they cannot really give up on. Android/iOS helloworld templates illustrate it nicely.

Re: Is software abstraction killing civilization? (2021)

#199

Earlier quoted context omitted.

Dunno, that's what high school level computer courses are for. I was in high school in the early 00's and they taught us stuff like Word, Excel, HTML, basic computer literacy stuff like filesystems, how to touch type, etc... And that was a required course in a public high school...

Computer classes in HS don't really cover that anymore. It gets worse the less relevant file systems are to non-techies. Documents are just a thing search for these days. People also learn and retain learning of what they practice, you would have to get them to use file systems, and then get them to continue using file systems for that information to stick.

That's kind of crazy. Basic knowledge of at least one desktop OS and office suite is kind of a prerequisite to so many things that would be considered adult life...

Like, are kids writing CVs on their phones? Writing essays on their phones? iPads? Paper?

Re: Is software abstraction killing civilization? (2021)

#200
post #162

Earlier quoted context omitted.

> And we must do everything in our power to keep complexity to its minimum and avoid accidental complexity. We aren't avoiding nor minimising complexity (by being at higher levels) but merely being ignorant of it, which is okay, too; until the abstractions leak: For example, folks working in hpc / cybersecurity have no such luxury.

The idea that abstractions have to leak is a myth. We don't need fewer abstractions, just better ones. Abstractions that don't require obscuring the low-level details (e.g. typeclass/trait systems instead of interface/impl ones) help too.

"All abstractions leak, but some are useful" - me, on HN for the last few years.

Roughly paraphrased, but my meaning is clear: the best abstractions are useful ones, not leakless ones.

Post reply on HN