Chris Johnson

A Plan with Phases of Project Management on the board.

Project Management

In software development, project management comes in several phases. The first phase is presale, the second is scope and function, the third is product development, and the fifth is quality control.

Once we are past the design stage, it is important to track progress and issues. If you don’t, your project is likely to fail, horribly.

I’m dealing with a maintenance project with ongoing enhancements.

The tool I have settled on is Gitea, Git with a cup of tea. It is similar to GitHub.com, GitLab, and others. I don’t want a public hosting site where there is a potential for code leakage; this omitted GitHub and its competitors.

GitLab has a self-hosting option, but it is such a pig that even though I started with it, I dropped it when I couldn’t upgrade it as needed.

Gitea was the next, and it is working much better for me.

While there is a cloud version of Gitea, I don’t feel pushed into it. With GitLab, half the things I wanted to do required a license. Even when self-hosting, there were limits on the number of users, number of projects, and everything.

I’ve not noticed that with Gitea. In fact, it wasn’t until I wrote this last paragraph that I remembered that Gitea had a paid version.

Feature Requirements

  • Git repository. This is my version control system of choice. Having used everything from CDC’s “update,” SCCS, RCS, CVS, SVN and likely a few others, Git is the one that works for me.
  • A document repository. Gitea comes with a git based wiki. It is not as powerful as a full wiki and adding images to pages is painful, but for text, it just works.
  • Branch management, i.e. pull requests. Standard feature.
  • Project management. This is provided with a KanBan style interface. I use it for development.
  • Issue tracking.

Ticket System

I believe it was Admiral Grace that was having issues with a program on an early computer. It just wasn’t working. During the process of figuring out what was wrong, they did a hardware check. They located an insect that was causing electrical issues. They located a bug. That insect was framed, and the term “debugging” was coined.

Unfortunately, proper communication means we can’t call a bug a bug anymore. Nor can we call them errors or mistakes. Instead, everything is clumped together as an “issue”. Bah, Humbug.

Thus we have an “issue” system. This is really a ticket tracking system. I use the term ticket because it allows me to use the term “issue” for issues, bugs, enhancements, requests.

First Requirement

An issue should be well defined. The other day a client emailed us. It was a screenshot of a page of the product list page from the backend of their site. The client has drawn an angry spiral in red like a child coloring. His comment was, “This page is busted.” The account manager got this email, forwarded it to me with the following text “Thank you”.

This is a horrible issue statement. Ok, it’s broken. How is it broken? The screenshot doesn’t show any error messages; it looks like everything is right. So what is “busted” or “broken”.

It is the job of the person taking the error report, in this case the account manager, to create the ticket. To document the issue.

Actual ticket, after I started working on it: “The filter panel that is not functioning. All filters are ignored.” The actual problem was that a piece of JavaScript was failing if a filter selection was not made. This caused the filter button to not do anything.

The fix was about 4 minutes of coding and 40 minutes of explaining it to the account manager.

There should be a single issue per ticket, and the ticket title should be meaningful and properly identify the issue.

A Good Problem Description

Years ago I got a bug report from my boss; it was something to the effect of “such and such page is broken.” I went to the page and looked for the error. After about an hour I spotted the error. It was subtle but real, and it required significant effort to fix.

I pushed the fix reported that I had fixed the page to my boss.

About 30 minutes later, my very upset boss was at my desk telling me on no uncertain terms that the page was still broken and I hadn’t fixed a damn thing.

When I finally got him to calm down and to tell me exactly what was broken on the page, he pointed to the background of a button. “That’s the wrong color!”

It happened to be the color he approved, but it wasn’t the color he wanted in that spot, so the entire page was broken.

Make sure you have a good problem description.

Make Your Comments Meaningful and Useful

The way I explain it to people is that you are writing comments for yourself, six months from now. Yes, RIPLVB is very meaningful to you, right now, but RIPLVB on line 32627 isn’t really useful to you in six months nor to anybody else following behind.

(This was a real comment in a large piece of code, something like 60 thousand lines of code. It was the only comment. When the code broke, programmers spent way to much time trying to figure out the meaning of this incredibly important comment.

It stood for Rest in Peace, Ludwig van Beethoven, who died March 26, 1827, 3-26-27.)

If there are any supporting documents, screenshots, data files, log files, they should be attached to the comment.

If there are supporting documents, the comment should state what the document(s) are.

A comment of “See attached.” is a shit comment. It is your command to every person that follows you to open the attached document to figure out what it is.

“See the attached CSV for an example of the import format the client is looking for” tells you exactly what the document is for.It is meaning full.

Don’t Use Propritary Documents

If there is a common format, use it. Just because your system can magically open that particular file doesn’t mean that anybody else can. Yes, you have the latest version of Vizeo installed; putting a Vizeo document on the ticket shouldn’t be an issue. And it isn’t for you. But if your client doesn’t have Vizeo installed, or your coworker doesn’t, then that Vizeo Document is worthless.

Sure, you can attach the document, but also attach an SVG or other non-proprietary way of viewing the content of your file.

This one just pisses me off no end. The number of times I’ve had to deal with some PC user sending me a megabyte Word Document with a short paragraph in it when they could have sent a text message is uncountable. Or worse, every PC user assuming that every other person in the world has the latest version of Microsoft Excel.

Yet, I I send them a LibreOffice document, I will never hear the end of it.

Email is not a ticket system

Just because the client sends you an issue report in email doesn’t mean that email is a good ticketing system. I can’t count the number of times I’ve had to spend 10 or more minutes in a phone call tracking down the particular email my account manager wants to talk about. Often because he says things like, “Did you read the email client sent?”

Which one? When? What was the subject?

Worse is when the subject of the email chain changes, but they continue to use the same chain. Now there is a new issue in the middle of an email about a different subject.

In the same way, taking an email and attaching it to a ticket isn’t useful. This goes back to “Does everybody who has access to this ticket have the right program to read that attachment?” as well as violating the requirement of not needing to open an attachment to know what is in the attachment.

I Don’t need a meeting to read you the content of comments on the ticket

All good ticketing systems, including Gitea’s, send email when tickets are updated. Before you demand a meeting to discuss a ticket, check your email for updates on that ticket. Read the ticket. If the answers to your questions are in the ticket, there is no need for a call.

If you have questions that haven’t been answered, add them to the ticket.

No, you don’t need to call me to decide if you are going to add another issue. Add the issue. We’ll put it where it belongs or close it if it is a duplicate.

Use The Tool, Don’t Sabatauge It

Gitea ticket tracking system is a tool. You can subvert it and make it do bad things. You can make it useless. You can avoid using it forcing everyone else to use email.

Don’t! It is a powerful tool that should be used correctly.

Hospital Hallway with Doctors, Nurses and Specialists in Hospital. Female and Male Physicians, Surgeons, Healthcare Officials Walk Together in Corridor with Their Back to Camera

American Health Care

Today was shot for productive work, but I was able to observe American health care in action.

My wife had extreme abdominal pain. I got off the phone, loaded her into the truck, and we took off for the local, community, hospital.

20 minutes later we were at the hospital. This is faster than we could have gotten EMS to the house and for them to transport her to the same hospital.

When we got there, I parked right in front of the doors. Went inside and grabbed a wheelchair. This was noticed by the intake personnel.

I load my wife into the chair, reach across the cab to turn off the truck, and grab my keys. Then locked the truck and just left it there.

The intake lady apologetically quickly finished what she needed, about 2 or 3 minutes. My wife is in pain, and her moans of pain are carrying very well.

The first thing she says as she looks up was “She’s already on the board. They will see her as soon as they can.” She had started things moving when we entered the ER.

The intake person gets her name, does person verification, hands me the wristband to put on my wife. Total time, maybe 3 minutes.

“We’ll deal with the insurance paperwork after you are seen.”

We are now waiting for the ER staff to get things started.

5 minutes later, the triage nurse opens the door to the triage room and gets my wife moving into the room. He asks me to wait. I tell him I’m going to move my truck and be there waiting for him.

They do this separation to be able to ask abuse questions safely. For all they knew, the pain she was in could have been caused by me.

She was under care, getting treatment in less than 15 minutes from entering the ER.

Once she was in process, there was a delay before she had her first meds onboard. This is because they had to have some idea of what was happening before they could medicate her. They got a bunch of fluids into her. Some pain meds and things settled.

She’s home, recovering.

Conclusion

American health care is darn good. It is responsive. People get seen, and they get taken care of rapidly.

While there, the ED had at least a dozen more people come in. Everyone was treated the same. All got served.

I would have hated to have this happen in a “free” health care country. The cost my be free at point of service, but the wait times and access to the actual health care are normally pretty damn bad.

Young woman is holding a sushi roll with chopsticks and covering her nose with a napkin, expressing disgust

Disgusted

Tuesday’s State of the Union address had so many disgusting moments that my stomach is still churning.

They used to say that a broken clock is right twice a day. Or even an idiot gets it right, once in a while.

The Democrats were just wrong.

Back when I watched NFL, when the Packers took the field, I would cheer. They were my team.

My mom died a Packer Backer. Today, my only interest in football comes in the form of Google giving me updates about Packer games. I have no emotional investment in their game.

The Democrats treat politics, and life, like a team sport. You never cheer for the other team; you always cheer for your team.

That’s ok, you don’t have to cheer for the other team, for my team. You do have to show respect.

When Joe Wilson called out Obama for his lies, by shouting, “You lie!” when Obama was lying, he was punished by the House for “unsportsman like behavior.”

Every Democrat at the State of the Union was disrespectful; some stepped over the line into “unsportsman like behavior”, I’m looking at the Muslim twins and Al Green, but there were more.

But what is truly and fully disgusting is the behavior of the Democrats to the country. You don’t have to cheer and clap for my team, but you should darn well stand up and show respect and pride when the USA Gold Medal Hockey team walks into the chamber. You stand up when heroes are given their awards. You stand up when asked if you support Americans or illegal aliens.

The Democrats are consumed with so much hate that they can’t show any love for our country.

Joe Biden was my president. Obama was my president. Bill Clinton was my president. Even that horrible, weak, nation- and world destroying Jimmy Carter was my president.

I still stood for our flag. I was still respectful of the office.

It was once explained to me that you salute the position, not the man. Just like the guards at the entrance to the base didn’t salute Mom or me when we drove the bus onto the base, they saluted the officer’s tag on the bumper. They were saluting Dad, even if he wasn’t in the car.

The next time there is a Democrat as president, I know I will be hearing about how I need to respect the office of the president. That I shouldn’t say disrespectful things about the person who occupies the Oval Office. And when I point out how they treated President Trump and then President Vance, they will tell me “That’s different.”

Tuesday Tunes (On Wednesday)

I hate flying. I being around people. The thought of going to a place where there are lots of people does not appeal to me.

I’m cold. I’ve been cold for a few days now. My child is trapped in her dorm with 36+ inches of snow blocking everywhere she wants to go. Power is out in some dorms. They ran out of hot water, food service has been reduced to making and delivering pizzas.

Sunday we finally got our wood delivered. My son, wife, Ally and I were out in the cold moving and stacking wood. The wonder of the congo line.

Son picks up a stick and swings it to me. I take it and chuck it across the yard to land in front of one of the stacks. As the pile gets high enough infront of the stack, I switch targets and start tossing into a pile in front of a different stack.

Ally and wife are busy stacking from the piles I’m making. Nobody is bending. When the pile is too short for son to reach without bending, he goes to one knee an just keeps going.

So I want to be on a warm beach, huddled under my woobie, sun glasses on. A few spare mags, and just be warm.

Oh, and drinking Long Island Iced Teas.

vintage rocket takes flight with uncertain trajectory, concrete background. false start concept. 3d render.

To Mars or Crash!

A few years ago, NASA crashed a Mars probe into the surface of the red planet when they got their units mixed up. One group was using metric, and the other was using Freedom Units.

I would have laughed if it hadn’t been such an expensive mistake, both in terms of money and lost opportunity.

I’m a firm believer in Freedom Units. It is what I use regularly. My last big learning curve was going from 1/2 inch, 1/4 inch, 1/8 inch to 0.500, 0.250, 0.125, and 0.062, as in thousandths of an inch.

This small-scale metric stuff is for the birds.

Whenever I start to get a bit confused, I go 25.4 mm == 1 in. That’s close enough to 1/32 of an inch that I can use it for a working number.

The other number I use is 6 mm, which is around 1/4 inch. These are just to get some sort of feel for the numbers.

I just printed my second book for crimpers and terminals. It is 5 x 3 units and 6U tall. I found a Gridfinity bin to hold the crimpers I purchased. All’s good.

Except the bin doesn’t fit the pair I purchased. Slightly different.

So I went back to learning how to do this.

To help with just this task, I purchased a cutting mat with grid lines and other fancies on it. Here is the first photo I took.

It is in its blow-molded holder. This should give me the ability to trace the factory’s cutout/shadow box.

Once this is imported into FreeCAD, you rotate it until the grid is aligned properly, then you “calibrate” the image.

Calibrating means drawing a line between two points with known distance. In this case I have a bunch of 1cm squares. To average out my error, I clicked on one intersection, then counted over 70 mm by 10 mm and clicked. The image scaled. It is now ready to be traced.

I used a B-spline curve, which worked well. I’m getting the hang of it again, it having been 20 years since I used b-splines of this style.

When done, I simply cut the curve from a rectangle, padded the result to 3 mm, and printed it. This allows me to test fit the tool to the shadow without wasting lots of plastic and time.

It didn’t fit. It was too small.

I need to do it over again. This time I’m omitting the blow mold and working directly from the tool. I’ll draw a close-fitting curve, then pad it in X and Y by a mm or so.

This will work better; can you see why?

Yep, one side of the cutting map is in Freedom Units and the other in metric. My first photo was on the Freedom Unit side because it is less crowded. When I was counting out 70 mm, I was really counting out 3.5 in. If I had input 3.5 in into the calibration, it would have been fine.

Leason learned.

Man screaming in front of a mirror, expressing frustration, anger, or emotional distress, depicting themes of depression, inner turmoil, and personal struggle

It’s Not The Same!

We are having a snow event. So are the people of New York City.

The difference is that here nobody is concerned. We have dry wood inside waiting to go in the stove. We have the snowblower ready to run. We have gasoline to run the blower. We have propane and a gas stove.

Worse case, the internal computers are down and Internet service goes to shit.

NYC is not nearly as prepared.

The socialist in charge has run out of other people’s money but still needs the city cleared of snow.

His answer is to hire people to shovel snow for the city.

If you want to do this, all you need to do is apply bring two official photo IDs and your social security card.

Of course the fact that you need two forms of ID to shovel snow but NY state has no voter ID requirement and the Democrats continue to fight the SAVE act lead to this being a trending story.

And then the explainers came in. “He’s not demanding two IDs to shovel snow, that’s so you can get paid.”

They somehow think this is a big winning argument for them.

If you are getting paid, the I-9 requires two forms of ID and your social security card. But requiring ID to get paid is not the same as requiring ID to vote.

They’re not the same.

Supreme Court Opinions, Lingo

ROBERTS , C. J., announced the judgment of the Court and delivered the opinion of the Court with respect to Parts I, II–A–1, and II–B, in which SOTOMAYOR , KAGAN, GORSUCH , BARRETT , and JACKSON, JJ., joined, and an opinion with respect to Parts II–A–2 and III, in which GORSUCH and BARRETT, JJ., joined. GORSUCH , J., and BARRETT, J., filed concurring opinions. KAGAN, J., filed an opinion concurring in part and concurring in the judgment, in which SOTOMAYOR and JACKSON, JJ., joined. JACKSON, J., filed an opinion concurring in part and concurring in the judgment. THOMAS, J., filed a dissenting opinion. KAVANAUGH , J., filed a dissenting opinion, in which THOMAS and ALITO , JJ., joined.
— Learning Resources, Inc v. Trump 607 U.S. ___ (2026)

This is opinion is around 163 pages, excluding the syllabus. Which is a fair bit.

Each Supreme Court opinion has a primary author, or it is per curiam. Per Curiam means by the court and says that no one justice authored the opinion, but they all concur.

So what about this case? “C.J.” is Chief Justice Roberts. He is the primary author of this opinion. Six of the nine justices agreed with his opinion. Sotomayor, Kagan, Gorsuch, Barrett, and Jackson explicitly agreed with Parts I, II-A-1, and II-B.

The “JJ” after lists of other justices means “junior justices,” while “J” is the singular of “junior justice.” What is a junior justice? Any justice that is not the chief justice.

Now Gorsuch and Barrett agreed with Roberts on Parts II-A-2 and III. The other three, Sotomayor, Kagan, Jackson, didn’t agree entirely on these parts.

In addition to the majority opinion, authored by Roberts, six other justices wrote opinions.

These other opinions are not the official opinion of the court. They are often cited, and if concurring, can hold some weight. Dissenting opinions don’t carry any weight, though unscrupulous judges and lawyers sometimes cite to dissents as if they were The Court’s opinion.

Gorsuch wrote such a concurring opinion. In it he expresses why he came to the decision he did. No other justice agreed with his opinion enough to “sign” it. The term used is “joined”.

Barrett also wrote a concurring opinion, which nobody joined .

Kagan, the sharpest of the three shrews of The Court wrote a concurring opinion with her fellow agenda driven crones joining. This is to be expected. If Kagan writes an opinion, the other two will join.

Jackson loves to hear herself talk. She just loves to see her words in print. So she wrote a concurring opinion, but only agreeing with part of The Court’s opinion. She was satisfied with the judgment because it met her agenda driven goals. I’ve not read her opinion because I’m having a good weekend and want to keep the blood pressure under control.

Finally, we have the dissents. Thomas wrote a dissent. I need to read his dissent because he will explain why the president has the power to tariff at will.

Kavanaugh also wrote a dissent. Thomas didn’t join, which indicates that it wasn’t as pure as Thomas likes. Again, I’ll need to read it.

Alito joined with Kavanaugh, so we don’t have his words to evaluate.

The big takeaway from this case is not that Trump can’t impose tariffs at will; it is that he can’t do it under the International Emergency Economic Powers Act. This is no more of a loss for the President than The Court saying he couldn’t deploy the National Guard to Chicago using the law he cited.

The Court went so far as to say that Trump might even be legally allowed to deploy the Marines to Chicago, if he can’t enforce the law with the law enforcement officers.

Too Many Questions. A pile of colorful paper notes with question marks on them. Close up.

Question of The Week

The Supreme Court issued their opinion on Trump’s use of tariffs. In a 6-3 decision, The Court ruled against Trump’s use of the IEEPA as unconstitutional.

Thomas and Kavanaugh filed dissenting opinions. Alito and Thomas joined with Kavanaugh.

Jackson was off the rails, again, in her concurrence.

We interpret the constitution’s plain text and this nation’s tradition of regulations. The meaning of the constitution is as it was understood when it was adopted. The meaning of amendments is as it was understood when the amendment was ratified. The meaning of the 14th Amendment is as it was understood when it was ratified. Its meaning when it was ratified was that the constitution, as amended, applies to the states, meaning what it was understood to mean when adopted and ratified.

In other words, the 14th Amendment is understood to be incorporating the federal constitution, not as redefining the understanding of the constitution or previous amendments.

Jackson feels that it is important to look at and evaluate the legislative history of a regulation, rather than the plain text and how that text was understood.

The Question

Given all of that, how do you feel about this decision?
Read More

Duncan v. Bonta

Rob Bonta has been screwing over The People of California since the day he took office. He took over exactly where his predecessor left off, working hard to deny The People of California the ability to acquire, carry, and use guns.

Around nine years ago, Virginia Duncan wanted to purchase a standard magazine. California refused to sell her a standard magazine because the state had decided that standard magazines are too dangerous.

Virginia, having a better than 3rd grade reading comprehension level, understood that “shall not be infringed” meant that the state has no say in what arms she possesses or wishes to acquire. Thus showing that even a 3rd grader has a better comprehension of our rights than the state of California and Rob Bonta.

Virginia filed a civil rights case against California. The case was assigned to Judge (Saint) Benitez. He found the magazine ban was unconstitutional.

He used a text, followed by history and tradition, as Heller directed to reach his ruling. Because he was under the Ninth Circuit, he layered it in a scrutiny decision, where he used strict scrutiny.

His ruling placed an injunction on the state, and The People of California celebrated freedom week by buying as many magazines as were available to be had. Online vendors flatly told customers that magazines being shipped to California had priority and that others would just have to wait.

The state came back and asked for an administrative stay.

Benitez granted the stay with the explicit ruling that magazines that had already been purchased but not yet received or that had been received were exempt from California’s infringement.

A 3-judge merits panel affirmed (agreed with Benitez) that the magazine ban was unconstitutional. They left the administrative stay in place because everyone knows that the state was going to petition for an en banc panel and it would be granted.

No en banc panel of the Ninth Circuit has ever found a Second Amendment infringement. Every case they have heard on gun control, they have ruled in favor of the state.

Which was precisely what happened. The Ninth Circuit heard the case en banc and ruled for the state. This was appealed to the Supreme Court.

The case became one of the dozen or so Second Amendment challenges at the Supreme Court, waiting for cert or denial of cert. New York State Rifle and Pistol Association v. New York City was granted cert. New York State then mooted the case.

In the end, the Supreme Court took up New York State Rifle and Pistol Association v. Bruen. In June of 2022, they issued their opinion in Bruen

Once Bruen issued, The Court then granted cert to a number of other Second Amendment cases, vacated the lower (circuit) court’s rulings, and remanded the cases back for review in light of Bruen.

A GVR, like this, is explicit instructions to the inferior court to rethink their original opinion, considering the instructions provided in the latest case.

A GVR is clear. If the inferior court had gotten it right, the Supreme Court would have denied cert, and the case would be over. The remand when the inferior court got it wrong.

The rogue inferior courts refuse to see it this way and continue to support infringements.

It reminds me of when I was going to arbitration over some property. I was offered $16k as a buyout. The offer came with the calculations showing how the co-owner reached that number. I pointed out that his calculations were in error.

The next week, at arbitration, he offers me $16K as a buyout. This time with a different set of (bogus) calculations. I showed how his numbers were still bogus.

The next week, $16K again. Different set of calculations. I again called him on his bogus calculations. I then stated, “$16k is all you have to offer, isn’t it? It isn’t justified by anything. It is all you have to offer.”

It turned out that his wife’s sister had given them $16K to buy me out.

These rogue inferior courts act the same way he did. They know the result they want, they get that result using some justification. When they are called on the inherent error in their justification, they don’t do it right. They get the same result using a different set of justifications.

It doesn’t matter what the rules say; they will always get the result they want.

Because the case was coming back to the Ninth Circuit, the same en banc panel took the case, again.

It is important to understand that the Ninth Circuit is so large that it is impossible to get all the judges to sit to hear a case. Instead, they draw judges at random to create an “en banc” panel of 11 judges. Smaller circuits have all active judges sit for an en banc case. This means the results of an en banc panel in the Ninth Circuit are random, leaning heavily towards the state.

The en banc panel decided that they needed more fact finding. They sent the case back down to the district court.

The district court did the right thing and once again found that magazine bans are unconstitutional.

The Ninth decided the district court was wrong.

Today, Duncan goes back into conference at the Supreme Court. It is in the same place it was in 2022 before Bruen.

Books Are The Best

It is nice to go to the bookshelf and find what you need.

All about M3 size nuts and bolts.

And look at that, we’ve got examples!

Which can be removed from the book!

Seriously, this is a BookFinity print. These come in different sizes. This one is 3x4u for a total of 12 singleton bins. The book is 4U high.

You can put anything in these books that don’t become disorganized if tipped on their side. They won’t come out of their bin; they will move around.

These are Socket Head Cap Screws, I’m going to do another M3 book for Button Headed Cap Screws.

There are dozens of these books already designed, ready for the printing.