Posted on Thu, Nov 24 2022 in Bob's Journal

It's Thanksgiving yet again, an increasingly controversial holiday. Like so many have before me, I'm going to ignore all that and just be thankful.

I'm thankful to you for visiting this site and reading my words, even if it's not on Thanksgiving.

I'm thankful to the countless mathematicians, physicists, engineers, and programmers who have given us the internet as we have it today. Without all of their often thankless work, so much of what I do to provide for my family would be impossible, or at least far less pleasant.

I'm thankful to all the doctors and nurses who, despite increasingly unhinged conspiracy theories about their motivations, have kept on doing what they can to keep their patients safe.

I'm thankful to the teachers and librarians who carry on educating everyone who wants to learn, even if that's being made increasingly difficult by those who don't understand education.

I'm thankful to all of the election officials who continue to make sure that democratic elections can be carried out despite increasing distrust and polarization. I'm even thankful to all of the candidates that made election denial a part of their campaign and yet have conceded when it's become clear they've lost.

I'm thankful to the remaining reporters and media outlets who care more about distributing accurate information than pushing an agenda, and are willing to publish true information regardless of who it will benefit.

I'm thankful to the artists, poets, authors, musicians, songwriters, actors, and filmmakers who invest their time and talents into crafting beautiful pieces of art for others to enjoy.

I'm thankful to all the firefighters, EMTs, and social workers who have dedicated their lives to salvaging terrible situations.

I'm thankful to scientists in so many different fields who continue to push forward our understanding of the universe around us, and open the doors to ever greater discoveries. I'm especially thankful to those scientists who use their expertise to help humanity have a reason to be optimistic about the future.

I'm thankful to every person who has the opportunity to act selfishly and instead acts in the interest of others. No matter how small, it's these acts of love and cooperation that give me hope that there are bright days ahead.

Thank you.

Why Change the Site?

Posted on Fri, Nov 18 2022 in Site News

Nearly a year ago I got locked out of my WordPress site due to a malfunctioning plugin. I hadn't been especially prolific for years before that happened, so I let it go. I certainly could have updated the plugin and carried on, but having an active WordPress blog inside my household network was beginning to feel like a dangerous security vulnerability, so I left it alone, figuring if I couldn't log in, at least no one else could either.

A random bot attempted to log into my blog every day, slowly shifting later and later. Every morning I got the crash notification from WordPress, letting me know that my site was still alive, if broken. (Let's ignore when the database ran out of space and everything was down for a month.)

Eventually, though, I began to wonder what it might take to move my website outside my home network to somewhere where a security breach would be less devastating. While WordPress certainly has much to recommend it, it is by no means a lightweight tool, and for what I use this blog for (blatant self-promotion) it seemed unnecessary. I'd heard about static site generators for a while. In fact, the very first Bobland, nearly two decades ago, was built using a static-site generator I wrote myself in C++. I had heard good things about Hugo and decided I'd give that a try. I even went so far as investigating hosting, but somehow I ended up choosing a service that didn't allow customers from the United State. So I gave up.

Several weeks ago I saw something (I don't remember what) that inspired me to check out hosting again. I selected a hosting package signed up for an account, and found out that I didn't have my credit card information saved on my workstation. No problem. My wallet was just down the hall. It only took me a few weeks to get it.

It had been a while since I'd looked at Hugo, and I was curious if it was still the recommended engine. I compared it to Jekyll, and found that the reviews were mixed, so I instead searched for the top static site generators of 2022. On the list I found Pelican, a static site generator written in Python that supported theming with Jinja2. It also supported directly importing from a WordPress export. Those all sounded good to me, so I altered my plan and installed Pelican instead of Hugo. I also set up my server with Nginx, and got my SSL certificate.

My initial import of the old site had some issues, but since the "database" is just files in a directory, I was able to move them around and even clean up the text using Perl. Then it was a simple matter of generating the HTML and copying it to my server, which is nicely handled by a simple command. And now we have the site as it exists today (see the date at the top of the article). As a static site, I don't have comments right now. I guess that's what hyperwidgets are for.


Posted on Thu, Nov 17 2022 in Site News

Does this site look different? Yes. That's because I've just recently made the move to Pelican. We'll see how that goes.

Animal Cruelty

Posted on Tue, Apr 6 2021 in Bob's Journal

Every morning, when I pull my shaving cream from the medicine cabinet, there is a picture of a small bunny on the side of the can. Under the picture are the words "Cruelty free". That is my daily reminder that somewhere out there, a shaving cream company is shaving bunnies.

Chesterton's Fence

Posted on Fri, Apr 2 2021 in Bob's Journal • Tagged with software

There is a guiding principle of second-order thinking explained by G. K. Chesterton in his book The Thing.

There exists in such a case a certain institution or law; let us say, for the sake of simplicity, a fence or gate erected across a road. The more modern type of reformer goes gaily up to it and says, “I don’t see the use of this; let us clear it away.” To which the more intelligent type of reformer will do well to answer: “If you don’t see the use of it, I certainly won’t let you clear it away. Go away and think. Then, when you can come back and tell me that you do see the use of it, I may allow you to destroy it.”

While Chesterton was thinking of social structures, this is a good principle in many areas, including computer software. Many of us in the early days of our programming careers (because of course, we've all learned our lesson and never fall for this anymore) come across a line of clearly useless code. Its removal would improve readability and have no negative impact, and so it is discarded. Only later did we discover that that piece of code was instrumental in preventing some error we hadn't even realized was possible.

After a few such encounters, a programmer tends to become superstitious about such sections of code. If you don't have the time to understand it deeply (and in the modern business world, who does?), you just leave it alone and hope for the best. To return to the fence analogy, we could remove the fence, but that would mean taking responsibility for understanding it. Maybe it really could be removed. Maybe a speed bump or warning sign would be more appropriate, but it's hard to say. Instead, the enterprising programmer leaves the fence in place, but jams a stick in the hinges to hold the gate open.

The drivers are delighted that they can now barrel down the street without having to stop and open the fence, until that fateful day when the stick breaks or wiggles loose and the fence slams shut in front of a car traveling at fifty miles per hour.

The next programmer comes along to investigate the wreck and he isn't looking at the fence anymore. Now, he wants to understand the stick. After considering it a while, he decides he needs a stronger stick, or one that's differently shaped. Or perhaps he just needs to use some glue to hold the stick in place better. When that fails, more modifications are made to the stick, and eventually modifications begin being made to those modifications.

Finally, someone gets sick of this mess with the pile of twenty sticks held together with twine, mud, and glue, and reroutes the traffic along a mud path alongside the road. Of course, this path is more treacherous and we need a way to make traffic stop and consider the road ahead of them carefully. So a fence is added.

Christmas Songs

Posted on Thu, Dec 10 2020 in Miranda Rants

Hi everyone! I know, you think I forgot about you, my loyal audience, but I've been super busy taking care of the parents. You wouldn't believe how much trouble they can get into, but I can't go into that right now, because I have something really important to tell you.

Did you know they play Christmas music on the radio? I thought they might, and so I've been looking for it since March, but didn't have much luck tracking it down. Then, on November 1st, I finally found it. A station playing Christmas music. It was great. I played it all day long. And the next day. And they just kept playing Christmas songs. All day long, every day.

And guess what?!? Then I found another station that plays Christmas music all day long. So now when I get tired of one station I can just switch to the other. It is so wonderful that I turn it up as loud as I can so I can hear it anywhere in the house. I love Christmas!

The Great Race

Posted on Mon, Jul 13 2020 in Bob's Journal

Recently I had the chance to spend some time with my brother and his family at a nice house with a creek running nearby. Soon the kids and adults were splashing around in the water. Someone, possibly my brother, suggested to the kids that they have a boat race. They would pick a boat and float it down the stream, and see which one reached the finish line first. I stood downstream to catch the boats before they drifted away to the sea.

Having no actual boats, it was up to each child to select their water craft. Miranda selected a long grass-like blade from a plant, which she was quite confident would be the fastest boat. Her oldest cousin, Eva, selected a leaf. After some consideration, she connected it to another leaf with a stick. Upon further review, she removed the stick and returned to her single-leaf design. Eva's younger sister, Mya, selected a charred piece of wood from the fire pit. Jay, the youngest and only boy, selected a rock.

His dad, a teacher, laughed, and pointed out to Jay that his rock would not float. Jay pondered this for a moment before agreeing that it would be better to switch boats. He chose a different rock.

The charred wood won.

Supplication and Demand

Posted on Mon, Jun 22 2020 in Essays and Stories

"What do you reckon is the bandwidth of the Almighty?" Jonesy asked as he hung his lanky frame through my office doorway. I had been up all night going over the latest report from accounting, but he looked as though he'd had even less sleep. Impressively dark circles hung around eyes that were shining like I'd never seen.

"What?" I asked, startled by the sudden interruption.

"The Almighty? You think we could..." He trailed off. "It'll be easier if I just show ya," he said. "I have some charts pulled up in the conference room. This is gonna be huge, Jimbo!"

"It had better be," I said, tossing a stack of papers onto my desk. "The most recent numbers don't paint a pretty picture." I grudgingly hoisted myself from my chair and followed him down the hallway to our small windowless conference room. Projected on the white wall I saw the same numbers I'd poured over the night before: a flat, faltering line meandering lazily across the months.

"These are our numbers for the past thirty-six months," Jonesy began. I guess he could tell by my expression that I was already painfully aware of that fact, because he quickly clicked the mouse and a second line appeared, slowly but steadily trending upwards. "These are the number for Cullinghams over the same period."

"Where did you get those?" I asked

"Well, ya see, I met this little chap at Jacob's middle school play back in May. Turns out his mother is old man Cullingham's secretary. So I gave him a USB drive and twenty buck and told him to copy all the files on his mommy's computer."

"Do you have any idea how illegal that is?"

"Do you want to know what I found out, or not?"

I had to admit I was curious.

"So, most if it was worthless, but I found some internal quarterly reports that allowed me to graph their growth for the past three years. Basically, it coincides with what we expected."

"So you risked getting us sued and shut down to find absolutely nothing?"

"I ain't finished yet. You know I don't give up that easily," he said. "So, I emailed down to their accounting department and asked for the complete database of transactions, to see if there was anything interesting there."

"And they just said, 'Sure, here you go?'"

"Well, I used his secretary's email address."

"How'd you do that?"

"You remember the USB drive I gave to her..."

"You know what, on second thought, I'd like to keep some plausible deniability. What did you find?"

Jonesy clicked the mouse and a third line appeared on the screen, roughly tracking the previous line, but with noticeable spikes and jumps.

"Now a lot of this here is just noise. Payroll, rent, contracts they've had for years. So I went through and scrubbed out any recurring events, to get a feel for the real picture." A new line appeared, offset a bit from the others, but with some noticeable small bumps. "You can see there's a bit of a pattern. Let me zoom in here a bit, so you can see it better"

Sure enough, a heartbeat pattern appeared. "Now I went through and checked, and every Friday a new revenue bump starts. Fridays! I thought that can't be right, but I went over it again and the signal is there, regular and repeating. So regular, in fact, that I was able to map the standard deviation from a rolling window." Yet another line appeared, this time closely hugging the zero line, with only an occasional jump or dip.

"So, I pulled up old man Cullingham's calendar to see what he's being doing. Turns out, every Friday at 10 AM sharp, the old boy sets aside ninety minutes to go down to St. Paul's church and spend some one-on-one time with the Good Lord Himself."

"You're telling me you think God is helping Cullingham?"

"You're right to be skeptical, Jimbo. I didn't think that made no sense neither. I reckoned it was some sort of mental boost he got. You know, getting alone with his thoughts for a bit, calming his soul, that whole thing."

"So, I …

Continue reading


Posted on Fri, Mar 13 2020 in Essays and Stories

It's now the seventh week of the COVID-19 outbreak. Electricity has been out for nearly a month, and I'm running low on ammunition and gun oil. The looting has slowed now that the virus has fully taken hold. Some joker set up a solar panel in a tree to play It's the End of the World on a loop all day long. I can only hope he died in agony shortly thereafter. I've considered cutting down the tree, but don't want to waste the battery for my chainsaw in case the zombies come back. I'd ask you to tell my family I love them, but I know none of us will survive this. If only I'd hoarded more toilet paper.

Game Hints

Posted on Thu, Feb 27 2020 in Miranda Rants

Mommy and Daddy gave me a game system in my room. It only has a few buttons, and the only display is a number and a few lights. They're too cheap to get me a really good game system, but I make due with what I have.

The point of this game is to make the number go a high as possible. Mom and Daddy can only get a score of sixty-eight, sometimes seventy. I can do much better. Obviously.

What I figured out is that if you push the button on the right until the light next to "High" stays on, you can get a much higher score. But I bet most you out there knew that. No, I'm here to tell you how to truly get the highest possible score.

I discovered and honed this exploit myself, so if you use it in a video, please leave a link back to this explanation. The key is to think outside the box, literally. The buttons on the game only get you so far. I've tried offering the game toys and books, but those don't seem to have a significant impact on the score. What does work, however, is to take your blanket and put it over and around the game.

You might be tempted to look at the number from time to time, but for the best possible score, leave the blanket in place and don't move it. If the air starts to smell funny, that means it's working. The only slight issue with this exploit is that if Daddy finds out he'll take away your game. My parents get so petty when I beat their score.