Several people have asked about my self-publishing process. I’d really like to write something comprehensive about this, along with code/scripts/config for my whole build stack, but I haven’t had time yet. Until that time, here are some notes on tools I use.
- UPDATE: I’ve published the scripts and Makefiles referenced below on GitHub. Warning: they are presented as-is, warranty-free, undocumented, and messy.
- I do all of my writing in Emacs Org-Mode. (Including this blog post.) Org-Mode has many advantages for technical writing, but chief among them is probably the integration with various Emacs programming language modes. As a result, I am able to execute code samples “live” from within the manuscript and have the output automatically inserted. This saves me from having to maintain separate sample files and manually sync up the manuscript with the examples.
- HTML export is handled directly by Org-Mode.
- For PDF I use Org-Mode’s LaTeX-to-PDF support. I’ve made a number of customizations to the way the LaTeX is generated, something that Org-Mode makes very easy.
- PDF code typesetting is handled by Pygments via the Minted LaTeX package.
- For Mobi and Epub formats I pipe the generated HTML into the Calibre command-line tools.
- I automate the various file conversions and packaging the outputs into a ZIP file with good-ole’ GNU Make.
- I use DPD for digital distribution, payment processing, discount codes, everything having to do with selling the books.
- I use 99Designs for cover designs.
I can recommend all of these tools to anyone looking to self-publish a technical book. I also recommend that anyone thinking of doing this read Jeremy McAnally’s book on the subject; it has a lot of good advice on how to plan, structure, write, and sell an eBook.