Chris Johnson

Software source code. Program code. Code on a computer screen. The developer is working on program codes in the office. Photo with source code. Python IDE

One step forward …

Tuesday I picked Ally up at The Fort at No 4. On the way home, we stopped to do some banking and pick up some groceries.

As we were walking to the bank I said, “Oh, it is closed.”

“Why?”

“Because it’s Sunday.”

“Huh?”

I then got home and posted “Tuesday Tunes” to show up on Wednesday.

I’ve been working on a major website. This includes a content management system for the site that meets the requirements for that vertical.

What I decided on was a “management bar” for those logged in as manager. When they activate the “edit page” function, all the blocks that can be edited are highlighted. Click on the block to start editing the block.

Save your changes. When you are satisfied, click “make live” on the management bar to make all the changes at once.

There are a few good tools for editing text in place.

This left all the other blocks, image editor, carousel editor, calendar editor and a few others.

Design from the top, build from the bottom

I know what I want to do, how I want it to work. Fortunately, I only have to worry about the “working” part. Not the pretty part. I have a team member who helps with that.

What this means is that I see the entire system laid out. This thing will do this, this other thing will do that, the user will see this.

Which leads to a balancing game. How much is done in the template build out? How much is done in the JavaScript module? How much is done on the backend? And how much support does the Frontend request from the Backend?

Currently, I have three different editing models built, each one a bit different from the others. Why? Piece wise progression.

In my original implementation, all logic was done on the Frontend from data provided by the Backend during page load. These led me to a working edit for the carousel. Click here, drag and drop or upload an image. Click there, and you can rotate, mirror, flip, and crop an image, maintaining a fixed aspect ratio.

The next was the text editor. That was simple because the editor works in place, sort of. But it is working. I’ll be adding more features to it, but that is mostly done.

Then the new image processing came into play. Click on the image you want to edit, a dialog pops up, the original, raw image is loaded. Recorded edits are applied, the image can now be edited.

All modals had to be preloaded. All the content of the modal was preloaded. Everything works by modifying existing elements or modifying the DOM. The only communications with the backend are fetching the raw image.

Which led to the calendar editor.

Piecewise progression.

With this, the amount of data started to exceed easy storage in the DOM. Access to needed data was looking more and more like a call back to the backend. The need to serialize objects on the backend for the frontend to manipulate was starting to get stupidly complex.

This led to a redesign. Instead of multiple modals, there is now a single modal (dialog) which is fetched, on need, from the Backend. In this modal, there is a tabbed pane. Click on the tab, a different pane shows.

By listening for a pane to be displayed, we can determine what content we require and request that from the backend, which has full access to all the data and logic required to make this work.

Bingo, everything starts to get easier.

Which means, once this edit is completed, I’ll return to the image editor, make the same design decisions, which in turn will make the carousel editor a simple modification of the image editor.

Things are getting a little easier as I become more comfortable with TypeScript and “promises”

Why the concerns?

First, when I started programming, you didn’t do redundant things because there were no spare cycles and there were no spare bytes.

As an example, I like to write a = do_it(param)->do_other(params2)->do_different(do_wildly_different(param3)).

This seems reasonable to me. No extra cycles, no extra bytes.

Today, it is better to do r1=do_it(param); r2=do_wildly_different(param3); r3=r1.do_other(param2); r4=r3.do_different(r2); This performs the same actions, but it is often clearer to read and allows for checking results at each step. All good.

The other big thing is communications. My last project was a shopping app. Our family still uses it. It creates shopping lists that you can then use from your Android Phone. It has more to it, but that’s the gist.

Because communications is sketch around here, it was designed to work in a standalone state, uploading changes when it could, downloading changes when required.

This lead to an entire mindset of “Communications is expensive”. Which I’ve had to break. The new site makes seriously different design choices.

  1. All Manager level actors will have modern browsers
  2. All staff working with the site will have reasonable download speeds
  3. All volunteers using the site will have reasonable browsers and speeds.
  4. All visitors to the site will have a relatively modern browser.

In other words, If you are working on the site, and it takes 5 seconds to get an updated pane or modal, this will be acceptable, or you will need to upgrade your device.

In looking at the current usage of browsers on the Internet, more than 95% of the people using the Internet will do just fine.

Now back to the Bootstrap 5 grind as I design pretty forms.

White paper with musical notes closeup background. Music writing concept

Tuesday Tunes

The Fort at No 4 held the annual Rendezvous last weekend. Ally had a blast. She came back with new moccasins that she is raving about.

As an interpreter for the Fort, she baked bread in the beehive oven, then sold it to the encampment, this is very much in period.

That went over so well, she had bread baking classes the next two days.

This isn’t great music, it has some great images to go with it.

Another Win, DOGE v. Citizens for Responsibility and Ethics in Washington

UPON CONSIDERATION of the application of counsel for the applicants and the response filed thereto,

IT IS ORDERED that the April 15, 2025, and May 20, 2025 orders of the United States District Court for the District of Columbia, case No. 25-cv-511, are hereby stayed pending further order of the undersigned or of the Court.
— Misc. Order 2025-05-23

This case is about slowing down DOGE and the Trump administration. The tool used in this case is Freedom Of Information Act requests for information, otherwise known as FOIA requests.

The name of the organization is, normally, CREW. They started requesting information in December 2024, through the OMB attempting to find out who and what DOGE was. When they had not received a response by January 2025, they requested an expedited FOIA. They filed more FOIA requests and more demands for expedited actions.

On February 20, 2025, they filed suit, alleging that the government wasn’t responding fast enough. They wanted a preliminary injunction requiring full compliance with their request by March 10th.

By March 10th, the court had ordered the government to produce the requested documents in an expedited manner. It looks like court speak of “ASAP”.

By the middle of April, they had a requirement in place for the government to produce 1000 documents per month. Note, OMB believes there are around 108,000 documents and DOGE believes they have 58,000. This is a total of 166,000 documents.

The government has nearly 15 years to produce all the documents requested.

Ok. That’s where things stood as of April 10, 2025.

The government filed a request for stay with the Supreme Court.

Chief Justice Roberts then issued an administrative stay. This means that OMB and DOGE can proceed with document production at a “normal” rate.

Since it is an administrative stay, only a single justice is needed. The entire court can then choose to examine the case and issue an order regarding the request for stay, or they can just leave the administrative stay in place.

It seems a small win, but it is a win.

Hands using laptop with mathematical formulas. Online education concept

Math Is Hard

My oldest son is on the spectrum. He has a job but does not have a license. He still lives with his mother, my ex-wife.

When he was in middle school, I attended an IEP (individual education plan). This is where we lay out what accommodations he needs and how best to get him educated.

I’m in a conference room with his “team”. This is the principal, multiple teachers, the special-ed coordinator and a few specialists. There are two males in the room. The principal and me.

As we start the meeting, the special-ed coordinator says, “These math classes are difficult. We believe that your son will be best served by removing the math requirement. Math is hard.”

I was livid. “Have you ever talked to him? Do you have a clue as to what is capabilities are in math? That is his easiest class? I’m betting that not a one of you majored in a STEM major. Math is hard? No, it is hard for you.”

This is one of the most important concepts in mathematics. Anything times zero is zero. Dividing anything by zero is undefined.

Calculus is about pretending you can divide by zero. Not because you are dividing by zero, but you are using a very small number in place of zero. Or, as calculus puts it, “as delta x approaches zero…”

  • The parent has fail math
  • Unless the third grader is Sheldon or Doogie, the correct answer is, 0. And for most people, of any age, the answer is 0. Context matters.
  • Sounds like the parents gotta go back to third grade LOL
  • I disagree that a number divided by zero is undefined. You had a number, 1, in this case. Then you didn’t divide it. So, 1 remains untouched. It shouldn’t lose its definition based on something you didn’t do.
  • Teachers right tho
  • Logically he is technically right. If you have one thing then divide it by nothing then you still have that thing cause there is nothing to divide by.
  • Both the parent and the kids sharing the same brain cell
  • She didn’t know the answer is infinity either.
  • typical USA level education
  • Yes, give up this fight. This is sufficiently correct for grammar school.

There are more idiots responding. Luckily, those that can do simple math out number them.

The follow up seems to be that the teacher wrote an apologized, claiming that she was taught that 1/0=0 back in the 90s.

Pencil Eraser  Erase past text

Erasing History

Have you read the Constitution? Do you know what it says?

The fourth article reads, “A well regulated militia, being necessary to the security of a free state, the right of our youth to keep and bear arms shall not be infringed.”

That isn’t what you read?

This is from an image in the Library of Congress. It is a reproduction of the original Bill of Rights, as proposed. Articles 3 through 12 became the first 10 amendments to our Constitution.

For many young people, it might as well be 一個受到良好管制嘅民兵,對自由國家嘅安全係必要嘅, 人民持有同攜帶武器嘅權利唔會受到侵犯。 It is just noise to me. I’m sure that somebody can translate it back to English, but it will lose something in the translation.

There are many people that can no longer read cursive. It is not taught in most schools. The purpose of cursive was to increase the speed that you could write. My son’s legal signature is block letters.

It falls in the same category as counting change. Try this experiment, buy something, then pay in cash, but hand them change to make it a nice return. If the bill is 7.12, hand them 12.12 and watch them try to refuse the extra $2.12.

If you force them, they will be surprised when the cash register tells them to return a $5.00 bill.

I talked about the educational industry replacing words. Pupils became students became learners.

Everybody gets a participation award.

Today, everything is digitized. Photos can be manipulated/faked. Videos can be made by AI from a prompt. People have lost the ability to think critically.

My wife has difficulty in assigning value to different sources. Add to that, her ability to pick up a scary phrase from the talking head and not know the context means that she has difficulty discerning what is likely true, and what is likely not.

Tina Fey said, “I can see Russia from my house.” and today, most people attribute it to Sarah Palin. And if you point out their air, they can tell you that they have heard and seen Sarah say it.

We are on the cusp of losing our history. Words change meaning to fit the wants of those defining it.

It is hateful to speak the truth. So don’t speak it. Nobody else is saying these things, you must be wrong.

Every one in the MSM is saying it, it must be true.

The Supreme Court said this about that. Oh, have you read the opinion? What, it wasn’t an opinion? What was it? Oh, it was an administrative stay.

Did you read the bill? No? Then you don’t know what it says or means.

And, as one lawyer put it, we don’t know what a law means until the courts tell us.

NAZI used to mean a particularly nasty form of socialism. Today it either means a particularly nasty form of socialism, or it means somebody the left doesn’t like.

I just want a win that lasts for more then 24 hours.

This Nation’s Historical Tradition of …

Trump v. Wilcox on application for stay was granted. It was a 6-3 opinion. The usual suspects were on the wrong side of history, again.

Justice Kagan wrote the dissent.

For 90 years, Humphrey’s Executor v. United States, 295 U. S. 602 (1935), has stood as a precedent of this Court. And not just any precedent. Humphrey’s undergirds a significant feature of American governance: bipartisan administrative bodies carrying out expertise-based functions with a measure of independence from presidential control. …

Miggy made the mistake of letting me write for him. Then I begged him to let me write when he wanted to close GFZ. When I started, I knew I had things to say about some cases happening. I just didn’t know what I didn’t know.

I started reading and listening. The more I learned, the more I knew I needed to learn.

I have gotten to the point where I read at least part of every opinion the Supreme Court writes. Certain things keep showing up.

It is obvious to any honest person that the Second Amendment means that all gun-control is unconstitutional. The closest we have gotten to anything that is even remotely close to being allowed is that a violent person can be temporarily disarmed.

The Justices that believe in the Constitution express it as “The plain text and this Nation’s historical tradition of …”. This means that if the plain text of the Constitution is implicated, the burden shifts to the government to prove that there were similar regulations at the time the constitution was adopted and when the particular amendment was ratified.

The 14th Amendment must be interpreted as it was understood at the time it was ratified, in the late 1800s, not 1791. The Second Amendment must be interpreted as it was understood at the time it was ratified, in 1791.

The authority of the Executive branch was established on June 22, 1788.

Humphrey’s Executor v. United States was issued in 1935. It cannot be used to establish the meaning of Article II. It is NOT part of this Nation’s historical tradition of regulations regarding the President’s authority.

Since Roe v Wade, every Supreme Court nomination has been asked, “will you mess with Roe v. Wade?”. If the answer is “yes”, the Democrats would fight tooth and nail to keep that person off the Court.

This is always the way of the left. We see it in the court battles against the Trump administration. They will fight a battle, lose, claim victory, then fight the same battle again.

They repeat this until they win. After they win, they claim that this is the standard and cannot be chanted. To attempt to change it is evil, against the will of The Person, and wrong. This is what is happening with the court shopping they are doing. They don’t have to win every case against Trump, just one.

If they lose, they will attempt the same case in a different jurisdiction, until they get a win.

Roe v. Wade was a shit decision. The Dred Scott opinion was even worse. But according to the left, these cases should never have been challenged, much less overturned.

FDR decided that Government was the answer. Regardless of the question, the answer, according to him, was the government.

You don’t have a job? The government will create work, then hire you to do that work. People aren’t preparing for their retirement, the government will do that for you.

The problem he was facing was that much of what he wanted to do wasn’t really constitutional.

In addition, the next president could just undo the shitty things he had done. He needed a way to protect his policies.

The answer was the creation of Government Entities that were performing Article II duties, but which had limited presidential oversight.

Before FDR’s power grab, the president could fire anybody in the executive branch. He was that powerful. He got Congress to pass bills creating entities who’s governing body or head could only be fired for cause.

Congress created them all, though at different times, out of one basic vision. It thought that in certain spheres of government, a group of knowledgeable people from both parties—none of whom a President could remove without cause – would make decisions likely to advance the long-term public good.

Kagan, Sotomayor, and Jackson all believe that an opinion from 90 years ago says more about this Nation’s historical tradition of regulations than does Article II, adopted in 1788.

The People chose to put the authority into one person, the President, who they could change, every four years. The government is beholden to the People. The government doesn’t get to say that “a group of knowledgeable people” should be exempt.

Power corrupt, absolute power corrupts absolutely.

Hearing Protection Act

I am NOT a good source of information about the HPA. I’m not even sure the “A” stands for “Act”.

That said, repeating what I’ve read and heard from people I respect and follow:

The HPA removes suppressors from the NFA. This means they are no longer regulated under the NFA. No tax stamps, no registering them, no “extended” background check. No need for chief law enforcement permission. That is all gone.

The GCA would still consider them firearms and require a 4473 to purchase them.

This means purchasing a suppressor becomes just as easy as picking up another Glock or Sig.

State laws might (will) vary.

If the Senate were to pull the HPA or there are not enough votes, then the HPA can go away, but there is still an amendment to reduce the cost of registering from $200 to $0.

All the rest of the bullshit remains, but that $200 savings isn’t something to stick your nose up at.

I’m eagerly awaiting the day when I can start experimenting with cans. Of course, there is a boat load to learn about making a suppressor, I’m not sure how a booster works.

Friday feedback banner, a man with a phone writing reviews

Friday Feedback

NPC Talking Points

I am old. I remember how the world came together to punish South Africa for its extreme racist behavior. After years, South Africa turned the page and recognized that blacks were people to be valued.

I watched as South Africa seemed to be a success story. An African country that was pulled from hand to mouth substance living to a thriving country via white colonists. Those colonists built something wonderful.

When they stepped away, the people who came after seemed to value that culture, that level of civilization. When those leaders faded away, the barbaric culture of Africa came roaring back.

South Africa is one of the most racist countries in the world. Their racism is thinly veiled, when it is veiled at all.

“Kill the Boar. Kill the Whites!” is a rallying call.

Imagine what an outcry there would be if the white leaders were to yell, “Kill the N*! Kill the blacks!” ? The media would go ape shit.

The NPCs got their marching orders rapidly this week. Trump invited the president of South Africa to attend a meeting in the White House. He sent a low level white female to meet the South African delegation at the airport. When the cameras were rolling, Trump presented the proof.

Video of crosses representing murdered farmers. Stories and articles of white farmers being murdered. Of husbands forced to watch wives and children being raped.

And the NPCs in unison echoed “Fake”, “False”, “Unfounded”. “Well, actually, those crosses represent blacks and whites.”

“There is no evidence of white genocide in South Africa.”

“Kill the Boar, Kill the Whites!” from South African leaders dancing in joy at the thought of murder.

Murder in The Streets

We now have one attempted murder and one successful murder by the pro-hamas terrorists.

Two members of the Israeli embassy were murdered in Washington, DC this week.

The NPCs are talking about how this wasn’t anti-Semitism because they weren’t actually Jews.

One of the pro-hamas assholes went so far as to return the “rape rag” to the murder after he lost it when arrested.

Nerd Babble, JavaScript

One of the most difficult things for me to do is to ask for help. I will get it done, by myself. In programming, this is especially true.

40 years ago, when I started down this path, everything you needed to know to program an Apple II was in a red 8.5×11 book, about a half-inch thick. I was able to read the complete operating system manual for the ODU mainframe over the course of a week. The slow part being the fact that the manual set was about 10 inches thick.

When I got to University, I read the manuals for the mainframe. All of them. About 12 inches of 8.5×11.

I read the Unix manuals, all of them, online over the course of a month. The X manuals. The MacBooks. It was just what I did.

Today, every tool or framework I want to use has page after page of documentation, or none at all. I read code when the manuals don’t exist or are lacking.

JavaScript has advanced to the point where it is useful in its pure form. This means that THE library, jQuery is no longer needed. Yes, it has a more concise syntax, but it really isn’t needed.

For the website I’m building in Django, I chose to stick to pure JavaScript for the management side. This gives me the longest runway until things are no longer supported.

Which leads me to cropperjs. The manual says this will be easy. Yeah, not so much.

One of the most important things this tool must do is give use the results of cropping an image. That means there should be a way of getting the current cropping rectangle simply.

Nope, it doesn’t exist. Get the canvas where it is painting. Get the working image that we are working with. Find the bounding rectangles of the two elements. The image rectangle (x, y) – the canvas rectangle (x, y) is the offset. The first and third entries in the transformation array are the x and y scaling factors.

If you reuse the cropper, it may or may not properly position the image within the canvas.

There isn’t an event telling you that the cropping system is stable, to allow you to make changes.

In short, I’ve spent 20+ hours getting this to a workable point. And it is not up to my standards — yet.

Asking for Help

One of the frameworks I use is “Bootstrap 5.2” If I recall correctly, it was originally developed by Twitter, and then released to the world. It is a powerful formatting framework that helps you position and color your website.

I wanted an elementary thing, two text input boxes, side by side, and small. I fought that battle for 4 hours before asking one of my students for help. He works with Bootstrap every day and is a front end programmer.

I typed my request into our chat on Saturday. He gets the message on Sunday, down in Brazil. He tells me it was simple and took him less than 5 minutes to figure out what I was doing wrong, correct it, and give me more options.

NFA Is Under Attack

I’m not happy with the weak spined representatives in Congress. As far as I can tell, almost none of the savings that D.O.G.E. identified are being terminated by law.

But something good might come out of this.

The NFA is a tax. All the regulations regarding NFA items are justified as taxes. This makes the NFA difficult to attack via the courts.

The $200 tax stamp was designed to remove guns from the hands of regular people. It never affected the rich. They could pay if they wanted to buy.

But as a tax, that means that Congress can change tax law like any other tax. Change the tax rate on those making more than $1000/year? Yeah, that’s a normal part of congressional duties.

Yet so is deciding not to tax suppressors, short barreled rifles and short barreled shotguns.

As of Thursday night, there was an amendment in the budget to remove suppressors from the NFA. There might be an amendment to remove SBR and SBS.

If this happens, I know that I will be purchasing a can or three and some new uppers.

Question of the Week

What is the most egregious example you’ve seen this week, of the media hiding realities from the sheeple?

Photo taken in Halden, Norway

Let There Be Light

Today is the start of a near week-long event at The Fort at No 4. I believe it is called, “The Rendezvous.” It is an 18th century reenactment event.

Ally will be there the entire time, she fired the bake oven last night to get it ready to use today.

This is one of those things that is/was a lost art.

A bake oven is a brick enclosure that is part of the hearth and chimney. To use it, you heat it with a wood fire until it is “hot enough”, then you let the fire die down or transfer the fire to the hearth.

At that point, you can put your bread or pies or whatever else you are baking in the bake oven. The residual heat from the bricks then bakes everything.

And here is the lost art, you have to prefire the oven. If you attempt to bake the same day you fire, the oven isn’t going to work as well as it should. The reasons is simple and make perfect sense, once you know.

In the 1700s, those bake ovens were used daily or nearly so. They were always dry, they were always a bit warm.

Today, those ovens only get fired when we have a multi day event with people staying in the cabins. Between times, not only do the bricks cool to ambient temperature, they also absorb water. Lots of it.

That first firing is mostly to drive the water out and to bring the entire mass of bricks to a reasonable temperature.

Lighting

When we arrived yesterday, the cabin was dark, by modern standards. Moving in and out of the cabin, talking to people, your eyes don’t fully adjust.

After the last goodbyes, Ally and I sat down to eat dinner.

We lit two taper candles.

That was enough. The light from the windows was fading, but casting long shadows in the cabin.

I don’t know if I could have read a printed page, but it was close.

But here is perspective for you. When we are watching TV at night, we have two 60 watt equivalent lights running. When we are using the kitchen, even in daylight, we will have 5 60 watt equivalent lights running.

Each light puts out around 800 lumens. A standard candle produces 13 lumens. The “moonlight” mode on my EDC flashlight is 15 lumens.

Because we were burning beeswax candles, we were getting around 30 lumens from those two candles.

And it made a huge difference. It felt like the cabin was alive and ready.

My biggest issue with being at the Fort after dark is how quiet it is.

I’m sitting at my desk. I can hear the keys clatter, I can hear the disk drives moving in my computer, the fans spinning in my computer, the sound of CPU fans in the next room, the hum of something.

When I used to babysit the Cray X/MP, I took to wearing ear pro when I was going to be in the machine room for any length of time. I was in the machine room when we had a power outage. The sound of silence in the room hurt.

Sometimes it feels like that at The Fort.

I’m currently working on a new website for them. It will be much more than just a website, but it is consuming much of my time. I still have to make a 4 TPI acme nut, lead screw, cap, and handle. I’m hoping to work on that this weekend.

I need to grind a right-hand external 4TPI acme cutter for the lead screw. This will be fun!