4,144 karma · joined February 18, 2013
If you mean that you don't know any right now, just learn C. This isn't web programming, where everyone is always hopping to the latest fads. C is the lingua franca, the sine qua non of systems programming. It will be a long time before that changes. The C machine model is what everyone is working with anyway. C is small, despite some devious and fun corners of it, and mostly just exposes you to that model and way of interacting with the machine.
You can’t even appreciate the new systems languages unless you have a firm grasp of C and systems programming. They are all a response to C, addendum and proposed evolutions to it.
Throwing a label on it doesn’t make it a bad thing. Authority can be a gift. It helps people thrive by giving them the motivation to live up to their potential. If everyone just let everyone else do whatever they wanted, humans wouldn’t have gotten very far. Of course, freedom to choose does a lot of good too. There is a balance to be had.
The problem is wanting the notion of politeness to do too much work. Being polite, being nice, is just a moment to moment strategy for avoiding conflict. Unfortunately, niceness has become the most important virtue in American culture.
Being good is much more profound, and niceness is just one of the many tools you can use to achieve it. Sometimes being good entails being harsh. Sometimes it means doing things that will upset others.
You're also going to have to use outdated versions of various software packages, as you describe in your post. That's another security hole.
As you note, bugs are often found in video and image decoders. The one in your OS isn't being updated anymore.
And consider that not every fix for a segfault or other bug gets labeled as a "security patch", but that doesn't mean that they don't present security issues. I imagine most engineers fix the buggy code and move on, and never really consider if there was a security hole there. In other words, it's common for vulnerabilities to be discovered long after they were fixed. And there are probably many more that remain undiscovered despite being present in old versions.
Running an old version of an operating system that’s not actively getting security updates, let alone gotten any at all for over three years, is crazy. It’s one thing to run it offline or heavily firewalled for a limited purpose, like running some important application that doesn’t work on current versions. But to actually use it day to day is absolute madness.
I hope you’re not handling any information that you have a duty to someone else to keep safe. Putting it on such an old OS release, through intentional and tedious effort on your part, would be outrageously negligent. Even logging into work email through that setup would be irresponsible. Or accessing any email account to which someone has sent private information (so just about any email account you actually use). It’s negligent with regards to your own data too of course, but at least that’s just your problem.
The better approach is to always compare against FALSE, because that avoids the ambiguity of == TRUE only catching a single truthy value out of the millions of possible truthy values, contrary to the well-known semantics of C.
If you really need to distinguish between 1 and other truthy values, then just compare against 1 explicitly. Don't muddle the concept of truthiness.
So if(!strcmp(str1,str2)) is a valid way to check for equality, but I think the negation makes it confusing; it is tempting to intuitively read it as checking if the strings are not equal. if(strcmp(str1,str2) == 0) is the better choice.
The corporation can deduct the wages it pays employees, which is why they’re fully taxed at the individual earned-income level—this is the personal income tax. In theory, the corporate tax takes a cut of profits (i.e. what is due to the shareholders), so the capital gains tax is lower to make up for it. The problem is that the corporate tax is too easy to legally avoid for large sophisticated corporations, an almost impossible problem to solve within the international system. The solution is to just abolish it and tax capital gains at the same rate as earned-income.
I agree with the main thrust of your post, but to nitpick, American free speech jurisprudence is not so daft. Where some restrictions are necessary, the principle of “viewpoint neutrality” still works to prohibit censorship. So, where the government allows pro-abortion expression, it must also allow anti-abortion expression. And this applies even where its more general obligation to allow all expression does not hold.
The fact that someone else down the chain should have known better is not a perfect defense. If that misuse was foreseeable and you didn’t do enough to prevent or discourage it, then you can still be held liable.
Security isn’t all or nothing, it’s about understanding what the different threats are and adequately protecting against them. Not everyone is trying to protect against attackers with millions of dollars at their disposal. There is plenty of value to deterring 99% of attackers with physical access.
The idea of security as all or nothing, and that physical access thus defeats all security measures, are security tropes that need to die. You can see how obviously wrong they are when you consider that just about every security system depends on proper behavior by trusted human beings, who are never 100% reliable.
Ronald Coase wrote the paper that first got to the heart of this, one of the most important economics papers ever published: https://en.m.wikipedia.org/wiki/The_Nature_of_the_Firm
My main annoyance these days is that Office doesn’t let you invert the colors of a document as a display option. You have to actually change the background and text colors of the document.
I wish operating systems had a feature to invert the colors in a single window/app, as a fallback for when an application doesn’t have a dark mode.