• 1 Post
  • 74 Comments
Joined 1 year ago
cake
Cake day: July 1st, 2023

help-circle


  • You often need to be pretty good at math. But not because you’re “doing math” to write the code.

    In real world software systems, you need to handle monitoring and alerting. To properly do this, you need to understand stats, rolling averages, percentiles, probability distributions, and significance testing. At least at a basic level. Enough to know how to recognize these problems and where to look when you run into them.

    For being a better coder, you need to understand mathematical logic, proofs, algebra/symbolic logic, etc in order to reason your way through tricky edge cases.

    To do AI/ML, you need to know a shitton of calculus and diff eqs, plus numerical algorithms concepts like numerical stability. This is kinda a niche (but rapidly growing) engineering field.

    The same thing about AI also applies to any other domain where the thing being computed is fundamentally a math or logic solution. This is somewhat common in backend engineering.

    I’m not “doing math” with pen and paper at work, but I do use all of these mathematical skills all. the. time.

    I am an SRE on a ML serving platform.





  • Video codecs mostly work by tracking movement, predicting which pixels will change, and striving to only encode the pixels that actually change or change dramatically. In other words, compression looks for patterns.

    All of that goes out the window when you try to compress static. There are no patterns. It simply can’t be compressed. This isn’t a matter of the algorithms not being good enough. It’s a fundamental limit of information theory.

    Anything fancier amounts to embedding the intro into the compressor as a well-known pattern. And at that point, you’re better off just caching a 4K version of the intro as a standalone video file directly in the app.




  • And it is not possible to “visualize 4D”

    Sure it is.

    • 3 spatial dimensions + time
    • 3 spatial dimensions + 1 color dimension (grayscale)
    • 2 spatial dimensions + 2 color dimensions
    • etc

    And that’s not even counting projection. All the time we interact with 3D data that’s projected to 2D (almost every photo you’ve ever looked at). There are similar ways to project 4D to 2D.

    (Not defending the video or anything, just pointing out that visualizing higher dimensions is something we know about for ages.)




  • [S]hareholders said they learned that CrowdStrike’s assurances about its technology were materially false and misleading when a flawed software update disrupted airlines, banks, hospitals and emergency lines around the world.

    I don’t see how they can make this argument.

    Falcon is a kernel module. When kernel modules fuck up, you get kernel panics.

    Sure, the layperson may not know enough about computers to recognize this, but it’s a basic enough fact about operating systems that an investor in a company like this should take the time to learn. It’s not like they hid that fact.

    If you invested in a company without knowing how their product works, that’s on you.



  • cbarrick@lemmy.worldtoRust@programming.devDioxus Labs + “High-level Rust
    link
    fedilink
    English
    arrow-up
    1
    arrow-down
    2
    ·
    5 months ago

    Fair. But unwrap versus expect isn’t really the point. Sure one has a better error message printed to your backtrace. But IMO that’s not what I’m looking for when I’m looking at a backtrace. I don’t mind plain unwraps or assertions without messages.

    From my experience, when people say “don’t unwrap in production code” they really mean “don’t call panic! in production code.” And that’s a bad take.

    Annotating unreachable branches with a panic is the right thing to do; mucking up your interfaces to propagate errors that can’t actually happen is the wrong thing to do.


  • cbarrick@lemmy.worldtoRust@programming.devDioxus Labs + “High-level Rust
    link
    fedilink
    English
    arrow-up
    5
    arrow-down
    2
    ·
    5 months ago

    Unwrap should literally never appear in production code

    Unwrap comes up all the time in the standard library.

    For example, if you know you’re popping from a non-empty vector, unwrap is totally the right too for the job. There are tons of circumstances where you know at higher levels that edge cases defended against at lower levels with Option cannot occur.