• 3 Posts
  • 795 Comments
Joined 2 years ago
cake
Cake day: August 9th, 2023

help-circle
  • Right, it gets into Russia’s navy problem, which they’ve had for centuries and have never had a very good solution. Murmansk is one of the few (only?) ports they have that can reliably get ships out to the Atlantic. Black Sea ports have to go through the narrow channel at Istanbul (controlled by a NATO country, Turkey), and then you have to go through Gibraltar (England) or the Suez Canal (Egypt) (and you’d have to go around Africa if you go that way).

    St Petersburg and Kaliningrad are on the Baltic sea, which is surrounded by NATO countries now. Even before then, the narrow opening in the North Sea could be easily blockaded.

    Everything else is too far away. The sheer size of the country is both Russia’s greatest defense and their biggest headache.

    See also, this Drachinifel video about the Russian Baltic Fleet during the Russian Japanese War, where the fleet traveled the long way around, nearly starts a war with England, shoots up a bunch of civilian vessels and themselves, only to be curb stomped by the fledgling Japanese navy once they finally got there: https://www.youtube.com/watch?v=9Mdi_Fh9_Ag

    Yeah, Czar Nicky Two was a bad ruler. Putin has made some boneheaded decisions, but he’s a political genius next to Nicky.

    I once told my wife “I love you more than Russia loves warm water ports” and they were absolutely smitten with the nerdiness. Which is why I married them.


  • Somewhat. Mostly because you have a lot of suburban people in America who like manicured lawns and expect you to do the same. Even without an HOA, you still have people calling the city if your lawn gets too out of sorts.

    In the documentary “The Power Of Nightmares”, it’s mentioned that Sayyid Qutb (an Egyptian political theorist who’s ideas directly influenced Osama Bin Laden) saw Americans being overly concerned with lawncare as a decadent and repulsive thing. I can’t say he’s wrong. He wasn’t even around to see what TruGreen does to things. It should be noted, too, that his criticism wasn’t from afar. He spent two years as a student in the US after WWII, and he didn’t come away liking the place.










  • A lot of it was fair criticism at the time. Linux fixed some of what was wrong. Having a good sudo config mostly resolves the problem of having one superuser account, and big, multiuser systems are a lot less common now, anyway. X’s network transparency features aren’t that useful in modern computing contexts, either, though I have found a few over the years.

    But mostly, it’s because the landscape changed from a hundred Unix vendors vs a bunch of other OSen, to now where it’s Windows vs Linux vs OSX. By that comparison, the two with Unix-derived history look well thought out.

    (This also implies that NextStep was the one old Unix vendor that has survived in a meaningful way. I don’t think anyone would have guessed that 30 years ago.)




  • If you’ve played SMB a fair amount, there is at least one that you’ve almost certainly ran into at random. It is exploited by speedrunners, but you’ve probably hit it just playing the game normally.

    Pirhana plants only check the hitbox every other frame. Obviously, this is a speed optimization. At some point, you’ve probably gone right through a piranha plant that should have hit you. Speedrunners can and do exploit this, as well, of course.

    An extension of this idea in other games is when you have split-screen multiplayer. In games like the OG Mario Kart, player inputs are processed on alternating frames. Which means the game has an average of 0.5 frames of input latency in multiplayer before anything else gets calculated in. (And people say retro games don’t have input lag on CRTs; these people are wrong for a lot of different reasons).




  • And they had bugs that were a direct result of limitations. The Minus World in Super Mario World, for example, comes from a combination of uninitialized values, how data structures are packed, and imperfect collision detection.

    People don’t talk about the problems that result from doing things that way.




  • When handling things that are serialized over the wire, you have to do it this way. Yes, you can use typed serialization formats, but in a string-based serializer, there’s nothing stopping the other system from sending “0.0000005” on a field that should be an int. If you don’t validate that it’s an int, you would just pass that value to your equivalent of parseInt().

    If you do validate that it’s an int, then it still didn’t matter if the language has static typing or not. You’re doing that at runtime or you’re not.

    In Rust, doing "0.00005".to_string().parse::<i32>().unwrap() causes a panic on the unwrap() from an invalid digit. However, that’s runtime. It’s not something the type system can handle statically. The real benefit here, I think, is that it at least forced you to consider that the invalid input could have unexpected results. This is a pretty good reason to be careful about putting unwrap() on everything. The compiler isn’t going to save you here.





OSZAR »