If we’re in a shoot first and ask questions later kind of mood and we’re just mowing down zombies (the slow kind) and for whatever reason you point to one and ask if you should shoot it… and I say no… you don’t shoot it!
I was born in the mid-80s and I've never had a bank teller experience. For me growing up, the bank teller was simply the tech support person for my debit card.
Yeah, I've always seen it as a hot potato issue. I think a lot of people who don't play ball on dealing with climate change aren't deniers, they just want the next guy to have to do the work. It's very, very hard to sell to anyone, "this is going to be incredibly costly and painful for you and you won't enjoy any of the benefits. Your grandkids might."
I think it’s wild to me just how much my mainstream news doesn’t feel like it’s covering some of what’s really going on. I have to go to YouTube to see that Iran is successfully fighting back in many ways including hitting oil tankers and depots.
Not that I’m claiming the CBC and such are doing something sinister here. Just that I no-longer get the full story vibe I recall getting back in previous U.S. wars.
The CBC hasn't done any good reporting in the last decade that I can tell. They just copy-paste from news agencies based on their ideological principles or something.
You can definitely get some color on YouTube. Iran is fighting back but that's not what's going to decide the war (e.g. the damage to Israel or to the Gulf states). They are taking a lot more damage then they're dishing out and the scale of their counters goes down every day. The straits are a very different story since it doesn't take much to threaten the ships to the extent nobody wants to take a chance. One drone, or mine, or a missile, and the straits are closed. Even if the US and Israel are able to pretty much completely suppress Iranian attacks on Israel and the Gulf states the straits might remain closed.
Figuring out what takes its place is a hard problem that no one seems to have cracked. I don't know if its replacement will be very profitable, but we all lose out when media isn't working. Having a shared reality is fundamental for a healthy society.
I was just talking with a friend about this on Sunday, just before the big oil price runup—it was very curious to me that I had had to hunt around a bit for coverage of what was going on with the strait.
Closure was something I had known was a risk with any conflict with Iran after learning about the Tanker War in some politics class in college, and following the various threats over the past 15 years or so. It seemed like something that should have had tons of coverage as soon as I heard the US had attacked Iran, and I wanted to know what was actually going on with it...yet all of the mainstream press seemed to skirt around it until oil prices finally spiked on Sunday, even though traffic through the strait had fallen off a cliff a week beforehand.
It is similar to way how Russia / Ukraine war is fought. Both sides will show you when civilian area is hit and both sides will try to conceal actual hits on sensitive military targets.
So in the news you will see that Iranians are bombing hotels, but what you won't see is that Iranians were able to knock out for example THAAD and now USA needs to move one in Korea into the Middle East.
Except here the entire Iranian strategy (what's left of it) _relies_ on targeting civilian 3rd parties. Without threatening Gulf oil, they've got nothing.
They randomly shoot in all directions but they also managed to hit some things (e.g. the US installation in Kuwait and a US radar) that are probably actual legit targets. But yes, hotels, apartment buildings, (civilian) airports, container ships etc. are high on the list of things hit.
They're all afraid of America's dictator whose only interest is his own personal image. This is how corruption kills nations, overbearing unchecked power meeting a lack of bravery or conviction in those who matter.
The worst are methods that both mutate and return values.
I know this gets into a complex land of computer science that I don’t understand well, but I wish I could define in TypeScript “any object passed into this function is now typed _never_. You’ve destroyed it and can’t use it after this.” Because I sometimes want to mutate something in a function and return it for convenience and performance reasons, but I want you to have to reason about the returned type and never again touch the original type, even if they are the same object.
> And having used it in rust, I wish more languages had something like that.
Same. I'm at the point where I feel like copy-by-default semantics are one of the ancient original sins of programming languages. Single-ownership is so, so useful, and it's trivial to implement and not at all difficult to understand (especially compared to something like Rust's borrow checker).
> but I wish I could define in TypeScript “any object passed into this function is now typed _never_.
Having explicit language to differentiate between pass by reference and pass by value avoids this confusion. It requires a little more thought from the programmer but it’s really minimal once you internalize it.
Rust takes this a step further with an explicit ownership and borrowing model. The compiler will refuse your code if you try to write something that that violates the borrow checker. This is endlessly frustrating to beginners but after adapting your mind to ownership safety you find yourself thinking in the same way in other languages.
I always found real-world JavaScript codebases frustrating because there was so much sharing that wasn’t entirely intentionally. It only got fixed when someone recognized a bug as a result.
Yeah exactly. That's what I've loved about Rust and hated about real-world JS. I end up having to reason about an entire case that might not be real at all: does this function mutate what I'm passing it? Should I eagerly deep copy my object? UGH.
Single-ownership ("affine types") is a separate concept from a borrow checker. Your language doesn't need a borrow checker (or references at all) to benefit from single-ownership, though it may make some patterns more convenient or efficient.
rust would be pretty unusable without references. affine lambda calculus isn’t even turing complete. however, you’re right that a borrow checker is unnecessary, as uniqueness types (the technical term for types that guarantee single ownership) are implemented in clean and idris without a borrow checker. the borrow checker mainly exists because it dramatically increases the number of valid programs.
Supporting single-ownership in a language doesn't mean you can't have opt-in copyability and/or multiple-ownership. This is how Rust already works, and is independent of the borrow checker.
If we consider a Rust-like language without the borrow checker, it's obviously still Turing-complete. For functions that take references as parameters, instead you would simply pass ownership of the value back to the caller as part of the return value. And for structs that hold references, you would instead have them hold reference-counted handles. The former case is merely less convenient, and the latter case is merely less efficient.
What you are describing is linear (or affine) types in academic parlance, where a value must be used exactly (or at most) once, e.g., being passed to a function or having a method invoked, after which the old value is destroyed and not accessible. Most common examples are prolly move semantics in C++ and Rust.
Because Ruby is a dynamic language which mutates state. That isn't considered wrong or bad in those kinds of languages, just a way to make sure the programmer knows they're doing that. Not every PL tries to live up to the ideals of Haskell.
If you don't want an object mutated in Ruby, you can freeze it.
I don't think they're saying it shouldn't be possible to mutate arguments, just that the ! convention should be enforced. The Ruby runtime could, for instance, automatically freeze all arguments to a function that doesn't end with a !. That way all code that correctly follows the mutation naming convention will continue to work, and any development who doesn't know about it will quickly learn when they try to mutate an argument and get an error. Ideally a helpful error telling them to add the !.
If you want to upset people on the internet tell them that JavaScript is strongly typed, immutable, and everything is passed by value. Which is true. You can change member values though, which is the footgun.
I think a lot of what you argue might make sense for American elections where you're voting for an absolutely ridiculous number of things.
I'm not sure how it is in Switzerland, but in Canada I will vote for maybe three candidates in five years. And I don't mean three visits to the polls (though it's usually that), I mean three actual checkbox ticks for people to count. They're paper ballots and the counting is done that night. I think if we were stuck voting for like forty different races every two years it would be a very different story and a lot of what you say would resonate with me more. Except the voter registration stuff.
We're pretty flexible about registration up here and it works. My wife one year showed up with some mail that had her name/address, and me vouching for her. Though I think a lot of the luxuries of democracy are most easily enjoyed with a trusting, cooperative culture that isn't constantly wound up about being cheated by the others.
In Switzerland I voted last week for 5 election lists and 6 different topics. This happens at least 4 times a year, but I don't call it "ridiculous number of things".
For the voter that may not be a ton of work. I imagine to count all those votes you need technology and not just the election workers at each station? Here we have kept it dead simple. They’re all just hand counted over a few hours.
No, they count them by hand. Each issue/office has a separate ballot paper, so it can be done in parallel with sufficient number of counting personnel. It takes a couple of hours, sometimes more in big districts in cities but usually they are done by 6pm at the latest after starting at noon.
So I looked up and discovered that bicycle helmets became a common thing in the 1970s. Perhaps motorcycles were earlier. But either way I have to ask - what did people wear helmets for in 1909? Im thinking that most helmet usage came later.
Helmet usage, as in protective headware for general melee war and one on one fighting, dates back to the bronze age.
Hard hats, of assorted kinds for general protection while working, date back to the 1890s and became more commonplace ~1920 (ish) onwards in construction, mining, and ship building industries.
You’d be surprised. Small aircraft crashes, if control is not lost before hitting the ground, are much more similar to car crashes than to large airliner crashes. For example, a recent “innovation” that saved a lot of lives was making shoulder belts (as opposed to lap only belts) standard.
We’re were photocopying photocopies. But I guess if you’re taking two copies and tracing a third that is based on them but doesn’t actually have to be a facsimile, it gives nature more flexibility?
Like I’m not sure it actually works this way but I can intuit why it’s possible, given the new life doesn’t have to be an exact replication.
The key is that both were randomly assigned to users - you’d never know if you’d open a thread and be a moderator. If you posted in the thread you couldn’t moderate.
And about the same frequency you’d be assigned to metamoderate, basically being asked if a moderator’s “vote” was a good one or not (you didn’t have to fully agree you’d do the same, just that it wasn’t bad).
Someone who scored low in meta moderation would get less or no moderator chances.
reply