9 minute read

Time flies by. That’s a known fact. It’s been more than a year since I published Build Systems with Go. I have already talked about how does it feel to write a programming book. What I have not talked about is the publication process itself. There is a bunch of platforms out there but in my case I only used Amazon’s Kindle Direct Publishing (KDP). There is a lot written about self-publication using KDP. These articles are mainly focused on explaining the steps to follow and do not go into some of the details and problems you may find.

If you’re still reading this I can anticipate you that my experience has been bittersweet. I will divide my thoughts into:

  • Publishing
  • User experience
  • Analytics

Amazon provides some tools to help publishers in the process and there are many freelancers and companies out there that can help you in the process. Publishing a book is a process that involves a lot of people: editors, designers, proofreaders, marketing, etc. However, I did everything myself and this may impact my vision of the process. Furthermore, I was a naive newbie in the self-publishing business :)


The main idea behind KDP is simple: you write a book, you upload it to the system, you choose the price, you make it available, Amazon’s customers buy your book, and Amazon will pay you your royalties after some discounts. Let’s remember that this service is intended for self-publication. This means that we are not going to print copies ourselves, and we delegate all the additional work (taxes, ISBN, hosting, etc.) to Amazon.

Let me go with some basics. In KDP you have two basic formats: printed and e-book. Amazon offers you an on-demand printing service. That is cool. Somebody, somewhere, runs a huge printer, gets you a book, and sends it to you. Unfortunately, the service is not available in all the markets yet. For example, during the last year, the Australian Amazon market became available. In any case, this printing service covers most of the Amazon markets. In the case of e-books, everything is much easier; you get a copy of your e-book on your Kindle device or Amazon account. There is much more to say about Kindle devices, proprietary formats, who is really the owner of the book, etc., but I will not cover this for now.

For both formats (printed and e-book) the publishing process is fairly similar:

  • Fill some metadata: author, name of the book, book series, etc.
  • Upload the content
  • Chose a price
  • Make it available

Now let’s see the differences between both formats.

Printed version

If you have already written your book you must have some sort of file (PDF, MS Word, raw text?). In my case, I wrote the content using LaTeX. If you are not into LaTeX yet, you should read this. Additionally, I designed a front cover using my best (and limited) GIMP skills. With both, the PDF and your cover design you go through the upload process.

The KDP platform has to verify certain aspects of your PDF and book cover. Think that this has to be printed on a piece of paper that will be trimmed. This means that you must follow some standards in quality (image resolution) and sizes (margins, paper size, etc.). I know a lot of people struggle with these steps. You only have to take a look at the KDP help center to see how all the topics around this problem.

I have to say that I had previous experience preparing books to be printed so I was aware of the issues I could find. This was really helpful to understand the steps to be carried out and imagine what the printed copy would look like. My main advice here is decide from the beginning what format (book dimensions) you are going to use. Notice that changing the final format will require a new formatting process. For example, this year a new hardcover format was made available but I have not used it because the current dimensions of my book are not valid for this format. I would have to maintain two different formats, review them, and format them (sigh). Another interesting fact is that other publishing platforms may not support your format. For example, my current format is not available at LeanPub at their standard rate (sigh again).

E-book version

In the very beginning, I planned my book to be something that I could touch. Only when I started the publishing process I consider having an e-book version. Everything I read about self-publishing did strongly recommend publishing several formats to maximize your potential audience. It sounded reasonable.

What is an e-book? Basically a collection of web pages. Your reader renders web content and sends it to a display. This means that if you have your book converted into HTML you can easily have an ebook right? If you find some irony in these words you are a keen reader. Let’s go by parts.

The most widely extended e-book format is epub supported by the W3C. It is open, easy to understand and seems to be well supported (or at least minimally supported) by a large number of e-readers. But guess what… Amazon uses its own proprietary format for Kindle. However, they admit epub formatted books to be uploaded.

Now let’s remember that my original manuscript was written using LaTeX. I imagined that I would find a tool to convert my manuscript to epub. I was right. Tex4ht could make the job for me. I am not going to say that it was easy… There was a lot of stuff I had to learn, a good bunch of tweaks, visits to forums, modifying the default CSS, learning about the epub format… And after a ridiculous number of hours, I managed to have what I considered a reflection of my printed book in this electronic format. Unfortunately, I was wrong.

The following snapshot is an excerpt from the printed version.

Printed version

And this is the same except extracted from the e-book.

e-book version

You may find some differences there in terms of colours and fonts, but they are done on purpose. So far, so good. They look quite similar. The big thing here is that I am using Calibre, not an e-reader device. And this makes a huge difference. Why? Because we are using a much more sophisticated rendering solution. We have to be careful and check that our e-book can be correctly displayed in an e-book reader. Thank sounds almost impossible because there are a hundred devices out there. For KDP you can consider this problem to be smaller because everything is intended for the Kindle devices only.

In the case of KDP, after uploading the manuscript you can preview the content in your browser with a previsualization tool. And guess what… It is going to render your e-book with the full potential of your browser. Many potential issues that may spoil your visualization are going to be automatically fixed by your browser. And in the worst case (and this is my case) the layout may fail at the destination target after spending quite a while revisiting everything. One solution is to send the e-book (in a mobi format, no e-pub, no kindle format) to your Kindle. You can also download it in HTML to be checked… If I cannot be sure how my content is going to be displayed on the target device… why am I not warned? And what is the purpose of this reviewing process?

User Experience

If you have attended any introductory programming course, you have been probably told to make a library management program. It is a good example of an application with a database. You have books, books have ISBNs, authors, these books are items in a database, items can be added and removed… Well… for some reason KDP is not like this and I find it difficult to understand why.

Let’s say you have published an e-book and eventually you decide that you no longer want to sell this e-book. In this case, you can cancel the publication. Then you would probably remove it because it is no longer available for purchase. Good luck. You cannot do it. You heard correctly. You cannot remove an e-book that is not published. If you want to do such a thing you have to ask for human assistance… Why? There must be a good reason for that but I cannot understand what reason.

Something different is printed books. Amazon assigns them an ISBN which is mandatory for printed books to be sold. In fact, they have to pay for that. I know is not particularly expensive if you buy bunches of these identifiers but it sounds reasonable to not remove a book if it has been assigned an id that should be available for everybody.

Why there is not a concept such as removed books? A label, a tag, something that can let authors organize their libraries. Other much more humble platforms use this approach. I do not think I am asking for something impossible.


If you are one of those successful self-published writers who can live on their KDP sells you probably want to check how much money you make. KDP offers authors analytics describing how copies have been sold, how many pages of KDP unlimited have been read, and how much money will be made. Remember that from every final price you see there in the Amazon store you have to deduct some Amazon fees.

In general, I would say the analytics service is OK. It helps you to know how are you doing and in which markets you stand out.

Some things would be particularly helpful. It would be nice to understand how users consume your content like on other platforms like YouTube. Those users coming from KindleUnlimited are monitored so it would be nice to know on what page they land, how much time they spend reading, if they quit soon, etc.


Self-publishing is not easy. Apart from polishing your content, you have to go through a large number of steps that require some experience. Existing platforms can indeed help authors to make their content available to large audiences at almost no cost. But it is also true, that the process is still painful even if you have previous experience. My general recommendation is to keep it simple and focus on the content.

As I mentioned at the beginning of this post I consider my experience using KDP to be bittersweet. My expectations of what you can get on an e-book exceeded reality. Or at least, what you can get in investing a reasonable amount of time. I guess that nobody expects exquisitely curated formats in their e-books.

To be honest, during the last year I have seen improvements in the KDP’s user experience and analytics platform. However, it can be remarkably frustrating to make a book available. And things can be even worse if you think about releasing new editions from time to time. I do strongly believe that there is a good number of features that are still missing in this field. Who knows maybe there is room for some entrepreneurship here.

I hope you find something interesting or helpful in this post.

Thanks for reading :)