99: An Absence of Moral Fiber

I’m swamped doing math for the networking book kickstarter, trying to compensate for the recent political stupidity that’s kicking small business when it’s down, so here’s a tidbit from an older work.

Let me be very clear here: ed(1) is the standard Unix text editor.

Dennis Ritchie, co-creator of Unix, declared it so. Who are you to argue with someone who can write a complete operating system without using a glass teletype?1

Many younger sysadmins naively hoist their pennants to defend overblown, overwrought, overdesigned text editors like ex, vi, or even the impossibly bloated nvi. A few are so lost as to devote themselves to turgid editors meant for mere users, such as vim and Emacs. This way lies not only appalling sysadmin skills, but an absence of moral fiber. As a sysadmin, you must have enough brain power to remember what you typed, to hold your own context in your head, and to truly commune with the machine on a deep and personal level.

1 You know, a glass teletype. That toy that kids keep calling a “monitor,” even though we all know monitors are reference speakers used in audio production.

Why read this today? Because this crossed my feed…

98: Suffering Builds Character

The new edition of Networking for System Administrators just went to copyedit, so I can forget about it for a few weeks.

The people who most deserve credit for this book are the folks who struggled through me learning networking as I stood between them and their goals. Every one of you brought me a horrible issue that educated me even as you ranted and cried and begged me to end your pain. I learn slowly. You suffered for it. Thank you. Fortunately suffering builds character, so you got something out of it and I don’t have to feel too bad.

This book had a crew of excellent technical reviewers. Some of them have an understanding of networking that crushes mine. Others knew nothing about networking, but were able to tell me when I confused them. Both are invaluable. Georg Kilzer, Alessandro Lenzen, John W. O’Brien, Jeff Root, Neil Roza, Grant Taylor, and Bryan D. Thomas loaned their expertise to making this book suck less and I am forever grateful. You all had excellent advice and recommendations. Taking all those recommendations would have made this book four times longer and utterly overwhelmed my target audience, but they were excellent.

No, wait, I can’t forget it. I must set up the Kickstarter. Turns out it’s not enough to write the book, I have to convince people to buy it too? Stupid bloody capitalism!

“Networking for System Administrators, 2nd edition” sent to copyedit

The title basically says it all. Now I’ll start working on the new OpenZFS Mastery with Allan Jude. That work, of course, will stop once those copyedits return and I have to produce the book.

I’m tentatively scheduling the N4SA2e Kickstarter to start 16 September and run through 7 October. Three weeks is a long time for a Kickstarter, but it worked well for the mail book. If you’re interested in getting the book before the general public can, go to the Kickstarter page and click “Notify me now.”

Once the book is released, it’ll be exclusive to my store for a month before hitting retailers.

Web Site Reorg

Not really a reorg. More of a shredding.

July’s StSBM talked about how my web site is unmaintainable and unauditable. I have most of the titles up there, I think, but the descriptions are sketchy and the buy links are chaos. I had to hire help just to get the Amazon links straightened out. Every so often, one of my retailers make a change and I need to change every title. (“We’re iTunes! Now we’re iBooks! Apple Books it is!”) As you might imagine, those sweeping updates are on my priority list right after “never.” Most sweeping changes fail the WIBBOW (Would I Be Better Off Writing?) test.

I’ve built a spreadsheet for every title in print and their, tag lines, description, and links or identifying information for each retailer. Many of those retailer cells are blank, either because I didn’t upload the book to the retailer or I didn’t update the web site to point to the retailer. Again, WIBBOW.

Each book currently in print has its own page now, with the jacket copy and store links. This page is automatically generated from a spreadsheet. I’m using a spreadsheet so that I can, one day, hire someone else to maintain this.

The topic/genre pages now contain only the cover images and the book’s tag line. Clicking there takes you to the book’s page. The book index has been updated to point at the book page. Each page also has OpenGraph information, including a promotional image, making it easier for readers to link to a particular book. Short stories do not get their own page. Now that shorts are exclusive to my store, I can easily put the description on my site. They’re isolated at the bottom of a genre page so they don’t stick out.

I need to go through the front page gallery to have all those covers point at the new page. If you click on one of those covers you get taken to the genre/topic page and must click again. I’ll be churning through those in the next few days.

This organization doesn’t thrill me, but at my scale maintainability is paramount.

For the curious, the page-building script is at https://cdn.mwl.io/detritus/book-page-rebuild.pl . Why put it there and not on, say, github? One, github takes ICE money1. Two, github is increasingly poo. Third, if I put it in a more public place some daft bastard would try to use it. I would get demands for assistance and, worse, pull requests. Some even dafter bastard would claim that I had written a Static Site Generator and request co-maintainership for MWLSSG. (I understand that SSGs are trendy, but this is not an SSG. This is an ugly hack and, at best, a Static Page Generator.)

Or, worst of all, someone might think that this was an example of Good Code. Code is like skin. Showing the less personal bits is fine, but you should expose more of it only on request.

I would like to add “Next Book” and “Previous Book” links to the individual pages, but that raises questions and complicates the code. What’s the book order? By genre/topic? Boring alphabetical? Where is that order maintained? I want to hand this spreadsheet to someone else one day, so any order other than alphabetical needs to go in there, which means changing the order would involve perilous cut-and-paste operations and I am well experienced in how well employees can cut and paste. I was an employee, I know what I’m talking about here.

So I’m deferring all that.

But the next time one of my retailers changes the name of their store, I can edit a line of code and regenerate all the book pages. When I need a brain-dead project I can go through the blank cells in my spreadsheet and figure out which retailers I’m missing and why. That’s all good.

I don’t tell jokes: a “DNSSEC Mastery, 2nd Edition” outtake

I get accused of making jokes in my tech books. I don’t. I tell the truth. The truth is so ridiculous that the only sane reaction is to laugh. Honesty and integrity are everything, in both my fiction and nonfiction. (Yes, even in Laserblasted.)

Ever since PAM Mastery invoked Terry Pratchett’s Unseen University, I’ve started using pop culture references in my books. Usually I pick a single apropos motif for the book, such as Run Your Own Mail Server using Star Wars as a touchstone for fighting the Email Empire. I do this to make the text more readable and to hook the reader’s brain.

DNSSEC Mastery was written during the initial shock of Covid, so I used The Princess Bride as a motif. If you haven’t seen TPB, you really must. It’s one of those rarest of creatures, a perfect film. And endlessly quotable.

Recently, this discarded tidbit was brought to my attention. I created it when SNG reminded me that this book hadn’t yet insulted Oracle.

Vizzini, as an Oracle sales rep: “You’ve heard of Postgres? DB/2? SQL Server 2020?”

Man In Black: “Yes.”

Vizzini: “Morons.”

Man In Black: “In that case I challenge you to a battle of integrity.”

Vizzini: “For the database?”

Man In Black: “Yes.”

Vizzini: “To the death?!”

Man In Black:

Vizzini: “I accept!”

Man In Black: “Read this, but do not click «agree».”

Vizzini: “I comprehend nothing.”

Man In Black: “What you do not comprehend is called a EULA. It is odorless, tasteless, devolves instantly into legalese, and is among the more deadlier poisons known to man… All right: where is the liability? The battle of wits has begun. It ends when you decide and we both click «agree», and find out who is right and who is sued.”

It amused the folks who saw it. But it’s not relevant to the book. So it got cut out. Because I don’t tell jokes.

For the record, insulting Oracle is not a joke. It is a sacred mission.

July’s Janky Sausage

This post goes to Patronizers in July and becomes public in August. Not a Patronizer? You could be! $12 a year gets you my latest updates, occasional free tidbits, and the completely pointless MWL Footnote Fortune File.

I was very proud of having made a schedule over the last couple months. The schedule gave me hope.

Any orc will tell you that “Hope exists to be crushed” but nooo, I listened to the Hope Demon and here I am.

Family matters have largely overwhelmed me in the last few weeks. Book sales are always low in the summer, but ever since Fearless Leader declared that one way or another there would be tariffs, they’ve hit an all-time low. My Patronizer income exceeds everything else combined. So once again: thank you for supporting me!

Real life complications hit everyone. If I worked for a company, my boss would classify me as “temporarily zombied” and increase the amount of time he spent beating me until I produced something. It’s nothing personal, of course. Being self-employed, I have to beat myself to produce things. In particular, I’ve promised the world an orc story for the Twisted Presents collection. That story does not exist. I’m going to delay the start of the Kickstarter until the tale does exist. I have half of something, and I know the shape of the tale, but every word I grunt out lies dead on the page.

Advertising “there’s a brand new orc tale in this collection so back it” only works if the story is good. Oops.

The mysterious, omnipresent, all-knowning They say that “a change is as good as a rest,” so I’ve turned what attention I have to a simple matter of programming.

Print sponsors might buy a book as much as a year before the book is released. I’d like to be more timely, but that’s the sad truth. The new Networking for System Administrators has about 170 print sponsors. Even a small rate of address changes means several returned packages. Each book attracts more sponsors. Don’t get me wrong, that’s great, but this problem will only get worse. I really must verify everyone’s shipping address.

The standard method of business data exchange is the (ugh) spreadsheet. WooCommerce exports data via spreadsheets.

So I wrote a simple Perl script to extract sponsor names and addresses from an export spreadsheet and send a confirmation mail to the sponsor. No, I’m not going to put this on github because 1) github takes money from ICE, and 2) some poor bastard might try to use it. When I order the sponsor gifts I’ll use the script to correct everybody’s shipping address.

Yes, some folks won’t catch the mail. If it halves the number of bounced packages, I’ll count it as a success.

That led to my other project. My web site is a mess. Listing books by category and genre helps hold the site down to a vaguely sane number of pages, but stuffing all the buy links next to each book makes the page ugly and unwieldy. Plus, it’s unauditable. All of my books are on Kobo, Amazon, TWP, Apple, and so on, but not every store is listed for each book.

I’ve decided to treat my web site as a catalog, without buy links. Clicking on an individual title in the catalog will take you to an individual page for the book. Maintaining pages by hand is unsustainable. I want to be able to hand maintenance to someone else, so that means (ugh) a spreadsheet. Or I could write a web app but no, the first thing I’d have to do with that web app is build a report system to generate a spreadsheet so let’s just stay with the spreadsheet. The spreadsheet records the buy links for each non-Amazon retailer, the Amazon catalog number (ASIN) for the book, and Amazon affiliate codes. It also has the book’s jacket copy and tag line.

I also have a long-running annoyance where people on the socials link to one of my books but an unrelated image shows up. Giving each book its own page lets me work around that by setting a featured image in the HTML.

The script basically works. I need to change the text for free ebooks, but that’s fairly minor. Now I’m going through every page on mwl.io creating spreadsheet entries and ad images for each title. Comparing, say, the finished SF page to an old tech book page, it does look better.

Click on a title and you’ll get the individual page, like this one for the brand-new Laserblasted.

Oh, right. Laserblasted left my bookstore this month and went into the broad world of retailers. A couple folks bought it at Amazon. Reception among those who read it has been positive, which is nice. If you’ve read it, I would appreciate a review at Goodreads or Amazon or… anywhere, really. (The usual reminder: Amazon and Goodreads considers a three star review negative and their algorithms will treat the book as such.)

The good thing with spreadsheet work is I can snatch a few minutes here and there to do it, amidst the larger mayhem that is my life right now. Right now I’m hanging on, hoping matters will settle down enough in the next week for me to actually clear my brain and write for a few hours. I’m hoping US politics settle enough that I can sell some books and stay in business. I’m hoping I can return to my home after September’s trip to EuroBSDCon in Croatia.

In happier news, I have received the N4SA2e challenge coins and they’re quite spiffy. Sponsors and print-level Patronizers will be pleased. But that’s about it for happy news.

Months like this, your support means the difference between keeping this career and returning to normal employment. I am grateful to every single one of you.

Until next month!

97: Tortuous Negotiations

I’m buried in tech edits for Networking for System Administrators, but this bit explains why I wrote the book.

I’ve been in more than one IT organization where the various groups feel frustrated or full-out angry with one other. Conflicting priorities and overly rigid or excessively porous boundaries lead to conflict, which causes bad feelings or, worse, lots and lots of meetings where tortuous negotiations pile still more processes on everyone until all progress chokes on hideous paperwork.
Who’s responsible for fixing or, better still, preventing this mess?

You are.

So is your coworker.

So is the person down the hall whom you’ve sworn an unbreakable blood oath of eternal vengeance against.

Managers cannot improve interpersonal reactions. Managers can impose formal structure and bad management can escalate feuds into open warfare, but even the best manager can’t make two clashing personalities work together without imposing structure.

When arguments keep looping over the same ground, it’s time to change the rules.

This book is on target to launch in September.

Permanent Discount on Books at My Store

TLDR: The coupon code MWL gives you 10% off all titles at my bookstore. It’s not valid for discounted bundles, sponsorships, or gift cards; just existing regular titles, ebook and/or print. If you buy the print, you still get the ebook free. I intend to keep this coupon live indefinitely, barring debacles.

Why?

When you cut out middlemen like Amazon, I make more. This code lets me split the difference with you. (No it’s not an exact 50/50 split, but the amount varies by title and I have to pay constantly-changing fees.) If I just discount the books Amazon will price match and cut what they pay me, so a blatantly advertised coupon it is.

Why do this right after the Sysadmin Appreciation Day coupon? That was a test. My estimates said that the math worked, but I needed a series of actual discounted sales to prove to myself that unexpected stupidity wouldn’t ruin me. It should be fine.

You have to pay shipping at my store, but the discount helps. If you buy multiple books from me, you come out better than Amazon.

The coupon isn’t valid on discounted bundles. Yes, you can buy The Full Michael and get all my indie titles in print, but that’s already discounted $150. That’s a better deal than the coupon.

You might notice that publishers like No Starch Press occasionally offer 30% coupons. How can they do that while I’m stuck at 10%? They use different printing methods and have both a warehouse and a staff. I use print-on-demand, which exchanges smaller margins for nonexistent overhead.

Yes, of course I’m hoping this will boost sales. I need a commercial OS for publishing, and Microsoft’s constant connivery to get generative AI into my system requires increasingly intrusive hackery to evade. Apple is still commercial, but at least I can turn off their generative AI garbage with a single button. So I’m hoping to raise enough to purchase a Mac Studio. (Why a Studio? InDesign is freaking huge, and I need something that will last 8-10 years.)

Sysadmin Appreciation Day Sale

It’s Sysadmin Appreciation Day, an annual holiday where one befuddles computer folks by being kind to them.

Today and tomorrow, Tilted Windmill Press is offering 10% off all titles with coupon code YIKES.

Yes, you need to pay shipping on paperbacks, but you get the ebook free with the paper copy. Buy a couple and you’ll break even. Buy a heap and you’ll do better than Amazon.

Coupon is not valid for gift cards or bundles.

Now go confuse a sysadmin.

96: Enough Coal for All the Children in Des Moines

The Twisted Presents Kickstarter is delayed for stupid logistical reasons. It will launch, but not on time. Still, here’s a chunk from Heart of Coal in that collection.

Glitter’d been in the Pit for longer than I’ve been alive, and he’d loved every day of it. He was shorter than me, but his muscles had grown muscles and he didn’t bother trying to wear a shirt even off-shift. He had his own pickaxe that he sharpened himself, this monstrous thing with a giant head and a long handle that he whirled into each seam like it had personally affronted him. I liked his snarl—no. I admired it. He didn’t seem angry, but he had no trouble showing the world his fire by whacking out enough coal for all the children in Des Moines in a single shift. Not that the Pit could handle that much. We don’t even have a real train to carry our harvest back to the Workshop. If the choo-choo hits a strong headwind, the passengers have to get out and push. But the swelling heap around his feet testified that Glitter didn’t care. He lived to sweat.

If you can’t wait for the collection, you can get Heart of Coal standalone in my store.