• 1 Post
  • 33 Comments
Joined 1 year ago
cake
Cake day: June 19th, 2023

help-circle

  • As others have mentioned, how much and what kind of math you need depends heavily on what you do. And while I wholeheartedly encourage you to do what you enjoy, be it with or without maths, I would like to offer another perspective: A loveletter to maths.

    Math in general gets a lot easier and more fun the longer you do it and the more interest you can build. Often the people that teach math are extremely good at it, and maybe because of that they suck at explaining it. There is a lot to doing it right.

    First of all, I think you need to build excitement. Math strives to describe the world! Math is the foundation of science, math is history, and many of the concepts and techniques arose out of necessity… Or sometimes spite! There are many funny stories or interesting people behind the formulars and concepts you encounter. Learning why the hell some math was even invented and how the guy or gal got the idea is 1000x more interesting than just getting an example for the application of it. It helps you remember stuff.

    Then there are a dozen ways to explain every single concept and then some. You will find some much more intuitive than others and the sum of them will sharpen your understanding of them. Looking for different explanations for the same thing can be a great help. Did you know many things in maths where discovered multiple times? That happens a lot, because even brilliant mathematicians don’t properly understand each other, or even themselves.

    Another thing you should do is to always develop your vocabulary for every domain/concept you encounter. People will throw around made-up words and symbols like no tomorrow. Often, there are simple concepts behind them, hence they are casually abstracted away. You need to understand the concept and then translate it into your own words and then draw a connection back to the made up stuff. Maths is a lot like programming. 1 + 1 is just a function, returning a result. So are integrals, formulas in vector algebra, and every single damn other thing in maths. Just follow the chain!

    And finally, there are also some amazing insights hidden in maths. Gödel’s incompleteness theorems might send a chill down your spine once you grasp their implications. Computability and information theory will shape your view on the world and yourself.

    I went from getting Ds to Bs to advanced theoretical CS courses and you can do it too. You don’t have to, but you can.



  • Tons of people making Python comparisons regarding indentation here. I disagree. If you make an indentation error in Python, you will usually notice it right away. On the one hand because the logic is off or you’re referencing stuff that’s not in scope, on the other because if you are a sane person, you use a formatter and a linter when writing code.

    The places you can make these error are also very limited. At most at the very beginning and very end of a block. I can remember a single indentation error I only caught during debugging and that’s it. 99% of the time your linter will catch them.

    YAML is much worse in that regard, because you are not programming, you are structuring data. There is a high chance nothing will immediately go wrong. Items have default values, high-level languages might hide mistakes, badly trained programmers might be quick to cast stuff and don’t question it, and most of the time tools can’t help you either, because they cannot know you meant to create a different structure.

    That said, while I much prefer TOML for being significantly simpler, I can’t say YAML doesn’t get the job done. It’s also very readable as long as you don’t go crazy with nesting. What’s annoying about it is the amount of very subtle mistakes it allows you to make. I get super anxious when writing YAML.





  • If you gonna rant, please make it at least comprehensible. You went from “JS is flawed” to “everyone is wrong these days” within three paragraphs like wth.

    I also highly disagree with your premise that people think ‘simple is bad’. Things that are complicated are usually complicated for a reason. C++ for example is complicated, because it grew over decades. Rust is complicated, because it tries to be secure, capture mistakes at compile time, while allowing for concurrency and memory management, and at the same time be very efficient and give the programmer much control. It’s hard if not impossible to achieve all these goals in a language without making it complicated.

    Go on the other hand is not complicated, because Google engineers saw C++ and wanted to make something less complicated - and thus they created a simpler language. This is an example that goes directly against your argument, together with many other modern languages and frameworks that were created for reasons like this. But notably and more importantly, the most popular languages are simple. Python, JS/TS, Java - These languages are all relatively easy to use.

    I won’t pretend that I get you bit about WASM since I have little experience with it, but as far as I understand it is primarily a vehicle allowing to use programming languages for the web that weren’t designed for it. And as far as I’m aware you can do quite sophisticated things with it, so where exactly is the problem? Putting guardrails in place is rarely a bad thing, because they are easy to remove but hard to establish retroactively.



  • I don’t know and I won’t pretend it does have any statistical significance. I will just say that I have read dozens of papers and anecdotally, the results were questionable in almost all cases. And not because of the possibility that they might have missed something, but because of basic shortcomings. Some don’t even state how often they repeated their experiments, software versions, whether they accounted for caching effects, (system) temperature, hardware characteristics, you name it.

    That’s why I wouldn’t name papers a prime example for clean benchmarking. The quality on YT news outlets like Gamers Nexus or Hardware Unboxed is higher than most of them by far.







  • It allows for more fine grained access control and to implement afterthoughts.

    Think having some private function that can break things if called improperly, but also allow you to avoid significant overhead when calling it the correct way. For example you could be avoiding input validation in a public wrapper for that function. If your friendly class already does it, or cannot produce invalid inputs, there is no need for that.

    You could also implement logging after the fact, because your friendly logger object to read private members.

    Arguably it’s a questionable design decision tho, as you could do all of this in other ways and it basically breaks any guarantees private would usually give you.