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.

“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.

Finding a way to “Speak the Truth”

One of my biggest rules for writing nonfiction is “speak the truth.” It might be *my* truth, others might disagree, but that truth is absolutely necessary.

A book I’m planning to write after Run Your Own Mail Server really needs to use Debian as the reference platform, for reasons I’m not gonna get into here. But my heart is obviously and publicly in BSD-land. How could I write this and be truthful?

I’ve been chewing this over for a while, but the obvious just hit me: it’s about voice and theme.

I need to write this book with a motif and theme that fits the topic. I’d been pondering using a Trek motif, but this specifically needs a DS9 theme.

Specifically, a “O’Brien managing Terok Nor” theme.

NOW I can write this book and be truthful. (bang)(clang)(grind) (BOOOM)

The detail that this requires a DS9 rewatch is purely incidental.

Patreon update: I got paid, mostly

The subject says it all, I guess?

Patreon appears to have sorted out their latest kerfuffle. I lost a few Patronizers, but I’m nowhere near as badly impacted as some creators.

Blaze Ward’s latest Milestone Publishing Newsletter talks about the importance of owning your platform, as greatly as possible. I mostly agree with it, except for the part about moving to Shopify. They’re an external vendor, they will enshittify. I can do everything with Woocommerce and Bookfunnel that Shopify can do, and Woo’s open code makes it enshittification-resistant. I can replace Bookfunnel if need be.

Anyway, own your platform. Have multiple streams of revenue, even if some seem redundant.

And if Patreon unsubscribed you from me, I can promise that my platform won’t do the same. Or, if something goes wrong and it does, I’ll have the data to fix it.

Patreon has stopped paying me

Patreon has failed to pay me for August, as part of their latest implosion.

If you’re one of my beloved Patronizers who backs me through Patreon, check to see if you’ve been charged. Because I haven’t got it.

If you’re flexible on where you back me, I built my own Patreon at https://www.tiltedwindmillpress.com/product-category/patronizer/. I usually do a soft sell on the whole “ditch the middleman” thing because lots of you have reasons for using Patreon, but this latest mess impels me to bring it up.

“Apocalypse Moi” Kickstarter is live

Presented for your amusement: DOOM.

Technically it went live yesterday, but I had to post July’s “See the Sausage Being Made” so here it is. Also technically, it funded the first day. Further technically, that means I can pay the publishing expenses and break even. I am fond of food and having teeth and stuff, so I’ll still be shilling it until the very last day.

If you do nothing else, watch the video. We worked hard on that silly thing.

I’ve been pondering ways to reduce the mental load of Kickstarter promotion, so this time I’m presenting 30 Days of Doom–my favorite apocalypses from literature, film, and music. Search out #30DaysOfDoom on the Fediverse or Facebook, or see it on my fediverse server. You can even subscribe to the hashtag via RSS. Dang, the Fediverse people really thought through the protocol.

Or, just go to the Kickstarter and give me eight bucks. Whatever.

July’s Jabberwocky Sausage

This post goes to Patronizers at the beginning of July, and the public at the beginning of August.

Once upon a time, I owned a Chevrolet SSR hard-top convertible. It retailed for fifty thousand dollars in 2005, back when that was real money. No, I didn’t buy it. I won it at a $500/plate charity auction. That I got into for free.

It was a fantastic car. It devoured road. The sound system stunned drivers on the opposite side of the divided highway. Over the fifteen years we owned it, three women and one men ran up to me at stop lights to give me their phone number. Not that I called any of them. Even if I wasn’t happily married, anyone who wanted to hang out with me because I drove an expensive car would find themselves disappointed in every other aspect of my life.

When I had a real job that required my presence on site, I would drive that car one day a week. If I had a day where I ran errands after work and needed to drive extra, I chose that day. Now that I’m directly employed by all y’all I leave the house to go to Costco, my monthly writers’ meeting, the dojo, and BSDCan. Costco is about a four mile trip, maybe once or twice a month. The writer’s meeting, once a month. I drove the convertible to those whenever possible. I had no trouble taking the convertible to the dojo, but I sure wouldn’t let my stinky sticky self back in the car afterwards, so that was a no. Driving it to BSDCan was fun.

Here in Detroit, I could use the car five or six months out of the year. That’s thirteen trips, most of them only a few miles and one over a thousand miles.

I put the car up for sale in 2019, and it sold in January.  I was paid in 2020 dollars, sadly. The pandemic hit immediately afterwards, so we put the money in the bank and waited for the next debacle.

This June, our home air conditioning stopped working.

The HVAC mechanic came out and informed us that the system was thirty years old and had been incompetently installed. Hearing that from a service mechanic is an extraordinary claim, and requires extraordinary proof. He provided it, with details like “the interior unit draws power from the electric meter, not the breaker box” and “the reason your bedroom is warm is because rather than put an angle connector in the ductwork, the installer bent it with a hammer.” It’s not that the 1990s coolant this thing used was illegal, but it’s now expensive enough to discourage using it. If we replaced the pipe that blew and recharged the system, one of the others would probably blow.

The lifespan on a modern AC unit? About fifteen years.

How much for a new AC?

Almost exactly what we made selling the convertible.

One of the annoying things about this business is that borrowing money is difficult. The United States runs on credit. I firmly believe in paying cash or doing without, and I don’t mind heat if I can open the windows, but the wildfires get worse each year. I’m not sure if the high particulates give me asthma, or if my lungs are still inflamed from covid, but air conditioning is now mandatory. The HVAC company claims they offer easy financing, but one look at my employer and they’d dial the interest up to “loan shark.” My family needs to pay cash or do without.

I don’t mind living on a cash basis.

I do mind not having options.

We now have air conditioning, and I’ll spend the next year or two replenishing the emergency fund. It’s okay. That’s what emergency funds are for.

And writing is for replenishing that fund.

Run Your Own Mail Server is congealing. The topic requires more up-front explanation than usual, with walking the reader through the basics of forging email and sending spam and exactly why email is a very special trash fire.         I keep thinking I’m going to buckle down and pound through these words, but illustrating every step feels like dragging a moose through quicksand and explaining anything requires explaining another topic first. I must disassemble every topic and put the pieces in a meticulous order. That order is achievable, yes, but the reader doesn’t immediately gain anything from that background. I’m pulling every trick I know to make the text pleasant to read, even if the reader doesn’t get the constant slow dopamine hit of technological epiphany. (Some of you will get that hit from the text. You are nerdier than most. Congratulations.)

I took half a day and released a new Prohibition Orcs short story. Yellow-Eyed War is exclusive to my web site for a couple reasons. Yes, disintermediation is one; I prefer people buy direct from me. But it would take me about five hours to upload this tale to every single distribution channel, and I’m not going to make enough on the story to pay that back. So I’m trying exclusivity. We’ll see how well that works. Many of you got this story as part of your Patronizer benefits, so the sales channels is irrelevant.

That leaves the question of what to do with chapbooks, however. (A chapbook is a print edition of a short story or tiny novella.) I put short stories in print to make the ebook versions look inexpensive. (That’s the same reason I offer tech books in hardcover.) I would sell one or two of them to hard-core collectors, but most of the sales were electronic. Of the chapbooks, most of them went to print-level Patronizers.

Additionally, I put stories in print so I can test different fonts, layouts, and other formatting options. I’ll keep designing chapbooks and shipping them to print-level Patronizers, but I suspect that Patronizing is the only way folks will be able to get them. I want to reduce my administrative overhead, and managing yet more stuff in IngramSpark and Amazon’s print program when there’s almost no sales is pure overhead.

Speaking of adding administrative overhead: I seem to be starting the world’s lamest podcast. 60 Seconds of WIP has one guest, me. I read sixty seconds of a current Work-In-Progress, such as RYOMS. It was Allan Jude’s idea, so please direct any blame his way. I got recording and posting each down to less than five minutes, so I’ll probably do one a week for a while and see if anyone cares. This week I’m switching to audio-only, and perhaps sending them into the various podcast distributors instead of just my blog.

Thank you all for your support. I sincerely appreciate it.

Enterprise Ebook Licensing

Tilted Windmill Press now offers group and enterprise licensing for ebooks.

I deferred implementing this for years, despite the occasional request. Then I saw Julia Evans’ income graphs, where enterprise licensing is a big chunk of her income. Somewhat amusingly, my annual income reports inspired her to post this. Be generous with information about how you run your creative business, people will build on it and you can stealborrow their improvements.

The enterprise licensing also applies to bundles.

I’ve also implemented a very special option for select users. If you want to have your computer auto-complete a book in my style, you may license my entire TWP ouvre for AI/machine learning. This option is available exclusively through my bookstore, and allows you to derive documents from my work for one year.

“Apocalypse Moi” Kickstarter pre-launch page up

I now have doom on offer. Pre-offer, yes, but offer.

Apocalypse Moi, a collection of eleven apocalypse-themed tales, will launch 1 August on Kickstarter. If you have any interest, I’d ask you to click on the “Notify Me On Launch” button. Kickstarter uses those pre-launch follows help decide if they will promote a project.

It contains two tales brand-new for this collection — the Prohibition Orcs story “Forbidden Taste” and the standalone techbro-nightmare-fantasy “Yesterday’s Girl”. It also collects “Drums with Delusions of Godhood,” “Waking Up Yesterday,” “Forced to Talk, Like, With Your Mouth,” “Moonlight’s Apples,” “Easing Final Fears,” “Wifi and Romex,” “Shoot Through The Heart,” “Calling Control,” “Easy, Step-by-Step Preparation,” and “Hero of Fire Life.” Some of these were published as chapbooks, which will go out-of-print once Apocalypse Moi escapes. Others appeared in anthologies.

Having them all in one single book will be convenient. It will also help fulfill one of my 2023 goals, “reduce administrative overhead.”

The cynical among you might think, “Did Lucas just cram all his old crap into one book for his convenience?” Absolutely not. That would be a disservice to my readers. I put a bunch of tales in a heap and sieved them until only the common theme remained. The common theme is DOOM.

Please encourage The Algorithm in my favor. Click “Notify me on launch.”