Chris Johnson

Weaponized Ignorance/Incompetence

We have all had the unfortunate issue of having to deal with ignorant and incompetent people. For most of us, this is frustrating.

One of my personal weaknesses is the more I respect someone, the harder it is for me to accept incompetence or ignorance from them.

But what is “ignorance”?

Ignorance is not dumb. It is not stupid. Ignorance is not knowing.

Ally is a cookbook author. She is about to publish her third cookbook. We couldn’t be more proud of her and her accomplishments.

Over the Christmas holidays, she decided to try baking, something she isn’t good at yet.

She pulled out one of our older cookbooks, from the early 1950s, and followed the recipe, or she thought she did. The recipe called for 3 cups of flour, sifted.

Being good at English, she read that to mean, “Measure out three cups of flour, then sift it.” What it actually meant was, “Sift a few cups of flour, then measure out 3 cups of that sifted flour.”

The reason is density. Just like we measure gunpowders by weight, we should measure flour by weight. The density of the powders or flour can change; the mass does not. 1950s cookbooks created flour with a known density by sifting it.

Ally didn’t know this; she was ignorant of this. She is not stupid; she just did not know.

Ignorance is correctable; you can learn what you are ignorant about or decide it is beyond you. Even if it is beyond you, you will know that it is beyond you.

There are many things I’m ignorant about. I’m told I’m unusual because I don’t stay ignorant about subjects that are even remotely interesting to me. And according to some, I quickly become competent in areas that I was ignorant about just a short time ago.

This makes it difficult for me to claim ignorance about subjects. I consider myself ignorant about processing animal hides. Yet I know more about it than most people. I’ve yet to succeed at tanning a hide, but I know I don’t know. I know it is not beyond me; I know that I can become educated in the subject and become reasonably competent in the subject.

Recently it was pointed out to me, in this blog, that I was ignorant in reading or understanding technical drawings. I have no formal training and I need to do more. I’m doing my best without doing a deep dive.

Weaponized Ignorance

This is when a person is willfully ignorant. It takes an effort to be willfully ignorant, but for some, it is easier than actually thinking about what they are doing or saying.

When a person is willfully ignorant, refuses to learn, yet continues to opine on matters in which they are ignorant, then they have weaponized their ignorance.

The left is calling for laws and regulations to force “bad” law enforcement officers to not wear masks and to have their identification prominently displayed.

According to them, if they aren’t doing anything wrong, then there is no reason to be masked.

They are willfully ignorant of what happens when an agent is unmasked. They are doxed, and then bad things do happen to some of them.

The wife and I are watching a BritBox show called Blue Lights which takes place in Dublin, Ireland. Our introduction to one of the lead characters is when she is checking her car for bombs. As far as I know, this is true. They know that they will be targeted if the “bad guys” learn where they live and who they are.

These ignorant malcontents know what will happen if our officers are unmasked: they will be attacked. If not physically, then socially.

The left calls detentions and arrests by ICE and other federal law enforcement “Kidnappings”. They know that these are not kidnappings. Or they are willfully ignorant.

They scream about “due process” without ever realizing that these criminals have been given due process. Ten minutes of research would enable them to learn that there are immigration courts that do nothing but oversee migration cases. These courts can, and do, issue final removal orders and warrants.

They are screaming at ICE officers that they aren’t real cops and don’t have arrest powers. Of course they have arrest powers. Do even a bit of research, and you will find that most federal agencies have some sort of internal police force with arrest powers.

And being ignorant allows them to scream “Why!?” like a two-year-old toddler being put down for a nap. They would know why if they bothered to learn about the subject they are opining on.

Listen to Ketanji Brown Jackson asking questions from the Supreme Court bench, “I don’t understand.” “Explain it to me.” And most famously:

  • Blackburn: Can you provide a definition for the word “woman”?
  • Jackson: Can I provide a definition?
  • Blackburn; Mhmm, yeah.
  • Jacson: No, I can’t. Not in this context. I’m not a biologist.
  • Willfully ignorant.

    Weaponized Incompetence

    This is a step further than willful ignorance. This is when a person refuses to learn something so they don’t have to do it.

    The husband who refuses to learn how to cook anything, forcing his wife to cook every meal or to eat out. My dad didn’t know how to cook; from the time Mom died until he was in care, he ate very poorly, mostly hotdogs. This was his choice.

    This is the person who tosses the colored in with the whites, leading to the whites not being white anymore. Who is going to ask that person to do the laundry, knowing that their incompetence could destroy entire loads of clothing?

    In the same way, what husband or boyfriend doesn’t panic when he sees his wife with a hammer and saw?

    Hey, we were all ignorant and incompetent once. I have a picture of my brother and me cutting a piece of wood with saws. I’m using Grandpa’s panel saw, not a bad choice. My brother is using a hacksaw with 24 or more teeth per inch. Today I know that my brother would have been lucky to get a 1/4 inch into a piece of hardwood with that saw.

    Now hold me to the same standard. I had a 16 tpi blade on my horizontal bandsaw. It would cut anything, but slow? Oh my goodness. I was using it because the rules say to have at least 2 teeth engaged in the cut at all times, and I was using it to cut 1/8-inch stock. I’ve upgraded to an 8 tpi blade. I can’t cut 1/8-inch stock the narrow way, but I can lay it down, and it cuts just as fast, if not faster. And I can actually cut larger stock at 3 or 4 times the speed of that other blade.

    A leftist can’t safely handle a gun. Because they are incompetent, you and I have to store our firearms where they are useless to us but a child can’t access them.

    The intentional ignorance and incompetence is draining. It hurts to watch them. It hurts to listen to them. They are so ignorant that they don’t know what they don’t know, but they are damn sure they are right and I am wrong.

Lviv, Ukraine- 07 August 2022: Paramedic training center, exhibition of modern first aid equipment

Trama Kits

If you have the best possible trauma kit in the world, it does you zero good if you don’t have it with you.

I believe that I have as many trauma kits as any other person. Every load bearing vest has a trauma kit. The range bag has a trauma kit, my get-out-of-Doge-expeditiously (GOODE) bag has trauma kits.

My car has multiple kits in it.

What I was missing was something that I had on me every time I went out. I decided to buy an ankle trauma kit to try.

I have been 100% consistent since getting it; if I have a firearm on me, then I have the kit on me.

First things first, it is comfortable. I was expecting it to cause issues or to print in horrible ways. It doesn’t print, and it is comfortable. When wrapped around my sock, it is noticeable for about 3 minutes, then I forget it is there.

What I purchased I expected to be good enough. I’ve decided it isn’t. What it comes with is a SOFT-T tourniquet, a 4″ combat bandage, and a pair of nitrile gloves.

What is it missing?

A mini-Sharpie, mini-bandage shears, and z-fold gauze for wound packing. That’s it. If really pressed, a pair of mini-hyfin chest patches, for sucking chest wounds.

I could upgrade my ankle kit with another pouch, but I’ve not found one that I like. I want to have a QuickClot Z-Fold bandage, and that is a slightly larger package than simple gauze.

If you don’t have an ankle kit, look into it. I think you will be surprised at what you can get that will meet your needs and still be extremely comfortable.

Be safe out there. Keep your head on a swivel. Stay out of stupid places at stupid times. Stay away from stupid people.

Rifle Range

Range Day

I had two rifles to zero and time to spend with my wife. It was a wonderful day!

We took seven guns to the range and shot 4 of them, never noticing we didn’t have a chance to shoot the pistols.

We took two fun guns as well as my serious rifles for zeroing.

Wife brought Mrs. Pink, her AR-15. Yes, it has all pink furniture. It is most definitely hers. We set her up with a half size torso target at 50 yards. Truth, we don’t think she put a single round from her AR on paper.

On the other hand, she had a blast! She was using a single 20-round GI magazine from the 60s. What she got was manual of arms training. She learned how to load magazines, rather than having me hand her loaded mags.

She knew how to operate the rifle, but she didn’t have it down to the point she could just do it. So she got to practice charging the rifle, dropping the bolt after inserting a new magazine, removing and inserting magazines.

She was at a bench with a bench separating us. She did it all on her own. After getting her going, the next time she interacted with me was when she told me that Mrs. Pink was out of food. That was 100 rounds downrange. 3 of which were mine.

From there she moved to a Henry Big Boy in beautiful brass. This one is chambered in .22LR. She went through a couple of 100 round boxes, just beaming from ear to ear. She loved how smooth it was and how nice it was to shoot. She declared that she liked it better than Mrs. Pink.

At my bench, things were not going as well. My primary goal was to get the AR-10 zeroed. I have a new LVPO 1-8 by Vortex. Beautiful scope.

I had no real issues with the scope, except for having difficulty spotting where rounds were hitting the target. I never did get that figured out because after about 5 or 10 rounds I started to get failure to feed.

After I got back home, I did a bit of research, and AR-10s are known to be picky. They need 50 to 200 rounds before they are worked in, and they need lots of lube to begin with.

For me it was a single shot rifle with painful ergonomics to charge the next round. AR-10 buffer springs are much stronger than AR-15 buffer springs. I was there with 40 rounds in two mags. I think I sent 20 or so rounds downrange.

She’s been cleaned, lubed, and put away. I require some more range time. I require her to feed flawlessly every time.

On to the beauty of the day, my CZ 600 in 30-06.

This rifle has a trigger that makes my 1911s feel like Glock triggers (Yes, that is an insult to the Glock fanboys). It is a light trigger with zero take up. You put your finger on the trigger, think about pressing the trigger and the round is on its way downrange.

It has a vertical safety. It is likely a “crossbolt” style, but instead of the left to right arrangement I’ve seen for crossbolt safeties, this is vertical. The engage button is just behind the trigger guard. The disengage button is just behind the bolt. You just press down with your thumb to take the safety off.

I didn’t test the magazine feed; it comes with a 5-round magazine, but I feed each round individually.

With just boresighting, my first 3-round group was about 0.5 inches at 50 yards. It was also 4 inches left and a bit high from where my point of aim was. It took around 20 rounds before the point of aim and point of impact were nearly the same.

I don’t think I’ve shot a rifle as accurate as this before. I brag about punching primers with the 7.62×51 NATO Remington 700. This was easily 50 fold better than that Remington.

With the overkill of the scope, I could actually see point of impact. I could see my breathing modifying point of aim. I also found myself aiming for the corner of the 1″ square bullseye because that was more consistent than “somewhere” in the 1 in^2 red blotch.

For fun, I just put the crosshairs on the center of the 1/2 steel target at 100 yards. That rang true. So did aiming for the head of the steel.

It was just a little to crude to have any idea where on the steel I was getting impacts.

I’m still smiling from range day. Oh, it was warm today, with the temperature just above freezing and no real wind.

Funny snowman in knitted hat and yellow scalf with hands up on snowy field. Blue sky on background

The Winter of Love

It has been more than 24 hours since a paid agitator received the “Find Out” part of “FAFO”. Some things have become clear.

First, she is not married. She was living with a female partner raising children.

Her job was to be a paid agitator. She had taken professional development courses to further her career as a paid agitator.

Her partner was also a paid agitator.

She attacked a federal law enforcement officer with a deadly weapon. As such he does not need to wait to be lethally hit or severely injured before acting to stop the threat.

But the lie has entered the gestalt of the left.

She was an innocent woman attempting to flee an encounter with evil Trump minions, afraid for her life, when she was murdered for no reason at all.

I remember the anger I felt when I saw the video of Saint George Floyd being murdered by a police officer in full view of the world.

I remember how I was glad I was not there. Not knowing how I would have reacted to a cop attempting murder. Would I have killed the cop to save the life of that black man?

And it was all a lie.

That didn’t stop massive riots, the burning of cities, and the death of multiple people. All because the left and the media couldn’t stop lying.

It is my belief that the only reason we are not seeing massive riots already is the temperature is too low. It is too cold for a good riot.

If the weather changes for the better, it is likely we will see riots. If it doesn’t, it would not surprise me even a little that the media keeps things at a low simmer until it is warm enough for the riots to happen.

DefCon 3 right now, people. As it warms up, DefCon 2.

Keep strapped, keep your head on a swivel, stay away from stupid places, stupid people. Nothing good happens after midnight.

Computer binary code zero one numbers

It Is All Ones and Zeros

There are times when I wish I had entered the Computer Science world a few years earlier.

My mentor was born four years before I was. He went through the computer science program four years before I did at a prestigious university.

His academics took place as electrical engineering was morphing into computer science. Which meant that he was taught circuit design at a lower level than we were taught. He was taught how to design transistors and to build the hardware.

My class was taught bits, bytes, and words. We built on what his generation was learning as computers advanced.

A bit is the smallest amount of data that a computer can store. In fact, it is the only type of data that a computer can store.

Bits are grouped into bytes and words. Today, a byte is 8 bits long; in past years, it could be larger or smaller than that. I’ve worked on machines where a byte was defined as 12 bits.

Bits, by themselves, have no meaning. A programmer assigns meaning to a sequence of bits. Let’s take a byte of 8 bits, for example. The byte we will be looking at has a sequence of bits like this 0011 0001.

Again, this is meaningless until we assign meaning to it. If we say that it is an unsigned tiny integer, then a byte represents a value between 0 and 255, while our byte represents the integer 49. 0*128 + 0*64 + 1*32 + 1*16 + 0*8 + 0*4 + 0*2 + 1*1 = 49 base 10. We can also express that integer in base 16 as 0x31 or in base 8 as 061.

We could define it as a signed tiny integer; then a byte represents a value between -127 and 128. But one of the most magical ways of looking at the byte is as a character. In this format we have a table of values to glyphs or characters. The value 0x31, 49, 061, 0011 0001 is interpreted as the character “1”. In the same way, the value 0x41, 65, 101, 0100 0001 is interpreted as the character “A”.

In other words, a bit pattern doesn’t have meaning until we define what the value means.

Primitive Types

The CPU in a computer has several registers. Each register holds a bit pattern of a given size. The CPU can then manipulate registers with a fixed set of instructions. Those instructions define the meaning of the register for that instant. If we use the integer add operation, then the two registers are treated as integers with the result being stored in a third register. If we use floating point operations, then we treat the registers as 32 or 64 bit floating point numbers. Doubles are 128 or 64 bits. We can treat the registers as containing one byte or character or a multiple characters. Or, we can treat each bit as a boolean.

For languages, we normally have integer, unsigned integer, float, double, character, and string. These are all referred to as primitives.

While we have defined the type, we have not defined the meaning. For example, 1234.70 is a floating point number. But what does it mean.

It could be a price, a quantity, a physical measurement. If it is a physical measurement, then it is expressing units.

It is the meaning we give values that allows humans to interact with the data.

Formatting

Let’s say we are working with a basic product object. Each product has a SKU, price, description, and quantity in stock. We will call these “labels”. We give a primitive type to each. SKU=>string, price=>float, description=>string, quantity=>integer.

This is a good start, but we also define how we will format these values when we display the product for a user. We can say that SKU and description will be left-aligned, price will be formatted as currency ($x,xxx.xx) right-aligned, while quantity will be formatted as an integer (x,xxx) right-aligned. This formatting is encoded in the knowledge of the meaning of the labeled data.

Formatting is not part of the data; it is associated with the label. The label allows us to assign meaning to the data.

Viewing Data

Humans have a difficult time applying meaning to bit patterns, so each primitive type has a standard text format. This allows us to see the values of the data.

For example, we say that strings are input and displayed as quoted strings, “This is an example string”. Integers are input and displayed as an optional negative sign followed by a sequence of digits, 1-9 as the first character followed by 0 or more 0-9 characters. Or it can be a 0. This defines a base 10 integer. If integer starts with 0x, then what follows the x is an integer in base 16. if the first character after the sign is a 0, then it is octal.

Simple.

These rules for displaying and inputting values are well defined.

Information Interchange

This is a gigantic subject. We are going to barely touch on it. To transfer information in a meaningful way, we have to define the meaning of each datum that is exchanged.

There are specific tools for doing this. XML, JSON, YAML, SOAP, and others are designed specifically for this process.

Unfortunately, there are de facto “rules” for exchanging data. Rules that must be followed but that the people using them do not understand.

Excel, Word, and Other MicroSoft Monstrosities

The default for most people when exchanging a table of information is an Excel file, an xls file. How I hate this.

An Excel file gives labels to values and adds formatting but does not add meaning. Meaning comes from external sources.

So, we might have a two cells we are looking at; B1 has a value of “Price”. It is formatted as bold text, centered. B2 has a value of 7.50. It is formatted as text, so it displays as “$7.50”. If the cell was formatted as “number” or “general” it would display as 7.5.

It is the user who applies these formatting rules. It is the user who provides meaning to these values.

If you have an application that can read and display Excel sheets, then all is good.

But Excel sheets are not a great way to exchange data. As a matter of fact, they suck. Each cell must contain both formatting and values. There are linkages between cells and a hundred other things that can be added. They are painful to create programmatically.

The Savior of Data Interchange, CSV

It doesn’t get any simpler than a comma-separated values file. They use the well-defined primitive type display rules; they are easy to generate, they are row independent, and they can be read by a simple text editor.

The biggest thing to understand is that CSV exchanges values. The meaning of those values is up to the receiver.

Which is why expectations and Excel suck.

It’s Bad Data, No! It’s Being Displayed Wrong!

When a normal user receives a CSV file, they want to open the file and view it. On Microsoft platforms, the program tasked to do this is Excel. On many Linux platforms, the tool is LibreOffice. For Solaris it was OpenOffice.

These tools import the CSV file. That import process can break things, badly.

By default, a comma separates each field. If a comma is part of the value, it must be escaped. Quotes are used to provide escaping. Quotes within quoted strings must also be properly handled.

So we end up with client bug reports like this: “Data is misaligned throughout”.

What does this mean? It means that the client hasn’t properly defined the type and formatting for the column. In this case, the SKU sometimes consists of just digits. When this happens, Excel treats the value as an integer type. By default, integers are displayed right justified. If the value has characters in it, then it is displayed as a left justified character string.

Once you tell Excel that the SKU column only contains text, then the alignment issue goes away.

“The price column is missing dollar signs” means that values are being displayed as floating point numbers, not as currency. Change the format to currency, and it all just works.

“There are symbols instead of letters.” means they get what they put in. The value stored in the database has an accent in it. Like résumé.

The problem happens when Excel imports a word with accents on their Microsoft platform. My browser and LibreOffice both use the same font set, so I see résumé. Their Excel on their Microsoft platform displays the accent as something like a copyright symbol, ©.

They see what they put into the database, but they are unhappy that Excel is doing exactly what they asked it to do.

A humanoid robot works in an office on a laptop to listening Music in  Headphone, showcasing the utility of automation in repetitive and tedious tasks.

Robot Attacks

I should title this, “I don’t know what I don’t know.”

Bitnami stopped providing free WordPress images. This means I have to create a container and docker compose control file that will plug in and replace the Bitnami version.

This isn’t horribly difficult; it just takes a bit of work. Even now, I just realized that I can make a change that will make my life a little easier, so it is something I will do.

The problem is that there is a possibility of crashing the site. Not something I want to do.

So I’ve been putting it off.

The good news is that we went from a point fix to a point release. We were on 6.8.2; 6.8.3 came out. I found out the need to redo the containers.

Before that happened, 6.9.0 was released.

I have a policy of waiting for the point fix before migrating. The point fix would be 6.9.1.

In the meantime, Google changed the way they handle reCAPTCHA, that annoying thing that asks, “Are you human?”

The robots found The Vine and proceeded to register around 450 users before I shut down user registration.

Those have been cleaned out. Unfortunately that took a bit of time, and now I have to look into the newest version of robot defenses.

Argh, why can’t this stuff be simple?

Meanwhile, on a different screen, I’m looking at a 3D model with dropdowns for “work”, “RPM”, “boiler pressure,” and a few other things that feed into the built-in spreadsheet. That spreadsheet then drives the 3D model.

This has required learning things that every backwoods machinist used to know. Now it requires reading books published in the late 1800s.

Oh, getting my AI to give me trustworthy numbers is driving me bonkers.