66: It Means Nothing

Here’s a chunk from the new edition of Networking for Systems Administrators.

Through your career, people have repeatedly blamed “the firewall.” The word firewall dates from the 1980s, when the concept of network-level access control was both exotic and bizarre. In the last fifty years, access controls have become broader and more complex. Some controls remained in the devices arbitrarily labeled “firewalls,” while others migrated to routers and switches and other devices. What does the word “firewall” mean today?

Like the words “computer” and “security,” it means nothing. Nothing.

Every layer of the network supports access controls. Any of these controls might trouble you. Proxies, network address translation (NAT, see Chapter 3) devices, packet filters (Chapter 5), protocol content filters, all of these can reasonably be called “firewalls.” Your network might have a device that gets called “the firewall,” but any organization’s network has multiple access controls.

The truth is, if I was willing to just slam out a chapter on TLS and X.509, and cut the stuff on 10/100 Ethernet, I’d have a first draft of this book by next week. But nooo, I have to be all stupid and ethical and painstakingly go through the entire book to be sure it’s the best, most up-to-date work I can create. You could support me by sponsoring the book. 16 more print sponsors and I do another challenge coin.

65: Ignore the Flinch

Here’s a chunk from the new edition of Networking for Systems Administrators.

Similarly, some vendors use the word VLAN. Others talk about tagging or VLAN tagging. To create a VLAN, devices add a tag to an Ethernet frame. It’s all the same thing

Most network administrators use the language of their preferred vendor. If your company only uses network gear from company X, it almost certainly uses that company’s terminology. Those of us who have been around for a long time either adopt our organization’s language or, worse, use all of these terms interchangeably. If I’m your network admin, I might tell you that I’ve configured a trunk to your server. Or that I’m sending you some tagged VLANs. Or that I’ve configured a trunk on your trunk, at which point you’re allowed to proceed directly to hard liquor.

If you’re in doubt, ask your network administrator if this is the trunk with tagged VLANs or the trunk with multiple cables. Ignore the flinch, she can’t help it.

You can sponsor N4SA2e. And, in case you missed it, Dear Abyss is finally live on Kickstarter.

October’s Ostrogothic Sausage

[This article contains RYOMS gift spoilers for print-level sponsors and Patronizers. I think everyone has their packages, but just in case, you’ve been warned.]

[This post went to Patronizers at the beginning of October, and the public at the beginning of November. Not a Patronizer? You could be, for the low price of $12 a year all thee way up to the high price of “however much money you want to dispose of.”]

It’s Halloween Month, and there was much rejoicing.

I perform one experiment with every project I do. Sometimes, like with RYOMS, I do two. I’ll discuss the boring experiment at the end of this post, but let’s start with the one that bit me.

For the Run Your Own Mail Server Kickstarter, my experiment was “drop shipping.” A reader buys the book from me, I order it from the printer and have it shipped directly to the reader. Seems fine, right? I discussed the problems with the EU’s IOSS last month, but this month has uncovered new wrinkles.

Dropship books might take weeks to deliver. If I’m lucky.

They might or might not get tracking numbers, depending on the recipient’s country, but the form email the printer sends includes the text “Here is your tracking number.” If they won’t give a tracking number, that space is blank. People are understandably confused. I can say “give me a tracking number for all shipments,” but printers charge a great deal for that. Some destinations are only $20 in shipping, but some are over a hundred dollars! There’s no way to tell before you order. It’d be cheaper to give up on dropshipping altogether.

I’ve said many times that I believe in incremental progress, not virality. Expecting that your project will go viral is a great way to fail. While I don’t believe in virality, virality believes in me. Suddenly I was performing my little dropship experiment on hundreds of people. A smarter author would have limited the number of dropships to a manageable level, but “smarter author” goes in the same heap as “jumbo shrimp” and “Trump’s intelligence.” I suspect the dropships were part of why this campaign went viral, though.

So now I’m managing expectations for hundreds of people, and I’m not entirely sure when the books will arrive or where the are. Because no tracking numbers.

The next time I do an experiment with something that runs a risk of going viral, I’ll be labeling that option “experimental” and add text like, “I have learned how this is done and understand the mechanical process, but have no personal experience with it in the real world. I have no idea what the problems will be, but I will work through them and communicate.”

New words proceed slowly, thanks to me shipping about five hundred signed books this month and various family emergencies. While I can have my job as long as I do the work, I also have the most flexible schedule. This means that if a parent winds up in the hospital, I’m elected to deal with it. Lucky me!

But initial feedback on RYOMS is mostly positive. Except for the dropshippers, and they’re complaining about delivery rather than the book itself. Publishing is hard, y’all.

So then there’s my second experiment. It affects sponsors. I talked about my Reader Acquisition Funnel over a year ago, but as a quick reminder: that’s the process I use to lure readers into a closer tie with my work. It has nine layers, just like Dante’s Inferno.

  1. Read my free or discounted samples (articles in magazines, free first in series, sample pages in bookstore, library check-out)
  2. Buy my books through retail channels
  3. Social media follow
  4. Sign up for my mailing list
  5. Buy books directly from me
  6. Kickstarter
  7. Sponsor
  8. Regular monthly contributor (you folks!)
  9. You do all my chores so I can write more

My goal is to lure people down into the deepest layers so it’s harder for them to escape to cut out middleman fees. But if I’m offering backer-exclusive special editions on Kickstarter, I need to offer something something to entice those people to descend into sponsorship. The special editions are exclusive to prepublication backers, but what do the sponsors get?

For RYOMS, the sponsors got this.

It’s the RYOMS Challenge Coin! It’s weighty. The rat is solidly three-dimensional, looming out of the coin. Plus, I firmly believe that SIGYIKES would be a valuable addition to Unix.

Which is perhaps the daftest thing I’ve ever done–other than the Manly McManface edition of Ed Mastery, of course.

And the Networknomicon.

Okay, yeah, fine, there’s the systemd satirical erotica.

And the blockchain dystopian erotica.

Look, we could be here all day. Let’s move on.

The minimum cost-effective press run is 100 coins. The only way to get this is to be a print sponsor or print-level Patronizer. I do have a few extra coins that I’ll use to solve fulfillment problems. Any survivors will be auctioned off for charity. The coins seem to amuse people, so if I ever have another book with 100 print sponsors I’ll probably do it again. I must offer something unique to lure people deeper down the funnel, after all!

I must once again thank y’all for hanging out in Malbolge with me. I’m not saying that my career is a fraud–no, wait, I say that all the freaking time. At least I’m honest about it. I’m sure that’ll count for something when I reach the Afterlife. Not that I believe in an Afterlife, but if it’s a real thing I’ll be able to shout “Yay, I was proven wrong!” which is infinitely better than not having the chance to lament being correct as the neural network I call me dissolves into the Void. It’s Pascal’s Wager in reverse.

On the 15th of this month I’ll be launching the Dear Abyss Kickstarter and sponsorships for Networking for Systems Administrators, 2nd Edition. Because a sane release schedule is something that happens to neurotypical neural networks.

And with that, I better go make some words.

“Dear Abyss” live on Kickstarter

Confession time: I don’t love Kickstarter. I don’t love money either, but it does seem to be a dependency when living in capitalism.

When I release a book on my site, I sell a few copies. When I launch it on Kickstarter, sales go up tenfold.

So: Dear Abyss is live on Kickstarter. The book exists, and the moment I get paid it goes to everyone.

Backers immediately get a copy of Letters to ed(1), the out-of-print three-year compilation.

64: File Corrupting Butterfly

Dear Abyss is ready to launch, so I’m making new words. It’s another column.

If you insist on proceeding, though, if you demand you be allowed to weave yourself a chrysalis and transform into a kernel developer like a panic-prone memory-dumping file-corrupting butterfly, immediately separate your dreams from your goals. A goal is something actionable that is completely within your control to achieve. Accomplishing a dream requires other people intervene on your behalf. Going out for a dinner date with that attractive person? Totally a dream. Asking that attractive person out for a dinner date, and when they remind you that you are inherently unloveable leaving them the heck alone instead of stalking them like the creepy hero of a so-called “romance?” An absolutely achievable goal!

You cannot control other people. Work on goals. Never on dreams.

I babble a whole bunch about dreams versus goals in Domesticate Your Badgers. And seriously, if they turn you down leave them the hell alone.

63: Skip Off The Heliosphere

Life has been a bit chaotic this last couple weeks, and fulfilling the last 5% of the Run Your Own Mail Server Kickstarter has soaked up my time. I’m just getting to finishing the copyedits on Dear Abyss so I can launch the bloody Kickstarter. Here’s a snippet from the Introduction.

Here’s the other problem with an advice column. It needs glue.

Saying “I’ll write about FreeBSD stuff” isn’t enough. People don’t beseech Dear Abby for solutions. They want her soothing voice. Her calmness. Her gentle declarations that “yes, you have a problem” or “have you considered complying with conservative societal norms?” If they wanted detailed, thoughtful discussion of their petty problems they’d write Captain Awkward or Dear Prudence. Each columnist has their own voice, their own attitudes, beliefs and mission. Columnists have goals. And seriously, a Unix letters column? No system administration advice I could offer would survive thirty seconds exposure to the sandblaster of reality.

If you look at the first few columns, you’ll see I gave it my best shot. My model was in an unstable solar orbit, however, and starting to skip off the heliosphere.

This story has an unhappy ending. I figured out how to keep writing it.

New short story in Pulphouse? I read the opening

My short story “The Rats’ Man’s Lackey and the Bringer of Leaves” is in issue #33 of Pulphouse Magazine. I’m sharing the issue with folks like Kevin J. Anderson and Nina Kiriki Hoffman.

I’ve missed a couple episodes of “60 Seconds of WIP” because of the Kickstarter fulfillment, which is only a problem as I’ve fallen behind on my reading practice. So I recorded the opening of my story.

To save the sanity of us all, I learned how to capture a single frame of a video and make Youtube use it as a thumbnail. Otherwise, merely clicking on the link would show you my stupid face.

Grab Pulphouse #33 at your favorite bookstore.

“Networking for Systems Administrators, 2nd ed” open for sponsorship

TLDR: “Networking for Systems Administrators, 2nd Edition” is open for sponsorships at https://www.tiltedwindmillpress.com/product/n4sa2e-sponsor/ and I would appreciate your support.

Longer version:

Every large company I’d ever worked in since 1995 suffered from a continuous feud between the sysadmins and the network team. One team would demand an inch, the other would insist on 25.4 millimeters, and battle was declared. As someone with an ankle shackled in each world, I quickly reached two conclusions.

One, the job is hard enough without us arguing past each other.

Two, everybody involved needed a short sharp visit from the Slap Fairy.

About ten years ago I achieved my lifelong goal of becoming a full-time writer, and promptly lost my mind. I could keep being a writer so long as I kept bringing in money. If I didn’t bring in money, I’d get stuffed back in a cubicle. I had to write books, and quickly. I had made a list of titles I could spew fast. One of them was “Networking for Systems Administrators,” meant to end that feud or at least bring about a ceasefire.

Because my other goal was “pay the mortgage before I get stuffed back into a cubicle,” I slammed out that manuscript in about a month.

To my surprise, it was well-received. Managers bought the book in bulk to distribute to their staff. Network administrators bought it to give to select colleagues. Sysadmins bought so they could successfully argue with their network administrators.

It’s been ten years, and that book needs updating. Some of the commands have been changed. 100Mb Ethernet is rare, while 10G and 100G are almost common. There’s all those tidbits I could have done better, if I hadn’t been driving myself too hard. Let’s Encrypt made TLS omnipresent, so I need to add that. And of course it must have a proper Eddie Sharam cover.

If I get ~100 print sponsors I’ll do another challenge coin, like the one I did for Run Your Own Mail Server (https://mwl.io/archives/23836).

So, yeah. https://www.tiltedwindmillpress.com/product/n4sa2e-sponsor/ is my effort to bring a tiny peace to IT departments around the world. I would be grateful for your sponsorship, and your support with the mortgage part.

Thank you for your consideration.

PS: I should also mention that my collected FreeBSD Journal advice columns, Dear Abyss, is going to kickstarter soon. “Dear Abby for Sysadmins” isn’t going to sponsorship, but if you’re interested you might check it out. (https://mwl.io/ks)

Patronizers, Sponsors, and Kickstarter Backers

People can support my work by buying my books, through whatever channels they prefer. I also have my Patronizer program, offer sponsorships of individual titles, and take early orders via Kickstarter. Folks ask me what the differences are between these three things.

Patronizers send me money every month, either through Patreon or my store. They get everything that sponsors and Kickstarter backers get. If you receive my books in print, and I send sponsors a physical gift, you get that gift. Patronizers who receive digital rewards get any digital rewards that sponsors and Kickstarter backers get. Patronizers are thanked by name in the Acknowledgements in the front of everything. Any print books are signed with a personal thank-you note.

Sponsors back a particular book. I offer sponsorships only for tech books. If you don’t want to back every daft thing I do, or fear I will soil your name by thanking you for atrocities, or you have enough fiscal responsibility to not send me money monthly for no good reason, sponsorships are for you. When the book comes out, sponsors receive a gift. The gift might or might not be the book. It might be related to the book. It might amuse only me. Sponsors are thanked in the back of the book. Any print books are signed with a personal thank-you note.

Kickstarter is basically pre-orders. Backers get a chance to purchase any limited editions I create. Their name doesn’t go in the books. I sign print books but don’t personalize.

Practically, how does this work? Now that everyone’s had a chance to get their gifts, here’s what I did for Run Your Own Mail Server.

Print sponsors received a special edition of the book, (Ruin Your Mail By Running It Yourself). It will never be in stores, although I have a few extras that will wind up in charity auctions.

They also got a metal challenge coin. I’m quite pleased with how these came out. This coin will never be re-issued. I have a few extras that will, again, go to charity.

Why these? Because they amused me. Seriously. That’s it.

Print-level Patronizers got both. They also didn’t know what was coming.

Kickstarter backers could get the RYOMS Special Edition. They didn’t know what it was either. They did not get the challenge coin, however.

Why do it this way? My second business goal is to lure people into buying direct from me, eliminating middlemen like Amazon. (My first business goal is to pay the mortgage.) The more direct our relationship, the more crap I give you. Or, if you prefer: the further you descend down the Reader Acquisition Funnel, the more I try to weigh you down so that you can never climb out.

Or:

If you buy my books, I appreciate you.

If you preorder my books at release time, I appreciate you more.

If you back a book before I’ve finished writing the silly thing, I gotta make it worth your while.

If you send me money every month, I must show my sincere gratitude.

Building Mastodon Bots is Stupid Easy

I just updated the footnote fortune file for Patronizers. Yes, my Patronizers get a Unix fortune file containing all the footnotes from my nonfiction books. I thought it was daft, but apparently a few readers actually use the dang thing. My exhausted brain wondered, “How hard would it be to build a Mastodon bot that posted one of these every few hours?” Turns out: not hard at all.

First, install toot (https://toot.bezdomni.net/). FreeBSD packages it as py311-toot.

Then register an account for your bot, using the regular Mastodon web interface. I registered @quotebot@io.mwl.io. (Yes, I have my own fedi instance. My main account is @mwl@io.mwl.io. No, you can’t have an account on it.)

$ toot login
Enter instance URL [https://mastodon.social]: https://io.mwl.io
This authentication method requires you to log into your Mastodon instance in
your browser, where you will be asked to authorize toot to access your
account. When you do, you will be given an authorization code which you need
to paste here.

Login URL:
https://io.mwl.io/oauth/authorize/?response_type=code&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=read+write+follow&client_id=FPzkCcqnGBLNO5Vo4V95CvfilcyRlMIrOSN1ncgxZmI
Open link in default browser? [Y/n]: n

This server’s default browser is Lynx. For whatever reason it can’t display the entire authorization code. Lynx is used for low-vision accessibility testing, so I suspect that the masto interface has an accessibility problem. I copied the link, opened it in my desktop’s Firefox, and copied the authorization code.


Authorization code: i6OsrQq77knbO4Gq.....

✓ Successfully logged in.

I can now toot from the command line.

$ toot post "test from toot cli"
Toot posted: https://io.mwl.io/@quotebot/113249574738108310

Go look in the web interface, and you’ll see the post. Easy enough.

Posting from a program is easy enough.

$ quote-source | toot post

Now I need a quote source. I could use something database-driven but I happen to have the mwlfortune file handy, so I’ll stick it in a mwlquotes directory. I’d like more than the footnotes so here’s a sample of another quotes file. Each quote is plain text, separated by a percent sign. I won’t be methodically adding to this, but if I’m digging through something old and see a suitable line I’ll add it.


Someone had brought cake. Someone was a bastard.
%
The only universal configuration language is despair.

Now build the fortune data files.

$ strfile -c '%' mwlfortune
"mwlfortune.dat" created
There were 582 strings
Longest string: 421 bytes
Shortest string: 6 bytes
$ strfile -c '%' bodyquotes
"bodyquotes.dat" created
There were 2 strings
Longest string: 54 bytes
Shortest string: 49 bytes

If you give the directory as an argument to fortune(1), it will pick a fortune at random from the combined files.

$ fortune /home/mwl/mwlquotes
Yes, that's megabytes--you know, the unit below gigabytes. Yes,
megabytes can apply to disks.

Try it a couple more times and you’ll see we get random quotes.

Dumping this into our bot is pretty simple.

$ fortune mwlquotes/ | toot post

Initial tests show a problem, though. Fortunes respect terminal standards, and include mid-sentence newlines. Fediverse posts do not. We need to get rid of the newlines. I wound up with this bot script.

#!/bin/sh

fortune /usr/local/share/mwlquotes/ | tr '\n' ' ' | toot post

Why put this in a script? So I can edit it easily later.

Now put this in my personal cron. Most folks said posting every six hours would be reasonable, so that’s where I’m starting.

13 */6 * * * /usr/local/scripts/quotebot.sh

That’s it. Every six hours, at thirteen minutes past the hour, the bot followers get a random quote from one of my books. Took about two hours to fully implement, including writing this post.