In some cases, it probably is a deterrent. It is hard to know for sure because there is no way to A/B test a country. I think that some people probably overestimate the degree to which it is a deterrent, but I think it would certainly be wrong to say that it is not a deterrent at all. In some situations it can probably be a very effective deterrent.
It possibly does stop things from getting worse, but it is hard to know whether it does or it does not because there is no way to make a copy of the United States, remove private gun ownership in the copy, and then see how things play out.
Officials being democratically elected does not necessarily mean anything - in theory, a majority of the population could vote to literally enslave a minority of the population. I think that it is fair for a minority of the population to have some threshold beyond which they are willing to use force if necessary even if by doing so they are going against the wishes of the majority.
51% of a population having a say over their own lives is better than any other system I know of, because every other system I know of ends up with substantially less than 51% of the population having a say over their own lives. It's far from perfect, but I do think we should realize the comparison is to other forms of government, not some abstract ideal.
And I'm not suggesting that there's never a reason to act violently towards a government, I'm suggesting the people who talk about guns in response to legislation don't understand what it is they're saying.
To use firearms against your government means killing patriots, definitionally. People need to realize this, because they generally don't.
Yes, it likely means killing people who think of themselves as patriots. However, many people who work for oppressive governments genuinely think of themselves as patriots. I do not see why it matters whether using firearms against a government means killing patriots or not. Many of the people who worked for Nazi Germany and Stalin's Soviet Union to oppress their fellow citizens were patriots by the standard meaning of the word.
It often matters to the people making these statements, is my point.
I haven't expressed my opinion about it, I'm just saying that the folks suggesting using firearms to "stop tyranny" very rarely know what they're actually saying.
Psychologically I think it is very easy to resolve any possible contradictions. "My side are the real patriots - their side are false patriots who are actually bootlickers/oppressors/occupiers/traitors/etcetera."
I think you're getting wrapped up in the word choice here. Someone espousing these beliefs is supporting the killing of cops and soldiers, an act which is very often reprehensible in the same circles.
I think that most people who generally support cops and soldiers but who also contemplate violent resistance against the US government have already thought through this issue and their usual resolution is "I generally support cops and soldiers for now but if they cross certain lines then I am fine with fighting against them". I do not think that there is nearly as much cognitive dissonance or hypocrisy on this topic among those people as you might think there is.
I disagree, I believe the vast majority of people (including the person I replied to here) who believe in using firearms to "prevent tyranny" don't understand that what they're saying means they'd have to kill cops and soldiers.
They tend to believe the threat is enough and that they'd never have to act on their threat (rendering it meaningless), or that all of the cops/soldiers will just let them kill the politicians (and killing a politician for a differing political belief is somehow generally okay for these folks).
I am just a layman when it comes to this kind of thing, but I notice that many articles online claim that variable bedrock depth explains why Manhattan's skyscrapers come in two distinct clumps. If this is true, then it seems strange to me that NYC professionals would ignore bedrock depth in SF out of pure ignorance.
I just found a blog where the author explains that its actually a myth and mostly coincidental. The reason the skyscrapers are in midtown and downtown was due to historical and economic reasons. Those were the dense wealthy business areas where people wanted and needed to build taller buildings and it turned out they also had the shallowest bedrock.
They also said the shallow bedrock didn't force them to stay there. It isn't much of a problem to drill deeper and a number of early skyscrapers were built elsewhere... It's just that people wanted their skyscrapers to be in midtown and downtown.
Or maybe those people know what they are talking about and the truth is that many people who are big fans of automated testing tend to overrate its value when it comes to many areas of software development. Testing takes effort and makes it harder to change things. In an ideal world where testing came for free then sure, more testing would be better. In the real world there are tradeoffs. If I am writing code that controls a spaceship then it makes sense to spend a huge amount of effort on testing. On the other hand, if I am adding a feature to a web application then in my personal experience, most of the time adding automated testing is a waste of effort.
> Or maybe those people know what they are talking about and the truth is that many people who are big fans of automated testing tend to overrate its value when it comes to many areas of software development.
I would normally agree with you, but a TCP Stack is one of those things where I vehemently disagree.
Communication stacks, in general, are giant piles of implicit state unless you go out of your way to manage the state explicitly. As such, they have obscure bugs which are difficult to find when some of the cases are hit rarely.
A communication stack really needs to be written such that the inputs (including TIME), the outputs, the current state, and the next state are all quite explicit. This enables you to test the stack because it is now deterministic with respect to inputs and outputs.
Yes, it's not easy. And it requires that you really mean it and architect it that way. You may not be able to evolve your current stack and may have to throw it away--that's never going to be popular.
However, every single time I have done this for a communication stack (USB, CANopen, BLE, etc.), the result was that the new stack quickly overtook the old stack on basically every metric worth monitoring (throughput, latency, reliability, bug rate, etc.).
Now, to be fair, I was obviously replacing a communication stack that was some level of "pile of crap" or I wouldn't have done it. However, I'm just one person, and those stacks generally came from a company who had a vested interest in it not sucking. I'm not some amazing programmer, and I certainly didn't spend more time on it than the original stack, so it really comes down to the fact that the "underlying architecture" was simply a better idea.
> A communication stack really needs to be written such that the inputs (including TIME), the outputs, the current state, and the next state are all quite explicit. This enables you to test the stack because it is now deterministic with respect to inputs and outputs.
Do you have something open source to look at that uses this approach? The idea is great but I wonder how complicated becomes code when using it.
Sadly, no. I don't rewrite communication stacks for fun. And someone who pays me to do so generally sees it as a competitive advantage.
The complication is that the "event loop" is atomized. This means that initialization, teardown, and iteration are now in your hands. You're responsible for making sure that the "iteration" function is called often enough (ie. both because of timers and incoming packets), not the stack. Of course, because time is an input, you can clearly identify "Oops. I didn't call this often enough."
The advantage is that your "event loops" can now compose. Quite often, it's very hard to get different communication stacks to cooperate because they all want to be the "primary event loop". (A good example of this failure is "async" frameworks--"How do I wait on a screen refresh, a tcp socket, and a character device descriptor simultaneously?"--if your async executor doesn't take all of those into account you're gonna have a bad time) Since the event loops are atomized, you can interleave the "iteration" calls and wait/sleep however you like.
As for open source, to be honest, I probably wouldn't release anything open source these days unless I got a very significant personal benefit somehow. It's not enough to simply create something and put it out there--everybody expects you to be a maintainer and have some infinite well of tactfulness in the face of idiots who deserve to be slapped silly.
For me, the grief from the whiny, entitled contingent is far too high to make producing open source worthwhile nowadays. I respect the people who do it but have no desire to join them.
> Or maybe those people know what they are talking about and the truth is that many people who are big fans of automated testing tend to overrate its value when it comes to many areas of software development.
There's been a lot of research, and internal studies, done at many companies that show pretty impressive benefits.
When really questioned most engineers just say "I know my code works" or "I test my code, I don't need automated tests". That's the mentality I just don't understand.
> Testing takes effort and makes it harder to change things.
If it "makes things hard to change" just delete the test? You'll still get the benefit of knowing XYZ are broken/altered. You can also automate end-to-end and black box tests which should absolutely not require any modification if you're just refactoring.
> If I am writing code that controls a spaceship then it makes sense to spend a huge amount of effort on testing. On the other hand, if I am adding a feature to a web application then in my personal experience, most of the time adding automated testing is a waste of effort.
If you are working something that is allowed to fail, then sure, you don't really need to care about what practices you do. It's a very end-all-be-all argument to say "it's ok for my things to break". That argument goes just the same for all of these things:
"Why do I need a version control system? It's fine if I manually merge my code incorrectly"
"Why do I need a build system? It's fine if I forget to recompile one of my files"
etc.
In addition: the "argument" for automated testing isn't that it will just prevent you from breaking something. It's that it lets you know when things change and makes it easy to update your code without manually checking if things are broken. Recently, when adding features to our frontend, I just run our tests and update a png file in our repo. I then play around until my styling is how I like it. It's completely automated and saves me a lot of time. It also lets others know immediately when their CSS change will effect, or will not effect, my components.
>There's been a lot of research, and internal studies, done at many companies that show pretty impressive benefits.
I would need to look at the research and studies to see whether I actually believe them. I have seen how politicized and tribal technical decisions can become at a company and can easily imagine that there might be confounding variables.
>When really questioned most engineers just say "I know my code works" or "I test my code, I don't need automated tests". That's the mentality I just don't understand.
If I do not write automated tests and then my code works fine in production 95% of the time, and out of the 5% of the time that it breaks, 99% of the time it is a problem that is easily fixed and causes no major problems, and even the few major problems are of the "lose a manageable amount of money" kind and not the "people get injured or killed" kind - meanwhile if, on the other hand, writing automated tests would add 50% more effort to my work - then the cost/benefit analysis might suggest that I should not write automated tests. Keep in mind that I could spend that 50% more effort instead doing things that will make my code less likely to break but that are not automated testing. "not adding automated testing" is not the same thing as "not doing anything that will make the code less likely to break".
>If it "makes things hard to change" just delete the test? You'll still get the benefit of knowing XYZ are broken/altered.
If I delete the test then I will have wasted part of the effort that went into writing it. Usually when I change code I already know that things will work differently afterward and that things might break, so this would not tell me anything I did not already know.
>You can also automate end-to-end and black box tests which should absolutely not require any modification if you're just refactoring.
Agreed - I am much more friendly towards end-to-end tests than towards unit tests. I still would not advocate them dogmatically, but I find them to be more useful than unit tests.
>If you are working something that is allowed to fail, then sure, you don't really need to care about what practices you do. It's a very end-all-be-all argument to say "it's ok for my things to break". That argument goes just the same for all of these things:
I think that you might be seeing things in too binary a way. The vast majority of software products are allowed to fail, but not all of them are allowed to fail to the same degree. The practices do matter and there is no one-size-fits-all approach to testing. The context matters. What rate of failure is acceptable such that to try to prevent failure beyond that rate would actually be counterproductive? What specific impacts would more vs. less testing have on the development process? How do the relevant pros and cons fit into the overall goal of the organization? Etc.
I am not saying "it's ok for my things to break", nor are probably most people who question automated testing dogma saying "it's ok for my things to break". We are saying that there are tradeoffs. Sometimes adding more automated testing does not actually add value. Again, it depends on the exact context.
Regarding the rest of what you wrote: I am not disputing that automated testing can bring lots of benefits. I am just saying that I think some people are too dogmatic about it, see it too much as a magic pill, push for its use too broadly, and do not take the relevant tradeoffs sufficiently into account.
I used payday loans a few times back in the day - not for anything large, just for like $300 or so at a time. Getting those payday loans really helped me and I never experienced any negative consequences from taking them. I never thought of them as being a scam. I knew what sort of interest rates I was getting into and I took the loans fully knowingly. Personally I did not experience any predatory practices unless you count the interest rates themselves as predatory. That said, I always paid the loans back pretty quickly so I do not know how the companies behave if people are slow in paying.
I worked at a payday loan place, and sure, if you make decent income and just find yourself short a few hundred bucks for a few days before a payday you can get out okay, but folks who are at the edge, making ends meet just barely...well those folks get trapped in a very difficult cycle of paying back $795 every two weeks and immediately taking out a $700 loan, rinse repeat 7 cycles of that before the payday company will allow for a different repayment plan (still a hard hole to dig out of, but a little less shitty than the standard pay us 795 right now thing you have to do for 7 cycles before the option for escape is even available to you)
It's a gross business, exploitation of human misery.
It does seem gross and I do not think I would feel good about the idea of working in the industry. That said, I wonder - is it worse than the loans not being available at all?
It can be both things at the same time. Maybe you go into a casino once, on your birthday, have some fun with $500, and never again. That doesn't mean that casinos don't fuel addiction for profit.
What's important here I think is that while saying that payday loans are bad, I don't mean to take away your positive experience with it. Just that looking at the bigger picture, they do more harm than good. That they exploit the desperation in the people, and that's immoral and should be regulated more.
US citizens' desire to fight in WW2 perhaps largely came from propaganda to begin with - maybe in the absence of propaganda most of them would have been fine with doing nothing to help Britain, France, etc. About 60% of US WW2 soldiers were drafted, not volunteers. So it is not so much a question of no propaganda in the past versus propaganda today, it is more of a question of more tightly controlled propaganda in the past versus more diverse propaganda today.
But that is my point. Most people got the latest war news from the government sanctioned newsreels playing in the movie theaters. Any photos of the war were approved by the government before they were run in printed media. Letters home were famously read individually to cross out unacceptable content under the pretext of protecting frontline strategies.
The government had a very strong stranglehold on what information the population received. Today that is not the case, and there are very good reasons for it, but in the event that world war three occurred, it would put the West at a severe disadvantage.
World War Three is a dramatic thought, but it isn't even happening and the West is already feeling the pain of this situation. Destabilizing election and covid misinformation being spewed by China and Russia are prime examples.
Got it, thanks for explaining so clearly. The way I see it, because of nuclear weapons, no other country can actually conquer the US, so I much prefer free speech to any sort of propaganda initiatives meant to strengthen the US against other countries. We are already basically almost completely protected from other countries by our nuclear weapons. We do not need censorship and propaganda to add any sort of meaningful further protection.
>US nuclear weapon stockpile will only be enough to neutralise just one military superpower
Well that's not true. And it's especially not true with the new ICBM fuses and bomber launched stand-off missiles. The newly equipped icbms are an approx. 3x multiplier compared to having the same number of weapons a decade ago.
Which frees up weapons to be shifted either to new targets, or from strategic use to potential tactical use, with the new lower adjustable yields.
So even WW3 trench warfare has a good chance of still being nuclear warfare.
>US citizens' desire to fight in WW2 perhaps largely came from propaganda to begin with - maybe in the absence of propaganda most of them would have been fine with doing nothing to help Britain, France, etc.
The attack on Pearl Harbor and Hitler foolishly declaring war against the US were the main reasons there was a great deal of support for the war.
>...About 60% of US WW2 soldiers were drafted, not volunteers.
It is misleading to put out that statistic without giving the context. The reason there weren't more volunteers is that the US stopped allowing most volunteers and just told people to wait to be called for the draft:
>...On December 5, 1942, presidential Executive Order 9279 closed voluntary enlistment for all men from the ages of 18 to 37 for the duration of the war, providing protection for the nation's home front manpower pool.
Research into "misinformation" is often used to justify politically-motivated censorship. If this research was intended, by its funders and/or the researchers themselves, to further politically-motivated censorship, then I have no sympathy for the researchers.
I can easily go have fun with people outside of work, so I have no incentive to put up with the annoying parts of office work just to get to interact with people.
>But if you do have to work, slogging away in a common place with friends is more compelling than sitting behind a computer.
Not for me. When it comes to work, I would rather sit behind a computer at home and talk with my friends on another computer at the same time than sit behind a computer at an office and talk with my friends there in person.
I like all the people I work with and have know them all for 10+ years, but I would never spend time with them outside of work. The idea of conflating my private and public lives is anathema to me.