My Penguicon 2019 Schedule

I’ll be at Penguicon this year, doing a few talks and panels and such. It’s only fair to warn you where I’ll be.

Friday, 3 May

  • 18:00 – LN2 Ice Cream (I’ll be simultaneously presenting “Debauchery as a Service”)

Saturday, 4 May

Sunday, 5 May

I’m pretty sure that adding three more events will allow me to reach Penguicon Transcendence. I shall become omnipresent, simultaneously attending and giving every single presentation. I recommend you attend Penguicon before that ghastly, inevitable development.

Or maybe they’ll just assign me a room and put a sign on the door: “The Lucas Show! Different Lunacy Every Hour!” So long as they shove LN2 ice cream under the door every few hours, that’ll work.

FreeBSD Mastery: Jails – Bail Bond Denied Edition

I had a brilliant, hideous idea: to produce a charity edition of FreeBSD Mastery: Jails featuring the cover art I would use if I was imprisoned and did not have access to a real cover artist. (Never mind that I wouldn’t be permitted to release books while in jail: we creative sorts scoff at mere legal and cultural details.)

I originally wanted to produce my own take on the book’s cover art. My first attempt failed spectacularly.

I downgraded my expectations and tried again. And again. And again.

I’m pleased to reveal the final cover for FreeBSD Mastery: Jails–Bail Bond Edition!

This cover represents the very pinnacle of my artistic talents, and is the result of literally hours of effort.
But, as this book is available only to the winner of charity fund-raisers, purchase of this tome represents moral supremacy. I recommend flaunting it to your family, coworkers, and all those of lesser character.

Get your copy by winning the BSDCan 2019 charity auction… or any other other auction-type event I deem worthwhile.

As far as my moral fiber goes: I have learned that art is hard, and that artists are not paid enough.

And if I am ever imprisoned, I do hope that you’ll contribute to my bail fund. Otherwise, you’ll get more covers like this one.

Print Sponsor Gifts Mailed for “FreeBSD Mastery: Jails”

I just got back from mailing the sponsor gifts for FreeBSD Mastery: Jails. Every time I ship sponsor gifts, I tell myself that I really need to intern at a shipping company, because there has got to be an easier way to do this.

The pile on the right goes to international sponsors.

This time I attempted to be modern and use the USPS’ web interface to create customs forms, buy postage, and have them pick this mess up at my door. Unfortunately, the feature to let me buy postage for overseas packages was busted today. I could buy postage for their fancy mail service where you use their boxes, for twice as much. I already spend a third of the print sponsor income on fulfilling sponsorships, and I really don’t want to raise the rates for international sponsors. There’s no point in doing the easy half the order the modern way when I have to lug the difficult half to the post office anyway.

I did successfully use the online form to create customs paperwork for each international shipment, though. So that’s something.

I had several ideas for fancy sponsor gifts, but they all turned out to be prohibitively expensive. It is possible to get customized Beastie metal files, suitable for gnawing through cage bars. It’s expensive. Baking them inside little cakes is also possible, but a) makes the shipping fiendishly annoying, and the joke gets moldy quick. No matter how droll delightful such cakes would have been, though, the cake would have been actively toxic and my ethics got in the way.

So I’m afraid this time my sponsors get a mere hardcover copy of the book.

I’m considering this project closed, barring any shipping problems.

And this is where I should probably plug the sponsorships for Sudo Mastery, 2nd Edition. And my new sponsorship announcement mailing list.

Now if you’ll excuse me, I need to make some serious words on Terrapin Sky Tango…

“FreeBSD Mastery: Jails” Print Sponsor Gifts Threaten to Topple

A groaning UPS driver arrived at my door this morning and dropped off several dozen pounds of paper.

Shipping these is a huge job. I’ll probably pack them up Saturday when I can bribe someone into helping me. (One person wrapping the book, one stuffing the book into the envelope, and one addressing/taping the envelope is more than three times faster than one person shipping alone. I suspect it’s related to the sense of overwhelming despair one feels when facing a giant stack of books that need mailing.) I expect they’ll go into the mail Monday, barring debacle.

Note the absence of art-besmirching text on the cover. The title and author appear on the inside flap. If you want the complete version of the (in my biased opinion) glorious cover art, this is how you get it.

For those watching the business of book sponsorships: I expect I’ll pay about $25 per print sponsor to fulfill these. Lots of the shipping needs to go overseas, and each hardcover costs me almost $15. I still come out nicely ahead, so long as I don’t have to pay too much of a bribe to get the books packed.

Talking Jails at Semibug, 9 April 2019

I’ve written a jails talk to go with the book.

I plan to give this talk three times: a dry run at next week’s Semibug, then in May at Penguicon and BSDCan. The Semibug talk, at 7 PM Tuesday at Altair Engineering, will be the most honest version of the talk. And by honest, I mean it will still include the bad language. I’ll also have the most time to talk afterwards.

With any sort of luck, I’ll have copies of FreeBSD Mastery: Jails at all three events.

“FreeBSD Mastery: Jails” and a new novella

The paperback, hardcover, and electronic versions of FreeBSD Mastery: Jails are all available at multiple stores. Not all stores–Powell’s and Waterstones, for example, always seems slow to get my new books. But it’s at Barnes & Noble, Amazon, and several others. And the reviews seem positive:

The timing for this book release is perfect; coinciding with my exploration of the use of jails within FreeBSD. I’ve yet to read this book, however, the author being Michael Lucas, I trust it will not disappoint.

Haven’t read it, but trusts me? That’s great, and slightly worrisome. I hope I don’t find one day it’s been revised to a single star. In any event, the jails book took longer to write than any other tech book I’ve written. I hope you find it useful.

And then I have a new novella out–Winner Breaks All. And it already has a review:

Do you ever wonder if you’re a psychopath or just really efficient?
Do you think indecision is the worst possible sin?
Do you really dislike when people talk about curing you of what makes you you?

Then this is the book for you.

A fascinating and insightful exploration of “personality disorders” and what can be done about them and what should be done about them packed into a very tightly plotted story of future corporation intrigue.

Although I’ve published this on 1 April, it’s a very real post.

“Sudo Mastery 2/e” sponsorships available

People, especially those who have previously sponsored my books, keep asking me when the sponsorships for the second edition of Sudo Mastery will be available.

I don’t intend to start seriously writing this book until the end of April. May has Penguicon and BSDCan, which will take lumps of time out of my schedule. I meant to hold off. But people ask enough that it’s turned out to be easier to open sponsorships than keep answering “not yet.” So:

Here’s ebook sponsorships and print sponsorships for the second edition of Sudo Mastery.

Patronizers, of course, will get their name in this book as their patronage level dictates.

And as a reminder: I now have a mailing list to notify people when I’m ready to take their money for no good reason I have sponsorship opportunities.

Ebook sponsors get their name in the mobi and PDF versions. Print sponsors get their name in every version of the book, plus a physical gift to show my gratitude.

Why am I not starting work on this book until late April?

My health was iffy for the last couple of years. Now that the bad half of my thyroid is out, I feel much better.

But during those two years, I started four novels. I finished zero, because I lacked the energy to drag the book through the critical middle. That many incomplete manuscripts has built up into a mental bugaboo, a nasty little voice in my head that says I can’t finish a novel any more and that I’ve lost the mysterious “it” and I should get a job as a hamster cage cleaner.

If I take two-three weeks and pound hard on Terrapin Sky Tango, I will a) finish a novel and b) get that little voice to shut the heck up. I know what the rest of the book is. Sort of. Okay, I know where the climactic final fight is, that’s close enough to knowing the ending, right? And it’s a blood-and-guts novel, which comes more naturally than eating gelato. I’ve spit out some successful short stories after that bad lump of Lucas Loaf got extracted, so I know the fiction-writing brain works again.

I just need to grit my teeth and spend some time with Beaks, crushing that inner critic. Which isn’t that bad. I mean, if I get killed hanging around with her, she’ll feel bad about it.

New sponsorship announcement mailing list

Many people who have sponsored books asked me to let them know when I have another book sponsorship open. They sincerely want to help me. Between the black pit masquerading as my inbox and my unease with daring to take money for books that I haven’t yet written, however, I can’t actually accomplish that.

I have elected to outsource yet another job that I’m no good at.

In addition to my fiction announcement and nonfiction book announcement lists, I have a sponsorship announcement list.

You’ll only get mail when I open a sponsorship.

(Wow. Three blog posts in two days. Weird.)

Restore Woocommerce Users from Backup

(This post is for sysadmins. If you use WooCommerce but aren’t a sysadmin, it won’t help you. I can’t help you either. Sorry.)

I use WooCommerce on my bookstore. It’s built on top of WordPress and, as such, attracts spam users. About 40,000 of them since I opened it. The last time I investigated performance problems, I installed Bulk WP Delete to get rid of them. From everything I saw, it would only remove the spam users and leave the customers unaffected.

I was wrong. A small percentage of customers lost their accounts.

I took a backup of the database before purging the spam users, because I’m not a complete idiot. And I kept it close at hand.

If you accidentally blow away user accounts you need, and want to restore them without touching the rest of your database, you can. I used the command line. You can probably do the same using whatever pointy-clicky tool you like, but don’t ask me for help–I don’t know how to use them. Talk to your sysadmin.

The first step is to take a backup of your database. Make sure it’s a good backup, and keep it close at hand. If you screw up, you’ll need it.

I created a VM on my desktop, installed MariaDB, and restored the pre-purge database on that VM. Check the name of your Woocommerce database. Mine is named rapacity, because that’s why I run my own bookstore.

When a user tells you that their account is missing, get the email address they used to create their account. My example user is

On your VM, extract the user’s account information to a file.

# mysqldump --user=root -p rapacity wp_users --where='user_email=""' --skip-add-drop-table --no-create-info > bucketsofmoney.wp_users

Go into the file and look for the user description.

INSERT INTO `wp_users` VALUES (3185...

The first number is user ID. Grab that user’s metadata.

# mysqldump --user=root -p rapacity wp_usermeta --where='user_id=3185' --skip-add-drop-table --no-create-info > bucketsofmoney.wp_usermeta

Copy these two files to your web server. Log into the web server,

MariaDB [(none)]> use rapacity;
MariaDB [rapacity]> source bucketsofmoney.wp_users;
MariaDB [rapacity]> source bucketsofmoney.wp_usermeta;

Now log into the WooCommerce interface and go to Users. Search for that account. Switch the user’s role to Customer.

The user now exists, but their existing orders are disassociated from their account. Go to the Woocommerce page, then Reports, and hit the Customers report. Under the “All Customers” tab, search for the restored account. Over on the right side, one of the buttons will give the option to reconnect previous orders to the account. That button doesn’t appear unless there are previous orders. Hit it.

The account is now restored.

If you screw up and fry the existing database, restore from backup:

# mysql -u root -p --one-database rapacity < mysql-backup-2019-03-23

As you might guess, this blog is mostly for my own later reference.

And the next time I have to delete spam users, I plan to just go into the database and drop every user who has never ordered anything. Forget plugins.

How did I solve the performance issues? My new web site has more images per page, especially the fancy new front page. Installing “WP Super Cache” dramatically improved everything.