Yes, I Know I’m In the AI Scraping Search Engine

I awakened today ready to make words on Run Your Own Mail Server only to discover that half the world wanted to be sure I knew about the search engine for Meta’s Books3 LLM training data, aka “AI.”

Yes, I know.

The search engine was created by The Atlantic, and I thank them for this public service.

Authors and publishers have already filed lawsuits against Meta and their partners. I do not have the cash to sue Meta. I must ride on the coattails of other people’s lawsuits.

For the record, most of my books are legitimately available for digestion by AI. Just as I offer my Tilted Windmill Press books for teams and groups and large corporations, I offer the entirety of those books as AI fodder for a modest annual fee and under friendly licensing terms. The default listing is for personal use because I sell many more personal licenses than AI licenses, but: a legal option exists for Meta to use my books

Now to figure out how to send Meta an invoice.

13: The Only Right We Have

Today I’m reading from a story that’s coming out this winter, “The Rats’ Man’s Lackey and the Forbidden Tinsel.”

I’d agreed to obey the rules. To walk away from my past, so that my demons couldn’t find me. This madhouse had no right to throw any of that in my face.

The thought calmed me.

Hiding in a root cellar while the opposition filled the house with bullets? The bad guys had no right to break their word. A teammate developed cancer? She’s the best person I know, this isn’t right! Any time I catch myself thinking about rights, I know I’ve derailed myself.

The only right we have is the right to die. Anything else, we claw out of the world.

I focused on my breath until I could think with more than my brainstem.

You got ding-dong ditched when your bellybutton still had a knotted cord attached—so freaking what? Your folks did what they thought best. Anything else would have been worse, and you came out okay. You had no right to this kind of Christmas, nobody gets this, and you’re too old to appreciate it properly anyway.

A couple of Rats’ Man’s Lackey tales are out already, with more coming soon.

A True Story: “The Cat”

I have never owned a cat. I have never lived with a cat. It’s not that I mind cats, but rats fit my life better. For a few years though, a cat seriously impacted my life.

That tab at the top of my site that says Autobiography? Sometimes I publish true stories there. There’s a new story up there, about the aforementioned cat, the never-experienced delights of goat on a stick, and mouse compost. While the names have been changed so Larry the Leg-Breaker doesn’t get tetchy with me, the facts are one hundred percent accurate.

Video Score: Me 83, Rats 53650

I’ve been experimenting more with audio and video, thinking it might draw in some new readers. That’s why I have the 60 Seconds of WIP podcast. Kickstarter doesn’t require videos, unless you want to succeed. There’s videos of me reading things where I’m happy to get two or three views. And there’s the playlist of my various public presentations.

I don’t normally check the number of views on these things. Like the number of books I sold this week, it doesn’t matter. This thing I did has been launched into the world, and whether it lives or dies is now up to y’all. Like Mickey Spillane said (in paraphrase, because I can’t be bothered to go look up the actual quote): “I don’t have fans. You know what I got? Customers.”

On a whim, I uploaded a video of my pet rats working their treat puzzle. According to Youtube’s analytics, it has 53,568 views in five days.

Glancing over my public talks playlist, I’m lucky to get 3,000 views over years.

When I work hard on something? Crickets. When I just slam something up there, though, the world comes. That’s how the world works.

I’ve been skimming the Youtube comments and deleting the mean ones, and noticed readers popping up with comments like Lucas is a big-name author, and this is the video that gets attention? Go read his books! I’ve gotten a couple emails telling me this is unfair.

I appreciate that people love my books and want to support my craft. I truly do, from the bottom of my musty labyrinthine heart.

This video exploding does not disturb me. Fairness is a human construct.

I launched something into the world, and it did well? That’s nice, but I’m working on the next thing.

Besides, those squeaky little bastards are far cuter than I am. The audience for cute animal videos is much vaster than the audience for Networking for Systems Administrators. I might read some of my work to them, however.

I am not about to go chasing youtube views. When I get a new puzzle, I might upload a video of that. Or not. Depends.

I have been told that my guys are “smol” and “chonk.” Whatever that means.

53,650 views now. 920.6 hours spent listening to rats munch their hard-won toddler puffs. 38 nonstop person/days, or 114 work days, is an impressive amount of productivity to suck out of the world.

Anyway. I gotta go work on the next Thing.

60 Seconds of WIP, 14 September 2023

Today we have a tidbit from Run Your Own Mail Server, where I discuss debugging submission at the command line.

Don’t leap straight to OpenSSL or a TLS-aware netcat, though. Submission doesn’t take a straight username and password. Instead, you need a login string. If you’re supporting Microsoft clients, you need two. A login string is a precisely formatted username and/or password, encoded in Base64. Base64 is not an encryption method, but rather a way to transparently transfer binaries as plain text. Passwords are not binary, but they should include special characters that protocols might consider escapes. Figure out your submission string before starting debugging.

Postfix’s default authentication method is called PLAIN. A PLAIN login string is a single line encoded into Base64. You’ll see lots of examples using echo, but they are not portable between shells let alone between operating systems. Use printf(1)—not the shell’s built-in printf with its extensions and incompatibilities, but the standalone POSIX-compliant program.

This book is still open for sponsors, by the way. Get your name in the book and soil your reputation forever. For some value of forever, that is. The lifespan of a tech book is about five years. A pretty small forever.

Proof You Should Not Run My Code: my SNMP agent

I’ve included bits of code in my books, sure. Always with warnings to not run it in production, as I am a firm devotee of fault-oblivious computing. You should not follow my example. But after a Fediverse (Mastodon) discussion last night, I’ve decided to share the code of a program I wrote and deployed. In production. When writing SNMP Mastery, I needed to understand how to integrate a custom agent into net-snmp. I also needed to go through the process of getting my own enterprise OID. I submitted the OID request right before Christmas 2019, and 55030 was assigned the next day.

So I promptly wrote my own SNMP agent, use top-notch state-of-the-art Perl 4. There’s some compatibility glue to make it run under Perl 5, but it’s basically Perl 4. Yes, there’s other languages–but Perl is eternal and timeless. Like Cobol and SNMP, that is not dead which can eternal sleeping lie.

This agent is the single source of truth for my published bibliography. Instructions for accessing it are in the SNMP book, but if I’m sharing the code I should provide context.

Browse to https://cdn.mwl.io/snmp/ and you’ll find the MIB file TWP.mib. Put that in your SNMP browser or MIB directory. If you’re running net-snmp you can pull the table with:

$ snmptable -v2c -c megadweeb snmp.mwl.io mwlBooksTable

The file agent-TWP.pl includes the agent proper.

This code has been called “comically evil,” which warms my bitter heart. Yes, I could use a database. But why? The data changes 3-4 times a year, if I’m productive. And yes, the data is in columns, not rows. SNMP doesn’t do rows. It doesn’t really do tables. It only has columns, which you could choose to arrange side-by-side, but that’s a feeble human thing and irrelevant to this primordial protocol.

In writing this I had to choose between complex code and simple data, or simple code and complex data. Given that updates consist of adding an entry to the end of each column, I chose simple code. Yes, there’s an occasional painful update where I realize that I missed one of my old books, but those are increasingly rare.

Anyway. If you want a truly complete checklist of what I’ve written, here it is. Other writers have spreadsheets or text documents or perhaps, if they’re truly prolific, desktop databases. But noooo, I had to do this.

TLDR: do not run my code. That’s one reason I don’t use github; this is not a sample or example, it an inspiration for you to recoil in horror and do better. (I also insist on controlling my platforms, and I don’t control github.) I’m certain this will be presented as an exhibit in my inevitable, eventual sanity hearing.

60 Seconds of WIP, 7 September 2023

Run Your Own Mail Server has finally forced me to write a bit about netcat versus telnet.

Netcat is a flexible network tool that, among other things, allows you to connect to arbitrary TCP/IP ports. We’ll use it for testing services. Over the decades netcat has been forked, reimplemented, and served as inspiration for other programs that also call themselves netcat. These variants made no effort to make their added features compatible with other variants. Your Unix might provide a netcat-alike such as ncat or socat. Long commands are not very Unixy so netcat, ncat, and others often get installed as nc. If you have a problem using netcat focus your investigation on your exact version, and not netcat in general.

With all these issues, why use netcat and not telnet? If you think netcat has been forked, wait until you get a look at telnet. Telnet mingles standard output with standard error, and silently modifies text for compatibility with interactive shells.

If this book interests you, or if you want to encourage me to wreck my life by writing it, please consider sponsoring it.

“Apocalypse Moi” ebook out!

The official release date for Apocalypse Moi is 26 September 2023. If you want to get it from one of the big bookstores, you’ll have to wait. (I’ve been accused of hiding the big point, so: this collection contains a previously unpublished Prohibition Orcs tale.)


It’s already available at my ebookstore, though. If you believe that I’m deploying a sophisticated, subtle strategy to steer people to buying direct from me rather than via Amazon, you would be incorrect. It is neither sophisticated nor subtle.

Also, The Full Michael and the All The Novels and Collections bundles have been updated. The price of All the Novels and Collections has not changed: you now get four books free. The Full Michael has actually decreased in price, because buying Apocalypse Moi is less expensive than buying the chapbooks.

Some poor bastard who shall remain nameless bought The Full Michael five days ago, right before this came out. I sent him a copy of Apocalypse Moi because I’m not a monster. Okay, I’m not that kind of monster.

I’ve unpublished the assimilated chapbooks everywhere, reducing my maintenance load. Huzzah! The anthologies the other stories come from will remain in print, but maintaining them is not my dang problem so that’s fine.

And for the record, the branding on The Full Michael will remain until it ceases to amuse me.

August’s Aghast Sausage

(This post went to Patronizers at the beginning of August, and the public at the beginning of September.)

The most exciting thing this month is probably the Writing Chariot.

I have written at a standing desk since about 2010. I find it much more sustainable than a standard desk, and it lets me pace more easily when my brain logjams. I have no idea when I started using split keyboards, but it’s been many years. Split keyboards let me open my shoulders naturally and keep my wrists straight, which relieves a great deal of my tendinitis and my mild-but-annoying nerve damage.

Ideally, though, I would write with my arms hanging limp at my sides. I’ve been contemplating some sort of belt arrangement where I could wear keyboards at my hips, gunslinger-style. I don’t have experience working with cloth, however, and stabilizing the keyboards is an obvious challenge. I discussed the issue with my father-in-law, and he promptly whipped up this… thing.

I attach each half of the keyboard to one of the arms and stand between them. In theory, my hands can dangle at my sides as I type. It’s not exactly neutral position, but it’s pretty close. The arms can be adjusted up and down, and there’s a peg to hold them in place. I’m not using the Writing Chariot yet—it needs another adjustment, so I need a second person to drill the hole. But my initial tests show that it’s usable. Time will tell if it fubars my shoulders even further, or if it relieves the stress. If this doesn’t work, the next step is the Keyboard Gunslinger.

In other excitement, my next Kickstarter is live. Apocalypse Moi is a collection of my short fiction, all with the theme of “doom.” The video features my missus, She Who Must Be Obeyed, as well as the inimitable Zig Zag Claybourne. Many of you will get the book for free as a Patronizer benefit. There is no need for you to back the Kickstarter. As you might guess, though, I’d still appreciate if you told folks that they should back it.

Before you ask: no, this book doesn’t have a leather-cased edition. The cased Prohibition Orcs did well, but the cased Devotion and Corrosion, not so much. More than one person told me that they were not allowed to buy two $200 books from me in the same year, and I can’t blame them. This will be my last fiction Kickstarter for 2023, I’m sure, and it will clean up my short story inventory. This has already changed the cash flow of running a Kickstarter, though. Prohibition Orcs funded in under fifteen minutes, because two folks bought leather-cased editions. That money was, in some ways, bogus. The leather cases bring in the most revenue, but they’re also the most expensive to fulfill. Apocalypse Moi took about ten hours to fund, but the profit/expense ratio is better.

Previous Kickstarters demanded excessive mental energy, because I loathe asking for money. Even with you folks, I’ve taken pains to declare that the Patronizer program is a terrible deal. This time, I’m trying a few techniques to lessen the mental load. First, there are no complicated rewards. I’ll deliver ebooks, order books from printer, and ship signed books—done. Second, with every promotional post I’m including a link to my free stuff. Balancing asking for money with an offer of freebies relieves some of my discomfort. Last, I’ve figured out a theme for my promotion. This is an apocalypse-themed collection, so I’m doing a “Thirty Days of Doom” social media promotion. It’s much easier for me to say “here’s this cool doomsday some other artist created, and by the way please support my little apocalypses” than to come up with a naked plea for money every day. Look for the hashtag #30DaysOfDoom on Facebook and the Fediverse.

I had hoped to have Run Your Own Mail Server finished by now. That’s obviously not happening. Once Apocalypse Moi arrives, I will bundle it up with Devotion and Corrosion and ship to print-level Patronizers. I probably need to ship fiction on its own, rather than bundling with tech books. In theory, tech books should not take this long to write—but they do, dammit.

A couple folks asked about my decision to publish short stories only on my website. Years ago, I said that I could publish a short story and make a few hundred bucks pretty quickly. Last month, I said that short stories are not worth my time to publish. These are contradictory, but only because they’re separated by time. My short story buyers are overwhelmingly my Patronizers. The stories are included in your so-called “rewards.” I traded those occasional bursts of cash for a steady trickle of income, and I thank you for it.

The flunky I hired to polish my web site is working out so far. I’m kind of surprised, but only because I always expect everything to fail unpredictably. He’s just under the $600 “I have to file tax paperwork on you” limit, so before long we’ll have to discuss if he wants to continue or not.

Run Your Own Mail Server is coming along, generally several hundred words a day. This is the most difficult book I’ve ever written. I’d say “the next book will be easier,” except I know better than to promise myself that. They make nipple clamps for people like me. But today I’m writing about SPF and MX records, so the book has achieved “functioning mail server!” (Of course, you can’t tell people to mail you at that domain yet. There’s no spam protection, you’ll drown.) Once I get these basics down, though, it’s basically “configure rspamd” and the related DNS records for DKIM and DMARC, plus a DMARC aggregator. Oh, and postfixadmin. I have to configure things the hard way before setting up postfixadmin, though, because without that understanding you can’t troubleshoot failures. But still, most of that is either straightforward procedure or small concepts that aren’t tightly integrated with the rest of the ecosystem. You can run email without DMARC or DKIM. Nobody will accept your messages, but you can run it.

Anyway, I’ve got to get to work. The Writing Chariot isn’t going to adjust itself.

60 Seconds of WIP, 31 August 2023

Today’s reading is from the Kickstarter-supported afterword from Apocalypse Moi. I have no idea if this will make it into the final book. I write things that are about things. When I try to write about the things I’ve written about things, my brain immediately enters a recursive death spiral. I offered this Kickstarter stretch goal in part to force me to learn to write them.

This book contains revelations. Some of them destroy the world. In one, the world has already been destroyed and everyone’s dead, which presents problems for the things that remember being people. But throughout, life-changing revelation. Apocalypse is not discovering there’s a slice of pie left in the fridge. It’s discovering that someone loves you enough to leave you that slice. The mildest apocalypse is love, leaping out from behind the curtain and shouting Boo! Apocalypse-as-revelation offers wisdom, improves our lives, and offers paths to a better life and world.

We all hunger for that.

Some folks out there are so desperate for revelation that they declare their bigotries and phobias to be sacred truths that must be shared. Every one of those ideas is built on loathing and selfishness. None of them improve lives. I mourn for people infected with them, but not so far as to let them have their way.