HN user

TheMode

180 karma
Posts6
Comments158
View on HN

You don't have to teach people about the limits, you could build a discord client on top of a "a method to query messages, and another to render to a framebuffer through software rendering" and show them how much faster it could be how much less memory it could use.

The problem is exactly that this is not that simple. I believe that there is a huge gap between the theory of a chat application, and the way they are implemented now. I do not believe it is about better abstraction layers, personally I have always found explanations using raw sockets and bits the simplest.

If you were to ask a programmer to write a discord client, you would very likely end up with a giant mess that somehow break a few months later at most (if ever). Even though they would be able to flawlessly go through the program flow step by step if you asked.

Discussions about efficient code kind of avoid the topic, I don't believe we are in a situation where multithreading is relevant, the bloat is on another level. The bloat is generally not related to whatever language you use, the O(1) or O(n) algorithm you choose, but more likely the overall control flow of the program which you already understand in your head but cannot figure out how to act on, and the inability to make simple problems simple to solve (like the calculator, text editor, or even games)

Now you are probably right about Casey ultimately doing what he likes, and even if suboptimal make other people aware. Although I would believe that this benefit comes somewhat in spite of himself.

Have you looked at the Roc language? It has a lot of similarities to what you're describing.

Gave it a look and unfortunately, I don't think I have seen the similarities? It has environment/IO access, call host language functions, and doesn't really strive to be reimplemented by independent people.

But I kinda like having clean clothes every week. It’s nice.

Do you think it bothered them the same way as if you suddenly couldn't anymore too?

They most likely saw it as the norm, not as a huge side effect of not having washing machine

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.

"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)

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 solutions. You speak about language/libraries, what make you think it would come from those?

I do believe he is smart, just unfortunate he puts his talent on the wrong path. It's not like he does not understand the impact of simplicity/working independently, as it is how he made his "fast terminal" showcase: by tying to bypass system libraries as much as possible, transforming it into a simple (or at least less theoretical) problem.

What I am saying is that this is a natural phenomenon assuming no technical solution. People will tend to optimize their software based on the performance of their hardware.

I completely agree that many apps are horrendously slow, but given the alternative are hard pressed to arrive, I can only conclude they are considered "good enough" for our current tech level.

The difficulty involved in rewriting modern apps is one of the reason I would give that result in slow software. Can't really complain about the number of independent web browsers when you look at the spec. Ensuring the software we use is easily reimplementable by a few or one developer in a few days would go a long way improving performance.

Another reason would be the constant need to rewrite working code, to work on new platforms, to support some new trendy framework, etc. etc. You cannot properly optimize without some sort of stability.

I have actually watched many of his videos, as an individual I very much like his advices. What I am saying however is that this has nothing to do whatsoever with improving software at scale.

But my point still stands, Casey focuses solely on the cultural aspect but completely ignore the technical one. He says that developers became lazy/uninformed, but why did that happen? Why would anything he currently say solve it?

I don't believe this is the root cause, computers got faster, and software got quicker to the state of "run good enough". I'm calling Wirth's law on it.

"Clean code" is indeed often a bad idea, but you are overestimating the impact. Even software written by people caring very much about performance consume way more than it theoretically should.

Plus, if this was that simple, people would have already rewritten all the bad software.

Your message is exactly the reason why I do not like Casey, he is brainwashing everyone into thinking this is a culture problem. Meanwhile nobody tries to solve it technically.

I personally do not like how his solution boils down to "just learn more" which may be true at an individual level, but not as the general solution to awful software.

You will never be able to force developers worldwide to start writing everything in C/Assembly, or even to care beyond "it performs fine on my machine". Individuals can have fun micro-optimizing their application, but overall, we have the app we have because of compromises we find somewhat acceptable.

More likely the solution will be technical, making great/simple/efficient code the path of least resistance.

And the result is https://chromewebstore.google.com/detail/i-still-dont-care-a...

Personally I do not believe these popups serve any purpose, because I ultimately cannot (at least in a reasonable way) prove that the website is acting in good faith. Asking me whether the app should phone home doesn't really guarantee me pressing "no" will actually prevent the tracking.

I am continuously surprised at how we convince ourselves privacy at scale will work with a varying amount of yes/no buttons. There are 2 ways to trust software 1. be naive and check whether "privacy first" is written somewhere 2. understand the software you are running, down to the instructions it is able to execute.

The permission popups also lack granularity. When giving access to my contact list, which contacts does it actually access? Can I only give access to contacts name and not phone numbers? Is it for offline or online processing? If online, should we have another popup for internet access? But then, can I filter what kind of internet stuff it does? You go down the rabbit hole and eventually end up with a turing-complete permission system, and if you don't, your "privacy" will have some hole to it.

Why does it matter if people feel righteous? Just let them pirate, and if indeed not enough people follow what YouTube desires, let it shut down.

If they can sell their work without copyright, all good for them. It is not my fault if ideas can be indefinitely copied without anybody noticing. I am just saying that this is not worth monitoring.

Ideas should just not be treated the same as physical properties. They aren't. The market will adapt.

But for traditionally premium media, Look no further than the music industry to see how this leads. Spotify is a race to the bottom and artist basically don't get any money from their actual music anymore. Great for consumers (it's all free with ads or paying a one time subscrption to remove ads), awful for those wanting to sing professionally.

Are consumers responsible for encouraging people to sing professionally? If they aren't being paid enough, maybe that they should choose a different career. Its a rough thing to say, but this wouldn't have happened to begin with if the music industry didn't become that big due to copyright.

This decomposition of media to "just data" doesn't work at all in the favor of respecting art. are you really to blame for "just grabbing trees?", or "just grabbing reverbs in the air"?

Trees are physical. I don't believe that I should dig up your tree to put it in my garden. But I should have the right to take its picture and try to grow the same.

Bytes are bytes, you are the one imposing their values. Copying more files doesn't steal money from its author.

Yes? If you value a product and you choose to not pay for it but consume it anyway,

These are only products because we have laws allowing them to be. It is mostly an artificial market. Without copyright these authors would probably do something else. Just because they decided that their work is worth money doesn't mean I should give them. Otherwise maybe that I should bill you for looking at my eyes if I decide so, would be unethical not to.

You saw a piece of candy on the shelf and chose to pocket it. That would be considered unethical.

If I could duplicate that candy and leave with it, I would. Is it unethical? You are really trying to make the comparison between intellectual property and physical matter, but one can be duplicated and freely shared while the other cannot.

The problem is that you assume that author must be a job, while I do not believe that they should be particularly protected. There will be less of them and its not necessarily a bad thing. If you wanna get paid get funding beforehand.

sure, life is all about compromises. I had plenty of rich friends take things for granted in grade school that my parent literally could not afford. I probably "lost" some rich friends because I could not engage in such actiities. Such is life.

Sometimes you indeed have to cope, not everything can be accessible. But in the case of digital data it is definitively possible, and people are independently distributing torrents, not like movie studios have to distribute their own work for free.

More digital piracy would also overall mean less production, and so less expectation from consumers, and less barriers for the people who cannot afford everything (or anything really). Going back to a more "organic rate" of story telling. Stories have always existed after all.

And honestly, it's just the dishonesty that bothers me the most. Some just don't want to say they do bad things. At least own up to it. I pirate, sometimes I just don't care. I'm not a good person. There, easy.

Maybe that I am a bad person too then. But its a pretty quick reasoning, am I really to blame for downloading bytes over the internet? Why couldn't you blame all the creators for expecting this sort of income? am I to blame if their work only has value when imposed?

It could be part of Meta ToS. Saying that all your friends are allowed to ask payment for eye contact. Hopefully you read it already.

Consent is a really hard thing to guarantee. You have already lost. There is no moral stance to have here, its all made up agreement.

You are acting like entertainment exists in a vacuum. You go about your day, consume some movie, then go back to your life as if nothing happened.

In practice, new entertainment entices more people into consuming it. For example lets say your group of friend suddenly became huge fan of some unknown show, you didn't see it but they keep talking about it for days. You then notice that it costs $500. You indeed have the choice to not watch it, its not like you ever felt the need to before it has been mentioned to you, but won't you?

This example is a bit excessive but these kind of events happen all ever the case for entertainment that cost a fraction of it. The problem is that it stacks up.

As for your immoral accusation, its perfectly fine if you think this way, but I also believe that it is perfectly fine to think the opposite way. The only things companies can lose from piracy are potential sales, and ultimately if people aren't willing to pay for it I believe that it is fine for the company to shut down. Why should they be forced to pay for something they can access without causing any harm?

So if we encouraged people to make such terms to help with their end of month, looking at people would become immoral?

Pieces of paper/text shouldn't be able to dictate what is moral outside of common sense. The world I describe above would become a worse place for everybody.

Here, the problem is that the artist put a lot of time into making the song because there is the expectation of that term and the ability to extract money out of it. Without this expectation, none of it would feel immoral for either of both side.