My authoring tools

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.


  1. This is so helpful! Thank you Avdi. You’re very generous to share these details with the community 🙂

    As an aspiring author, I’d also love to hear more about your actual writing process… not the technical publishing details, but the writing itself: how you decide on topics, how to figure out what your audience is interested in, how much depth any particular chapter/subtopic deserves, whether you have people review your ideas and writing along the way, etc. I’ll definitely check out Jeremy McAnally’s book.

    Thanks so much for this, really.

  2. if you ever do write about this in more detail, I would really enjoy how you format and arrange code examples.

Leave a Reply

Your email address will not be published. Required fields are marked *