The other book I did not write
From time to time, I meet people in the real-world, I swear, they often say "I read your blog, but I cannot understand most of it, have you any book to recommend to start learning Haskell?".
No.
I have learnt Haskell in 2012 with Learn You a Haskell for Gread Good! (LYAH), but I've only started to understand after my attendance to Well-Type's advanced type system in 2014.
Many other books have been published since, of course, I did not read them all, but the few I have read are either not practical, nor lack of design principles/examples, not to mention that, given my knowledge of Haskell biases my reading.
I have always thought that I could write a book about it at some point, actually, I have already failed to write 4 or 5 books before, not specifically about Haskell from a beginner point of view.
A technical books publisher contacted me in mid-March to write an introduction to Haskell.
After some back and forth, we agreed on a title: "Beginning with Haskell" and the following outline:
Title | Pages | Due date |
---|---|---|
Introduction to Haskell and GHC | 25 | Apr 8 |
Mastering Functions and Types | 35 | Apr 22 |
Data-types and polymorphism | 35 | May 6 |
Structure-based abstractions | 30 | May 20 |
Running code in IO | 30 | Jun 3 |
Project Architecture and Cabal | 30 | Jun 17 |
Designing Type-Safe eDSLs | 25 | Jul 1 |
Persistent and Efficient Data Structures in FP | 20 | Jul 15 |
Testing, Deployment, and Production | 25 | Jul 29 |
Final project: a blog engine | 20 | Aug 12 |
The guidelines were clear enough:
- 250-350 pages
- 15-35 pages per chapter
- 8-12 chapters
- 2 pages per day
They informed me they will focus on engineering schools, and I should be more general, not focusing on Haskell, I have renamed it "Effective functional programming".
I have started to work on it, using Asciidoctor, then I had two fill a docx
with a specific styling, which was a pain, but the rendering was 15-30% bigger.
On average, I was writing 2-5 pages per weekday (I was writing 3-4 hours a day, usually starting at 10.30pm, I was used to sleeping 5-6 hours a day, the main issue I had was to find "new" words, because it felt like I only had a limited amount of wordz, speaking to my friends and coworkers was requiring a lot of efforts), 6-8 pages on Saturday and 10-14 pages on Sunday.
Globally, I was able to write one chapter a week, including a day to format it in docx
.
I have delivered my first drafts as follows:
Title | Pages | Delivered date |
---|---|---|
Introduction to Haskell and GHC | 25 | Apr 8 |
Mastering Functions and Types | 49 | Apr 22 |
Data-types and polymorphism | 37 | May 6 |
Structure-based abstractions | 29 | May 13 |
Running code in IO | 29 | |
Project Architecture and Cabal | 34 | |
Designing Type-Safe eDSLs | ? |
During all my writing time, I had these thought about the possibility of my book being dismissed due to my teaching style, which puts the code forward.
Actually, it is something I have totally overlooked: review.
My first chapter had 9 review rounds, including two meetings and it was not done.
At some point, I have figured out that it could only work with Microsoft Word, while I was using LibreOffice, from review to review, figures and comments were disappearing.
Note: I have tried to use OnlyOffice, even Office 365 (which was able to open it in read-only mode, not in editing), Microsoft Word (which was not able to work because I was using a friend's computer, Microsoft Office was not able to launch because both licenses were not linked to the same account).
At this point, I gave up due to this setup.
What's next? Actually, nothing, they have 6-12 months to notify me if they will continue with my book, and I have not heard from them.
I could integrate all the comments I had and publish it myself, but there are a ton of books, and without any contact points in universities, it will not be sustainable.
I will resume all my side projects I have set aside for some weeks, I will also write my next logs, which is empty now as I was not writing new ones, I will also start to attend again my user groups.
This experience was not pleasant, but I have collected few writing tips I have started to apply, hopefully, you will appreciate them.