• 3 Posts
  • 208 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.


  • I think the reason Zealandia is called a “submerged continent” is because it is made of continental crust rather than oceanic crust.

    But IMO the best geologic definition of continents is by tectonic plates, which mostly matches up with the cultural definitions of the continents.

    For the major continents, we have these plates:

    • North American
    • South American
    • Eurasian
    • African
    • Australian
    • Antarctic

    There are several smaller plates too, like the Caribbean, Indian, and Arabian plates. IMO, we should consider these independent continents.

    There is also a dedicated Pacific plate. The ring of fire is the border of this plate.

    New Zealand / Zealandia is on the ring of fire. Half on the Australian plate, half on the Pacific plate. You can actually see the border of the two plates when you look at the topographical map of Zealandia.










  • You don’t need to provide root access just because you used GPL code, you just have to follow the GPL.

    Well, to follow version 3 of the GPL, you do actually need to provide effective root access.

    Specifically, version 3 of the GPL adds language to prevent Tivoization.

    It’s not enough to just provide the user with the code. The user is entitled to the freedom to modify that code and to use their modifications.

    In other words, in addition to providing access to the source code, you must actually provide a mechanism to allow the user to change the code on the device.

    The name “Tivoization” comes from the practice of the company TiVo, which sold set-top boxes based on GPL code, but employed DRM to prevent the user from applying custom patches. V3 of the GPL remedies this bug.