• 1 Post
  • 19 Comments
Joined 5 months ago
cake
Cake day: March 23rd, 2025

help-circle

  • Tbh, that won’t be useful, like the guy above stated.

    Google searches are very similar in terms of work that needs to be done. You could expect the average and the median to be very close. For example, take these numbers: 1,1,2,2,3. The median is 2, the average is 1.8.

    AI requests vary wildly. GPT-5 for example uses multiple different internal models ranging from very small text-only models to huge, reasoning models and image generation models. While there’s no way to know how much energy they use without OpenAI publishing data, you can compare how long computation takes.

    For a fast, simple text-only answer ChatGPT using GPT-5 takes a second or so to start writing and maybe 5 seconds to finish. To generate an image it might take a minute or two. And if you dump some code in there and tell it to make large adaptions to the code it can take 10+ minutes to generate that. That’s a factor of more than 100x. If most answers are done by the small text-only models, then the median will be in the 5 second range while the average might be closer to 100 seconds or so, so median and average diverge a lot.


  • That’s what you think is good about hacking? That’s not how this works. That’s not how any of this works. That’s what you get when you get your education from TV.

    Hacking means “misusing/modifying crap to work how you want”.

    Ethical hacking is e.g. modifying devices you own to run software you want, like e.g. running homebrew software on a game console. It is finding and reporting security vulnerabilities so that companies can improve their security. It is modifying software or devices to e.g. removing privacy problems or tracking.

    And ethical hacking and law-abiding hacking aren’t the same either, since some ethical hacking activities might be illegal (e.g. violating restrictions on modifying devices) and some legal hacking activities might not be ethical (e.g. using legal hacking to dox people).




  • Step 1: DO NOT DO ANY UPGRADES. Get your printer working, get familiar with printing.

    Step 2: Once you are comfortable with your printer, pick a single upgrade and do only that. Reassemble the printer completely, print something, get comfortable.

    Step 3: Once you are comfortable with the upgrade, repeat step 2 until the printer is good or you get bored with upgrading.

    Every friend of mine who did “all the upgrades” at once ended up with a pile of garbage that they didn’t get back together and that I had to painstakingly fix for them.

    Do only one at a time, and make sure you get good with your machine before doing upgrades.

    Also, start with the small and simple upgrades before taking on the difficult ones.






  • He’s using simple examples that everyone knows and understands instantly. It’s like using a minimal test case to report a bug. In most cases a minimal test case is also nonsensical on its own, but it’s used to show an issue that occurred in a more complex context without overloading the reader with useless garbage info that doesn’t contribute to the point at hand.




  • I’m kinda surprised that pretty much nobody who commented here seems to have understood the point of the post.

    It wasn’t about readability at all.

    It was about designing APIs that the IDE can help you with.

    With RTL syntax the IDE doesn’t know what you are talking about until the end of the line because the most important thing, the root object, the main context comes last. So you write your full statement and the IDE has no idea what you are on about, until you end at the very end of your statement.

    Take a procedural-style statement:

    len(str(myvar))

    When you type it out, the IDE has no idea what you want to do, so it begins suggesting everything in the global namespace starting with l, and when you finish writing len(, all it can do is point out a syntax error for the rest of the line. Rinse and repeat for str and myvar.

    Object-oriented, the IDE can help out much more:

    myvar.tostring().length()

    With each dot the IDE knows what possible methods you cound mean, the autocomplete is much more focussed and after each () there are no open syntax errors and the IDE can verify that what you did was correct. And it you have a typo or reference a non-existing method it can instantly show you that instead having to wait until the end of the whole thing.



  • Did we read the same blog post?

    Not a single time did OOP talk about readability. That was not a point at all, so I don’t know why you are all about readability.

    It was all about having a language that the IDE can help you write in because it knows what you are talking about from the beginning of the line.

    The issue with the horrible one-liner (and with your nicely split-up version) is that the IDE has no idea what object you are talking about until the second-to-last non-whitespace character. The only thing it can autocomplete is “diffs”. Up until you typed the word, it has no idea whether sum(), all(), abs(), <, >, or for-in actually exist for the data type you are using.

    If you did the same in Java, you’d start with diffs and from then on the IDE knows what you are talking about, can help you with suggesting functions/methods, can highlight typos and so on.

    That was the whole point of the blog post.


  • The argument is not silly, it totally makes sense, and your point even proves that.

    A lot of libraries use module-level globals and if you use from imports (especially from X import *) you get exactly that issue.

    Yes, many more modern APIs use an object-oriented approach, which is left-to-right, and that’s exactly what OOP is argueing for. If you notice, he didn’t end the post with “Make good languages” but with “Make good APIs”. He highlights a common problem using well-known examples and generalizes it to all APIs.

    The auther knows full well that this blog post will not cause Python to drop the List comprehension syntax or built-in functions. What he’s trying to do is to get people to not use non-LTR approaces when designing APIs. All the points he made are correct, and many are even more pressing in other languages.

    For example, for a hobby project of mine I have to use C/C++ (microcontrollers). And this problem is huge in C libraries. Every function is just dumped into the global name space and there’s no way to easily find the right function. Often I have to go to google and search for an external documentation or open up the header files of a project to find a function that does what I want, instead of being able to just follow the IDE autocomplete on an object.

    And sure, if I know every library and framework I use inside out and memorized all functions, methods, objects, variables and fields, then it’s easy, but unless you work 30 years in a bank where you maintain the same old cobol script for decades, that’s not going to happen.