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

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.

June’s Juffled Sausage

This post goes to Patronizers at the beginning of June and becomes public at the beginning of July. 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 set some ambitious goals at the beginning of last month. How did that work out for me?

Finished first draft of the new Networking for System Administrators and get it out to technical reviewers by the end of May? A couple days late, but I’ll call it done. Huzzah! I even got the Kickstarter page up so I can point folks somewhere and even a release schedule! (Holy crap! Glory and the Saints be Praised!)

Finish an orc story for Twisted Presents by 26 May? Pffft. Nope.

In three days I leave for BSDCan. While I’m not taking books with me, I am the con chair and a sponsor. (“The RYOMS kickstarter went rabid? Sure I’ll be the BSDCan reception sponsor! Getting people drunk might improve sales! Wait, Trump did WHAT???“)

Anyway. I owe BSDCan folks a cake, and cookies, and a stern instruction to keep their damn masks on. (Sadly, the closing session video doesn’t show the bit where I enforced the policy, but I understand why; no long-term purpose is served in showing that.) If you’re wondering why BSDCan has a mask policy, I’ve got an informal statement on my blog.

In between all this, I need to cram in writing an orc Christmas story. There are folks who will back a collection just because it has a new orc story, and a collection should have some original content so it might as well be orcish. Besides, an orcish take on Christmas fits the theme.

So I’ll probably assemble the collection and send it to copyedit with a note that says INSERT ORC TALE HERE, and send the orc tale near the end of the month.

Reading last month’s post, I just realized that I put the wrong dates on the Twisted Presents Kickstarter. It should start July 25th, not end. That’ll buy me an extra 12 days. Yes, a Christmas collection Kickstarter should last 12 days. Obviously. 12 Days of “Christmas For the Rest Of Us.”

With any luck, I’ll come back from BSDCan ready to start on the next projects. Allan Jude and I are set up to start work on the new edition of the ZFS books. The two books will become one, called OpenZFS Mastery. We’ll include some Linux content. A few folks have told me that they already want to sponsor it already, but I’m hesitant to open sponsorships until I’ve fulfilled the previous sponsorships. A few people have told me that doesn’t matter, but taking even money when I haven’t delivered the last thing feels rude. Perhaps even gauche. I also plan to finish Skybreach. It’s halfway done, but I got distracted by writing an orc novel. And Laserblasted.

Oooh, right. That’s the other news. Laserblasted is the first book that’ll go through my new release windowing system.

Now that I can sell every independently published title in both print and ebook from my web site, I’ll be releasing everything exclusively on http://www.tiltedwindmillpress.com for thirty days. Afterwards it’ll go to other retailers. Big book platforms have been increasingly tightening their terms of service for years, so I feel no need to prioritize them. My sponsorship of BSDCan allows me to put a flyer in the swag bag, so I’m going to beta test book sales by offering con attendees a coupon code for 20% off retail on all print books. I’ve tested everything to the best of my abilities, but that’s not the same thing as a broad real-world test.

You know what? Now that I write that, I should also offer that coupon code to Patronizers. It works only on print books, not ebooks or bundles. (Bundles are already discounted.)

 

BSDCanTest

 

Coupon expires at the end of June, before this post goes public. Sorry, wider public.

I don’t know that anyone will actually order The Full Michael in print. I mean, look at this. Look at it.

Nobody in their right mind is gonna want all that to show up as a single lump unless we have another bathroom tissue shortage. But the fact that I can provide all that in a single lump means a lot to me.

I need to finish my BSDCan flyer and get packed. Oh, wait–packing means I need clean clothes, right? Uh… see you in Ottawa, or next month.

I’m teaching at EuroBSDCon

I will be at EuroBSDCon this September, teaching courses on TLS and email. Yes, they’re based on TLS Mastery and Run Your Own Mail Server. This means you can sign up for the classes and buy the books on your employer’s dime, read the books on the flight to Zagreb, and skip listening to my tedious droning in favor of touring Croatia.

Do attend the EuroBSDCon social events though. They’re always cool.

I haven’t been to Europe since 2017, so I’m looking forward to seeing folks.

Someone’s going to point out that this con doesn’t fit the health part of my travel policy. Yep. Recent events have demonstrated that I must strengthen my European contacts, so I’m choosing to accept the risk.

BSDCan Gifts

This was my last year as BSDCan chair. The committee worked hard make the con happen. That’s not to my credit, though I am slightly proud of myself in selecting as potential members “people likely to complete tasks” and persuading them to volunteer. I am notably proud of arranging matters so that Kristof Provost felt compelled to scream my name in rage during the closing auction. I’d link to the video, but the sound of everyone else laughing drowns him out. KP is no Bob Beck.

But this post isn’t about that.

Two people gave me gifts. Gifts that I had no idea existed.

From Patrick McEvoy, assistant con chair, video lead, and next year’s con chair: a Laserblast alien figurine. If you’ve read the book, this closely resembles Bert.

Tiny? Yes. Silly? Absolutely? Surprisingly motivational? Yep! I’ve added Bert to my Inspirational Triptych, to remind myself that anything goes. (For the youthful, the others are Rosebud the basselope, Bullwinkle’s Fearless Leader, and the Big Man himself, Cthulhu.) I have no idea where my ideas come from, but these are my literary moral compass. I guess it’s a quadtych now?

The second gift was presented a little more publicly, at the very end of the closing session (video). Warner Losh commissioned my portrait from Frank Pryor. Warner didn’t merely hand him a photo of me to work from. Pryor went through my publicly available media and assembled a complete inventory of my public persona.

Beaver Tails? What do Beaver Tails have to do with anything? There’s a photo from a BSDCan maybe ten, eleven years ago where about twenty of us converged on the Ottawa Beaver Tail hut for deep-fried sweet bread covered in Nutella or peanut butter and chocolate or cinnamon sugar or any other decadence you can imagine. (It’s basically an Instant Diabetes Kit, and it’s fantastic.)

Warner liked the look so much, he even made me a one-of-a-kind T-shirt.

In keeping with BSDCan tradition of course, immediately after this unique T-shirt was presented to me, they proceeded to auction off three more just like it.

I am left with one question, though. You see, right when I was starting to write $ git commit murder Warner joked that he wished someone would write fanfiction about him. That gave me a name, although I changed it slightly to maintain plausible deniability for when in case the real Warner gets killed at a Unix con. (If you’ve ever met Warner, you’d understand this is a legitimate risk.) I am wondering how he knew about the tombstone, though? I mean, mine has an ending date on it, but still, it’s a stunningly good guess.

May’s Mandriarchal Sausage

This post went to Patronizers at the beginning of April, and to the public at the beginning of May. Yes, I know, everyone already patronizes me, but if you want me to pay attention sign up here.

As expected, the economy is in an unforced crash. Yippee! Buckle in folks, it’s gonna be a wild ride. I wish to thank all of y’all for backing me. Those folks who signed up to See the Sausage Being Made for $12 a year add up. The whole Patronizer thing often makes me feel like the founder of the world’s most useless cult, but you do keep the bank from taking the house and I am grateful.

I spent some time this month going through my bills. We’ve had the same cable company for almost twenty years and two different houses. (No TV, just a bit pipe.) Every few years, I’d get a letter that they were upgrading my plan. Fine. I gave them a call and told them to cut my bill or lose me. They cut the bill and upgraded my service again. I really need to put “negotiate with cable company” on my calendar for every two years.

Next up: the cell phone. We had Sprint because it worked here, which means we became T-Mobile, which means our bill had gone up. Probably switching to Consumer Cellular. It’s time to stretch those dollars!

Happier news: all active Tilted Windmill Press titles are in Bookvault, which means I will be able to sell them from my bookstore. Yay! I have a box of 21 proofs coming. If they are okay I’ll get them in the store.

I’m already offering the FreeBSD Storage Bundle in print at $24 off. I’m afraid to look at what I’ll have to charge for The Full Michael in print, but it’ll happen.

Okay, fine. Let me build a spreadsheet and add it up.

34 print books, $785. If I give a 20% discount that makes it $628. Call it $629.99. Nobody’s that insane, but if I don’t offer it one of you is gonna ask me why not. Plus, being able to offer it all feels correct. Like the bookstore is truly complete. You want it, I can send it!

Why do a 20% discount? When you buy direct from me, I don’t have to pay a bookstore or a distributor. 20% splits the difference with the reader, which seems fair. I do have paperwork and financial overhead on direct sales, though, so I’m compromising by offering the split on larger orders. Larger orders also save on shipping. Eventually I want to say “buy 4 or more get 20% off” but I implement only one headache at a time.

Sadly no, I can’t include No Starch titles. They are not print-on-demand. I would have to touch them and compute shipping. Not happening.

The question I’m still struggling with is the default format. I have to choose either “print/epub bundle” or “just epub.” Yes, people can change it with the “Format” drop-down. But defaults do impact people. Is it more ethical to set it to the less expensive option? How many people won’t see the “Format” option?

Clearly I need to pivot to “just give me all your money and I’ll decide what you get,” sigh.

I discovered a complication on direct print sales to Europe, though. The printer does not include commercial invoices. Bookvault does not know how much I charged you, or if I charged VAT. You can download an invoice with your order. I had one European customer who had trouble with this, but other Europeans say that’s fairly standard. I need to go through the print store and add that warning to every print version.

The good news is, I have the hard part of the networking book done. Sort of. I sent the TLS chapter to Bob Beck for review, and it went horribly wrong. The good news is, I get to do some new sysadmin stuff and set up QUIC on my web site. Then I get to do some netflow analysis and see how much of the traffic is QUIC versus everything else. Good fun times, for a strange value of good and stranger value of fun.

The good news is, the second half of the rest of N4SA2e requires very little in the way of updates. Some of the warnings need to be louder, but traceroute hasn’t changed, nor netcat.

Laserblasted is due back from copyedit on 15 May, and I’m wondering: if I can crank hard for two weeks, can I finish this draft and get it to tech review by then? I don’t know, but it’s a worthy goal. If nothing else, I’ll have two weeks of cramming on it.

Speaking of Laserblasted: as an experiment, it’ll be exclusive to my store for a few weeks before I release it on other bookstores. It’s a weird book so it’s not a real test of windowing, but I’ve heard from a few folks who missed the Kickstarter and maybe I’ll scoop them up that way.

Laserblasted also taught me a lesson. I had so much fun ranting about the film that I forgot to describe what the book is. Or: I spent so much time saying what it isn’t that I forgot to say what it is.

Meaning that I broke my own rule, and didn’t write the jacket copy before writing the book.

I still am struggling with the jacket copy. I might just steal my pal ZZ Claybourne’s description:

“What would happen if Gomer Pyle got turned into a scathing indictment of the military patriarchal industrial complex but with way more aliens and laser-inflicted explosions than the sitcom managed to achieve? Starring Brad Pitt as Gomer, directed by Sam Raimi.”

I’m scathing? When did this happen?

Er, uh–yeah. I meant to write that. What that says. I planned that. Yep.

Now to get back cover text that means that.

Maybe I’ll just put that on the back.

I really do need to get a Prohibition Orcs Christmas story written for my Christmas collection. Ideally I’ll launch the Twisted Presents Kickstarter on 25 July and be ready to fulfill immediately upon payment, so I can do the N4SA2e Kickstarter right after. Wait–does that work? Let’s sketch this out.

Let’s be pessimistic and say I finish end of May. I want a month for tech review, which means end of June.

I’ll have Laserblasted proofs ready and hard copies ordered before BSDCan, and order the books for delivery when I get home. Fulfill that by the end of June, no problem.

The copyeditor will have N4SA2e in July. She’s usually about six weeks on a tech book. I haven’t checked with her, of course, and she might blow up my entire schedule.

So if I launch Twisted Presents on 21 July and let it run for two weeks, it ends 4 August. I order books 5 August. Yes, I don’t have the money yet, but I’m assuming Kickstarter coughs up the dough on 18 August, like they do. I can ship them that week. It’s only a handful of copies, it’ll only take a day.

So I get the N4SA2e copyedits about 15 August and spend about a week doing corrections and laying out the print and indexing, all that crap. Launch that Kickstarter early September, let it run for three weeks. (Tech book campaigns should run longer than fiction ones.)

Now to work backwards.

Launching Twisted Presents on 21 July means I must have a print proof in hand by that date. I’ll need everything finalized by 7 July. I need the final manuscript end of June. Most of this book was previously published, but the orc tale needs copyediting and everything needs a final proofreading. I might have to use an alternate editor for that, someone less expensive at speed. That’ll take a couple weeks at best, which brings us up to the end of BSDCan. I’m not working on books during BSDCan. The book must go to copyedit by 9 June.

I need a few first readers to read the orc story. That takes two weeks.

I must have a completed orc story by 26 May. Achievable.

Except I’m cramming to finish N4SA2e by then.

Have I ever mentioned that I’m terrible at scheduling?

All of this is built on the very slender reed of finishing N4SA2e by the end of May. Which means I get QUIC on my web server.

I think I better go get to work.