• 0 Posts
  • 87 Comments
Joined 2 years ago
cake
Cake day: July 9th, 2023

help-circle
  • There’s a lot to be said for the scale of damage that can be done with something, especially relative to the effort needed to do that damage.

    These days tech companies are doing enormous damage to people’s brains (saturating our dopamine receptors to the point that many people have depression and executive dysfunction) to turn us all into consumption machines that can only find happiness by consuming content and buying commercial products and services.

    Imagine how much more harm they’ll do when they have direct access to our neurons, without even LED pixels as a buffer in between.



  • This doesn’t look anything like a humanoid robot that’s being used in a factory. This looks exactly like a humanoid robot in a research lab (probably academic), attached to a safety harness for testing purposes.

    They were clearly running tests, probably trying out a firmware or software update, and they found a liiiiittle bug. This erratic behavior can easily be caused by a tiny subtle memory error in C/C++ code or by transcribing the wrong bits into the serialized joint motor commands.

    Please use safe languages and verifiable methods when developing software for humanoids, folks.


  • Probably the most important thing is keeping up with security fixes. I’m not an expert in web security, but my impression is that there’s a never-ending cat and mouse game between hackers and browser developers to find or patch exploits. And since browsers play such an important role in the activity of hundreds of millions… billions?.. of consumers, it has the largest possible attack surface for hackers to target.

    Then there’s things like better support for web assembly (how I would love the web dev world to break the JavaScript hegemony), and the constantly shifting web standards that are meant to make websites more capable, easier to program, and more performant. E.g. things like websockets and WebRTC.


  • There are several ways to achieve an effect equivalent to operator overloading in Rust, depending on exactly how you want the overloading to work.

    The most common is

    fn do_something(arg: impl Into<Args>) {
        ...
    }
    

    This lets you pass in anything into the function that can be converted into the Args type. If you define the Args type yourself then you can also define any conversion that you want, and you can make any construction method you want for it. It’s a small touch more explicit than C++'s operator overloading, but I think it pays off overall because you know exactly what function implementation all different choices of arguments will be funneling into.

    I’ll admit there’s one thing from C++ that I frequently wish were available in Rust: specialization. Generics in Rust aren’t exactly the same as templates in C++ but they’re close enough that the concept of specialization could apply to traits and generics. There is ongoing work to bring specialization into the language, but it’s taking a long time, and one of my projects in particular would seriously benefit from them being available.

    Still, Rust will have specialization support long before C++ has caught up to even a quarter of the benefits that Rust has over it.


  • Even with modern C++ it’s loaded with seg fault and undefined behavior footguns.

    The times when C++ feels more ergonomic than Rust are the times when you’re writing unsafe code and there’s undefined behavior lurking in there, waiting to ambush you once you’ve sent it to production. Code that is 100% guaranteed safe is always, and I really want to emphasize this: always more ergonomic to write in Rust than it is to write in C++.

    Show me any case where C++ code seems more ergonomic than its Rust equivalent, and I will always be able to show you how either the C++ code has a bug hiding in it or how the Rust code can be revised with syntactic sugar to be more ergonomic than the C++.


  • C++ was far and away my favorite language (I used it professionally for 10 years and was always excitedly keeping up with new ISO developments), until I learned the basics of Rust…

    Now it’s my firm belief that the world will become a better place when C++ stops existing. C++ just has no positive role to play in a world where Rust exists at the level of maturity that it already has.

    Whatever they might try to do to C++ to make it less intolerable will be in vain until they’re ready to break backwards compatibility. And once they’re willing to break backwards compatibility to legitimately improve the language, they’re just going to end up with a messy knock off of Rust.


  • I’m directing my criticism specifically on the technological advancement which is devoid of communal spirit, not on all technological advancement categorically.

    Crediting human achievement to technological advancement is a mistake in my opinion. Technological advancement is not inherently good or bad. Communal spirit is what determines whether technology yields positive or negative outcomes. That’s the real ingredient behind everything humans have achieved throughout history.

    Sadly techno-optimism has become a prevailing mindset in today’s world where people and institutions don’t want to take responsibility for the consequences of their actions because of belief that as-yet-unknown technological advancement will bail us out in the future, even when there’s no evidence that it will even be physically possible.

    But what I said is that your view is a sad one, not an incorrect one. The truth is, technological advancement may truly end up being the defining characteristic of humanity. After all, when we think about extinct species, we tend to associate them most strongly with what made them extinct. Just as we associate the dinosaurs most strongly with a meteor, maybe an outside observer will some day associate humanity most strongly with the technology that sent us out in a blaze of glory.


  • What a sad view of humanity to think that our one defining characteristic should be pursuit of technology rather than the ability to intelligently collaborate and thereby form communities with a shared purpose.

    I can assure you that the success of human survival throughout the history of our species has had far more to do with community and resourcefulness than with technological advancement. In fact it should be clear by now technological advancement devoid of communal spirit will be the very thing that brings an untimely end to our entire species. Our technology is destroying the climate we depend on and depleting the soil that we need for growing food, to say nothing of the nuclear bombs that could wipe us out with the wrong individuals in positions of power.





  • How exactly is an individual supposed to determine which cops will be good and which will abuse their power?

    Just as we can’t make a general statement that all cops are definitely bad, you can’t make a general statement that all cops in any particular country or town will be good.

    From a basic risk management viewpoint, it doesn’t make sense for anyone to accept the risk that any given cop won’t abuse their position, even if we were willing to accept that very few would actually do so.

    Cops have an extremely privileged status in society and the amount of damage that a bad one can do to an individual - on purpose or even by accident - is incalculable, including setting up an innocent person for capital punishment as we’re seeing unfold in Missouri right now.


  • People just don’t want to believe that China can win at capitalism because it undermines all their internal narratives around the innovation power of liberalism. I say this as someone who does not personally like China and its authoritarianism.

    The fact of the matter is with a population of nearly 1.5 billion people, you’re statistically guaranteed to have enormous pools of talent to draw on. Even a relatively modest per capita investment in education, focused on key objectives and funneled into the portion of the talent pool that they’ve managed to identify, will be able to yield massive innovation.

    A lot of people will suffer under this authoritarianism. The people from these talent pools will be exploited and burnt out at a young age. This is already happening in China. But as a nation, it will be able to position itself extremely well technologically and economically, and this is a reality the rest of the world needs to be prepared to deal with.



  • Nothing is ever better in every conceivable way than the current state of the art.

    Probabilistically, sure, but it’s not impossible that there has been some piece of knowledge or understanding that’s been missing, and that massive breakthroughs are possible once the process is figured out.

    I think a fair modern example is LED light bulbs. They are better in every conceivable way than incandescent or fluorescent lightbulbs: they last longer, use less energy, shine brighter, use less toxic materials, and are easy to mass produce. But there were several decades where much of the industry believed that LEDs would never be very useful as a light source because we could only produce red and green, and it was generally believed that a blue LED would be impossible to produce.

    Then one guy decided it would be his life mission to invent the blue LED, and the sonuvabitch did it. Now LEDs are the only sensible thing to use to produce light.

    It’s always possible for this kind of breakthrough to happen, especially in material science where the complexity of how molecules interplay is nearly incomprehensible.



  • I don’t doubt that in this case it’s both silly and unacceptable that their driver was having this catastrophic failure, and it was probably caused by systemic failure at the company, likely driven by hubris and/or cost-cutting measures.

    Although I wouldn’t take it as a given that the system should be allowed to continue if the anti-virus doesn’t load properly more generally.

    For an enterprise business system, it’s entirely plausible that if a crucial anti-virus driver can’t load properly then the system itself may be compromised by malware, or at the very least the system may be unacceptably vulnerable to malware if it’s allowed to finish booting. At that point the risk of harm that may come from allowing the system to continue booting could outweigh the cost of demanding manual intervention.

    In this specific case, given the scale and fallout of the failure, it probably would’ve been preferable to let the system continue booting to a point where it could receive a new update, but all I’m saying is that I’m not surprised more generally that an OS just goes ahead and treats an anti-virus driver failure at BSOD worthy.



  • When talking about the driver level, you can’t always just proceed to the next thing when an error happens.

    Imagine if you went in for open heart surgery but the doctor forgot to put in the new valve while he was in there. He can’t just stitch you up and tell you to get on with it, you’ll be bleeding away inside.

    In this specific case we’re talking about security for business devices and critical infrastructure. If a security driver is compromised, in a lot of cases it may legitimately be better for the computer to not run at all, because a security compromise could mean it’s open season for hackers on your sensitive device. We’ve seen hospitals held random, we’ve seen customer data swiped from major businesses. A day of downtime is arguably better than those outcomes.

    The real answer here is crowdstrike needs a more reliable CI/CD pipeline. A failure of this magnitude is inexcusable and represents a major systemic failure in their development process. But the OS crashing as a result of that systemic failure may actually be the most reasonable desirable outcome compared to any other possible outcome.