Jeff Duntemann's Contrapositive Diary Rotating Header Image


More AI Text Generator Freakiness

I tried it again. This time, I used a much more detailed prompt, which I’d written years ago (2014-ish) about a bottle that used to have a genie in it. The genie had been freed, leaving behind…a bottle. And what self-respecting genie would ever live in a non-magical bottle? So a nerdy guy buys a supposedly magical, genie-less bottle at a curio shop. The bottle, it turns out, has a trick: Ask it a question, and it answers.

Alas, the bottle has issues of its own.

I gave the prompt to Sudowrite, and let it follow its nose. Now, the way Sudowrite works is that when you ask it to write a section, it gives you two text blocks, both of which are based on the prompt. You choose the one you like better, and add it to the text that follows the prompt. Then you ask it for another section.

After a couple of go-rounds, I realized that in one of its generated text blocks, Sudowrite was putting together a sex scene. No sale. I chose the other block, which still had enough innuendo to make me uncomfortable. I sensed that in a sense it made a deranged sort of sense: I had described the protagonist as a lonely nerd. So! Toss him into bed with an imaginary girl who (the AI made graphically clear) had all the required female parts.

I stopped there. The first Sudowrite story I posted was in (somewhat) bad taste. I don’t make Obama jokes. Nor do I make Mossad jokes. I might make golem jokes, at least if the golem is the good guy. One reason I tried Sudowrite again today is that I wanted to see if bad taste was a habit or an outlier. It’s starting to sound like a habit.

Here’s the story. Everything up to the first rule is my prompt, taken verbatim from my notes file. I will someday use the concept (of a genie bottle without a genie) in a Stypek & Tuggur adventure, a prequel to Ten Gentle Opportunities. Everything after that is Sudowrite. Still a bit surreal–but if there’s a surreality slider somewhere in Sudowrite, I haven’t found it yet.

Djinn and Tonic

“What’s this?” Chuck Bialek asked the Gizmoids shop owner, and waved the weird, bulbous crystal bottle in the air over the counter. As best Chuck could tell, it was half-full of dirty water.

“Genie bottle,” said the old man. “But somebody let the genie go, so no wishes. Still, if you shake it and let it sit for a minute, it’ll tell your fortune. Used to be a hundred bucks. You can have it for fifty.”

Which meant it was probably worth a buck and a half, tops. Still, Chuck’s grandma had left him almost a million dollars, half of which was now in stocks. The rest was, well, for fun. He’d had a magic 8-ball when he was a kid. It was fun. This might be a reasonable facsimile.

Chuck laid a fifty on the counter, tucked the bottle in his canvas bag, and went back to his flat. After stuffing down a bratwurst and some Cheetos, he shook the bottle hard and set it on the kitchen table. Little by little, the dirt in the water settled out, leaving behind…words.

I miss my genie, read the words. Ha! He wondered how it worked.

“I wish I had a Jeannie to miss,” Chuck said. The nerd business was fun, but…lonely.

Chuck shook the bottle again, and waited.

Trade you a Jeannie for a genie, the dirt-words said.

“Deal,” replied Chuck.


His phone rang the next morning.

“This is Jeannie,” a voice said. “I’m with a Mr. Bialek, right?”

“Yep,” said Chuck.

“Trade?” asked Jeannie.

“What do you have in mind?”

“Wishbone,” said the genie.

“I wish you wouldn’t keep doing that,” said Chuck.

The Jeannie-thing giggled. “Make a wish,” she said.

Chuck thought for a bit. “I wish you were wearing a bikini.”

He hung up, and was on his way to the coffee shop when he heard a voice behind him.

“Trade?” asked the genie-Jeannie-thing.

“No!” shouted Chuck, and fled. He might be a nerd, but he was still the last straight guy in the world who hadn’t seen the Girls Gone Wild videos and had no intention of doing so.

He stumbled into the coffee house, and ordered a single-shot espresso with a splash of vanilla syrup. He had just opened a browser window and was trying to find a porn site that didn’t offer a free trial when he heard a voice behind him again.

“Trade?” asked the Jeannie-spirit.

“Are you nuts?” he said. “That’s the second time.”

“Make a wish,” said the genie.

“What does this do to your magic?” asked Chuck. “I mean, every time I make a wish, you get a day older.”

“Rhymes with night,” replied the genie. “So I’m immortal, just like I always wanted.”

“What happened?” asked Chuck. “I mean, most genies are pretty nice, but they had to have their masters’ best interests in mind.”

“My master was a fraternity boy. Couldn’t make a wish without prefacing it with ‘Yo, Genie…'”

“Oh,” said Chuck. “My apartment’s on the third floor. You can stay in the spare bedroom.”

“You’re a nerd,” said the genie. “We could never live together.”

“Right,” said Chuck. “So I need to make a wish for you to be you again. With unlimited magic.”

“I can do that,” said the genie.

“And I’ll need a million dollars. Are you listening?” asked Chuck.

“I don’t have to,” replied the genie. “From now on, I’m invisible to you.”

“This is going to get tiring,” Chuck told his computer screen. “I wish you’d figure out how to be a girl again.”

Will genie make the coffee? will genie make the toast? will genie make Christopher Hitchens read my manuscripts?

Will genie have sex, or merely masturbate?

Will genie remember to take out the trash?

Will genie notice her glasses are on her head?

Will genie give me a million dollars,

even if she does have the power?

Yes, genie will do all of these things.

Will genie kick my ass down the stairs

if I ask for more wishes?


Heh. Fersure.

If You Give an AI a Writing Prompt…

Ok. Fasten your seat belts. I am giving an online writing AI a test drive, using my free trial of a website called Sudowrite. I gave the AI a writing prompt from my crazy ideas file, a mere handful of words that I wrote down a very long time ago (I think in the ’90s) and never went back to. Here’s the writing prompt:

St. Louis Blues

“Take me to St. Louis,” said the cruise missle in the thick of the bramble patch.

Howie Hinkle blinked, and put down his machete. “How’s that?” he asked.

“Take me to St. Louis,” the missle repeated.

Howie howled. “Paw, dammit, there’s an old water tank in here and it’s talkin’ to me!”

It’s not a great deal to go on, but that was the idea. With a bare hint of a concept, what would Sudowrite do? I could have written some of it myself, or edited it, but I wanted to see what the damned thing could produce solo. 100% of the writing after the prompt was done by the AI. I had hoped to avoid the literary equivalent of Salvador Dali. Well, too bad. Hello Dali…

St. Louis Blues

“Take me to St. Louis,” said the cruise missle in the thick of the bramble patch.

Howie Hinkle blinked, and put down his machete. “How’s that?” he asked.

“Take me to St. Louis,” the missle repeated.

Howie howled. “Paw, dammit, there’s an old water tank in here and it’s talkin‘ to me!”

His father, Howard Hinkle Jr., took him for a look. The old tank was rusty and damaged, with a huge gash in it. Penetrating the tank from inside was a cruise missle, with a single eye and a fin on top. A single missile launcher poked through the gash.

“Who the hell are you?” Howie Jr. asked. “Why do you have a cruise missle?”

“My name is Shiloh,” said the voice. “I am a cruise missle, and I will ask you one more time to take me to St. Louis.”

“I don’t know where St. Louis is,” said Howie Jr.

“I will find it,” said Shiloh. “I am a golem of the Mossad. If you do not help me, I will call my brethren. We will clear the bramble from the road, and from there, we will find you.”

“Y-you can’t do that!” Howie Jr. said.

“If you do not take me to St. Louis, I will call my brethren, and we will take your woman, and we will bring her back to Tel Aviv. We will use her to breed a generation of human-missle golems. You can raise them with your own spector. They will be of your tribe, and they will spread across the land.”

Howard Hinkle Jr. swallowed, and wiped the sweat from his brow. “If I take you to St. Louis, will you let us alone?” he asked.

“I will,” said Shiloh.

“Deal,” said Howie Jr. “Let’s go.”

Hours later, a police car rolled up, and several officers got out. One pulled Howie Jr. aside.

“Which way did he go?” he asked.

“Er- he went that way,” Howie Jr. said, pointing.

“We appreciate your cooperation,” said the officer.

“Say,” the officer said, “was that your grandma that was in the hotel room with you?”

“Uhh, she’s my wife,” said Howie Jr.

“Doesn’t look like a 43 year old woman, honey,” said the officer. “What’s your name?”

“Howie, honey,” Howie Jr. said.

“Yeah, that’s what he said,” the officer said.

A week later, on the steps of the White House, President Obama announced the success of the St. Louis negotiations. Behind him, an Israeli flag hung. Beneath it, a Mossad agent clapped.

“What a complete dick,” said the agent. “He really thought he got one over on us, didn’t he?”

Shiloh’s eye blinked, and his fin wiggled.

Sudowrite, Egad

I got wind of an online AI thingie called Sudowrite this morning. It’s a sort of writing engine that takes a piece of writing you’ve started and then runs with it. I’ve always been interested in AI, including AI creativity (“The Steel Sonnets,” “Sympathy on the Loss of One of Your Legs”) and used to play around with Eliza back when Eliza was young and hot. Well, here we are, in 2022. The supermarket is fresh out of Soylent Green, but by gully, Sudowrite is here, waiting for me to get stuck on something and yell for its help.

What I did was not quite that, exactly. For my first test I gave Sudowrite the initial few paragraphs of my weird fantasy short story, “Whale Meat.” Then I told it to go off and do its best to continue the story. First, the text from the current version of the story, which is published in my book Cold Hands and Other Stories. After the second horizontal rule, behold Sudowrite’s run with what I admit was a very peculiar football.

Sitting on a cold bus-bench at night-west I wished I had never been born a witch. I had just killed a man and Mara wanted whale meat. But I am on the canvas. I am not the painter. Creator forgive me. We had to stay somewhere. It would have been in the park with the ice if Lennie had not looked in my eyes in the public library and half-snerfed my pain.

There is no word for Lennie now. Years ago he would have been a hippie. Longer ago, a beatnik. Further back into time’s fog, a bohemian. Head. Weirdo. I don’t know what people call them now. Freak, perhaps. But he knew we were tired and homeless, and told us to stay with him.

His apartment was a hole. I was too exhausted to snerf him. He gave us hot coffee and a blanket and we slept on ragged foam rubber with the roaches. My dreams floated in hunger, tormented by Mara’s request for whale meat. She told me without words. I snerfed the picture in her head, a gray sea-mountain blowing steam from its nostril above moonlit swells.

I woke from restless dreams in a sweat of fear and anger. Some part of me never sleeps, and knew Mara was in danger. In yellow candlelight Lennie was bending over Mara, knife in his hand above her belly swollen with James. His eyes were slits and he chanted a language I never learned. I snerfed him. Some bad acid (is it still called acid?) was eating away at him and leaving only insanity in its wake. Snerfing him gave me a grim glimpse of the future: He would kill Mara and James in seconds. The knife began to circle for its last time, like a live thing in his shaking hands.

I had to time-opt. The universe ground to a slow halt around us while I dug up power from my heart-place, and zotted him. Lennie’s poor head shorted out like power lines blown away in a windstorm, with sparks and shrieks of inner agony.

His blood froze in his veins, his skin burned and turned black, his body dropped like a puppet with its strings cut.

I pulled Mara and James from the bed, and backed out of the stinking room, stumbling into the street, breathing deeply of the winter air. We hurried away past the sleeping city, three in a row. I held them in a circle of toil’d air. The sad lights of the city slid behind. We were two hundred miles away before Mara spoke.

I don’t mind you killing Lennie, I snerfed. He would have killed us.

I was just defending myself, I snerfed.

So were the people in the Warsaw Ghetto, Mara snerfed.

I walked faster. She didn’t snerf me.

The river was frozen solid. I cut off a section of the ice, and chopped it into chunks with the edge of my mind. I piled the chunks

Does this work? Dunno. I admit I was curious where Yonnie piled the chunks of ice, but it only gives you so many words at a time. Sudowrite half-understood my made-up word “snerf,” which is a witch-power, essentially telepathy. I forgive Sudowrite for not knowing that James was still in Mara’s uterus, where he’d been for five years. (Witches are pregnant for seven years, and James still has two years to go.)

Now, this isn’t the fairest of tests. I’m going to dig around in my notes files for an opener, ideally one I abandoned for some reason, and then go back and forth with Sudowrite to see if the one-and-a-half of us can actually finish a story that doesn’t read like a Salvador Dali painting looks.

I’ll let you how it goes.

Problems with SASM on Linux Mint

I’m scoping out a fourth edition of my book, Assembly Language Step by Step. I got wind of a simple FOSS utility that could be enormously useful in that effort: SASM (SimpleASM), which is an IDE created specifically for assembly-language work. It’s almost ideal for what I need: Simple, graphical, with a surprisingly sophisticated text editor and a graphical interface to GDB. It works with NASM, my assembler of choice. I want to use it as the example code IDE for the book. I installed it without effort on Windows, which is why I decided to use it. But I want to use it on Linux.

Alas, I’ve been unable to get it to install and run on Linux Mint 19 (Tara) using the Cinnamon desktop.

I’ve installed a lot of things on Linux Mint, all of them in the form of Debian packages. (.deb files.) I downloaded the SASM .deb file for Mint 19, and followed instructions found on the Web. There is a problem with dependencies that I just don’t understand.

I got it installed once but it wouldn’t run. I uninstalled it, and then it refused to reinstall.

Keep in mind that I am not a ‘leet Linux hacker. I’m a teacher, and most of what I teach is computing and programming for newcomers. The problem may be obvious to Linux experts but not to me. Most of the software I’ve installed on Mint came from repositories. SASM is a .deb download.

So. Does anybody else use it? If you’ve got Mint on a partition somewhere, could you try downloading it and installing it? I need to know if the problem is on my side of the screen or the other side.

Thanks in advance for any advice you might offer.

Lots of Odd Lots

The Trouble with Wikis

A week or so ago I bestirred myself and installed MediaWiki on my Web host. I’d been intending to do that for some time, but (as my friend Don put it) my life was ODTAA for a bit. Installing it was a snap. My provider has something called Installatron that did the job, no issues. The software, of course, is free and open-source.

I installed it in part to become more familiar with the MediaWiki system. As usual, when installing something new, I went up to Amazon and checked for books on MediaWiki.

Unless I missed something, there are five.

Plus a few more in French, German, and Japanese. Furthermore, those five books did not all get favorable reviews. The title I was most interested in is now 11 years old and way behind the current release of MediaWiki. (I ordered it anyway, along with O’Reilly’s MediaWiki: Wikipedia and Beyond, which is even older.)

My first question was: Why so few books about software this famous?

The answer came to me slowly: Almost nobody wants to create/maintain/populate their own wiki. MediaWiki is famous for one reason: Wikipedia. I’ve seen a number of other public wikis, including, Conservapedia, Everipedia, WikiHow, Wikispecies, and WikiTree. There is a list on Wikipedia that eyeballs at about 80. Let’s be generous and triple that to account for wikis that Wikipedia didn’t list, and for private wikis. So, say, 250. That’s not much of a market for books. Even 500 installs would not float a print book.

MediaWiki’s online presence has a feature for creating a downloadable PDF version of the MediaWiki documentation, but it’s currently disabled. Sheesh.

Having gone crosseyed reading about it online, my conclusion is that MediaWiki is a bit of a hot mess. That said, I should tell you all why I even bothered: I want to create a wiki for my fiction, and especially about the Gaeans Saga, which includes the Metaspace books and the Drumlins books. I’ve done a little wiki editing, and have a couple of decent books on my shelf about creating content on Wikipedia. The trick to creating content on wikis is having a group of content templates and knowing how to use them. If you look at the page source for any Wikipedia article, the problem becomes obvious: The stuff is crawling with templates, and for the most part they’re templates that don’t come with the generic MediaWiki install.

I discovered this by opening an edit window for Wikipedia’s article on the star mu Arae, which in my Metaspace books is the location of Earth’s first colony. I loaded the whole wad onto the clipboard and dropped it into a new page on my MediaWiki instance. A few of the templates were present on MediaWiki. Most were not, and the article incorporated dozens. I went back and lifted the source for 47 Tucanae. Same deal.

Now, Wikipedia content is available under Creative Commons. Grabbing the articles is easy and legal. I soon found after googling around for awhile that grabbing the templates, while legal, is not easy. Some templates are actually contained in libraries written in…Lua. I have some sympathies for Lua, which strongly resembles Pascal. It made me wonder, however, why a formatting template needs to make calls into a code library. As best I know, this is something specific to Wikipedia, and is not present in the generic MediaWiki.

I like the overall look of Wikipedia. People are used to it. I’d like to incorporate that design into my own instance of MediaWiki. I wouldn’t need all the templates, though some would be damned useful. That said, I see no reason why some sharp MediaWiki hacker couldn’t gin up an installer for all of Wikipedia’s templates, no matter how many there are. Maybe such a thing already exists, though I think that if it did, I would have found it by now.

There are other projects needing my attention, so I’m going to set this one aside for awhile. Obviously, if anybody reading this knows where to find an installable collection of Wikipedia’s templates, give a yell.

The Raspberry Pi Pico…and a Tiny Plug-In Pi

Yesterday the Raspberry Pi Foundation announced the Raspberry Pi Pico, at the boggling temporary low price of…$4US. It’s definitely a microcontroller on the order of an Arduino rather than the high-end 8GB RPi that might stand in for a complete desktop mobo. And that’s ok by me. The chip at its heart is new: the RP2040, a single-chip microcontroller designed to interface with mainstream Raspberry Pi boards, and lots of other things.


Now, what caught my attention in the page linked above was the list of partner products made by other firms using the same RP2040 chip. Scroll down to the description of the SparkFun MicroMod RP2040 proccesor board. It’s still on preorder, but look close and see what’s there: an edge connector…on a board the size of a quarter! That’s not precisely what I was wishing for in my previous entry, but it’s certainly the right idea.


As I understand it, SparkFun is turning the RPi-wearing-a-hat on its ear, into a hat-wearing-an-RPi. The M.2 interface used in the product is actually a standard developed some years back for use in connecting SSDs to tiny slots on mobos. I knew about M.2, but wouldn’t have assumed you could mount a CPU-add-in board using it. Well, shazam! Done deal.

The RP2040 chip is a little sparse for my tastes. I want something I can run FreePascal/Lazarus on, over a real OS. I don’t see anything in the M.2 spec that would prevent a much more powerful processor board talking to a device (like a keyboard, TV or monitor) across M.2. The big problem with building a high-end RPi into things is keeeping it cool. The Foundation is aware of this, and did a very good job in the $100US Raspberry Pi 400 Pi-in-a-keyboard. (This teardown and review is worth a look if you’re interested in the platform at all. The author of the teardown goosed the board to 2.147 GHz and it didn’t cook itself.)

I fully intend to get an RPi 400, though I’ve been waiting awhile to see if there will soon be an RPi 800 keyboard combo with an 8GB board instead of 4GB. Given the price, well hell, I might as well get the 4GB unit until an 8GB unit appears.

So consider my previous post overruled. It’s already been done. And I for one am going to watch this part of the RPi aftermarket very carefully!

The All-Volunteer Federated Encyclopedia of (Really!) Absolutely Everything

My regular readers will recall that I wrote an article in the June/July 1994 issue of PC Techniques, describing a distributed virtual encyclopedia that pretty much predicted Wikipedia’s function, if not the details of its implementation. My discontent with Wikipedia is not only well-known but not specific to me: The organization has become political, and editor zealots have various tricks to make their ideological opponents either look bad, or disappear altogether. Key here is their concept of notability, which is Wikipedia’s universal excuse for excluding the organization’s ideological opponents from coverage.

In one of the decade’s great hacks, Vox Day created Infogalactic, which is a separate instance of the MediaWiki software underlying Wikipedia and a fair number of other, more specialized encyclopedias. Infogalactic has a lot of its own articles. However, when a user searches for something that is not already in the Infogalactic database, Infogalactic passes the search along to Wikipedia, and then displays the returned results. I don’t know whether or to what extent Infogalactic keeps results from Wikipedia on its own servers. It’s completely legal to do so, and they may have a system that keeps track of frequent searches and maintains frequently searched-for Wikipedia pages in local storage. Or they may just keep them all. We have no way to know.

Infogalactic’s relationship with Wikipedia immediately suggested a form of federation to me, though Infogalactic does not use that term. (Federation means a peer-to-peer network of nodes that are independently hosted and maintained yet query one another.) The Mastodon social network system is the best example of online federation that I could offer. (It’s not shaped like an encyclopedia, so don’t take the comparison too far.) There is something else called the Fediverse, which I have not investigated closely. In a sense, the Fediverse is meta-federation, as it federates already federated platforms like Mastodon. For that matter, Usenet is also a form of federation. It’s been around a long time.

The MediaWiki software is open-source and freely available to anyone. There are a lot of special-interest wikis online. One is about Lego. (Brickipedia, heh.) For that matter, there’s one about Mega Bloks. Hortipedia is about gardening and plants generally. It’s a huge list; give it a scan. You might find something useful.

My suggestion is this: Devise a MediaWiki mod like Infogalactic’s, but take it farther. Have a “federation panel” that allows the creation of lists of MediaWiki instances for searches falling outside the local instance. A list would generally start with the local instance. It might then search instances focusing on related topics. The last item on most lists would be a full general encyclopedia like Wikipedia or Infogalactic.

Here’s a simple example, which could defeat Wikipedia’s notability fetish for biographies and a lot of other things: Begin a search for a given person (or other topic) with Infogalactic, which, remember, searches Wikipedia if its own database doesn’t satisfy the query. So if that search fails, submit the same search to EverybodyWiki, which doesn’t apply notability criteria to biographies. In fact, EverybodyWiki does what I suggested be done a number of years ago: It collects articles marked for deletion on Wikipedia, of which it currently has over 100,000. I’m tempted to post a biography on Wikipedia just to see if, when it’s deleted (and it would be) EverybodyWiki picks it up.

(As an aside: I just found EverybodyWiki a month or so ago, and I’m surprised I hadn’t heard of it before. It has more than just biographies and is definitely worth a little poking-around time.)

Now, the tough part: How would this be accomplished? I don’t know enough about MediaWiki internals to attempt it myself. There’s an API, and I’ve been surfing through the API doc. There’s even an API sandbox, which is a cool idea all by itself. Alas, there are remarkably few technical books on MediaWiki, and the ones I would be most interested in get terrible reviews. Given how important MediaWiki is, I don’t understand why tech publishers have skated past it. My guess is that few people bother to do more than custom-skin MediaWiki. (There’s a book on that, at least.) If the demand were there, the books would probably happen. If you know enough about MediaWiki modding, I’ll bet you could find a publisher.

I’m thinking about installing MediaWiki on my hosting services, just to poke at and try things on. Hell, I predicted this thing. I should at least know my way around it.

If you’ve done any hacking on MediaWiki, let me know how you learned its internals and what you did, and if there are any instructional websites or videos that I may not have encountered.

Teergrubing Twitter

I’m of two minds about Twitter. Maybe three. Maybe seventeen. I’m on it, and I post regularly, typically two items per day. That’s just how it averages out; I don’t post for the sake of posting, but only when I find something worth linking to.

Why? Two reasons:

  1. More people are on Twitter than cruise blog posts. By posting on Twitter, I make more people aware of me than I do when I post things here on Contra. Every time I tweet a link to one of my books, I sell a few copies.
  2. It’s one of the most gruesomely fascinating phenomena to come out of tech since the Web itself, thirty years ago.

I’ve written about Twitter before. Back in 2019, my proposed solution to Twitter toxicity was to remove the retweet function. That would certainly help, but only to an extent, and not to the extent that I would like. I’ve spent more time on Twitter in the last 18 months since I posted that entry than I did in the 5 years before that. And in doing that…

…I’ve changed my mind.

I generally lurk, but occasionally I join a Twitter rumble to watch how it all unfolds. I never stoop to profanity or unhinged emoting. Here and there I have politely called a few people on their BS. In doing so I made an observation that bears on today’s entry: When I get involved in a ruckus, my follower count goes up. When I just post odd lots, my follower count decays. The reason is simple: Twitter has made itself into a sort of deranged video game. The Analytics panel shows you how many people have looked at your tweets, how many have mentioned you, how many followers you’ve gained or lost, and more. In the same way that Twitter as a whole is an outrage amplifier, the Analytics panel is a vanity amplifier. You have a “score.” The object of the game is to raise your score. And the best way to do that is to create or partake in a ruckus. In fact, the more rucki you launch or dive into, the higher your score will climb.

I’ve thought quite a bit about how Twitter would change simply by removing the Analytics panel, or any other stats on your activity. Even if Twitter would agree to do that (highly unlikely) it would reduce the number of neutrons only modestly. A ruckus feeds the ancient tribal impulse. Tribal Twitter is a game whether or not you have an explicit score.

Very briefly, I wondered how Twitter might change if the platform removed limits on (or at least greatly increased) the allowable size of tweets. Again, it would help a little by changing Twitter’s DNA to be a little more like Facebook or other social networks. Because it takes more time to write longer, more thoughtful entries, people would spend their energy doing that and not trying to destroy one another.

Maybe a little. Or maybe not. Which brings us to the heart of what I’m about to propose: slowing Twitter down. To return to the metaphor of nuclear fission, it would be about inserting a neutron moderator. I don’t mean a control rod (which eats neutrons) but something that merely slows them down and therefore reduces their energy.

I’m reminded of the spam wars before centralized spam suppressors appeared. The idea was to reduce the effectiveness of email spam by slowing the rate at which an email server would accept commands. There are several ways to do this, including sending nonsense packets to the system requesting connections. This was called tar-pitting, which translated directly to the charming German neologism, teergrubing. Spamming works by throwing out a boggling number of emails. Teergrubing fixes that by making the process of throwing out a financially workable number of spam messages too lengthy to bother with.

I don’t know to what extent teergrubing is done today. Doesn’t matter. What I’m suggesting is this: Build a delay into the process of accepting replies to any given tweet. Make this delay increase exponentially as the number of replies increases. First reply, one minute. Second reply, two minutes. Third reply, four minutes, and so on. Once you get up to the eighth reply, the delay is over two hours. By the time a tweet could go viral, the delay would be up in days, not hours. At that point, most of the original outragees would have lost interest and gone elsewhere. Most ordinary Twitter conversations generate only a few replies, and those would arrive in less than an hour, the first several in minutes.

Outrage addicts might try to finesse the system by replying to replies and not the original tweet. This would quickly reduce a ruckus to incoherence, since people trying to read the mess would not be able to tell what tweet a replier was replying to.

Or it might not work at all. Certainly Twitter would not consent to a change like this short of legal action. That legal action may someday arrive. My point is that the heat in any argument dies down when the back-and-forth slows down. Some few diehards may choose to sit out a several days’ delay just to get the last word. But if nobody reads that last word, having the last word loses a lot of its shine.

And Twitter is all about shine.

Delphi Turns 25

Today (or maybe tomorrow, depending on who you talk to) is the 25th anniversary of Borland’s introduction of the Delphi RAD environment for Object Pascal. Delphi changed my life as a programmer forever. It also changed my life as a book publisher for awhile. The Delphi Programming Explorer, a contrarian tutorial book I wrote with Jim Mischel and Don Taylor and published with Coriolis, was the company’s biggest seller in 1995. We did a number of other Delphi books, including a second edition of the Explorer for 32-bit Windows, Ray Konopka’s seminal Developing Custom Delphi 3 Components, and others, including Delphi 2 Multimedia Adventure Set, High Performance Delphi Programming, and the ill-fated and much-mocked Kick-Ass Delphi. We made money on those books. A lot of money, in fact, which helped us expand our book publishing program in the crucial years 1995-1998.

It took OOP to make Windows programming something other than miserable. I was interested in Windows programming from the outset, but didn’t even attempt it while it was a C monopoly that involved gigantic switch statements and horrendous resource files. With OOP, you don’t have to build that stuff. You inherit it, and build on it.

There is an asterisk to the above: Visual Basic had no OOP features in its early releases, and I did quite a bit of Windows BASIC work in it. Microsoft flew a team out to demo it at the PC Techniques offices in late 1990 or early 1991. A lot of Windows foolishness was exiled to its runtime P-code interpreter, and while a lot of people hate P-code, I was used to it from UCSD Pascal and its descendents. What actually threw me back in my chair during the Thunder demo (Thunder being VB’s codename) was the GUI builder. That was unlike anything I’d seen before. Microsoft bought the GUI builder from Tripod’s Alan Cooper, and it was a beautiful and almost entirely new thing. It was Visual Basic’s GUI builder that hammered home my conviction that visual software development was the future. Delphi based its GUI builder on OOP, to the extent that Delphi components were objects written within the VCL framework. I enjoyed VB, but it took Object Pascal within Delphi to make drag-and-drop Windows development object-oriented from top to bottom.

People who came to OOP for the first time with Delphi often think that Delphi was the first Borland compiler to support OOP. Not so: Turbo Pascal 5.5 introduced OOP for Pascal in 1989. Although I wasn’t working for Borland at the time, I was still in Scotts Valley writing documentation for them freelance. I wrote about two thirds of the Turbo Pascal OOP Guide, a slender book that introduced OOP ideas and Object Pascal specifics to Turbo Pascal 5.5 users. A little later I wrote a mortgage calculator product using BP7’s OOP features, especially a confounding but useful text-mode OOP framework called Turbo Vision. I licensed Mortgage Vision to a kioskware vendor, and in doing so anticipated today’s app market, where apps are low-cost but sold in large numbers. I cleared $17,000 on it, and heard from users as late as the mid-oughts. (Most were asking me when I was going to start selling a Windows version. I apologized but indicated I had gone on to other challenges.)

I mention all this history because, after 25 years, a lot of it has simply been forgotten. Granted, Delphi changed the shape of Windows development radically. It did not, however, come out of nowhere.

One of the wondrous things about Delphi development in the late 90s and early oughts (and to this day, as best I know) was the robust third-party market for Delphi VCL components. I used to wander around Torry’s Delphi Pages, marveling at what you could buy or simply download and plug into Delphi’s component palette. I have all of TurboPower’s Delphi VCL products and have made heavy use of them down the years. (They’re free now, in case you hadn’t heard. Some but not all have been ported to the Lazarus LCL framework.) I’ve also used Elevate’s DBISAM for simple database apps, and Raize Software’s DropMaster for drag-and-drop data transfers across the Windows desktop. Those are simply the ones I remember the best. There were many others.

I don’t use Delphi much anymore. I still have Delphi 7, and still use it now and then. The newer versions, no. It’s not because I don’t like the newer versions. It’s because what I do these days is teach “intro to programming” via books and seminars, and I can’t do that with a $1,000 product. Well, what about the Delphi Community Edition? I tried to install that in 2018. The binary installed fine. But the registration process is insanely complex, and failed for me three times for reasons I never understood. Sorry, but that kind of nonsense gets three strikes and it’s out. On the other hand, if I were actively developing software beyond teaching demos, I’d probably buy the current version of Delphi and go back to it. I’m willing to deal with a certain amount of registration kafeuthering, but I won’t put my students through it, especially when Lazarus and FreePascal can teach the essentials of programming just as well.

Nonetheless, Delphi kept me programming when I might otherwise have given it up for lack of time. It allowed me to focus on the heart of what I was doing, not on writing code for user interface elements and other mundane things that are mostly the same in all applications. Back when Delphi was still a beta product, Project Manager Gary Whizin called Delphi OOP programming “inheriting the wheel”. That’s where the magic is, and Delphi is strong magic indeed.