It's my understanding that this is a crime that is never charged or prosecuted. Rather, if (attempted) suicide is a crime, it serves as a legal fiction that provides a structure for first responders to intervene. Police can then enter an office where someone is hanging out a window without a warrant, for example, because there are exigent circumstances (a crime in progress). Officers could also physical restrain someone trying to jump from a bridge and have a more straightforward justification for this after the fact. I think this is a societal good.
Have you seen any examples of suicidal people being charged or prosecuted for attempted suicide? I can imagine that this could have opportunities for abuse, but not ones that are qualitatively different from probable cause writ large.
> Rather, if (attempted) suicide is a crime, it serves as a legal fiction that provides a structure for first responders to intervene.
If I have a heart attack, does "having a heart attack" need to be criminalized for a police officer to render aid? The notion of criminalizing suicide attempts to protect a person is fundamentally absurd.
Wow. The fiance must have felt like shit for thinking calling the cops would solve anything.
That said, that man was not prosecuted for attempted suicide. He was convicted for possession of a firearm without a license, and acquitted for stealing his fiance's gun.
It's not the same, though, because what was requested was an example of someone convicted of attempted suicide. That man could have faced the same legal consequences if he had intended to use the gun for any number of other purposes.
If frys hasn't gone out of business yet, they're not going to - last one I was in only sold gift bags and batteries in a massive retail space and yet somehow they were still there. The retail gods must love Mr. Fry.
> If frys hasn't gone out of business yet, they're not going to - last one I was in only sold gift bags and batteries in a massive retail space and yet somehow they were still there.
I really don't understand why Fry's isn't out of business.
Do they own the real estate they're sitting on or something? Are their online operations that profitable?
Sure, a private company can carry losses for as long as they have money. But, why would you?
>Do they own the real estate they're sitting on or something?
A quick search gives some mixed results. They own their San Jose property¹ through an affiliate company. This affiliate doesn't appear to own any other Fry's property though². Conversely, the Palo Alto location was closed when the lease ran out³.
Raft itself - rather than any framework in which you would actually want to use it - is quite simple to implement. A few classmates of mine and I implemented a barebones Raft instance in about a weekend.
I doubt very much that you implemented a proper command log with truncation and rollback for leaders and followers, a state machine, leader election with voting, epochs, timeouts with smart backoffs, pipelining, async transport servers and clients with object serialization, quorums, initialization and discovery, persistent state, graceful shutdown, adding and removing members, a proper event queue, snapshots, and proper distributed testing.
You can build a toy implementation in a weekend if you have a cookbook. A production-ready implementation takes a bit more.
I believe ucsc has (or had?) a distributed systems class in erlang, and correctly implementing each of those features would be about 3-4 days for a skilled erlang programmer and maybe a week for an undergrad, so that's doable for a team of 2 or 3 undergrads in a term.
Maybe out of scope for an undergrad are things like testing high latency/unreliable/jittery connections.
Writing tests to prove you've a correct implementation is indeed a very hard problem. I toyed with an interesting idea last year where I began to write a simple (but intentionally incorrect) Paxos implementation using P# (now known as Coyote) and wanted to see if P#/Coyote's systematic exploration of the state space will show me the various race conditions which violated the protocol's correctness. To my surprise, the technique was quite effective. P#/Coyote was able to point out to a number of bugs after I specified the safety and liveness properties which weren't too hard to do. In effect, after specifying the safety/liveness properties, I was able to use P#/Coyote's state-space exploration to ensure the implementation had solid test coverage. More details are at https://github.com/imnaseer/DiscoveringPaxos where the project starts out with a simple naive implementation, uses P#/Coyote to find bugs, makes incremental modifications till we finally have a working version faithfully following the Paxos description.
This is a Distributed Systems homework project at several universities. In mine, a Jepsen-style test harness was part of the autograder.
This happens every once in a while on HN: some mentions having done one of these assignments, and immediately gets tackled for it.
Maybe professors aren’t doing a good job conveying the limitations. But also this community is gratuitously hostile to people who have no reason to doubt that the code they wrote from the Raft paper, which passed the test suite, was Raft.
I don't sense any hostility here, just healthy skepticism. At the risk of sounding condescending, building something for a class assignment is very different from building something that you'd feel comfortable rolling out in production. Hell, one of the commenters upthread worked on the implementation of raft in Apache Kudu. To be perfectly frank, I would take their word on something before that of someone talking about their homework assignment. It's an incredibly useful learning tool, but it takes a lot more work to make it robust.
I really hope you read this gently. (As the HN guidelines say, "Please respond to the strongest plausible interpretation of what someone says, not a weaker one that's easier to criticize. Assume good faith.") I'm not trying to talk down to you or treat you with hostility (and I know that it's really hard to convey that via text). I would just ask that when someone who has professional, real-world experience in something says it is difficult and time-consuming to do it right, you'd avoid assuming they just don't know what they're doing, and that perhaps there are aspects that you haven't considered.
And hey, maybe you or some of the other commenters are just ridiculously smart and focused and can write it in a weekend. But if that's the case, it's pretty uncharitable to push a narrative that it's trivial. Not saying that's what's happening here, but that could be how it's coming off.
I'm not the parent. But I hope you can see how downvotes to oblivion and a bunch of people saying "no you didn't," is hostile.
This is a proportionate response to an undergraduate trying to sell you his new RDBMS. But most students really did write a b-tree. Academic programming elides the supporting infrastructure that bridges the gap between algorithm and software system. Textbooks aren't generally leaving out 100 pages of extra steps required for the list to actually be sorted or the path to actually be shortest. And so a student is not exactly out of line for thinking that the Raft he was taught is actually consistent in the presence of failure. I'll defer to the community's wisdom that he's wrong! But he's still not out of line.
If anything, I'm worried about these classes instilling false confidence. People who think they know these algorithms may go implement them professionally, and not have anyone around to tell them the full story. Cryptography education is careful to put asterisks around "Textbook RSA." Distributed systems education should probably be doing the same.
I really don't think my initial comment was that hostile, but I can see why it could be read that way. I appreciate what you're trying to say here, and should probably work on framing things positively to avoid this kind of contention.
Part of why the Raft paper is so excellent is because is does leave you feeling like you could explain/implement the algorithm. I don't want to discourage people from being excited about these ideas, because I am too.
That being said, I am generally frustrated by the lack of humility that many software engineers exhibit. "Easy" is a trigger word for me, and I really think is something that should be expunged from most of our vocabulary when referencing software.
Right, my point was just that there's no such thing as a "mostly works" consensus algorithm. By definition these algorithms are intended for systems that can't tolerate failure.
If you feel confident you've built a complex algorithm like this correctly on the first try you probably haven't. Hubris and distributed systems just don't mix.
Verifying correctness to back up our empirical claims is often the hardest and most overlooked part of software engineering.
well in the case of raft for Apache Kudu the commenter says that most of the complexity came from the interaction between the database-log semantics and the raft-log semantics.
this is almost independent with how hard is to build a (good) pure implementation of raft that offers a simpler API
Or Ousterhout level since we're talking about Raft. His career is amazing with contribution in many different areas of CS -- not to say Lamport's hasn't been.
The comments in this list seem from really smart people.
I used to follow Jepsen https://jepsen.io/ closely. Those tests are quite comprehensive. But I think even those are not sufficient to quantify the quality of Paxos/Raft.
Tools like TLA+ probably require a few months to learn and become proficient.
I think it's that the layout of the map, with flags going above and below a circular plane, looks exactly like (and is perhaps inspired by) the scanner that shows where ships around you in local space are in Elite/Oolite (FOSS Elite 1984 clone, highly recommended).
Have you seen any examples of suicidal people being charged or prosecuted for attempted suicide? I can imagine that this could have opportunities for abuse, but not ones that are qualitatively different from probable cause writ large.