I Got It Right, Thank You Mark Smith
I wrote this morning’s post last night, before Mark Smith had posted.
I felt I got it right.
It feels wonderful to hear him saying the same things I was trying to write about.
I wrote this morning’s post last night, before Mark Smith had posted.
I felt I got it right.
It feels wonderful to hear him saying the same things I was trying to write about.
I’m tired, I’m stealing this from Miguel.
So I know I am going to catch shit from those who have emotional investment on Ukraine, but what Zelenskyy did in the Oval Office went beyond the pale. You are a guest, invited to the most important office in the world and icon of our country a decided to act like it was one of your cheap sketches when you were a comedian and throw a hissy fit.
If you did not like what was going on or what Trump said, you’d simple courteously express disagreement, stand up, shake the President’s hand and leave without another word said. But what Zelenskyy did was the equivalent of the Liberal assholes that would go to the Family’s Thanksgiving and start a loud of drama about the plight of Muslims transsexuals in the Transvaal region just because you can.
He was asked to leave the White House which shows the actual occupant has more restraint that I would have because sure as hell he would be tossed out by a couple of marines all the way to Pennsylvania Street.
PS: We need to DOGE the hell out of the money sent to Ukraine just for shits and giggles.
—Miguel Gonzalez, The Zelenskyy Drama, Miguel’s Substack (Feb. 28, 2025)
Sorry Miggy.
My mentor was a federal employee. He, and his team, worked odd hours. I would put in my 8 hours as a contractor and then go to his lab and work with him and his team until midnight or later.
Somewhere along the way, people noticed that his team didn’t have set hours and raised a fuss. They complained to the IG that he and his team were mis-reporting their hours.
This led to the IG sending people to investigate.
Now, this was in a secured area. During normal hours, you could just walk in after you should your badge. After hours, you had to sign in and out.
What this meant was that his team had security logs showing when they left for the night. And with a bit of work, they also had the time when people got to work.
After a thorough investigation, they found that yes, the team was misreporting their hours.
They were underreporting by 10 to 15 hours per week.
For me, it didn’t make any difference. I was on salary to the contractor. The time I spent with my mentor, working on projects for the government, were not billable hours. I didn’t care. I learned astonishing things.
Our system administrators were a pair of very sharp ladies. They arrived on time and they left on time. During their 8 hours, they worked constantly. I never felt like they gave less than 100%. When they needed to work late, they did.
Others I worked with were the same way. They gave their 8 hours and left. We got what we were paying for.
Some scientists over worked too.
Then there were the “slackers”. They arrived at work exactly on time. They went to their desks, were seen, then went to the restroom for their morning dump. This lasted anywhere from 30 to 90 minutes.
Subsequently, they went and did a bit of work before it was time for morning break. After the morning break, they had a pee smoke break. Then lunch, then a bit of work, then home, exactly on time.
Total time working, maybe an hour and a half.
A former friend worked for the state government. He was proud of the fact that he got paid for 8 hours of work per day, but on a normal day, he only spent about 2 hours working. The rest of the time he was doing own time projects/stuff.
Now, sometimes people look like they are cheating, but they aren’t really.
We had a group of scientists that looked lazy. They would get to work and sit around talking, reading the paper, for anywhere from 30 minutes to an hour or two. Then they would get busy pouring over results for a couple of hours. Then they would have another long gab session.
After that, they would spend a bit of time putzing with their program before telling the program to “run”.
They would twiddle their thumbs doing nothing until quitting time.
They were incredibly productive. They submitted a run before they left for the day. That would run overnight. If they had the parameters right, the run would complete shortly after they got to work. They would then analyze the results and submit the next run.
On Fridays, they would submit jobs that would run all weekend long. That made Mondays look like they were goofing off for an extended time as they waited for the runs to complete.
Their work was so important that it justified a major computer upgrade. The new computer was 4 times as fast. What used to take them 16 hours of run time now only took 4 hours. They should now be able to get two or three runs per day done.
Nope. With the faster computer, they were able to get more detailed results in the same 16-hour run time. They adjusted to the increased speed by answering more of the question more accurately.
All of this is to say, when I see former federal employees screaming about being fired, my heart gives a little thump of happiness. If they are good or needed, they will be rehired. In the meantime, learn to code. I hear COBOL is a good choice.
Never attribute to malice, that which can be adequately explained by stupidity
, Never interrupt your enemy when they are making a mistake.
, Your enemy is not stupid.
In 2016, I was listening to Ben Shapiro, he had a hate on for Trump. He would often say something to the effect, “The people who think Trump is playing 4D chess are wrong.”
I think I liked his analysis better when he was anti-Trump. He is all in this time around.
I do think that Trump was attempting to play chess during his first term. Unfortunately, people kept taking his pieces and knocking over the board. He lost.
Trump 2.0 is moving fast. He is moving so fast that the left can’t keep up. We can’t keep up. I wake up, go on X and look for what happened in the last 8 hours. And I’m often surprised.
As Second Amendment activists, we know exactly how the game will be played. We know that states that are anti-gun are going to pass regulations to infringe on The People. We know that the rogue lower courts will rule in favor of the state. We know that any relief will be blocked. We know that it will take years to get even one case decided.
Since June 2022, we have not seen a single 2A win. Every win in the lower courts has been halted at the circuit level. Every “temporary restraining order” has been upheld against us. Every preliminary injunction has been stayed, against us.
We have not won a single battle yet.
That doesn’t mean we aren’t winning. It means that this is a war, not a battle. We have to fight. We shall go to the end. We shall fight in the Ninth, we shall fight in the Seventh and Second, we shall fight in the Forth, we shall fight to the Supreme Court. We shall never surrender. With apologies to Winston Churchill.
Trump 2.0 came into office with a bang. The left was working hard to show a “peaceful transfer of power”, so they could club the right with the events of J6th.
But Donald hit the ground running. I believe he signed over 200 Executive Orders on his first day. Held multiple press conferences and attended a ball. I’m tired just thinking about his day.
There were surprises in those Executive Orders. The biggest for me was that everything was done right. When he announced the formation of DOGE, I was skeptical.
I “knew” that it would be challenged and DOGE would be devolved because it didn’t come through Congress.
I was wrong. He out played me as I looked over his shoulder. He didn’t create DOGE out of thin air. He renamed an existing agency. He then told the new agency to go do their job, with Elon leading it.
The promises he made, I expected to take months to accomplish. He was keeping promises within minutes of taking office. And not in ceremonial ways.
He issued an Executive Order giving the US AG 30 days to report what to do about the anti-2A situation within the Federal government. Last month, I would have considered this to be a shot fired over the bow of the enemy. I would have expected results sometime in late 2026.
Today, I expect the report to hit his desk in 20 some days. I expect actions to happen the same day. This is the speed that Trump is moving at.
As I said, in the Second Amendment advocacy space, we know what is going to happen. How do we know? We’ve seen it too many times in the past.
Trump 2.0 is out playing the left in so many areas. Why should I assume he messed up with these court cases?
When the state is fighting The People, they want things to move as slowly as possible.
The case in New York was filed at 9pm on Friday. The TRO was in place by 1AM Saturday morning. The TRO was modified by 5PM Monday.
Having set out the limits, the Trump administration has provided documentation to the court by 4PM on Tuesday to make sure that DOGE people will still have access. They have taken the “loophole” opening and driven a train through it.
They are obeying the letter of the TRO while doing what needs to be done. They are preparing to take this to the next level.
I believe they will attempt to combine multiple cases from rogue courts, headed by political provocateurs. These combined cases will be taken straight to the Supreme Court.
To put a since of speed on this, the case I’m following is averaging 10 new docket entries per day. At this pace, I should be tired of this case in the next 2 days.
The amount of grief I’ve put up with to get this working buggers imagination.
To have a NTP stratum 1 server, you need to have a certain set of capabilities.
First, you need a stratum 0 device. This is an atomic clock or a GPS receiver.
You need a method to communicate with the GPS receiver.
Your clock needs to be network connected.
Each of these pieces must be done correctly with the least amount of jitter possible.
Jitter is how much a signal deviates from its target. If the jitter is zero, then we have a level of accuracy that depends solely on our reference clock.
The little GPS unit is self-contained. If it is supplied 3.3V of power, it will search for satellites and do the calculations to know what time it is and where it is.
The calculations turn out to be for someplace along the cable from the antenna to the GPS unit. Some highly accurate versions of the GPS SoC measure the length of the antenna feed and account for that in the calculations. Regardless, it is the time for a place a little offset from the actual GPS chip.
For me, that is a delay of around 10ns.
The GPS will communicate via a serial protocol. This means that we have a delay from when the message is received and when we can put our timestamp on the message. For me, that is around 140ms.
This can be discovered by tracking the time indicated by the serial GPS and the system/local clock. The local clock is synced to multiple remote NTP servers to get this number.
Unfortunately, there is about a 1ms jitter in this signal.
If I were to use a USB converter. I.e., serial to USB, that jitter goes up. I am seeing a jitter of 4 to 9 ms.
Using the serial directly is a good start.
But there is another signal that can help. That is the Pulse Per Second (PPS). We are using a 1second pulse.
IFF we can capture the time at which the pulse arrives, we can get a very accurate start of the second marker.
This requires that the hardware have a general purpose input/output(GPIO) pin available.
Most motherboards do not have exposed GPIO pins. Worse, some boards have GPIO pins, but there is no documentation on how to access them.
So the server board requires GPIO plus a method of accessing those pins.
There are two ways to discover a change of value, we can pole for it, or we can get an interrupt.
Consider you have your phone alerts silenced so you don’t get a noise every time you receive an email or message.
You have to check your phone for new messages. This is “poling”.
If somebody calls, your phone still rings. You then immediately check to see who it is and perhaps answer the phone.
This is an interrupt.
The default operation of a GPIO pin is poling driven. Even if it is generating an interrupt, that interrupt is only used to record the change of value.
What is needed is a high-performance interrupt handler. When an interrupt happens, the handler records the system clock. A user land process watches, either poling or interrupt, it doesn’t matter, for that value to change.
When it changes, the software knows that the GPS “knew” it was the start of the second when it created the pulse.
The amount of jitter is only as much time as it takes for the system to allocate a CPU and for that CPU to process the interrupt. In other words, really, really fast.
Currently, the jitter on my PPS reference clock is 300ns. Because of the many samples that have been taken, the PPS reference clock is currently running 17ns from the real time. That has been going down over the last few hours. By the time you read this, it is likely to be even less.

The PPS clock is so tight that the other clock sources hide the values, even in logarithmic form

This is an interesting graph, to me, as it indicates how the system clock is slowly being conditioned to keep more accurate time. It software currently says that the drift is -17.796271 ppm off which I think translates to 3.324ms
So how bad was this task? More painful than I wanted it to be.
I’m fine with “dumb” computers. I started programming on 6502s. I’ve been bit slinging for 50 years. Programming Arduino’s? No problem.
Building a PC from components, installing any compatible operating system? I do it a dozen times a week when developing.
The Raspberry Pi is a different animal. It isn’t sold as a low-level system. You can use it that way, but that is not how it is intended to be used. It is sold as a System On a Board (SOB) that runs a modern (Linux, Android) operating system.
This is where things get strange. When we are working with modern PCs, they have known hardware. We boot the computer, run the OS, the OS has drivers to talk to the hardware. Everything just works.
This is possible because PC’s have a Basic Input Output System (BIOS). This is a low-level set of routines that are there to allow accessing certain parts of the hardware with a standard Application Protocol Interface (API).
Since every BIOS has the same API, OS vendors can use the BIOS to load enough of their software to continue booting. The hardware is attached in known ways. The hardware vendor supplies the drivers for their hardware. Linux people write their drivers if needed.
So consider that SOB. It has a serial port. The serial port is controlled by a standard UART. That UART is programmed in a standard way. They are all the same.
In order for that UART to work, the software needs to know where the UART is located in memory (or on the I/O bus). In addition, the pins that the UART uses have to be configured for the UART. Most UART’s use standard pins on the GPIO header. The pins that the UART uses can be used in different modes for different things.
The problem comes from that address being different in every SOB or SOC. A board could have one, two, or more GPIO driver chips. It all depends on the designer.
The developers overcome this issue with what is called a “Device Tree”.
The device tree is a parsable description of devices and their locations in memory or on the I/O bus.
The board I purchased doesn’t have a supported modern OS. The only OS that I could get to boot was released in 2016. The OS is not really supported anymore. The board itself was flaky. It would randomly reboot, or just power off.
The “modern” OS that should have worked didn’t even complete the boot.
In discussions with a community support person, we decided that there was hardware that was not being properly initialized in the kernel. I.e., we had a bad Device Tree.
The replacement Banana Pi doesn’t have a supported modern OS. It is fully supported by Arabian, which is a supported, modern OS.
When I first booted the system, it just worked. I was thrilled. It has continued to work properly.
Then I plugged the GPS in. I could see it blinking. This indicates that it has a lock and the PPS signal is being sent.
But I can’t get any input on the serial ports.
It turns out that the default device tree doesn’t activate that UART. Once I figured that out, I had to find an overlay to the device tree to turn on the UART.
That was a pain, but it happened.
Working serial, no PPS.
With the tools on hand, I could monitor the GPIO pin and see the PPS. But it wasn’t doing anything.
I loaded the correct kernel modules, still no PPS.
My Google Foo suggested that the device tree entry for PPS was missing.
Yep, there was no PPS overlay.
The Linux kernel documentation describes the Device Tree. But no real examples, and nothing fully commented.
By comparing multiple sources, I finally was able to create a device tree overlay for PPS. I need to figure out how to return that DTD to the community. The problem is, I don’t know what the hell I did. I made it work. I think I know what was done. Nonetheless, it was truly a case of looking at different device tree overlays and picking out the parts that seemed to match what I needed to do.
I don’t think I’ve had this much difficulty hooking up a piece of hardware since 1983, when I was attempting to attach a DEC 10 MB hard drive to a computer that wasn’t really a DEC.
The only tasks remaining is to put everything in a case and move it to its long-term home, off the top of my computer.
Consider for a moment that you are a company that contracts with the government. You have a 5-page contract about what you are supposed to deliver, how much you will charge, and when it will be delivered.
The other 200+ pages of the contract are where you promise to do all the “equality” stuff the government mandates.
You don’t even need to be a government contractor, there are many industries where there is a government agency watching over them to make sure they are “equitable” in their hiring.
So we have two positions open, one is for a Widget Designer, and one is for a Machine Operator.
The requirements for the Widget Designer are that they have a 4-year degree, 3 years in the Widget Industry, and have two successful widget designs.
The requirements for the Machine Operator are the ability to lift 50 pounds, to be able to stand for 8 hours, to be able to read English, and to be able to learn to operate the machine. Training will be provided by the company. The first 6 months are probationary.
20 people apply for the Machine Operator position. The top 5 are asked to return for a second interview. After the second interview, two are offered employment.
These 2 are the top 10% of the applicants. They both look good for the position, both have the potential to move up.
And they are both people of color and met the diversity requirements put in place by the government. Everybody is happy. These are both merit-based hires.
The Widget Designer position is a different animal. There are four applicants, not 20. Of the four, one does not meet the requirements and does not move forward.
The other three are interviewed and two are asked to return for a second interview with the lead Widget Designer.
After the second interview, there is a management meeting. The lead Widget Designer comes in to give his opinion.
Candidate A is outstanding! They know this stuff inside and out. It turns out that they were part of the design team for the XYZ Widget Company.
Candidate B is ok. They are competent, they will work out. We might have to do a bit of hand holding in the beginning, but not a horrible choice.
The lead leaves and management gets down to work.
Both candidates meet the requirements.
But, one of them is a black woman in a wheelchair that is non-binary. The other is a normal, every day, guy.
Who gets picked?
If there is any DEI involved, the woman gets picked. If not, then candidate A gets picked.
Did the company lower their standards if they picked the woman? No. They did not. Both candidates passed the requirements stage.
Did they pick the best candidate for the job, based on merits? Only if the woman is candidate A.
And this is how you end up with a lower quality of people without ever lowering your standards.
If candidate A is not picked, he will go find something else to do. He might even change careers. The world is his oyster because he is a capable person.
In a couple of years, when the company is looking for another Widget Designer because they hired based on “equity” standards and not merit standards, he, and many like him, aren’t available. They have moved on.
Because there is an education requirement as well as an experience requirement, there is a tail from the time the “equity” hires start until there are new, qualified people.
If a person in school learns that they will not be hired, because of the color of their skin, they will switch majors. That means from the time that they say “We want to hire” it is four plus years before we have new candidates, with no experence.
So the Mexican cartels have decided that they want to play games and win big prizes.
They might actually find out. They have already started taking pot shots at federal agents on the north side of the river.
I believe that we might just have that moment when Mexico remembers that they lost all the wars with the United States.
A bit further south, Rubio visited with the president of Panama. They contract with the Chinese company has been canceled, and it looks like the canal will go back to treating US ships with due respect.
The Governor of Canada is having a hissy fit. Seems that he doesn’t want to close the border to drug trafficking and unvetted terrorists crossing in to the rest of the US.
Instead, he has decided to call what he thinks is a bluff. A 25% tariff goes into effect this week.
Doubling down on stupid, Mexico and the great state of Canada have decided to impose tariffs on us.
As the Texas Governor put it, “Texas has a larger economy than Canada, and we are not afraid to use it.”
Have a fantastic week.
Wednesday night, a regional jet, meaning not a jumbo, collided with a Black Hawk Helicopter over the Potomac River.
There does not appear to be any survivors.
There are two major airfields in Washington, DC proper. There is Andrews Air force Base (I think it was renamed) and the Ronald Reagan Internation airfield. Along with those two airfields, there are several military installations that have helicopter operations.
For perspective, the Aberdeen Proving Grounds had an airfield, 4 helicopter pads “outside the fence” and an unknown number inside the fence.
In other words, there is a bunch of air traffic in the area.
What I would normally see is helicopters flying relatively low over the river. Runway 33 is pointed at the river. Many years ago, a pilot dropped a plane into the Potomac because he didn’t de-ice his aircraft.
Even with the lights of the fixed wing aircraft on, the helicopter(s) likely didn’t notice it as it was above, descending to land.
Depending on exactly where the helicopters were, relative to the plane, the pilots of the plane were unlikely to see the helicopters.
Moreover, I doubt that civilian aircraft radar has good detection capabilities for low-flying helicopters.
If anything, it is likely the fault of the air traffic controller.
The plane was a CRJ at 1200 feet just south of the Woodrow Bridge. It was getting ready to land on runway 33.
PAT25 was the helo. JIA5342 was the CRJ. The DCQ tower asks, “PAT25, do you have the CRJ in sight?”
The military aircraft does not respond, just a few seconds later tower says, “PAT25, pass behind the CRJ”.
The crash happens a few moments later.
Tower should have ordered CRJ to turn left to heading 270 and to climb to 3000.
Here is the track of the aircraft in the air when the crash took place along with the audio.
It was her birthday, very recently, send her a Happy Birthday!
Here is the item description:
Two MAJOR issues for me. First, it doesn’t support a 170x170mm motherboard. No, it supports a 170x167mm motherboard. If you put a 170×170 in the case, there is not enough room to put the cover on.
That lead to time in the shop grinding off the offending metal.
The clearance for the board is very tight under the four disk bays. I had to get a different CPU cooler that was low profile. That’s ok. Everything went together once I got the fan in place.
Then I went to install the PCIe 10G SFP+ card. There is no space in the back for that card! They put the damn full height opening in the worng place.
I’m stealing this from X. I was going to write about this, I had multiple sources. I was going to quote published documents. Instead, I’ll let this stand for itself.
To fully understand just how remarkable today’s exchange with Colombia was, you need to understand how Washington DC has traditionally worked through these sorts of issues, and the different way it works now under Trump.
I’ll illustrate.
Traditional Approach:
1. Colombia…
— Cynical Publius (@CynicalPublius) January 26, 2025
I’ll illustrate.
Traditional Approach:
Trump Approach:
See the difference? It’s called LEADERSHIP.
For a little bit of clarity on how heavy handed Trump 2.0 was, Colombia exports around a billion dollars worth of roses every year to America. In order for those roses to be sold, they have to get expedited inspections. They also have to be reasonably prices.
With the 25% tariffs, Trump was going to put the hurting on 31% of their economy. But it is better. If Colombia had not caved, the tariffs were going to go up to 50%.
In addition, Trump ordered full inspections of everything being imported from Colombia. That means that many of those roses would have wilted in transit.
Oh, did you remember that Valentine’s Day is coming up? And that is the biggest sales day in the country for roses.
I could write a dozen articles about whining liberals over on X. The most common whine is, “a bad thing is going to happen. This is what you morons voted for. Don’t you feel stupid now?”
Correction(s):
I made the mistake of trusting Google’s AI answer.
Speed of light:
| Time | Distance |
|---|---|
| 1s | 299,792,458m |
| 0.001s(1ms) | 299,792.458m |
| 0.000001s(1us) | 299.792m |
| 0.000000001s(1ns) | 0.2997m (299.7mm) |
| 0.000000000001s(1ps) | 0.0002997m (0.2997mm) |
Sorry for that. A pepper grain is the size of a picosecond. A nanosecond is around 11.7 inches, which makes much more sense.
My mentor, Mike, had so much to teach me. Coming from University, I knew I was the best programmer on campus and better than anybody I had met.
That changed the day I met Mike. After being introduced to him, I went to my boss and said something like, “That is the most arrogant man I’ve ever met.”
Greg replied, “He’s earned it.”
When I had an opportunity to work with him, I found that yes, he was that good.
He was the first person to stretch my abilities in computer science. I will forever be thankful to him for that.
He had the privilege of meeting Admiral Grace. He was one of the many that were handed her “packet of Nanoseconds”.
This was Grace’s way of getting across to people just how fast computers were running.
In 1 ms, light will travel 299.79 meters. This is a reasonable rifle shot.
In 1 us, light will travel 0.2998 meters (299.8mm), or about 1.2 inches.
In 1 ns, light will travel 0.2998 mm. This is about the size of a single grain of ground pepper.
My Cray X-MP/48 had a memory bank cycle time of 38ns. This means that light would be able to travel about 10mm or a little less than 0.5 inches.
My memory said that we had a 85ns wait time from accessing memory to having loaded that word into a register.
Your PC likely runs faster than that X/MP. It surely has more memory.
As stated above, my world was baby sitting a Cray Super Computer. We worked in nanoseconds. We were trying to optimize code to shave a few nanoseconds out of a loop.
Saving grains of pepper.
When I purchased some study lights for doing photoshoots, I didn’t buy the fancy radio controllers. Instead, I bought “slave” style lights.
With the slave style, you could tell your study light to fire when it detected the flash of another strobe.
Before I purchased these study lights, I went to Mike with concern. I had done the math.
From the moment my flash fired, a long sequence of things had to take place. The light had to travel from my strobe to the detector on the study light. There was a delay while the photoreceptor energized and “fired”. There was still more time as that signal propagated through the circuitry, and finally that light would fire.
My studio lights would be at different distances, we couldn’t even predict the sequence that they would fire.
According to my simple calculations, we could be talking as much as 2ms from the time my light fired until the last study light fired.
Mike pulled me back to the ground. My shutter speed would be set to 1/60 of a second. That is 16.6ms. If the study lights fired anytime while the shutter was open, I would get a good photo.
I was so focused on my reference frame, nanoseconds, I lost sight of the real-world application that was running in 10s of milliseconds.
Here is the magic of GPS. It works by knowing the time and then calculating the distance to different satellites.
The more accurate the clock, the more accurate the location.
Communicating that time to an external device is where it gets interesting. The definition of NMEA tells use exactly when the second mark occurs during the transmission of the NMEA message.
Most GPS units default to transmitting at 9600 baud. Which for us is the same as 9600 bits/second. Each 8 bit byte sent requires start and stop bits. My rule of thumb is 10 bits per byte.
This means that it takes around 83ms to transmit one 80 character NMEA sentence from the GPS to the computer.
The instant when the second starts aligns with the edge of a signal of one of the characters in that sentence.
Now my issue was that I thought that the GPS unit had time that was “wrong” it was offset from the real world.
This is not the case. The real reason for the delay is in the time it takes to process the sentence. That should be fixed to the computer, not to the GPS unit.
Which brings us to PPS, or Pulse Per Second. This is a signal that indicates the start of a second. Depending on the GPS unit, this can be at ns accuracy. Even cheap units will get you sub us accuracy.
The processing time to handle the pulse is much lower than to handle a full NMEA sentence.
A PPS can be treated as the “real” time, without fear of being too far away from reality.
A couple of grains of pepper.