Hacker News new | past | comments | ask | show | jobs | submit | tightbookkeeper's comments login

This is 10 year old story. It’s very interesting which ones stay in the public consciousness.


Don’t forget their many other successful lawsuits:

- school administration

- rifle manufacturer

- the shooters mother (home insurance)

- other journalists who wrote about the event

I don’t know exactly what compensation they should get, but this does not seem like a healthy or sustainable way for our society to deal with tragedy.


To be specific, the suit against the mother was against the mother's estate, since the mother was murdered by the shooter... like right away. The suit was settled by the estate.

The suit against the school administration was eventually dismissed (the families lost on appeal) (https://www.newstimes.com/news/article/Two-Sandy-Hook-famili...). I agree it seemed kinda dubious, and I think the right outcome happened here.

The suit against Remington ended in a settlement, probably because Remington didn't want a chance in hell to set any legal precedent. The fact that the families got settlements is really a symptom of how unsettled the issue of gun control is in America. Like it's completely inane that it's fully legal to manufacture and sell AR-15 rifles to basically anyone, BUT that somehow marketing them to civilians is inappropriate. Remington settled because they just don't want any possibility of the status quo moving against them.


AR-15 is merely a body style, there is no metric by which it is more dangerous than a hunting rifle.


If you want to murder dozens you do not bring a hunting rifle.


If you want to start some shit ask gun people whether you can hunt deer with 5.56


Only for the larp value. What attributes make it more dangerous?


This is not even remotely true. I have done a decent amount of shooting, some dedicated training, and own multiple firearms of different types including AR style rifles. Your sort of rhetoric is at best disingenuous and not even remotely true.

If you have ever trained with any rifle you will quickly realize that while there are hunting oriented semi-automatic rifles out there, the minimized recoil, the high rate of fire, the lightweight nature, and all the ergonomic accessories make AR style rifles incredibly fast and easy to shoot. Using a red dot site you can fire two rounds to the chest and one to the head at 25 yards in under 2 seconds with a small amount practice and training. Minimally trained people can do the same with iron sites in under 3.

I am a big fan of the AR platform because of these reasons. They are not unique to the AR, but they are unique to a class of gun that is designed with these characteristics in mind. These are not the characteristics of hunting rifles.

Honesty is important, even if it works against your beliefs!


> I don’t know exactly what compensation they should get, but this does not seem like a healthy or sustainable way for our society to deal with tragedy.

I don't know if it's healthy or sustainable, but it definitely sounds healthier than ignoring the tragedy altogether.


Agreed. It doesn't seem like a long-term solution, but it is the best way we have _right now_ to visit consequences on people/orgs that enabled the tragedy. If our society sees everything in cost/benefit, then increasing the costs of actions that lead to tragedies like this is one of the best things we can do.


Suing into bankruptcy is the only flavor of capital punishment we have for corporations.


> people/orgs that enabled the tragedy

They didn’t though. Holding a rifle manufacturer liable for a shooting makes no sense, unless applied universally.

A journalist writing a book did not cause the shooting.

This is greed and lashing out in pain. I’m sure members of the community have ruined their life in pursuit of these things.


They did, if even indirectly. Just like how McDonald's holds some responsibility for the obesity epidemic.

The company that makes rifles makes them to be sold. It is in the company's best interest that as many mass shootings happen as possible. By providing guns, they DID contribute to the tragedy. We can tell, because if they had never produced that gun then it would've never shot anyone.

This doesn't even touch on the fact that the reason gun laws are so lax is because these companies lobby for it to be so. Again, they are incentivized to cause as many people to die as possible. Incentives matter. If mass shootings were the next blue jeans, these companies would quickly overthrow Apple.

Blame is very hard and tricky, but any institution or system in place is responsible for an intuitional failure. And that's what mass shootings are - an institutional failure.


The case against Remington was largely based on how the gun was marketed.


No. I actually don’t think lashing out at any wallet that happens to be in the area will make anyone happy.

The people who are responsible are dead.


Depends on the wallets being lashed at


Sounds like a principled take based on rule of law.


A healthy & sustainable way would probably be to do something about school shootings in the only country where they happen on a regular basis.

In the absence of that, what else would you propose?


> what else would you propose?

Not suing others for millions or billions and spreading misery. Nothing can bring those kids back.

Maybe the government could have offered education and employment guarantees to the families?

> only country

Want to list some other things only the US has?


> Not suing others for millions or billions and spreading misery. Nothing can bring those kids back.

> Maybe the government could have offered education and employment guarantees to the families?

The lawsuit wasn't about responsibility or compensation for the school shooting. It was about the years of harassment and death threats that the families of those killed had to endure from people who believed the lies that Alex Jones repeatedly told about them.


You’re missing context. We are discussing their 5+ other lawsuits.


> Not suing others for millions or billions and spreading misery. Nothing can bring those kids back.

How about not slandering the parents of the victims causing Jones' followers harass and threaten them? He could have admitted he was wrong (which he only did finally at trial and under oath - far too late), but chose to double down. What about that misery?

Jones is not a victim here. He chose greed, but got owned. The motives of the families, lawyers, etc are whataboutism at best. You're essentially arguing that if somebody throws a punch at another person, said person has no right to hit back because hitting back won't take away your black eye.


> but this does not seem like a healthy or sustainable way for our society to deal with tragedy

I don't know, this, to me, is the proper set of incentives. Nobody wants to lose money, so you better do everything you can to prevent these tragedies. If we just sob a little and move on, the systems in place will not change.


I guarantee you these do not add up to a billion dollars.


Wikipedia page disagrees with you. Whether they collected that amount, I do not know.


I have yet to hear what meaning tolerance has in this interpretation.

Surely chairman mao agrees with free speech that doesn’t harm his society and social programs


> you run out of (OS) threads very fast.

What does run out mean?


Each thread is tied to an OS thread, which is tied to a CPU core/hyper-thread. You get like ~6000 threads on a modern OS and CPU.

Your program needs one million threads that sleep for 2 seconds, read some data and then finish. Guess what? Your execution is going to take hours, or get some kind of exception that you run out of threads because after the first ~6000 threads are taken, your OS can no longer give threads to anything else.

With Green threads, the threads are fake aka virtual and controlled by the language's runtime, be it JVM, CLR, Go's runtime etc. Runtime is usually smart enough to recognize sleeps and, while waiting for something, schedule another thread in its space.[1] So now all one million threads start near instantly and work almost all in parallel.

[1]https://www.youtube.com/watch?v=bOnIYy3Y5OA


Desktop OS may struggle at thousands of thread. Linux can handle many more just fine.

> Your program needs one million threads that sleep for 2 seconds, read some data and then finish.

I have yet to see this problem, but yeah I agree that millions is about when there will be problems.


And somehow all these programmers who never care about performance because “computers are fast” become micro-optimizers, willing to restructure every line of code to save a few KB of RAM and rare handful of ms for a context switch.


Of all things, python went with async instead of gevent!


If you’re talking about the course where you write a linked list, hash table, quick sort, etc. That’s pretty basic and fundamental stuff. And I don’t know why you would like programming.

If you’re talking about the course where you prove the runtime of an algorithm using mathematical induction techniques, well that’s more of interest to mathematicians and researchers. Learn what you can, know where to look back if needed, but it’s ok.


But most windows 98 era Ui programs were 1 or 2 threads…. You just handle events in order in a loop.

It works and is far more responsive than what we have today.

> Disks are certainly not quick enough to have File.Delete(...) be blocking

What if you invoke a delete and then it fails and you want the user to respond? What will the state of your UI be when that happens?


> What will the state of your UI be when that happens?

If you can't do anything else until you know whether it was a success or failure, then you ensure that. E.g. you disable every single button that allows the user to do something else before the previous operation completes. Basically the theory is usually that you can allow the UI to "read" the program state while a "write" operation is still in flight. Typically this results in the user being able to for example scroll a document so it re-renders correctly etc. After the in-flight operation succeeds/fails, you can show the user the message if required, then enable new operations to happen. But the UI never stopped pumping messages so it was always responsive at least.


> you disable every single button that allows the user to do something else before the previous operation completes.

Wow you mean the whole program becomes unresponsive? Crazy!

To address your main point, yes, scrolling, hover, etc can continue to work. But now you genuinely have two things your program is doing at once, and these must be coordinated.

A gui framework typically handles this, with a separate thread (or separate OS process). So your thread that responds to events can block while the render/refresh continues doing its thing.

With this design the problem goes away. Instead of writing code that disables the ui, issues a callback, waits to respond, you just literally write:

If (!file.delete()) { Showerror() }

This is the kind of code you can read, and put breakpoints on.


> Wow you mean the whole program becomes unresponsive? Crazy!

Yes a normal single threaded GUI normally becomes unresponsive if the user invokes blocking IO on the main (UI) thread. By "unresponsive" in this context I mean "does not process messages the message queue". That the user can't e.g. perform a certain operation is in this context not the same kind of "unresponsive". It responds (it could even tell him that he can't do it, or why he can't). It would be unresponsive if it gave the appearance that he could do something, but when he tries to, the UI doesn't respond and start the operation he requests.

> Instead of writing code that disables the ui, issues a callback, waits to respond, you just literally write: If (!file.delete()) { Showerror() }

That's typically how I'd write code regardless of whether it's explicitly async. "Disabling everything" usually isn't necessary, what you disable is of course the operations thare logically forbidden to perfom until the first operation completes. In a perfect world you don't have those. But often, you do.


> Wow you mean the whole program becomes unresponsive? Crazy!

It is using all resources to do what it was told to.

Results depend on the magnitude of the task and the hardware available with a very large overlap where the difference doesn't matter at all.

If blowing up complexity everywhere to solve a problem you probably wont have is a good thing is left as an exercise for the reader.


I agree. The right thing to do is to wait for the task to finish. I wrote that first line in jest,

I’m making fun of the notion that blocking = slow = unresponsive.


Precisely!

I had lots of pending requests, the goal was to have as many as possible (since the whole job took about 30 min) without freezing the UI.

When the callback happens there is work to do. The pattern is to do this work immediately.

Then there were as many as [not] possible bits of work to do simultaneously. Since the amount of work per job is unpredictable deliberately making the amount of simultaneous jobs unpredictable is insanity.

Synchronously I can do [say] 50 requests per second, parse 55 and have a buffer.

The solution to the riddle is not to limit the number of requests by 90% and extend the task to take 5 hours while not using 90% of the resources. Then UI freezes only become less frequent, they don't go away.

Instead I store all data from all callbacks in an array along with a description and use a setInterval to parse a configurable number of responses per second while adjusting the new requests to the size of the backlog.

But then it isn't really async anymore.


> non-blocking

What is your program going to work on while it waits for the task? Usually nothing. You need to read some data before analyzing it, etc.

While you wait the OS can switch to other threads.

The only question here is whether you want to return that time to the operating system or to your language runtime.

> they’re just hiding the complexity

async/await feels helpful because you can write normal code again! If else, for loops, etc.

Oh wait that’s also what the UNIX operating system does. It abstracts away all this blocking and context switching so you can write normal code.

> If adding async to a function is too much

The authors point is a good one. You essentially have two languages and classes of functions. The regular version and the async version. Lots of duplication and a tendency for everything to become async.

> a skill issue.

I think you don’t understand process scheduling.


while we’re waiting for the OS to ‘save us’ from async/await, let’s not ignore the fact that writing code that doesn’t hang, crash, or block the main thread is a skill for a reason.


> hang

Hang implies there is something you are not responding to.

Let me ask again. What are you imagining your main thread should be doing while it is waiting for essential data?

responding to new inputs means changing state. But your program is already in another. Two separate program execution states are best described by two separate threads.

> crash

Crash early, crash often. If invariants can’t be maintained, don’t pretend otherwise.


"Ah, the ‘crash early, crash often’ mantra — truly inspiring. I guess when your program explodes because it can’t handle concurrency, we should just sit back, crack open a cold one, and toast to ‘maintaining invariants.’

And sure, let’s talk about state. If handling multiple states at once is ‘extremely difficult,’ then yes, async/await might not be the best for anyone who panics when their program has to juggle more than one thing. But that's kind of the point.

Async/await is like giving you a leash for your concurrency so you don’t need to wrangle state machines on a pogo stick. But hey, if you’re happier living on the edge of crashville because ‘the OS scheduler will save me,’ who am I to interrupt your Zen?”


The planes are important for collision and occlusion queries.

And yes. Intersection of planes is a higher level language than vertices and UVs. It pushes more work onto the computer instead of the human.


You’re not responding to the article.

> BSP is just outdated and limiting

- In quake brushes are not just visual, but are also used to solve collisions. Without brushes you need separate “collision meshes”.

- brush based editors are much faster for prototyping space shapes. Art can always be improved later and is even outsourced. Gameplay is harder to get right.

- brushes are easier to reason about in processing for auto generating UV coordinates and light mapping

> just make smaller models and combine them in creative ways

This is a cost saving choice, not a better game choice.

What games do you want to play? The ones where the space is tailor made? Or the ones with a lot of copy paste?

Also if you look at the spaces in the article, they don’t have a lot of clutter anyway.


I’m responding to the article, which says:

“You can see the frame of the room is made up of four static pieces which I’ve been glued together. This type of prefabbing makes it impossible to add little details or variations into the structure of an existing asset, you need to change the one, or make a new one.”


Consider applying for YC's Summer 2025 batch! Applications are open till May 13

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

Search: