Aug 242021

I value StackExchange. I often come across technical answers that I could not find elsewhere. Yet I contribute only rarely, and I am always hesitant. StackExchange’s quick-to-punish culture does not encourage contributions.

Case in question: I recently searched for a particular solution in SQL. A Google search led me to a StackExchange page with a closely related question and some good answers. Also a bad one.

Except that this bad answer was nonetheless marked as the “accepted” answer by the question author.

And as a result, it garnered as many as 41 (!!!) downvotes. I’m sure there are some, but I’ve never before seen a StackExchange answer with this many downvotes.

Of course there are bad answers, which sometimes end up in negative territory (that alone is a huge turnoff for many potential contributors.) Usually they end up at the bottom of the page, often not even shown.

Not in this case. Because the answer was marked as “accepted”, it remains on top and continues to garner downvotes. Presumably, folks react to it being the accepted answer, but the one they’re punishing is the person who offered the answer in the first place.

It’s sad, really. The answer is technically incorrect but it is not nonsense, and was obviously offered in good faith. No no avail; when StackExchange punishes you, your intentions matter little.

Oh, but you can vote for moderators…

 Posted by at 8:23 pm
Aug 152021

I promised myself not to blog much about politics, but this one deserves an entry.

In my all time favorite movie, Cloud Atlas, while reading some decades-old letters, a protagonist remarks: “Just trying to understand why we keep making the same mistakes… over and over.”

I was wondering the same thing moments ago when I came across the cover page of tomorrow’s edition of USA Today:

The editors of USA Today of course knew exactly what they were doing when they elected to use a picture that is almost like a copy of another iconic photo, this one from 1975:

Many think that it is a mistake for the US to exit Afghanistan. I respectfully disagree. The mistake was starting an unwinnable war. Compounded by the mistake of staying there for 20 years, perpetuating a conflict, causing many more deaths. Wasn’t Vietnam a good enough lesson? Didn’t the collapse of the Saigon government teach the US that military occupation cannot build a nation? Was there nothing to learn from the USSR’s failure to pacify Afghanistan? Or for that matter, their failure to suppress the Baltics and the nations of Eastern Europe, which chose to escape the Soviet Bloc at the first opportunity, with their domestic politics often resuming exactly where it left off decades earlier when it was interrupted by the arrival of Soviet troops?

So here we are, 46 years after Saigon, and yet another helicopter departs yet another roof with some of the last lucky few who can thus escape an uncertain future, possibly death, in a besieged city.

 Posted by at 9:52 pm
Aug 142021

I am not happy admitting it, but it’s true: There have been a few occasions in my life when I reacted just like this XKCD cartoon character when I first encountered specific areas of research.

 Posted by at 11:48 am
Aug 132021

I was so busy yesterday, it was only after midnight that I realized the significance of the date.

It was exactly 40 years ago yesterday, on August 12, 1981, that IBM introduced this thing to the world:

Yes, the IBM Model 5150 personal computer, better known simply as the IBM PC.

Little did we know that this machine would change the world. In 1981, it was just one of many competing architectures, each unique, each incompatible with the rest. A program written for the Apple II could not possibly run on a Commodore VIC 20. The Sinclair ZX81 even used a different microprocessor. Between different processors, different graphics chips, different methods of sound generation, different external interfaces, each machine created its own software ecosystem. Programs that were made available for multiple architectures were essentially redeveloped from scratch, with little, if any, shared code between versions (especially since larger, more complex applications were invariably written in machine language for efficient execution).

The PC changed all that but it took a few years for that change to become evident. There were multiple factors that made this possible.

First and foremost among them, it was IBM’s decision to create a well-documented, open hardware architecture that was not protected by layers and layers of patents. The level of documentation provided by IBM was truly unprecedented in the world of personal computers. An entire series of books were offered, in traditional binders characteristic of technical documentation of the era:

As to what’s in these volumes, here’s a random page from the XT technical reference manual:

This level of detail made it possible, easy even for a hardware ecosystem to emerge: first, companies that manufactured novel extension boards for the PC and eventually, “clone” makers who built “IBM compatible” computers using “clean room” functional equivalents, developed by companies like Phoenix Technologies, of the machine’s basic software component, the BIOS (Basic Input Output System).

But the other deciding factor was the fateful decision to allow Microsoft to market their own version of the PC’s operating system, DOS. IBM’s computers came with the IBM branded version called “PC-DOS”, but Microsoft was free to sell their own, “MS-DOS”.

Thus, starting in 1984 or so, the market of IBM compatible computers was born, and it rapidly eclipsed IBM’s own market share.

And amazingly, the architecture that they created 40 years ago is still fundamentally the same architecture that we use today. OK, you may not be able to boot an MS-DOS floppy on a new machine with UEFI Secure Boot enabled, but if the BIOS permits you to turn it off, and you actually have a working floppy drive (or, more likely, a CD-ROM drive with a bootable CD image of the old operating system) you just might be in luck and boot that machine using MS-DOS 2.1, so that you can then run an early version of Lotus 1-2-3 or WordPerfect. (Of course you can run all of that in a DOSBox, but DOSBox is a software emulation of the IBM PC, so that does not really count.)

And while 64-bit versions of Windows no longer run really old 16-bit software without tools such as virtual machines or the aforementioned DOSBox, to their credit Microsoft still makes an effort to maintain robust backward compatibility: This is how I end up using a 24-year old accounting program to keep track of my personal finances, or Microsoft’s 25-year old “Bookshelf” product with an excellent, easy-to-use version of the American Heritage Dictionary. (No, I am not adverse to change or the use of newer software. But it so happens that these packages work flawlessly, do exactly what I need them to do, and so far I have not come across any replacement that delivers the functionality I need, even if I ignore all the unnecessary bloat.)

So here we are: 40 years. It’s insane. Perhaps it is worth mentioning the original, baseline specifications of the IBM 5150 Personal Computer. It has a 16-bit processor running at 0.00477 GHz. It had approximately 0.000015 gigabytes of RAM. The baseline configuration had no permanent storage, only a cassette tape interface for storing BASIC programs. The version capable of running PC-DOS had four times as much RAM, 0.000061 gigabytes, and external storage in the form of a single-sided, single-density 5.25″ floppy disk drive capable of storing 0.00034 gigabytes of data on a single disk. (Be grateful that I did not use terabytes to describe its capacity.) The computer had no real-time clock (when PC-DOS started, it asked for the time and date). Its monochrome display adapter was text only, capable of showing 25 lines by 80 characters each. Alternatively the user could opt to purchase a machine equipped with a CGA (color graphics adapter), capable of showing a whopping 16 colors at the resolution of 160 by 100 pixels, or a high resolution monochrome image at 640 by 200 pixels. Sound was provided through a simple beeper, controlled entirely by software. Optional external interfaces included RS-232 serial and IEEE 1284 parallel ports.

Compare that to the specifications of a cheap smartphone today, 40 years later.

 Posted by at 4:24 pm
Aug 122021

Fergus was a cat. A beautiful, beautiful gray cat, who belonged to my cousin and her husband.

This is Fergus, just a few days ago.

This photo shows just what a beautiful creature Fergus was. Yet perhaps it also reveals that he was not well. Though he still enjoyed the late morning sun in the backyard, he was already very unwell, sickened by leukemia.

Fergus departed this world Tuesday evening, euthanized by the same mobile vet who euthanized our long-haired cat Fluffy six years ago.

Even though I did not know Fergus well, I am deeply saddened by his passing. I am rather fond of cats. Every time I look a cat in the eye, I sense a miracle as I contemplate how those little eyeballs see this magnificent universe in which we live. And whenever a cat leaves us and walks away into the great unknown, the world that they leave behind feels like a much duller place in their absence.

 Posted by at 12:38 am