• 5 Posts
  • 7 Comments
Joined 7 months ago
cake
Cake day: April 4th, 2025

help-circle

  • Something I’ve been realizing lately is that fascism’s whole deal is adopting the appearances of trustworthy institutions like universities, activism and TV news (and apparently scientific papers) but the goal isn’t to inform it’s to persuade.

    In Germany, there is the term “Gleichschaltung” for what happened to institutions after 1933. Basically, Nazis applied pressure and bullying to get out of institutions anyone who would state a different opinion. Any institution not obeying to this was forbidden soon, even churches or organizations like the boy scouts or the “Wandering Bird movement”. And after that, a rule of violence started.

    And it is all too clear that the people in power in the US are going straight after the institutions, like universities and military. I think the political and social resistance from communities and cities is really important.

    Today I wish I had been wrong but for me it was already hair-rising for me what language e.g. the Brexit supporters were using in 2017. Fascist language has tell-tale and unmistakeable signs. It was like they were using Goebbels’ memoirs as an instruction manual.

    All the bullshit ultimately leads to the same path.

    I have been wondering for a long time what all the pervasive bullshit language e.g. in larger corporations or, say, greenwashing PR statements, means and what would be its purpose. Today I think that it is primarily power-play. It is displaying the power that somebody else can re-define reality in whatever illogical way.



  • What would really bring the state of the art forward would be automated checks whether a given interface change is really fully backwards-compatible or not. But this would need to catch changes such as

    • changed behaviour
    • removed functions, methods, enumeration values, …
    • added exception types or error codes in return values, leading to looser post-conditions (client code needs to check for additional errors)
    • stricter pre-conditions
    • in libraries, upgrade to dependencies which include any breaking changes (because they can now conflict with other dependencies in a formerly working client project, and break these).

    (Edit: There is a brilliant YouTube video by a guy called Rich Hickey, with the title “Spec- ulation”, which talks about these foot-guns. Hickey is designer of Clojure, a Lisp dialect for the JVM, but his observations are independent of languages - it is all about APIs).


  • To sum up the main problem: Modern C++ does not implement destructive moves that are checked at compile time. Instead, moving from an object needs to take into account that it can potentially be used again, because in C++ it does not become destroyed or inaccessible as result of the move.

    This requires to set some objects - especially ones that track resources in an exclusive way - to an invalid or uninitialized state. For example, collections can be set to an empty collection, which is a valid state that frees resources. But a thread class would have an invalid thread id, and a unique smart pointer class a null pointer or a “deleted” flag, both of which need to be checked at run time.

    And this would be less of a problem if it were not a core promise if C++ that, by virtue of its constructors, any object that has successfully been constructed, is in a valid state (or never came into existence). (And the latter requires, of course, using exceptions and RAII, which in turn requires most code to be exception-safe, which, considering the many possibilities for UB to occur, is less trivial than it might sound…).