2025 Income Sources

I make a living writing by earning money from every available channel. That means I need to see which channels are worth my time, which I should benignly neglect, and which I should partially or completely drop. Each year since 2019, I’ve posted the results.

First, my usual caveats and exceptions.

I earn money by creating and licensing intellectual property in prose form–aka books, articles, stories, and so on. I publish globally, both independently and through publishers. I make my books available in every channel that offers acceptable terms and reject channels with unacceptable terms. I don’t seek out speaking fees, although if you put money in my hand I’ll take it and say “thank you.”

Whenever I share actual dollar figures people immediately inform me that I can’t possibly be making that much, or that I don’t deserve to make that much, or demand that I share “the secret.” The first two are not worth my time, and I’ve been shrieking the dang secret for years: keep writing with an attitude of deliberate practice, and manage your cash flow.

Nothing productive comes from such discussions, so I don’t share the numbers.

I will say that I could make far more in a tech job, but whenever I express faint interest folks offer me senior roles involving horrid words like “mentoring” and “leadership.” No thank you.1

As far as actual dollar values goes, I will say: after the intoxicating heights of 2024, 2025 was a dizzying plunge. The United States is increasingly hostile to small businesses, especially ones with international customers. I make Enough.

So where did my money come from in 2025?

This chart excludes everyone under 3%. Here’s the detail.

Amazon 18.70%
Kickstarter — 21.15%
Trad Pub — 14.62%
TWP sponsorship — 14.40%
TWP ebooks — 9.43%
TWP print — 6.33%
TWP patronizer — 5.40%
Patreon — 3.85%
IngramSpark — 3.46%
Gumroad — 1.20%
Kobo — 0.46%
Apple — 0.38%
Google — 0.36%
bookshop.org — 0.14%
Draft2Digital — 0.11%
Barnes & Noble — 0.03%

I debated even including the folks at the bottom, but folks ask “what about Barnes & Noble?” so here it is. Don’t pay too much attention to the bottom: sale of a single copy can shift the lowest rankings.

This list guides many decisions. Apple Books now requires that I identify myself as a “trader” to sell books in the EU, as per the Digital Services Act. Am I going to spend the money to comply with EU laws on their platform? With Apple Books consistently being less than 1% of my income year after year? No I am not. I’d publish a big apology to my Apple readers in the EU, but I have no idea who those three people are.

The most exciting (to me) item is the brand-new “TWP print” category at 6.33%. My bookstore started selling print books in February 2025, with a printing/shipping back end provided by Bookvault. Individual print books are priced at retail, but readers pay shipping. They also get the ebook free with print. I offer a coupon code for ten percent off print books, which helps offset shipping and allows retailers to stay competitive. I also have discounts on print bundles. Last year TWP had 146 direct print orders. Over half of them were for multiple books. A few folks even bought the Total Mastery bundle in print. Shipping on the 17-book Total Mastery bundle costs about the same as shipping two books.

For decades, my readers have asked for an electronic version with the print version. I offered that and they came.

Mind you, nobody has been daft enough to buy the print version of The Full Michael.

A fair number of print orders come from Europe, even though I don’t make enough in the EU to qualify for IOSS and can’t handle VAT so readers have to pay customs on delivery. Thankfully, EU folks are accustomed to this headache when importing from backwater nations.

In past years, I’ve posted graphs showing the aggregate over time for each large channel, much like this one.

This year, I realized this is the wrong sort of graph. I want to see how my income from different channels changes over time. Here’s a more useful graph.

What can I learn from this?

First, let me define the term “retailer.” For this discussion, a retailer is a bookstore that I do not own. Amazon, Gumroad, Google, Apple, those are all retailers. Kickstarter and Tilted Windmill Press are not retailers. Kickstarter is a middleman, but they take a smaller cut than retailers.

Outside channels like retailers and Kickstarter are discovery platforms. They’re where folks learn my books exist. I need discovery platforms! But my business model gently guides people towards paying me directly. My store offers subscriptions and crowdfunding and regular book purchases much like Patreon and Kickstarter and Amazon. Whatever way folks want to pay, I’ll take their money.

I don’t want to depend on any one retailer, though, instead relying on a Redundant Array of Independent Retailers (a RAIR for you computer nerds). I want a whole mess of lines at the bottom of this graph, with a bunch of retailers each providing a relatively small percentage of my total income. If one retailer drops me, I’ll be annoyed but survive.

I want a nice healthy line at the top representing direct sales.

I want occasional spikes from Kickstarter or other third-party crowdfunding. That won’t stand out on yearly graphs, mind you, but viewed in more detail it’s definitely spikes.

In the graph above, Amazon is the dark blue line that starts near the top and drops below the pale blue Kickstarter line in recent years. The healthy crowd at the bottom is all my other channels, including a separate entry for each of my direct offerings.

But what happens if I combine the direct offerings into a single “folks who pay me directly” chunk?

That orange line that’s generally trending up year-over-year? That’s combined direct payments to me. That line represents my goal. You can see where it exceeded Amazon in 2022 and has remained above since. Kickstarter exceeded my direct income in 2024, but that was a freak event on a discovery platform. Many folks who backed Run Your Own Mail Server in 2024 went on to directly support Laserblasted and the new Networking for System Administrators. That pale blue spike in 2024 led the orange line increasing in 2025.

“But you can’t compare crowdfunding to retail sales to patronage!” Sure I can. I offer a variety of deals. People are free to choose which arrangement they want. The important thing is that I get paid to write the books I want to write.

In fact, let’s compare retail to my less expensive non-retail platforms.

Retailers take a bigger cut than non-retailers. I’m okay with deprioritizing them.

How do I feel about this? I am content but not satisfied. Income is down, but my whole nation’s economy is gasping. My bills are paid. I can withstand the loss of any one retailer. I’d like to see direct sales reach about half of my income. Trends say I’ll get there.

Not bad for a down year.

PS: Whenever I post these pieces, some folks on various writing forums declare that my business plan isn’t a “real business.”2 To them I’d like to say: I pay my bills writing what I want to write. I get to spend my days being creative, whether it’s discussing the moral necessity of punching billionaires in the throat, helping people reduce the agony of working in enterprise IT, or defending yourself against the tech oligarchy. The only way I could care less about getting paid per-sale versus patronage versus sponsorships would be with lobotomic assistance.

If you want to create for a living and are focused on any one style of getting paid, you are making things more difficult for yourself than necessary.

Two new Christmas stories in my shop

Life prevented me from releasing the Twisted Presents collection this summer, but here’s a couple stories from it. Both were previously published, but not by me and not in places my average readers commonly read. They went for free to all of my Patronizers, but each can be yours for a paltry $1.99.

First up is a Beaks tale, Sister Silence Night.

“Ten thousand dollars an hour, take it or leave it.”

Master criminal Beaks doesn’t charge extra for Christmas. She loathes Christmas. But for a friend, she’ll skip the fee and call it a favor.

Especially when the job’s at a shelter for runaway queer kids in Texas, under attack by an invisible hacker who’s ruined lives and driven the innocent to suicide. A hacker who’s abandoned cyberspace and getting physical. Beaks doesn’t care what kind of Grinch wants to ruin Christmas for these kids. All she cares about is making it stop.

Whatever it takes.

Then there’s the hard-boiled noirish The Last Multivariable Differential Christmas.

Why couldn’t my rep include “knows where to bury the bodies?”

That rep brings people to him. His awful talent means that sometimes, when nobody else can help, he can.

Firestone University, home of the toughest math program in the United States. Honestly it’s the most dickish, but that looks bad on brochures. After nine years an undergrad, with the final exam next week and the faculty gunning for him, it’s his last chance at passing multivariable differential equations. He must study. Those bastards will not beat him.

But another student brings him not just cheaters, but the kind of cheating that kills people.

There’s no reward for doing the right thing. Getting involved might throw away the struggle of the last nine years.

But some things are too wrong to live with.

And the right solution is as obvious as integral-of-one-over-log-cabin-equals-houseboat.

Perhaps I couldn’t put out the Christmas collection this year, but my shop has a burgeoning collection of Christmas stuff.

November’s Noyous Sausage

This post goes to Patronizers in November and becomes public in December. 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, freshly updated for the new edition of Networking for System Administrators.

Last month got home from EuroBSDCon and made it a point to post the monthly column my first day back. #ebc25 was great. Meticulously run. Fantastic program. Great food. The local staff kicked butt. I brought home a tie that I shall treasure but hopefully never need, stoopwaffel, joyful memories, and covid.

About an hour after I posted last month’s StSbM, the fever hit.

There’s nothing quite like publishing a book while hallucinating. So I didn’t. It delayed N4SA2e by a couple weeks, but that’s better than releasing delerium-infused work (shut up shut up shut up). It took me down for a couple weeks, but the book is now finished and at the printer. Let me check… yep, they now show up as “printing.” Should be here in a couple weeks. I have fresh envelopes and printable labels ready and a good pen to sign them all. The sponsor mailing addresses have been validated and a giant postage spreadsheet assembled.

Once the books ship, I will tell the Kickstarter folks that they have two days to finalize their addresses.

I’m still not completely recovered. My attempts to make words on OpenZFS Mastery prove that.

The ugly truth is, every time I attend an event that doesn’t have a mask policy, I get sick. I wear a mask throughout. Masks work, but crowded closed-in rooms overwhelm their protections. Everyone needs to contribute to protecting the community.

I will no longer attend any conference that doesn’t require masks. Yes, both Penguicon and BSDCan have dropped their mask policies. I won’t be at either. Cons are fun and educational, and I enjoy meeting colleagues and readers, but I’m old enough that I must prioritize my health. Can’t write books if covid fries my brain, and while I’ve reached my final form, said form is utterly unemployable.

But we do have a manuscript for OpenZFS Mastery! Well, pieces of it. It’s basically the first edition FreeBSD ZFS books slammed together, along with copious notes from Allan and myself on what needs to be changed. It’s essentially a skeleton that we need to add flesh to. Covering Debian as well as FreeBSD means restructuring most of the book. Here’s one page of the introduction, with the changes in red.

That photo’s a few weeks old, before Allan took a look. More has changed since then.

The one thing that remains unchanged from those old books and the new? My test host. Almost twelve years ago, I bought a ten-drive amd64 server. One of the power supplies has blown, but the rest works just fine. 32GB of RAM and eight cores is more than sufficient, and I can have mirrored boot drives while striping two RAIDZ2 arrays.

One of NYCBug’s fine folks shipped me a “high-end” custom-built, undocumented dual storage array that I haven’t had time to set up yet. My career has many gaps, but one of them is custom storage. I’ve used external storage arrays, sure, but I ordered them as complete kits. They included all the cables. This thing doesn’t. If I still had a day job, I’d go to the boss and tell them that the kit is incomplete and here’s my best guess for the cables and if they’re wrong, too bad, I didn’t choose this stuff. I’d happily let the boss spend a few grand on cables to try. But this will let me write a better book, so I gotta figure it out.

The smart thing to do is write a blog post with descriptions and photos, and ask my social media followers for advice. One of them must be a storage guru, or at least familiar with the ARC1330-8X/8I/8X8I/4x4I and Adaptec AEC-82885T in these things.

But the important thing right now is making words. And the ten-drive host is good enough for that. I’ve been working with bhyve and getting test hosts running.

It’s my first time playing with bhyve. It’s powerful, but like BSD has less of a “learning curve” and more of a “learning curb.” I’ve been watching it for a while, though. Back around 2018 (or some year like that), I asked Michael Dexter if it was time to write a bhyve book. He told me that things were churning rapidly and I should probably wait. EuroBSDCon included a one-day bhyve con, chaired by Dexter. I went. During the pre-lunch lightning talks, he requested that I come up to the front and then asked me why “we” didn’t have a bhyve book yet and what it would take to get one. I gave him a quite meaningful glare. “Well, last time I asked someone said…”

Anyway. Bhyve is cool. It’s stable enough that Kirk McKusick uses it for filesystem development. I’m using vm-bhyve as a front end, because raw bhyve requires long command lines and I’m lazy. Will there be a bhyve book? Ask the winds of karma because I got no clue. I know that after OpenZFS Mastery my next tech book will be on DNS. I don’t want to write a DNS book. The world needs an approachable DNS book the way it needed the mail book, though. Otherwise the oligarchy wins without a shot fired, and I’m an absolute sucker for horrific heroic last stands.

I can say that I’m taking the notes I would need to write a bhyve book, though. Why would I even consider writing a bhyve book when I haven’t used bhyve?

Because that’s the correct way to write a book about any technical topic.

Writing a tech book (or, indeed, any book) is not about documenting facts. Man pages and source code have all the facts, and when someone declares “it’s in the man page” folks rightfully flip out. Facts are not knowledge. Books are not about the facts; they are about the connections between facts. I watch my brain while I’m learning. The moments of enlightenment, when I realize how pieces fit together? That’s treasure. It goes into the notes. Those moments become the backbone of the book.

It’s also true for fiction. Laserblasted was written as a joke, and I’m told it came out funny, but look at this daft lump of the first chapter.

The Greys invented police long before humans did. One of the things they police is access to humans. It’s not that they care about us. Humanity hasn’t evolved enough to join the galactic market and hasn’t invented antigrav so the Galactic Species Index classifies us as livestock. If someone figures out how to profitably strip-mine us before we get our act together, we’re done. While the Orion’s Sword civilizations consider human pineal glands a potent aphrodisiac, we’ve put so many toxic chemicals into our environment that the Swordian Morality League has taken to saying, “take gland for your last stand.” The Greys put humanity on the Protected Species list, which isn’t so much for our benefit as giving them another excuse to put the boot in. The Swordian Society for Responsible Human Ranching will get that law changed one day and swoop in to save us from ourselves, for them.

Pick any one of these very stupid sentences. I can draw a line from it to the characters, the story, and the resolution thereof. (I still can’t believe that daft thing funded. At least it’s a complete commercial failure in the retail market, showing there might be hope for civilization and good taste.) Even stupidity is pointless unless it’s tied up in an ordered bundle of stupidity.

Anyway: everything is about connections. Not facts, not feelings. Connections. Like the connection y’all offer by Patronizing me. Thank you all.

TWP books not in Apple Books in the EU

Tilted Windmill Press books are not available in Apple’s bookstore in Europe. Sorry, folks.

Under the EU’s Digital Services Act, I am a trader. Compliance with the DSA means that Apple Books requires trader display their name, address, and phone number on the product page. I have a PO box, but I am not willing to have my phone number on the Apple Books store. Yes, you can find my phone number. It’s not rocket surgery. But that’s different than putting it on a third-party bookstore page for everyone to see.

Could I set up a burner or a Google Phone dropbox? Sure. But consider that my total income from Apple Books is so minuscule that I didn’t even put it on last year’s graph. How much work am I willing to do for $200 a year? Very little.

I have updated each book’s page to state that the books aren’t available on Apple in the EU.

Should I start doing enough business in the EU that I need to change this decision, I will. Prediction is foolish, but I’d guess that happens when I need IOSS.

First foreign fiction translation

Many decades ago when I was but a bitter lad hanging around the library, a twisted geezer with mismatched eyes and one tattered tooth tottered up to me and hissed Your first fiction translation will be dick jokes. The jackbooted librarian-goons immediately hurtled him into the street. At the time I thought it was because he was being creepy, but it turns out that they were preserving the integrity of the timeline.

My Prohibition Orcs story “Woolen Torment” has been translated into German for the anthology Trolle.

Yeah, I know. Trolls, orcs, whatever. Different cultures have different brutes.

At this rate, my next translation will appear about 2065. You better grab this one.

“Networking for System Administrators, 2nd ed” is out, except on Amazon’s Kindle store

The headline says most of it, but:

The new edition of Networking for System Administrators is out. Most stores should have it now. Apple is being a pain, but that’s pretty usual. I’ll fill in missing stores over the next few days, as the databases finish churning.

You might notice that it’s not in Amazon’s Kindle store. Why is that?

Oh, wait. Let me put that in SEO format.

Why is Networking for System Administrators not in Amazon’s Kindle Store?

There. That’ll do. The short answer is for the same reasons that Run Your Own Mail Server and OpenBSD Mastery: Filesystems aren’t, but on the off chance a search engine actually brings someone here, I’ll spell it out.

You can get Kindle-friendly versions of N4SA2e from my store or Gumroad. You can get a Kindle-friendly ebook from any number of other retailers, but while they’re all supposed to be DRM-free I can’t advise on prying the file out of another vendor’s ecosystem. The one place you cannot buy it for Kindle is Amazon’s Kindle bookstore.

TLDR: Amazon pays roughly 70% of retail price for books priced up to $9.99, and 35% for books $10 and over. Amazon is the only retailer that does this. Other retailers, I make somewhere around 65%-70% no matter the retail price. Everything follows from that math, but if you want the details read on.

According to economists, prices have gone up about 40% since I started releasing the Mastery books. According to my wallet, not so much. In 2012 my wife and I could get an inexpensive lunch for $10. Today, no. But let’s go with the official numbers. Just as “dime novels” now cost $10, I must raise prices. While book pricing is hotly debated, $12.99 is a reasonable price for a short tech book like Networking for System Administrators. (If I followed inflation I would charge $13.99, but I’m an idiot.)

If I charge $9.99 for this ebook, I make about $7.

If I charge $12.99 for the ebook, I make about $9 everywhere but Amazon. At Amazon, I make $4.50. For me to make that $9 at Amazon, I must charge about $26. I’m fond of the book, but it ain’t worth that! And if I did, giving Amazon a $17 slice of every sale for no reason sticks in my craw.

Charge $26 at Amazon and $11.99 elsewhere? Amazon’s program has a Most Favored Nation clause. They can price match any other major vendor.

Will Amazon change their business because of this? No. Authors are plentiful and of low value. I am not worth Amazon’s time.

Amazon’s business model is based on squeezing prices down, and they play a long game. I expect them to ever raise that $9.99 limit. A novel might sell tens or hundreds of thousands of copies. If I’m lucky, a book like Networking for System Administrators might sell eight thousand over the next ten years. The few extra bucks I’ll make by raising prices are important. That’s also why I’ve focused so hard on disintermediation through my Patronizers, sponsorships, and Kickstarter.

I have expected this for years. I do not expect to publish future Mastery books on Amazon’s Kindle store, unless by some chance I write another very short one.

108: Spent Decades Writing Scripts to Parse df(1)

With Networking for Systems Administrators production wrapping up, OpenZFS Mastery is starting to lurch forward. Here’s a tidbit.

ZFS combines traditional filesystems and volume managers. It expects to handle everything from the permissions on individual files and which files are in which directories down to tracking which storage devices get used for what purposes and how that storage is arranged. The sysadmin instructs ZFS in arranging disks and files, but ZFS manages the entire storage stack beneath them. ZFS has three layers: datasets, storage pools, and virtual devices.

ZFS was designed by highly experienced Unix engineers who spent decades writing scripts to parse df(1) and du(1) and fstat(1) and lsof(1) output and were determined to quit relying on sed(1) and awk(1) for even the simplest operations. The ZFS commands are not only designed to work together, each offers “customizable output designed to be piped directly into other commands. They can even produce JSON for convenient automation, as we’ll illustrate with examples throughout,

OpenZFS Mastery is open for sponsorship at https://sponsor.mwl.io.

Beastly Virtues

On Christmas, my new book Beastly Virtues disappears forever. No, you can’t get it in my bookstore.

Beastly Virtues is exclusive to the 14-book Wee Beasties Storybundle. When the bundle runs out, this book runs out. The only way you’ll get this collection of critter tales is to back the Storybundle and get all 14 books.

I’ve read and enjoyed books by every author in this bundle, and even some of these specific books. Part of the proceeds benefit World Central Kitchen, a deeply worthy cause in this mayhem-laced age.

So, what is Beastly Virtues and why might you want it?

INHUMAN HEROISM

This collection from critically-acclaimed author Michael Warren Lucas proves that bravery comes in every shape, and not all of it is two-fisted or even two-legged. Maybe it’s orcs learning baseball, or a young boy absorbing wisdom from interdimensional bats. If the only animal in the entire universe looks like a harmless chipmunk, you better ask yourself why, and when a dog’s ghost starts reciting 19th-century French surrealist poetry, you’ll need a whole new kind of bravery.

No matter your wings, paws, or whiskers, you need courage.

But whatever you do, don’t piss off the rats.

It includes The Rats’ Man’s Lackey and the Half Gallon of Christmas Miracle, Pax Canina, Sticky Supersaturation, Face Less, Whisker Line, and Fair Balls.

Yes, you’ll get my orcs playing baseball. A careful look at the Storybundle will show that you’ll also get elves playing baseball. There’s no way this can go wrong…

“OpenZFS Mastery” sponsorships now open

I’ve shipped all the Networking for System Administrators, 2nd ed sponsor gifts. I’m getting copies for the Kickstarter backers out the door.

By popular demand, I’m opening sponsorships on OpenZFS Mastery, by myself and Allan Jude.

Epub sponsors get their names in the epub/mobi versions of the book. They will receive a free copy of the completed ebook in epub and a PDF of the print version, all DRM-free, once we finish writing it.

Print sponsors get their names in the ebook and print version of the book, the DRM-free ebook, and a physical gift that might or might not be the book. The gift will be personalized. Please provide a shipping address and a phone number that can receive SMS! My shippers are asking for phone numbers even in the US, so I’m asking you.

Once the book exists there will also be a Kickstarter, but that will act more as a pre-order. Sponsors support me as I write and test the manuscript. The print sponsorship (or Patronizing) will also be the only way to get a personalized gift mailed to you.

Here’s the book description.

OpenZFS Mastery


by Michael W Lucas and Allan Jude

Data Storage for the 21st Century

ZFS, the fast, flexible, self-healing filesystem, revolutionized data storage. Leveraging ZFS changes everything about managing Unix-like systems.

“Thanks for making ZFS knowable by everyone” — Matt Ahrens, ZFS co-creator

“Thanks for doing this… now I don’t have to” — Jeff Bonwick, ZFS co-creator

With OpenZFS Mastery you’ll learn to:

  • select hardware for ZFS systems
  • arrange your storage for optimal performance
  • configure datasets that match your enterprise’s needs
  • repair and monitor storage pools
  • expand your storage
  • use compression to enhance performance
  • determine if deduplication is right for your data
  • understand how copy-on-write changes everything
  • snapshot filesystem
  • automatically rotate snapshots
  • clone filesystems
  • optimize how ZFS uses and manages space
  • Use boot environments to make the riskiest sysadmin tasks safe
  • Delegate filesystem privileges to users
  • Delegate ZFS datasets to containers
  • Quickly and efficiently replicate data between machines
  • split layers off of mirrors
  • optimize ZFS block storage
  • handle large storage arrays
  • select caching strategies to improve performance
  • manage next-generation storage hardware
  • identify and remove bottlenecks
  • build screaming fast database storage
  • dive deep into pools, metaslabs, and more!

Whether you manage a single small server or multinational data centers, OpenZFS Mastery will simplify your life.

What’s Changed?

This might be considered a second edition of FreeBSD Mastery: ZFS and FM: Advanced ZFS, so: what’s different.

The old stuff still works, but OpenZFS has grown many features in the last ten years. The OpenZFS project now considers Linux a tier-one platform. RaidZ arrays can be expanded. ZFS rewrite. Rebalancing arrays. Native encryption. Compressed ARC. Deduplication is less useless. Even compression has changed. Gobs of stuff.

This edition will be published as a single volume.

Why Sponsor?

It’s a terrible deal, but people find reasons.

I’m hoping to get this book done in just a few months. Sponsor while you can.

107: Which Drive Is It?

Have some OpenZFS Mastery.

“ZFS reports that one of the seventy-nine drives in our array is failing? Great! We can replace it in a convenient maintenance window before it causes problems. Uh… which drive is it?”

If you have a large storage array, you need proper physical and logical labeling. Keep a spreadsheet of each drive’s physical location and the information presented to the operating system, and also document this within ZFS itself. It’s easier than it sounds. Proper preparations during installation let you zero right in on a failed disk—even a disk at a remote facility. Jude runs a lot of very dense storage arrays in locations all over the world, and uses this scheme to keep hard drive maintenance from overwhelming him. He even records warranty information, expiration dates, model numbers, and more within ZFS so his monitoring system can flag sixty days before the warranty runs out.

It’s a couple days before I wanted to announce it, but if the new OpenZFS book is of interest you might look at https://sponsor.mwl.io.