Hacker Newsnew | past | comments | ask | show | jobs | submit | Waterluvian's commentslogin

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 we saw during covid that we most certainly can see the benefits in our lifetime if we took it more seriously.

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.


Al Jazeera, AP News, NYT, etc have been doing "live blogs" every day of the war since it started.

CBC does it too. https://www.cbc.ca/news/world/livestory/iran-israel-us-war-d...

Though I will say CBC's seems to not include as many individual strike and counterstrike posts as others.


And they are all garbage.

You'd be surprised that Israeli media has decent coverage of the damage from Iran's attacks to Israel and the gulf. Random e.g.: https://www.timesofisrael.com/at-least-25-iranian-attacks-ha...

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.

Another source is: https://understandingwar.org/analysis/middle-east/iran-updat...

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.

EDIT: https://www.ynet.co.il/news/blogs/article/skwano1cbe#autopla...

This is Hebrew but I just saw reporting about 6 ships on fire from Iranian attacks and there are photos...


Corporate media in this moment is... not great.

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.


Bellingcat is a good one to follow.

News organizations need to not be part of larger corporations and a nontrivial amount of their funding needs to be some kind of endowment.

Media mergers need to just be illegal, Disney/Viacomm/TimeWarner (god I don't even know what the big ones are any more) need to be broken up.

"we don't want to make the administration mad so our merger will be let through" is just absurd.


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.


"fighting back" == blowing 3rd party civilian installations.

That’s how it works when you’re fighting a county like America. Do you think if the U.S. invaded Canada that we wouldn’t do flavours of the same?

America prosecutes wars depending on political popularity. Making it incredibly unpopular to do so is a very real strategy.

Not that I’m suggesting it isn’t still ugly and horrible to bomb civilian targets like girls’ schools.


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.

PBS has been alright in this regard

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.

Maybe Le Monde give the right balance?

https://www.lemonde.fr/en/


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.


> any object passed into this function is now typed _never_. You’ve destroyed it and can’t use it after this.

That is basically what affine types are. Once the value is "consumed" it can't be used again.

In rust, this is expressed as passing an "owned" value to a function. Once you pass ownership, you can't use that value anymore.

And having used it in rust, I wish more languages had something like that.


> 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.

Just call "Object.freeze()" before "return" in your function.

That only goes one level deep so it’s not much of a guarantee

Rust ownership model ("stacked borrows" I believe it's called) is basically this

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.


I think it's the other way around - he's projecting rust as what he wants


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.

ruby has the convention of ! for dangerous destructive or mutating methods. This is something that I wish would spread around a bit.

For example:

# Original array

array = [1, 2, 3]

# Using map (non-destructive)

new_array = array.map { |x| x * 2 }

# new_array is [2, 4, 6]

# array is still [1, 2, 3] (unchanged)

# Using map! (destructive)

array.map! { |x| x * 2 }

# array is now [2, 4, 6] (modified in-place)


> convention

Is the keyword. Anything that should never be broken isn’t a convention. There’s no better convention than compiler error.


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 !.

That's really interesting. Although my worry is the freezing having bad effects down the line after the function returns.

  a = [1, 2]
  
  def check_this(arr)
    raise "doesn't start with 1" unless a.first == 1
  end

  check_this(a)
  
  a << 3 # Raises "FrozenError (can't modify frozen Array)" because check_this froze `a`
Now, if you could temporarily freeze, and then unfreeze only the ones you froze, that could be really cool.

> Now, if you could temporarily freeze, and then unfreeze only the ones you froze, that could be really cool.

Is that a missing feature in Ruby? You can't have a frozen reference to an object while retaining unfrozen ones in another scope? That's too bad.


Yeah, in my testing freeze mutates the object itself to a permanent frozen state.

> The worst are methods that both mutate and return values

Been bitten a few times by Array.sort().

Luckily there’s Array.toSorted() now.


This is possible with the asserts x is y pattern no?

https://www.typescriptlang.org/play/?#code/C4TwDgpgBAYg9nKBe...


I think the sticking points are:

1. You cannot return anything (say an immutable result that has consumed the input)

Okay, so don't return anything, just mutate the original. Except:

2. You cannot mutate the original, return nothing, but the mutated original isn't a subset of the original. For example: https://www.typescriptlang.org/play/?#code/GYVwdgxgLglg9mABB...


Hmm, I see, yes it's quite limited.

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.

I think there’s a lot of good reasons to, but hardly any incentive to.

People who disable JS are probably a very tiny minority and of those who consume ads, an even smaller one.


> The crash had fractured his skull. At the time, neither man wore head protection, as aviation helmets were not yet standard equipment.

It’s kinda wild to me how reliable we are at having to learn the hard way to wear a helmet for each new sport or endeavour.


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.

* Helmets: https://www.battlemerchant.com/en/blog/the-evolution-of-hist...

* Hard Hats: https://en.wikipedia.org/wiki/Hard_hat

I suspect there are more early European hard hat examples to be found than are cited in the wikipedia article.


I think they were fairly common for things like gladiatorial games, jousting, etc.

You'd be surprised to learn how many people fell out of airplanes because of lack of seat belts.

In fairness, quite a few failure modes for aircraft do not matter much if you are wearing a helmet or not.

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.

Next up: airbags..!

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 SA Forums model does accomplish the goals of filtering out noise, but then you’re stuck with a stagnant community of “the right people.”

Unironically slashdot's moderating and meta-moderating is the best long-term system I've seen.

Everything else seems to eventually cause new blood to dry up.


I remember reading slashdot but what is their system? Is there a separate set of mods that moderate the moderators?

You get points to mod other people and other people can meta-mod your posts.

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.


I stopped reading slashdot along time ago.. I wonder why.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: