Friday, December 23, 2022
Interesting
Monday, December 19, 2022
Twitter, Free Speech, and What Elon's doing
Saturday, December 10, 2022
Weather Comment
Abstraction - or is it Simplification?
A few posts back I mentioned I had some thoughts on abstraction, though as I think about it I'm not sure 'abstraction' is the right term for it.
Perhaps it's that attempts to simplify something often just add complexity in a different way.
Like whoever it was that did that risk analysis, where they said adding safety measures (like making cars safer in accidents) just make people start taking riskier actions.
And I feel the thoughts slipping away the more I try to explain that, so I'll just move on.
One of the things to understand about computers is that there's a LOT of abstraction going on.
Let me start by briefly talking about numbering systems with different bases.
We use a decimal system, and we're so used to it that most people don't even think about it.
9+1=10
99+1=100
We count from 1 to 9, and when we reach the number we add a '1' to the left, rollover the 9 to 0, and start counting from there.
There are other systems that use a different base, like base 16. Base 16, or hexadecimal, requires more numbers than decimal does, because it counts a little bit longer before it rolls over. We've pretty much decided to fill in the missing numbers by using the alphabet, which is why base 16 uses A,B,C,D,E, and F.
9+1=A in hexadecimal, A+1=B, and so on until F+1=10. (Your computer probably has a calculator function which you can set to 'programmer' mode and convert between decimal, hexadecimal, octal (base 8) and binary (base 2).
I brought that up because computers use binary or base 2. That's essential since you can use electrical circuits to represent 0 or 1 - everything is either off or on. (This may change with quantum computers, but that's a whole other level).
Every single thing your computer does is basically processing a string of 0s and 1s.
Which is really, really, really hard for people to read and understand. So we abstracted a layer away.
First with assembly language, which created simple mnemonic instructions that were easier to use than the binary. This section from the wikipedia link I shared above goes into more detail:
Assembly language
A program written in assembly language consists of a series of mnemonic processor instructions and meta-statements (known variously as declarative operations, directives, pseudo-instructions, pseudo-operations and pseudo-ops), comments and data. Assembly language instructions usually consist of an opcode mnemonic followed by an operand, which might be a list of data, arguments or parameters.[24] Some instructions may be "implied," which means the data upon which the instruction operates is implicitly defined by the instruction itself—such an instruction does not take an operand. The resulting statement is translated by an assembler into machine language instructions that can be loaded into memory and executed.
For example, the instruction below tells an x86/IA-32 processor to move an immediate 8-bit value into a register. The binary code for this instruction is 10110 followed by a 3-bit identifier for which register to use. The identifier for the AL register is 000, so the following machine code loads the AL register with the data 01100001.[24]
10110000 01100001
This binary computer code can be made more human-readable by expressing it in hexadecimal as follows.
B0 61
Here,
B0
means 'Move a copy of the following value into AL, and61
is a hexadecimal representation of the value 01100001, which is 97 in decimal. Assembly language for the 8086 family provides the mnemonic MOV (an abbreviation of move) for instructions such as this, so the machine code above can be written as follows in assembly language, complete with an explanatory comment if required, after the semicolon. This is much easier to read and to remember.MOV AL, 61h ; Load AL with 97 decimal (61 hex)
That was a lot, and I didn't want to cut out the context so I highlighted the parts I wanted to focus on the most.
First, you see the binary data that the computer is processing. Since everything is binary, the computer mostly knows from where it's processing a program which sequence of 0s and 1s are instructions and which are the values the instructions are acting upon.
That's what it's talking about with the opcode (operation code for doing something) versus the value. So we have:
10110000 01100001
The first set of numbers are the instructions to move the following value to a specific place in the computer, and the second set of numbers are the value to be moved.
And then we made it slightly more human readable by converting the binary to hexadecimal.
10110000 = B0; 01100001 = 61
For the specific computer architecture in the wikipedia example, B0 becomes a mnemonic in assembly language: MOV AL.
Basically says the computer should move the subsequent value to the location 'AL'. That value is 61 in hexadecimal, 97 in decimal. Hence the assembly language command:
MOV AL, 61h
That's still not very easy to understand, is it?
So we abstract again, and created higher programming languages. C, C++, Python, Java, COBOL, etc.
Each have their nuances (some are better for science, since the accuracy needed and extreme sizes of numbers used in their calculations are not something every programming language handles well), but the core logic is fairly similar so once you've learned logic you mostly just have to learn the specific syntax used in each language.
And they're still fairly complicated to use. Especially since each tends to develop 'libraries', i.e. reusable code created for common tasks... and since these are common tasks, and programmers don't like reinventing the wheel, you then have to know which ones you want to use and import them into your program. (When I'm programming and need to know how to do something, half the time it's just a matter of importing the correct library and then giving the commands needed to use that library.)
Before continuing I'll add this - even though most people use the more human readable languages, that doesn't mean that nobody has to know assembly anymore. Actually, malware reverse engineers tend to look at that level to see what a malicious program is doing. And the hackers themselves may be working at this level in order to takeover a program....
Basically, if the computer is expecting a sequence of zeroes to be instructions and another sequence of zeroes to be the values it acts on, if you understand the computer architecture well enough you can sometimes overwrite the original sequence of zeroes. Instead of doing the command above, MOV AL... they may overwrite the binary to something like JMP, which will jump to another location and start reading the code there. If the hacker is able to force a JMP to their own code, then suddenly the program will start following the instructions written there.
To get back to the things I've noticed - we're dealing with some very complex things, so complex I sometimes marvel that at the heart it's all 0's and 1's, and everyone seems to be looking for ways to simplify or make things easier.
Except most of the time those 'simple' things are fairly complex in an entirely different way.
For example, when I started programming in Java our professor wanted us to use BlueJ as the development environment. There are others out there that do a lot more for you, like predictive text. She wanted us to start with something more basic so that we didn't learn to rely too much on that sort of thing. (I've noticed that when I type something out fully I tend to remember it better than when it's just a matter of typing 'ma + TAB' to select whatever is being suggested, so I think she had a decent point here).
When I took some of the later courses I decided that I needed to start using a more powerful tool. So I went looking around online, checked out the various recommendations, and decided to use IntelliJ.
It was so complicated and difficult to learn that I wondered if I'd chosen wrong, uninstalled it and installed one of the alternatives... found it just as complicated, uninstalled it and went back to IntelliJ.
And then dug into the documentation, any videos or tutorials online, and figured out enough of it to do what I needed to do.
I still don't think I've mastered it, by any means, but it's... usable. Well, at least they also make an integrated development environment (IDE) for python so it's not like I have to relearn everything. (And I'm not really coding that much in the first place.)
Oh, and get this - it's not like we ever had any classes teaching us how to install and work with an IDE. Maybe when we started using BlueJ at the beginning, but choosing another tool was entirely up to us.
We come up with these really complicated tools to 'simplify' something, and to a certain extent they do. But they also add another layer of complexity. First, because you have to learn the tools themselves. Second, because sometimes that layer obfuscates the underlying issues, and you still have to dig deeper to figure things out. And third, because that 'simplification' leaves room for other complex actions.
I probably need to explain that in more detail, but I'm going to stop there for now. My dog needs some attention.
Wednesday, December 7, 2022
Drone Hive 2
Drone Hive
Tech and War
Monday, December 5, 2022
You Know...
Bodies, Not Refrigerators
I heard once, about a king who convinced his people to use potatoes - by planting them in a field and posting guards, with the expectation that people would decide whatever they were guarding was valuable and sneak in to steal them.
I don't know if that's true or not (a quick internet search says the king was probably Frederick the Great, but that there's a debate over whether this is true or not) but I thought this said something interesting about what it takes to manage people.
I suppose I ought to clarify first - I'm not sure it's a great idea, mostly because it fits some of the concerns we have about 'nudging' people into doing what we think is the right thing. I'm torn between the acceptance that this is part of human nature, and yes it would be nice to make sure - for example - that people save for retirement... but it also smacks of paternalism, of deciding what's best for people without their input, and pushing them to make what you think is the 'right' choice. (Yes, if you make it 'opt out' rather than 'opt in' people who generally just stick with the default option will save for retirement, and anyone who feels strongly about it can always opt out... but is that really the right way of handling it?)
That said, it's an interesting illustration of how managing people is not at all like ordering a fleet of robots.
I was reminded of this because of Elon Musk's Twitter takeover.
Actually, it was because I got into a discussion with someone about the mass layoffs, and mentioned my understanding that layoffs are actually pretty consistently a terrible thing for businesses.
I've stumbled across studies to that effect off and on for years (though it's apparently not inevitable, as one article was all about how a company avoided most of those pitfalls), but if you think about human nature it's pretty easy to understand why.
When you're on a team, and someone gets fired, generally the people remaining feel scared... next time it might be them.
They also tend not to trust their company as much. Layoffs are a stark reminder that companies think you're replaceable, are not loyal to you, and will fire you in a heartbeat.
Why put in a lot of hard work for a company that doesn't care for you? Why bust your butt if you might lost your job in another month?
Plus, while there may be a few egotistical maniacs who think they're somehow the elite 10% and that everyone else is dead weight (the social media discussion in question was partly because of a thread going around about 'whaling and culling') most people become friendly with their coworkers.
Maybe not bosom buddies, and you may hate some of them, but in general the people you spend most of the week with are people in your circle. And people feel bad when bad things happen to those in their circle. (The company that avoided layoff pitfalls did so in part by giving their employees a chance to decide just who got laid off. Basically said 'we need to reduce by 10%, decide who those 10% are'. And even though decisions were made based on things like 'who has a kid and can't handle job hunting at this time', the people who remained felt respected and cared for by the company in a way that most companies completely fail to do).
This brought me to something my T'ai Chi instructor said, back when I was in college and trying out new things. He was talking about physical movement and not management, of course, but he would say we were 'bodies not refrigerators'.
By which he meant that people are almost always in motion. We're constantly shifting our balance - from one foot to another, forward and back. We walk basically by constantly falling and catching ourselves. We're not refrigerators, that just stand where they're put. We're constantly in motion, even if it's only slightly. (And in fact, we can get injured if we don't move. Like bed sores.)
I think this distinction is important on a different level - we're people, not robots.
We have good days and bad days. We get absent-minded and forgetful if stressed out about something else (that's part of why the military works so hard to take care of families back home. A soldier will have a hard time focusing on his work if they're worried about whatever is going on back there - which might include things like patrolling, sighting an enemy, or you know identifying a bomb before your team triggers it. Seriously, being aware when you're emotionally compromised is a skill well worth developing).
We don't actually do well with cramming or powering through. I noticed this especially since learning how to code, because there are times where forcing myself to step away from a project was the best decision I could make. Seriously. Sometimes stepping away will allow me to come back with a fresh perspective, and finally work through whatever it was that was causing trouble. Or sleep - the number of times I figured out what I needed to do just as I was falling asleep is ridiculous. (Another little anecdote floating around on social media somewhere - a developer commented about how he's paid even when he's at the office goofing off playing a game, but not paid when he's in the shower and suddenly figures out how to code something-or-other for work).
People are fascinating. They can be completely selfish and irresponsible, and also extremely giving and sensible. They can be petty and spiteful, gracious and kind... and motivated for all sorts of reasons. (It's part of why I love humanity, even while I'm also sometimes frustrated and annoyed with it).
We're glorious as we are - and we're not robots. We can't be managed like robots, and nobody should even be trying to.
There are all sorts of managerial tools, and they have their time and place... KPIs (key performance indicators), expected rates/hr, quality and delivery goals - all sorts of data that managers use to tell how they're business is doing.
But you have to know how and when to use them, and when to take them with a grain of salt. It's sort of like what my father said about predicting the weather (he has a master's in meteorology courtesy of the Air Force). He said you get all these measurements - temperature, barometric pressure, etc - and the computer makes a prediction...
And then you have to go outside. Look at the weather and see if it fits what's being predicted. Check the clouds (I don't really know the names for which ones, but some types of clouds indicate certain types of weather and if the computer is predicting one thing and the clouds don't look right for it, you may need to revise. Don't quote me on this, I'm not the one who actually studies these things.)
Businesses need data to track their performance, but a) we can only track the things we measure and b) people will game the system.
I suppose this is also like the relationship between qualitative and quantitative analysis, but I think this post has gone on long enough.
The main point was that we're people, not computers. And I see far too many managers who get so focused on data and metrics that they seem to forget that.
Sunday, December 4, 2022
If Nobody Followed A Tyrant...
Thursday, December 1, 2022
Penny Wise, Pound Foolish
Sunday, November 27, 2022
On Fear and Incompetence.
When the angels met the shepherds to announce the birth of Jesus, the first thing they said was 'Be not afraid".
That seems to crop up quiet a bit in the Bible, actually. "Do not be afraid".
Fear really does seem to be the mindkiller. I remember when I realized that, in American history, the slave states were afraid the northern states would outlaw slavery... and there's quite a bit of history leading up to the civil war that was centered around that. It seems ironic, though, that that fear led the south to try to secede - and ultimately brought their fears into reality. (Slavery is evil, and it seems the north wasn't going to free the slaves until pushed into it because of the war, so perhaps that was for the best. Then again, would we still have the lingering issues we do today if it had happened less abruptly? Yet can you really be okay with letting slaves suffer a minute longer than necessary... ? But if it led to less suffering now... Since we don't have time travel that's mostly just hypothetical, though worth thinking about as we consider strategies for bringing about change.)
I was reminded of that while reading Adults in the Room, because in his preface Varoufakis mentioned Oedipus (and the self-fulfilling prophecy at his birth), and claimed that "Fearing that Greece's undeclared bankruptcy might cause them to lose control over the West, they imposed policies on Greece that gradually undermined their political control, not just over Greece but over... the West."
I think this is a recurring pattern, I've seen it with managers.
In one of our courses we asked whether it was better to have a good plan with poor execution, or a poor plan with good execution. I think it's the latter... because any good plan of execution will include feedback. You have to assess whether your plan is actually achieving your goals (as well as whether it's happening on schedule, and a bunch of other things.)
If your plan isn't working as is, good execution means adjusting your plan as needed, and if you do that enough then eventually your poor plan will become a good plan.
The trouble, though, is that feedback sometimes is scary. If you worked hard and think you're doing a great job, hearing criticism sounds like an attack. Like they're saying you suck, you failed, you aren't really good at all.
That's when criticism and feedback starts seeming like a threat to your authority, and people often respond poorly.
And so they do things that ultimately do make them fail. (This is part of why getting out of your bubble, valuing people who have the courage to speak up - especially when it's something you don't want to hear, and various other things are so important.)
We see the same dynamic with saying like 'it's not the mistake, it's the cover up.'
People can be very forgiving if they know you were trying your best, and that you changed when you saw it was necessary. Take John F. Kennedy - the discussions on groupthink often talk about the disastrous Bay of Pigs invasion. Then they go on to talk about how JFK took the lessons learned from that failure and used it to improve his team's decision making, best shown during the Cuban Missile Crisis.
Anyways, Varoufakis mentioned two rather disturbing things (if you take him at his word, and for the purposes of this post I will).
One was a call where someone basically threatened his son. The other was the way the 'troika', as he calls some of the established powers in Europe that were pressuring Greece during their crisis, basically tried to engineer a bank run when he and the party that made him Finance Minister came to power.
Both are the kinds of things that are hard to get attribution for, much like cyber attacks, which is why I said I'd take him at his word for this post. You can have a pretty good idea of why something happened without necessarily having the sort of proof you could take to court, and with all the conspiracy theories going around I generally lean towards 'you need to put up some proof for me to take it seriously', but that's more about needing some sort of standard then because people's theories are always wrong. (Though theories that require over 60 different judges of different political affiliations to be in on it don't really pass the sniff test.)
Anyways. As for the threatening phone call, I have to wonder about the people behind it. I'm assuming the caller worked for someone (and why didn't they question who they were working for, that they accepted an assignment like that?) Was that someone one person? Ten people? Did they have some sort of misguided justification that led them to think they were doing the right thing? Were they so focused on power that they knew it was wrong and just didn't care? Seriously, if you're sending threatening calls to people doing things you don't like, you probably ought to think long and hard about how you got there.
As for the bank run... I've come across indications that there can be some pretty shady things going on in economics/finance. (Iirc, there was something funky that helped trigger the Lehman Brothers bankruptcy, too).
I don't feel knowledgeable enough to speak out about that, other than to say that economics seems about half con artistry.
Hmmm. That's not quite right. It's more like this - stock prices are supposed to reflect the company's ability to return value when they pay their stock holders. Some analysts to really in depth analysis of a company - their financials, the market, their plans for the next year - and make some judgment about just how much the stock is worth.
Others - are more about reading what everyone else is doing. Like in poker, which is as much about interpreting the body language of the other players as it is about knowing how good your hand is and the odds of getting what you need on the next flop.
Between people trying to buy low and sell high based on their assessment of what everyone else is doing, and programs that will buy or sell based on fluctuations in price, we often see severe swing that don't seem to have anything whatsoever to do with the basic fundamentals of the company. Con artistry. (Okay, not always, but there's plenty of room for it.)
Anyways, let's say there's the consensus of the IMF, ECB, etc. And their consensus is that austerity measures are required.
A person focused on serving the people will evaluate the results and adjust as needed if it doesn't seem like their plan is working... whereas someone who is insecure will react as though it's a threat that needs put down.
The bank run sounds like the latter. Like, if your consensus is correct, if your policies are right - won't that become obvious when people try something different? (Same thing goes for Argentina, and China for that matter. They didn't act in keeping with the consensus - if the consensus is correct the failures will be harder and harder to hide. Unless... unless you do something that allows them to blame the failure on something else. Like a bank run.)
It really sounds more like bullying and control issues, rather than knowledgeable people acting on behalf of the public.
And that's the problem, isn't it?
Just like Trump's obsession with the optics of covid meant he didn't make policies focused on protecting American lives.
In short - it's incompetence, and you will lose power if you can't fix it.
Friday, November 25, 2022
Musings
Wednesday, November 23, 2022
Network Effects
Friday, November 18, 2022
On Twitter, DevOps, and My Work Experience
Given how everyone is discussing when Twitter is going to die, I figured I'd talk a little bit about my work experiences - mostly from my previous job.
I'm going to try to make this as non-technical as I can. Since I came to tech late in life, I remember well what it was like before I understood pipelines, configs, scripting, etc... I'll probably use less technical terms (like sure, I know what a vm, host, machine, etc is, but in this post I'm just going to call them all 'computers'.)
I think the first thing to understand is scripting. Or perhaps the command line interface (CLI). Most people use Windows if they use a computer at all... and so we're used to having menus that let us know whether we want to copy files, or we click a mouse and choose to delete a file. It's a graphical user interface (GUI) that lets us work without memorizing the commands to do them all from the CLI.
You can do pretty much all of the same stuff from a CLI, so long as you know the words. On windows you can look for 'cmd' to get a simple screen where you can enter the commands, or you can use Powershell, their newer CLI.
The reason I bring that up is that if you know the commands, you can also jot them down in a file (Use Notepad preferably, since Word tends to add some invisible characters that can screw things up. In Windows you have to give the file the proper extension in order to run it, and make sure it's executable.)
So if you regularly do the exact same thing, every day, you write a script with those commands. If you want to create a backup of your important files, you can manually go and copy it over every day, but that gets tedious. And some days you might forget to do it.
Instead you save the commands (in plain English, you might say 'check this folder for any file created today, and copy it over to this other location').
You can then run that script whenever you want to take a backup.
Even better, you can then schedule it so that the computer runs it for you. That way you don't even have to think about it. You don't have to remember to make a copy, you don't have to run the script... it's all automated.
In my last job, the team had spent quite a bit of time automating these sorts of repetitive tasks. Some of them hadn't been changed for over a decade... and as long as the process is the same, it works great.
Makes my job easier...
The problem is that it doesn't always work. Or things change, and the scripts have to be modified. I joked that my job was generally about dealing with things when they go wrong.
Perhaps the most dramatic example (though thankfully not common) came about when a computer became obsolete.
We all generally by new computers on a regular basis, so we don't have to deal with it as much... but a large company has so many computers that it gets hard to keep track of them. Hard to know what they do, and who is responsible.
And unfortunately you can't just let them sit and run their thing. One of the biggest reasons is security - as malware evolves and adapts, so too does software, and older computers sometimes stop being supported and updated and have vulnerabilities that you just can't fix. So the solution is to upgrade it to something newer.
So we'd had a couple of computers hosting some internal web pages for our work. We were supporting testing in non-production, and every time the developers made a change to the code, that code had to be pushed to the test environments. We called that a build, and so naturally pushing it was called a build push.
We also sometimes needed to reboot the application, sort of like how powering your computer on and off can fix weird issues. Except applications are a bit more complex than your computer... they may actually be running on two or three computers, or more. You may have one that dealt with your application logic, and another one that dealt with the website itself. They also generally will talk to a database, since that's where user information and other things are stored. So to reboot the application you have to 'bounce' a couple of different things, often in a specific order.
So we had an internal page where the testers could push a build and bounce our applications (of which we had many... customer service, payment processing, billing, etc).
Most of this was automated, again due to the hard work of people a good decade ago, and so most of my time was spent dealing with situations where the automation didn't work.
Maybe something interrupted the computer while it was copying some files, and the files were incomplete. Maybe someone deleted a key file. Maybe the operating system needed upgraded, and we had to change our configurations to reflect that change. Maybe a firewall was preventing a computer from talking to another computer. Maybe something was missing in a file and the computer didn't know how to reach another computer. We also used what's called 'third party software', like the databases and web hosting. Which also sometimes needed upgraded (especially if there's a vulnerability. That log4j issue a couple of years back caused a lot of work in that regard, and it's not enough to make sure our own applications were updated. We had to patch or upgrade some of that third party software, too.)
The issues were plentiful, though it wasn't necessarily consistent. One day could be very quiet, another day might have five or six different issues in as many different environments and/or applications.
Everything is highly interconnected, and every change may have an impact on other things. Applications...
Before I studied computers, I mostly thought of them as a single file. You know, you download an app from the app store. or a *.exe file for some software you want on your computer... then you run it and hey, presto! You have the app.
But really, at least in a business like ours, they're not so simple. And I'm not just talking about microservices. (Microservices make the application more flexible and modular, because you can update a small portion of it without worrying that it will impact other parts of the application. Basically if you go to your cell phone providers site, you can do a variety of things. Create a new account and purchase a plan, pay a bill, check your usage, etc. You can break all of those things down into separate parts. Like 'add a new subscriber', and have a developer focus on just that part of the application.)
If the developers and/or testers want to make changes, they don't necessarily want to have to update the code everywhere... so a lot of times what they do is they make a configuration (config) file. The code will query the config file to get the value it needs, and you can update that config file without having to change the code.
This was also something I spent a lot of time on... sometimes for simple reasons, like they needed to change the url for something. Or use a simulator.
Sometimes it was because new variables were needed for the changes that were done, and we'd have a call with the developer where they'd have us try updating the config file in different ways until they figured out the right settings to make the application work.
One time there was an issue I helped resolve... the application needed to copy some files from one computer to another, and it kept asking for a password whenever it connected. We were asked to configure it so that it could connect without a password (generally you can connect from one computer to another with ssh, and it normally will ask for your username and password when you do. However, there are ssh keys you can store so that it verifies the connection without a password.)
We configured that, and computer A was able to talk to computer B, but they were still having the same problem.
I had to dig into the process in order to figure out that there was actually a third computer involved. So computer A could talk to computer B, and it could also talk to computer C... but computer C was asking for a password every time it talked to computer B. The issue wasn't with the two computers they told us about, but with an entirely different one that they didn't even mention.
I think I posted some things before about the struggle we had teaching new people this job, because while with experience you can learn how to deal with the most common issues, there are plenty of times where we'd get asked to fix something... and had no real idea what was wrong or where to go. So you had to learn how to figure it out.
To get back to scripting... most of those were written a decade ago, and the people who wrote it have moved on to other positions. Luckily, when I started we had a wealth of institutional knowledge... most of my co-workers had been there a decade or more. That meant that I had people I could go to when I needed to understand how something worked.
But there were plenty of times where I basically had to teach myself what I needed to know. By which I mean, read through the script that manages the build push... and it may be calling other scripts, or querying a database, so then I have to figure out what that other script is doing. Or (if it was our database, since we had one to store a lot of our configuration details) go to the database and figure out what was configured incorrectly or missing.
It is a lot harder to read code than it is to write it... (although scripts aren't really considered code, I think this statement applies to them as well)
When you write it, you know exactly what the commands do. When you read it, you may constantly have to look up the commands yourself... unless you're already quite familiar with them. And if it's a really long script, you may have to spend quite a bit of time working through each line to figure that out.
Tbh, given time constraints, I was more likely to skim the code and/or search for key terms in order to figure out just the portion related to the issue at hand.
I emphasize scripting because, to me at least, they seem to be the workhorses of what we do. All those fancy pipelines to run a complicated process? Like a build push?
A lot of times they're just calling scripts in a set order. (With redundancies built in, like retrying a script if it fails the first time. Or picking up where it left off if something went wrong, so you don't have to do everything all over again.)
The tools used in DevOps are useful, and automation is nice... but someone, somewhere, has to understand what it's doing.
Because sometimes you need to change them, or fix something that went wrong. When it breaks, you have to have someone who understands how to fix it.
And that is most definitely a 'when'. Maybe it'll be a good decade before it breaks, maybe it'll be tomorrow.
If the person who designed it has moved on, then the people who got hired afterwards have to understand it... and if that information isn't passed down, then they'll have to teach themselves.
Anyways, to bring this back to Twitter...
They just lost a LOT of institutional knowledge.
A lot of people seem to expect it to break at any moment, and I'm not sure it will. Businesses put a lot of effort into making sure the code in production is reliable (hence all those test environments in non-production that I worked on).
Sure, we've all seen things go wrong when software gets buggy. Most of the time that's because certain issues don't show themselves until you're dealing with real world volumes. (The code may work fine when only a fraction of the users are using it). But businesses know that they lose money when things don't work. Customers get frustrated and switch to a competitor, people planning to buy your product suddenly decide they don't really need it... buggy code loses money.
The existing production code is probably as reliable as they can make it... the problems generally start when something new is introduced. (Or when the hardware wears out. That's also a thing, of course. Most people don't wear out their hard drive before they're ready to buy a new computer, but the wear and tear of a major enterprise is a whole other story.)
Anyways, that loss of institutional knowledge, to me, means that every time someone is trying to troubleshoot something they're going to have a heckuva time finding someone who can let them know where to look, or what is supposed to be happening.
They're probably going to have to teach themselves everything, see if they can figure it out by poring through the code. And scripts.
Oh, I almost forgot - in addition to software updates, computer upgrades, and config changes, another common task is dealing with certifications. That is, many applications have certs that help ensure secure connections... and they expire and need to be renewed.
Figuring out the process for renewing certs (who provides them? What commands help you get the start and end dates when the certs are often encrypted? where are they stored?) can be a bit of a pain, too.
Anyways, the poor people left behind are now going to have to figure everything out themselves. If they're lucky, maybe they're still friends with their former colleagues and can call someone up. If they're unlucky, they may spend days troubleshooting something that the people who knew the system could have fixed in minutes.
I don't know when or how it will impact production, it depends on what goes wrong, and when. I'm fairly confident, though, that it'll take longer than it would have, that issues may pile on since they'll still be troubleshooting one thing when another thing pops, and that it will be extremely stressful.
Twitter Related
Saturday, November 12, 2022
An Excellent Article On What It Takes To Be A Genius
A Eulogy for Twitter
All this stuff going on with Twitter has really got me thinking of social media - of how I use it, how it works, and so on.
I guess, first... the real strength of a social media site is it's network. Facebook, for example, has it's issues. And I probably would have left it years ago if it wasn't the only place where I can stay in touch with a rather farflung group of friends and family.
Where else can I get updates on my old grade school friends? Ones I hadn't seen in years, since we moved away when I started high school? Where else can I learn what's going on with various aunts, uncles, cousins, step-brothers and step-sisters? (Not so much the immediate family, since I generally call them and talk to them directly.)
Leaving Facebook means leaving my only connection to these people, since it's practically impossible to convince all of them to jump ship at the same time. (Though as that post on the thermocline shows, if things get bad enough on that site it IS possible. It's just that it'd have to get pretty bad first.)
So social networks strength comes from it's members. The more people on the network, the more people you can connect with, the more powerful it is. Which translates into possible strength in other ways, since you now have a large potential audience for anything on that site...
And each network fills a role. Facebook for friends and family. LinkedIn for work and business (some may use it on a regular basis, but I mostly just have an account there so that when I'm job hunting any of the HR people doing their due diligence can see that yes, I do have a presence. And it lists the same jobs I have in my resume... For the most part I don't actually care for or want to socialize on there. Though, again, I do have some contacts there - former colleagues and coworkers - that I don't have elsewhere.)
Tumblr is pretty much for fandom. I only got an account there because I followed my friend - who was in a number of fandoms - to that site. I only later realized that I'd been following her through most of the fandom migrations, since she also was the one that got me on LiveJournal. And migrated to Tumblr as part of the fandom movement. (She died last year, and I miss her. 😢)
I'm not sure if Discord should be listed as a social media site. I mean, it is? But it's more like the tech equivalent of salons... you generally have to get an invite to join a discord server, so it's more isolated and less public. Started as a way for gamers to talk while playing together, but obviously used for a lot more than that now.
Anyways. Twitter.
I started on Twitter mostly for infosec. I mean, I seem to have fallen into DevOps and I'm not sure if or when I'll ever change over, but I find the topic interesting and I really like the community. They're knowledgeable about a wide range of things.
And given my interests, I suppose it's no surprise that once I started using it regularly I also started following various other topics of interest. Politics, of course. History. News. Random accounts for everything from the history of Khorasan to geology and cool looking rocks. Also was good for diversifying my feed, and getting the perspectives of all sorts of people.
In so doing, I found that Twitter filled a much different role than my other accounts. If Facebook is for friends and family, and LinkedIn for professional contacts, Twitter was very much like a free-for-all. You could engage complete strangers on almost any topic imaginable.
I've heard people talk about it as the town square, or the equivalent of the water cooler at work. That fits very well, except that the town square is a public place and Twitter is a private company. (This is probably part of the problem that led to the current situation.)
I discovered that I often heard the news on Twitter first, though you have to be careful since initial takes are often wrong. There's also a lot of bots, and misinformation, so generally you have to confirm anything you hear there elsewhere.
Now that it seems to be dying (which I'm not sure is true, since everyone said the same about Tumblr and Tumblr is still there in all it's wacky glory... but then again, Elon Musk seems to have lost quite a bit of money and is talking about Twitter going bankrupt, so maybe it really will) I've had to consider where and how I'll find anything that will give me the same experience. Maybe Mastodon... maybe not. We'll see.
It's crazy how poorly Elon Musk seems to understand the business. Like - I'm not going to pay $8 for a blue check mark no matter how much you want me to.
I might pay $8 for an ad-free tier, like some applications do, but really if he ever insists people pay for an account it'll be the death knell. Or rather, you might have some people paying to be on it - like Patreon, I assume - but that will also limit the size of the network, because a lot of other people won't.
I suppose it's a bit like toll roads vs regular highways. Anyone and everyone can get on a public road, so they get a lot of use. Toll roads limit who uses them to who is willing to pay.
If you want a business like a toll road, that's fine... you won't get everyone, but you can probably still make a profit out of it? Maybe?
It won't be Twitter, though. Or rather, it won't have the characteristics that made Twitter the powerhouse it was, or possibly could still be.
It has been darkly amusing to see what a madhouse it's become at the moment. The fake accounts using their paid for blue check marks have been a riot... though I never expected it to have a real impact on stock prices. (Surely that's only temporary?)
I'm not sure what the future holds, or whether I'll find anything that fills that role...
I think I'll miss it.
I kind of wish I had a billion dollars myself, so I could invest in building my own version. It seems there are a lot of former Twitter employees looking for a job, so it ought to be easy to find people with experience.
Alas, I am not in a position to do such a thing. Perhaps someone else is, and will.
On the Midterms, and Foundational Thoughts
My freshman year we moved to a small town in Indiana (and moved again to South Bend a year later). I remember having one of the strangest teachers I'd ever had there. He put some basic axioms on the board... not saying they were real, but asking us to take them as true. Things like 'black is solid' iirc. Then, using those rules, he argued that when you put a glass jar over a candle it was the black soot that put the flame out.
Obviously, we all know that's false. But no matter how much we argued about oxygen and whatnot (and why should you believe in oxygen, you can't see it?) we couldn't get him to admit he was wrong.
I later came to believe that the point was you had to address the underlying thinking. The axioms who put on the board that we had to take as the starting point. (He also later argued that the earth was flat, you can go around a quarter and wind up back at the starting point and it's still flat, right? I assumed at the time this was part of the same point, getting us to really think about the underlying assumptions. Now I'm not so sure, and am wondering if that science teacher really was a flat earther... I hope not).
Anyways. With the fallout of the midterms still being determined, I decided to check in on some of the more conservative sites I occasionally look at. I do try to make sure I get a diverse feed of inputs, but tbh I felt conservatives had gotten so crazy under Trump that most of the time it wasn't worth it. I'd rather see the highlights someone else did the digging for, than subject myself to that level of madness. But I digress.
I came across an article on the topic, and wanted to share it here so I could discuss my own responses. Since I'm going to copy/paste pretty much the whole thing and you can use that to find it, I'll go ahead and link to it here. The difference in our underlying understanding is just breathtaking, really. How are we supposed to run a country when we have such a divide?
Anyways here's the article:
It Could Have Been Worse
Just kidding. Out of the range of possible outcomes, what we saw last night was about as bad as it could be. The GOP’s failure to make progress stunned everyone, not least the Democrats.
What happened?
* Fantasy vs. Reality. It turns out that there are a
great many voters who don’t care much about what traditionally have
been considered decisive issues: inflation, crime, illegal immigration,
lousy schools, etc. (I personally disagree here, I think voters care very deeply about these issues. It's just that the Republican willingness to overlook Jan 6 and Trump's attack on democracy was more important. That and the abortion issue.) Many millions of Democrats, confronted with these
facts, didn’t conclude that they should consider voting for someone
else. Rather, they seem to have thought, My team is in trouble! (Again, not what happened. Some Democrats may have thought so, but Republicans lost independents, and even some conservatives also offended by Jan 6 and Trump. But if you explain it away like this you don't have to address that, do you? Democrats will probably go too far if they believe this, because they'll lose those same independents and conservatives... but we'll deal with that after we deal with the Republicans willing to support a lying oathbreaker like Trump.) All the
more reason why I need to support my team. This was an election in
which, to an extraordinary degree, issues were subordinated to party
loyalty. (Not my take, like I already said. Blaming it on 'too much party loyalty' let's them avoid addressing the real problems.)
* Abortion. While Dobbs was plainly right as a
matter of constitutional law (said as though it was a fact and not up for debate, nor the way this was rammed through, but sure. Whatever), Justice Alito and his colleagues probably
cost Republicans control of Congress. I thought the Democrats were
wasting their money when they spent countless millions over the summer,
pounding Republicans on abortion. The conventional wisdom, which I
shared, was that the issue would likely help to drive turnout, but
wouldn’t win over any undecided or middle of the road voters. But
driving turnout was decisive: liberals trooped to the polls, while in
many areas Republican turnout was not what it should have been. (Not just liberals, but again... whatever let's you feel better I guess.)
* Donald Trump. I thought the Democrats’ endless yammering about “our democracy” and “fascism” was incredibly stupid, born of desperation, and would be ignored by voters. (Considering what I've already said about Trump and Jan 6, I think it's obvious I highly disagree with his analysis here, and am pretty annoyed that he and his refuse to see the harm Trump has done. I do think throwing the term 'fascism' around is... perhaps a little extreme? Or rather, it's trying to frame the issues in World War II terms rather than seeing what we have in the present, so I tend not to use it. Also because it's inflammatory and tends to alienate the people who don't already agree. But I don't necessarily disagree, so much as don't feel using the term helps. I think we'd be truly screwed if we ever gave Trump power again, and the same goes for the party that refused to impeach him and continued to support him after Jan 6.) I was partly right: those themes were stupid, and they were born of desperation. But it turned out that they were not ineffective. To cite just one example, a young woman I know posted a photo of herself at the polls on Instagram, with the text, “I’m voting against fascism.”
Contrary to what you might assume, she isn’t an idiot. “Our
democracy” and “fascism” were code for Donald Trump. (Not really. He's the tip of the iceberg, but whatever.) At this point,
Trump is a giant anvil around the neck of the Republican Party. (Absolutely agree, and I'm glad he sees it.) In many
areas, likely most, he is absolute poison. (Yes). To be associated with Trump
is to lose. Pretty much everything he has done in the last two years has
been not just ill-advised but massively destructive to the Republican
Party and to the United States. He has teased a “big announcement” in
the next few days. I hope he announces that he is moving to Bulgaria. (One can hope).
An off-year election is normally a referendum on the president, which
is why the out-party nearly always gains. (Yep. Which is why all the Republicans trying to convince themselves this wasn't a terrible midterm just because they may still gain control of the House is... silly. Or shows ignorance. But that seems more of a face-saving thing than anything else.) When the Democrats tried to
make this year’s election a referendum on Donald Trump, I thought they
were crazy. (Probably because you don't see the harm Trump did to America with all his lies about the 2020 election, but sure.) Trump is not an office-holder, nor was he on the ballot. (True. My little parable before talking about how some people were trying to reinstate Trump, and I thought about adding some more on how he wasn't truly on the ballot, but I'm just not posting as much these days and never got around to it. The thing is, since Republicans went all in on Trump and refused to impeach him for what he did, and continued to deny the election themselves, they're now as much a problem as Trump is himself. Hence why he's an anvil around their neck, as this guy so astutely pointed out.) How
could that possibly work? Well, it did work, and Trump, with his
inimitable bad judgment, collaborated fully with the Democrats in
putting himself front and center, with disastrous results. (That's how Trump has always been, surprised it took this long to notice).
The major exception to last night’s gloom was Florida, where Ron
DeSantis and Marco Rubio both won crushing victories. Why was that? At
least part of the explanation is that Florida was one state where the
Democrats couldn’t pretend Trump was on the ballot. Ron DeSantis was on
the ballot. (Well, we can also talk about Florida gerrymandering and the way they lost ground with Hispanic voters, but sure.)
* Polls. We Republicans have gotten used to the idea
that polls generally underpredict Republican performance. When liberal
pollsters started reporting more favorable numbers for Republicans in
the days leading up the election, it looked like the usual script was
being followed. But this year, if anything the polls may have
understated Democratic support, not Republican. What–to cite just one
instance–happened to the 26-point swing among suburban women toward the
GOP, which led Steve to dub this the “Desperate Housewives Election?”
They were desperate, all right–desperate to vote in favor of abortion
and against Donald Trump. But how could so many polls be so wrong? (Lots of people asking this question. I personally think polls have a hard time polling young voters... well, most of us don't answer the phone when unknown numbers are calling. Of course, with a decent sample size pollsters can adjust their results to reflect that, but it's pretty hard for them to do it when they're using patterns that worked in previous years and this particular year doesn't fit the pattern. The youth turnout was much larger than normal, how could they have polled and adjusted for that?)
I have no idea why this happened, but I know that it wasn’t just the
major public polls that were off-target. I was privy to private poll
data here in Minnesota, and it showed far greater support for Republican
legislative candidates than actually turned out at the polls. Why? I
don’t know. I speculate that a number of Trump voters who are not
consistent voters and are lightly attached to the Republican Party
didn’t show up. On the other hand, liberals who thought they were voting
in favor of abortion and against Donald Trump turned out massively. (Close enough. Probably. I'm sure there'll be more post-mortems looking into this.)
Trafalgar was one pollster that had a relatively good record in recent cycles, and Robert Cahaly, who runs Trafalgar, was convinced that his poll, which tried to sample hard-to-reach conservatives, understated Republican support. That turned out to be wrong. On Saturday, I am moderating a panel on the election at David Horowitz’s Restoration Weekend in Phoenix. Cahaly is a member of my panel, and I will ask him what he thinks happened. The answer should be interesting.
There is much more that could be said, but I will leave it there for now.
*******
The biggest issue, to me, is that this guy badly misunderstands the harm Trump did with his 2020 election lies, and just how many Americans - like me - were willing to vote against Trump and all the crazy people who continue to support him after what he did on Jan 6.
I've gotten into enough discussions on Twitter (more on that debacle to come) to know that they don't want to understand, though. They always minimize it... laugh at calling it an insurrection, or bring up the BLM protests. They just absolutely refuse to believe that a sitting president lying about election results for months, and directly encouraging people to come protest (and pressure Pence into overturning the results) was in any way, shape, or form an attack on our Constitution.
But sure, whatever. This analysis may make them feel better. At least they see that Trump is dragging them down, even if they don't really understand why.
Friday, November 11, 2022
Monday, November 7, 2022
How Do People Wind Up Like This?
Thursday, November 3, 2022
The Thermocline
Thursday, October 27, 2022
A Parable, part 3
Wednesday, October 26, 2022
Parable Side Thought
A Parable, part 2
Sunday, October 23, 2022
On Maliciousness vs Incompetence, Cont.
With regards to incompetence, it's very hard to address because blaming people tends to make it worse...
Because the reasons people are difficult in the first place tend to be their biases, prejudices - and fears. Focusing on who to blame just tends to make them even more afraid, even more resistant to change, even more determined to hide their weaknesses and cover up their faults, and it just makes it harder.
Zero tolerance makes people more likely to hide their mistakes.
But that leads to a challenge... because how do you make things better if you don't address the root causes? How do you build competence if you don't point out where things could have been handled better? Root causes that often involve people making mistakes?
I'll use an example from a class on how to build a good healthcare organization - a nurse gives a patient the wrong medicine. If the nurse is terrified they'll get fired for making a mistake like that, they would probably try to hide what they did... and the organization doesn't know and can't address it. If the organization focuses on fixing systemic issues without blame, then they may learn about the problem and design a more permanent, systemic solution. Like making sure the medicines have different shapes and colors, so it's harder to give the wrong one on accident.
This is very challenging, for a couple of reasons. First, people are instinctively afraid of admitting their mistakes no matter how much you tell them that it's okay. You will have to demonstrate, over and over again, that that's what you really want and expect. They have to see you handle other people's mistakes well before they will truly trust what you're saying.
Second, you do need to address the issue when someone is consistently and repeatedly making mistakes. Like, some things are just human error and can be addressed with systemic issues, but some people are really not suited for certain position. But the issue isn't that they're 'bad' or 'terrible', it's just that some skills/talents/whatever are not a good fit. Anyways, you do need to address a bad mismatch, so you need a structure that doesn't blame people for mistakes but still handles them in such a way that everyone (the person involved, and the organization as a whole) either learns and grows or are moved to positions better suited to them.
All of these things take emotional maturity, good communication skills, empathy, and more.
When businesses talk about the dearth of good middle managers, it's because far too many are lacking skills like the ones above... which means that most people are working for a direct supervisor who doesn't have the emotional maturity, empathy, or communication skills to develop them the way I just described.
Workers are more likely to have no development at all, to expect to get fired for any mistake, to be poorly paid, and to be treated as though they would malinger and goof off at the slightest chance.
But I digress. The main point of these last few posts was that learning and growing is the key to competence, that pointing out mistakes has to be handled carefully or you can start the blame game and make everything worse, and that it's easy to say and very challenging to do.
I also wanted to address the 'good shepherd' comment from before. Or rather, go into examples of how refusing to address your own biases/prejudices/fears coupled with a lack of focus on taking care of your people can lead to some pretty godawful decisions that hurt all of us.
Except, ofc, I have to address them in a way that doesn't start the blame game, because it's more about how we can do better in the future than punish people for doing poorly in the past.
A Parable
As those with camping experience may be able to tell you, getting a fire started is a bit of an art.
You can't just pile up a bunch of logs, strike a match (or even a spark with old fashioned flint and steel), and expect a fire to start.
First, you generally need some sort of tinder. If you took a lit match to a fresh log odds are the match will burn out before the log really gets going... you need dry, flammable material to get the fire really started. Paper, dried out grass, dried out and dead branches, etc.
Second, fires need a certain amount of oxygen. If you just haphazardly pile the logs in a firepit, whatever fire you start may burn out because there's no oxygen. There's actually quite a few options for how to set up the logs, but the main purpose is to spread them around so that they still have enough space to get the oxygen they need.
There's a lot more that can be said about how to start a campfire, but tinder and an arrangement that allows the right amount of oxygen are enough for my little parable.
The night is cold, and a large group of people are trying to light multiple fires in order to keep warm. Some of them have experience, and are able to get their fires lit with little fuss.
Others don't... but they send someone to one of the lit fires to ask for tips. Or maybe one of the more knowledgeable individuals decides to walk around and help out, teaching the others what they need to know.
And then there are the campsites where the person in charge has no experience - and feels threatened by anyone who does.
So they refuse to admit they're doing anything wrong. They yell at anyone who tries to suggest they do anything different. They verbally attack any of the helpers that walk by and offer tips. They refuse to send anyone to another site to ask for tips...
And the night continues to grow colder, the people around that site are shivering... and some start drifting off to join the more successful campsites.
Soon, only a couple of people are left. Or maybe nobody at all... it depends on how stubborn they are, and the loyalty of their fellow campers. Either way, it's a failed campsite and a failed attempt to start a campfire.
There's a lot of different things I could focus on in that story, but I'm only going to talk about a couple.
First - the issue isn't that they didn't know how to start a fire. The ones willing to ask questions and accept help were able to learn that, and could use those skills next time.
The real problem is being so afraid (of looking weak, of losing control, of being judged... whatever their reasoning) that they refuse to learn and grow.
Second - everyone wants to be warm when it's cold, and they will do what they need to in order to get warm. If you can't get the fire started, they'll leave. Mostly. (If it's cold enough, and you're tyrant enough to stop them from leaving for warmer fires, then you may just lead to everyone freezing to death, but that's an edge case that would require a LOT of things to go wrong. Having that mix of incompetence and total control is extremely BAD!)
The third point is a bit more meta. Imagine the campfire represents any sort of human endeavor. There are people who can strike sparks to light the fire. They are scattered throughout the population - not everyone can be the spark, but any reasonably large group of people will have someone who can.
But the spark doesn't catch unless there's tinder and kindling, and of course the fire needs oxygen or it dies out.
The groups who are able to design their organizations well will have that mix - the tinder, the kindling, the oxygen - so that wherever and whoever strikes a spark is able to get the fire started.
Those that forget the tinder, or stack their logs too close, will never get the fire started no matter how many people they have who are able to strike a spark. Or they may start something, only for it to quickly die. (and some may lack proper safeguards and start a fire that quickly gets out of control, but that's outside the scope of this particular post).
Hmmm. I suppose the analogy is even better when you consider that it's easier to keep a fire going once it's started than it is to start from scratch. Like, a startup needs to be careful about making sure it has the tinder and proper spacing, but a business that's already off the ground can probably sustain itself just by throwing a few more logs on the fire. It's just that once the fire goes out, they've lost a lot of the skills and knowledge required to get it started again. Also, if they throw too many logs on the fire, too fast, without the right sort of spacing etc. they can probably put the fire out. (i.e. mismanagement can destroy the fire, and managing a fire takes a different skillset than starting from scratch.)
To tie this in with my previous post - if you're aware of your biases and prejudices (which includes the common bias of thinking that what's good for you is good for everyone, and I probably ought to include 'fear' here, so if you're also aware of your fears) and if you sincerely want to do what's best for your people, then even if you don't actually know how to start a fire you will ask the questions and find the person with the knowledge to do so.
You will figure it out, and you will make sure your people are warm, and that's what makes you competent.
Thursday, October 20, 2022
On Maliciousness vs Incompetence
I wanted to talk a little bit about my previous post, and I suppose quite a bit of it is related to the famous quote "Never ascribe to malice that which is adequately explained by incompetence."
And, to my way of thinking, a lot of incompetence is related to human biases.
We all have biases, just like we all have blind spots...
And like with blind spots, if we're aware that we have biases we can take steps to counter them. (One of the most annoying attitudes I've seen is this idea that 'since it's impossible to be without bias, we shouldn't bother trying'. Like... NO! That completely misses the point?!?)
You can read the list of common biases and think up countermeasures if you want... I don't intend to go into great detail here. I will say, though, that I think at the heart of it you have to value truth over comforting lies... that you have to be willing to listen when someone speaks who doesn't share your biases and preconceptions (not that you have to agree, but if you listen and consider what they say you have a better understanding of what might go wrong and can - again - take countermeasures)... and that you will be more aware of when you resist hearing something simply because it doesn't conform to your preconceptions. Which makes it easier to step back and evaluate whatever it is by focusing more on the facts. What confirms it? What disproves it? What does the actual data say?
When I talk about incompetence, to me it's mostly about people in positions of power who are all too human. That is, they are biased and flawed and they're not necessarily evil or bad... but they aren't wise enough to counter those biases and make good decisions. Hmmm, well... plus one more thing. Jesus did that whole bit about making his disciples 'fishers of men', and taught how to be 'good shepherds', and I do think that provides a guiding light to any decision making. And those same biased and flawed individuals have a tendency to think that what's good for them is good for everyone, and lose their direction. Basically they get more concerned with 'optics' and how things look. How to manage perception... and so they forget to do their true task, which is taking care of their flock.
But this is... again... human. It comes from biases and fears that are all too common. In other words, they're not special. And they're not really worth laud and praise when they're more... average at best. (Okay... Trump is special... for being spectacularly worse than average. But I don't want to get started on that or it will derail this whole post.)
I've used this logic before, when discussing the decision to invade Iraq. Because critics shortened that decision to 'they lied, people died'.
But I don't think there was some malevolent group of immoral and evil villains that said "let's lie about weapons of mass destruction so that we can get support to invade Iraq".
Honestly... that would be a lot easier to deal with. The challenge with preventing such a poor decision from happening again is that the people who made that decision were biased and flawed human beings making decisions in a system where most of the people they encounter reinforce their biases and prejudices.
If you absolutely believe Saddam Hussein has weapons of mass destruction, then suddenly the lack of intelligence is not because he doesn't have them... it's because he's too sneaky and clever at hiding them.
There's a lot more to it than that, of course, but the point is that people who honestly think they are trying their best can still make very flawed decisions.
Those rules of thumb helped explain quite a bit of the issues I'd seen in the past... but it no longer feels sufficient today.
I'll use covid again as an example, but it applies to other things as well.
With covid... the data on vaccinations and other preventative measures is about as clear as I've ever seen. Scientists may argue about whether it's the vaccines, masks, or other actions that have led to such a disparity in outcomes between blue and red counties but it's quite clear that there is a disparity. And that the 'red' counties are dying and being hospitalized at a much greater rate than blue.
Multiple outlets have reported the same results, at multiple times. This is the reality, and anyone who wanted to be a good shepherd to America would be trying to prevent more death and disability by persuading Americans to take proper precautions.
Instead, every single countermeasure (except the personal choice on whether or not to get vaccinated) has been fought. And even with vaccinations... there are forces out there trying to persuade people not to get vaccinated.
It feels like a concerted campaign, even... because every post on Twitter talking about covid deaths seems to get inundated with responses trying to blame the vaccine instead of covid.
Someone on Twitter said it was less a concerted campaign and more a loose coalition of forces acting out of their own self interest, which fits my own biases and preconceptions well enough that I think it's likely...
But the end result still seems to be the same. That is... people are being hospitalized and dying while any attempt to prevent that from happening is attacked until such efforts are paralyzed.
It smacks of eugenics, tbh. Can you just accidentally create a eugenics campaign?
How have we come to this? Where are the good shepherds?
Can typical human biases and prejudices lead to incompetence on such a scale? How were these fools not smacked down by wiser and more competent heads?
I don't believe that the fools that created our current situation are truly the best we can do, but they sure seem to have a lock on power.
Or rather... they're blocking better people from fixing their mistakes, probably because doing so would mean admitting they weren't all that.