In spending the past week abusing myself with CMake, I think two things are fundamentally true and unlikely to ever change:

  1. CMake 3.16 beats the crap(!) out of 2.x.
  2. I will never, ever love CMake. Period.
On the positive side, in the years since it last pissed me off, they’ve added support for generating the build for Ninja—a tool which I do love very much. So at least, I get to solve my problem, and I don’t have to deal with MSBuild, NMake Makefiles, or Unix Makefiles. Although, I might have gained a few new grey hairs along the way. I very much would prefer the generated build did more actions in ninja than in cmake, for a multitude of reasons.
My hate for CMake 2.x mostly stems from its tendency to complicate my cross platform efforts rather than aid them. Quotes I’ve made over the years about autotools, often stem from dealing with either CMake or SCons.
My hate for CMake 3.x mostly stems from the nature of what it is: configure, generate, build shit; and consistency issues that follow that. Actually, it makes me remember the compile versus runtime stuff in Perl 5, and recall the times I’ve muttered: “Yeah, please just don’t !@#$ with that, pal.”
The difference there, is perl and I are old friends. CMake and I are old enemies. That, and I suppose these days the number of people that like the former outweigh the latter.

Musing from an E6430S

The things I’d actually change about my Latitude:

  1. Not weigh 3~4 lbs.
  2. Have more than 16GB of RAM.
  3. Have USB-C where the USB2 + ESATA is.
  4. Swap the rear USB3 and side VGA cables.
  5. Have internal Bluetooth instead of dongle in my rear USB3 port.

Notice, these are pretty much in the order of impossible, lol.

Newer machines offer faster processors and better capabilities for USB-C than Stark does, but not by much. I think the hardest to solve is the weight problem. The closest thing to a lightweight laptop in Stark’s formfactor is the X1 Carbon, and I say that’s lightweight relative to its peers rather than my tastes.

And there in lays why when I reach for my laptop at home, it usually has more to do with an x-terminal than a keyboard. Because my tablet’s weight is < 0.5 kg and my laptop’s weight is < 4 kg.

On the flipside, one of these days I should probably dig up one of the old E-series docks and see how well that works with Linux. I seem to recall the D-series docks worked pretty good with FreeBSD if you followed polite undocking procedures, and I don’t think Linux gives as many farts about the hotplugging.

Sometimes it’s hard to decide whether the room I’m in is defined by what I’m trying to do, or by the comfort of dogs.

Willow’s well versed in finding the most comfortable spot she can, and in where the food eating happens.  Mostly she chooses her spot based around where I’ve chosen mine: but she doesn’t hesitate to influence this ad the requirements for comfort and such change.

The amount of times I end up changing between living room and bedroom to suit Willow’s preference, is probably balanced by how often my drifting around doing stuff causes her to follow me around and wonder if I’ve lost my mind or started sleep walking.

Have I ever mentioned that Willow is a lot smarter than I am?

And far more comfortable, lol.

How Much of a Genius-Level Move Was Using Binary Space Partitioning in Doom?

I still remember the first time that I played Wolfenstein 3D. It was on a contemporary hardware, as a minigame in a far more recent Wolfenstein game. My first thought was how rudimentary simple it was; my second was “Holy crap, you could do this on a 286?”.

By modern definitions, I don’t think anyone would be thrilled by the limitations Id’s early engines had for map geometry. But I think for their times, it was a small price to pay given the hardware. And to be fair, as a kid, when I first played DooM ’93 on a Sega 32X^, I certainly didn’t notice. Years later when I would play it on a PC, I didn’t care—because it was still fun. All these years later, I still find DooM ’93 to be a lot of fun. That’s the real success of a video game, I’d say :P.

For the time, even the console ports were pretty impressive games. I mean, most of the games we had looked like this:

Meanwhile if you popped in DooM, this was what you got:

That just didn’t happen, lol.

Many times that I’ve read about porting PC games to the Super Nintendo, and other consoles, they’ve usually been stories that I would describe as “Lossy” or “Brutal” depending on the complexity gap. Such as when an arcade machine was far more powerful than a console, or a PC simply had more oompth than a console.

Id’s games were kind of revolutionary: both in their visual technology, and in their portability. Wolf 3D, DooM, and Quake were pretty widely ported during their era of commercial viability. Post open sourcing of their code, they have come to run on virtually everything, and anything. As technology has advanced, we’ve probably reached the point where it is no longer a surprise if your wrist watch is more powerful than many of the things DooM ’93 was ported to in the ’90s.

Today, I think that DooM’s use of BSP is somewhat novel. You should think of that today, or your hardware is probably so powerful compared to your goal: that you just don’t care. Given a decent computer science education, the concept isn’t the leap into rocket science. Today though, I imagine most people aren’t tasked with solving such a problem, because they live in the world John Carmack helped create: one where we have this thing called a Game Engine.

When Carmack programmed these games, I don’t think it was so obvious a technique. People were still struggling to make PCs do this kind of thing at all. Resources for learning these things have also changed a lot over time. Many of us have the advantage of knowledge built on the minds of geniuses, if we have any education at all—and the code.

Two of my favourite engines to read: are modern source ports of the Quake III: Arena and DooM engines. By releasing the code into the wild, I think it helped all of us learn better how to solve these problems. Both the things you can go off and learn, and the code you can get ahold of have evolved since these games were written. But thanks to games like DooM: it’s easier for us to do that today. Because technology is built upon what came before, by extending the ideas of others in new directions and taking advantage of improved hardware.

Genius isn’t in using a rock to smash something, it is in realizing you can smash things with a rock far better than your thick head.

^ Being around 25 years later, my brain cells are foggy. But DooM was one of my brother’s games, so the first thing we had that played that would probably have been the Sega Genesis, which AFAIK means 32X release. We also had the PlayStation versions of DooM, Final DooM, and Quake II but those were later in our childhood.

Damn it, fruit co!

Reasons to look forward to a knew iPadOS version: if I connect my keyboard or my mouse individually, they work excellently. If I have both connected: the keyboard lags at a rate of 5+ seconds per character with frequent drops and repretitions.

So basically, Apple seems to have broken the ability to use a keyboard and a mouse at the same time in 13.2.3. Nevermind that that mouse support and productivity are cornerstone goals for iPad OS 13 o/.

On the positive side, disconnecting the mouse fixes the keyboard distruption about as instant as the connection terminates. And restores it as fast as the mouse reconnects.  So unlike most issues I’ve experienced with iOS 13 bugs, reboots aren’t required.

I find this less amusing when you take both the fact that I am more inclined to use my tablets with mouse/monitor/keyboard than most people, and that the touchscreen keyboard vs the physical keyboard is a delta of about 40~50 words per minute in my typing speed. And Apple’s floatly keyboard with the pen input is one of the buggist mother fuckers ever shipped.

Random LOL

In porting an old multi-headed hydra, I found myself cackling.

Somewhere down in the beast’s HAL, is an utility function that returns the device name. This is what I found:
if (access(“normal device”, F_OK) == 0) {
    strcpy(devName, “normal device”);
} else if (access(“device not used in many years”, F_OK) == 0) {
    strcpy(“devName”, “device not used in many years“);
}
And in realizing why the stack trace was in such a simple function, I bust a gut when I noticed the quotes in the lower string copy. Ahh, the joys we inherit ^_^.

Watching the episode 4 – 6 arc of Love and Peace / Hard Puncher / Lost July, may have permanently endeared Vash the Stampede to me. Because if the humorous antics and ease going nature didn’t, that sure did.

The arc begins with Vash eating at a diner before a bunch of gunmen rush in wanting to lay claim to the $$60 billion bounty on his head, runs past The Nebraska Family, and into a revenge plot over the first city to experience his typhoon problem.

It’s a damned great story. Actually, that makes me wonder if there are Blu-rays available and decently priced.

Yep, it’s official. Trigun is freaking awesome and if I was smart: I’d have started watching this twenty years ago.

That’s the conclusion I’ve reached be episode 4: love & peace.