Python for the busy Java Developer
For the past few months, I’ve been working on a book titled, Python for the busy Java Developer. I’m happy to say that it is finally complete and ready to share. Go, download it now!
The book’s page has all the details on the audience and the content of the book. So let me use this post to talk a bit about the experience of writing it.
It is a relatively short book and yet, the amount of effort that it took to finish it was immense. My respect for authors has gone through the roof! It is one thing to have a collection of topics to write about and quite a different thing to put all of those topics together into a cohesive narrative. I learned a great deal about structuring content, striking the balance between too little and too much detail and writing with the reader in mind. I also learned a few new things about Python along the way!
Beyond the content, creating a book involves publishing it in a format suitable for wider consumption. Traditionally, this is the bit that is handled by book publishers. However, since I didn’t intend to approach a publisher, I had to figure out how to produce the book myself.
Initially, I started composing the book using the Markdown format and generating output using the Pandoc tool. However, I soon hit the limits of what Markdown is good for. There are several elements like admonitions and callouts in code samples that can’t be expressed in Markdown. At this point, Hitesh pointed me to the AsciiDoc format, specifically the Asciidoctor project. This was a revelation!
The AsciiDoc markup format supports pretty much anything you would want to do when writing a book. The Asciidoctor toolchain makes it easy to produce great looking output from AsciiDoc source. There are still a few bugs and gaps but I am confident that in six months time, this will be the best toolchain for creating books.
Writing this book has consumed many evenings (and early mornings!) but it was well worth the effort for the experience. I hope the end result will be useful for the intended audience!