So, I wrote a book on functional programming

This is the story of my journey from coder to author. Discover insights, challenges, and triumphs in writing a book on F# programming.

On Saturday August 7, I released a book called Essential Functional-First F# on LeanPub, a self-publishing platform. It is based on two series of blog posts that I've written for the TIMETOACT GROUP blog:

  • Introduction to Functional Programming in F#

  • Introduction to Web Programming in F# with Giraffe

I had a clear picture of what I wanted the first three posts of the Introduction to Functional Programming in F# series to cover. Once these were completed, I wrote a list of what I thought the series should cover over an indeterminate number of posts. I spent a few weeks thinking about how I could best cover everything else on my list and came up with a rough outline for nine further posts. Then came the hard part: Coming up with code samples that show what you want folks to see and little else is very hard. Most of the time spent writing the blog posts was spent coming up with 'perfect' code samples. I tried to make the blog posts similar in size but there is some variation. Even at this stage, I had a plan at the back of my mind to turn the blog posts into a book. 

I don't remember what the trigger was for me to actually start the process but less than three weeks ago, I started to bring the book together.

Tools

My blog posts were written in the limited Markdown that SquareSpace, our blog provider, supports.

The book was written in Markdown using Markdown Monster. It has a text editor and a side by side view of the rendered page. It also now has a spell checker! I did try Visual Studio Code and that works well but Markdown Monster was better for me.

From Blog Posts to Book

I chose to self-publish via LeanPub.com who offered a free option but the web editor is not very functional. I ended up doing a lot of copying and pasting from Markdown Monster to Leanpub.com. On the free version, you are limited to twenty generations of previews or publications per month. They also generate numbers against the lines in the code samples which can only be removed by paying a subscription.

Initial Draft

I copied the Markdown from the blog posts into the editor on Leanpub.com and generated the first preview version of the book. I then spent the next two weeks reworking the code samples so that they all work in Visual Studio Code, fixing any spelling or grammatical errors and adding additional explanations for names and concepts. I initially chose the wrong base format, so the code samples were too big and had too many line wraps. Changing to the Technical format fixed that and reduced the size of the book by twenty-five percent.

Reviewers

I put out a request on Twitter for reviewers and got twelve people. I chose that many because experience tells me that a few will drop out and so it proved. I ended up with six people who were a great help in tidying the book up.

I'm pretty good at spelling and grammar, or so I thought. Getting reviewers to go through the text and the code to find things I'd missed was very useful as they discovered more than I'm happy about! The biggest negative feedback was about the numbering on the code, so I paid my $8.99/month subscription and changed the setting to remove them.

Publishing

Given that it was originally a set of blog posts, I thought that the best approach would be to self-publish for a suitably low price. I also decided that I would donate my author's royalties to the F# Software Foundation as they needed it far more than I did. 

Conclusion

I've ended up producing a book that I'm genuinely proud of. I'm not sure that I could have sat down and just written a book in one go. Breaking it up into a series of steps was probably the only way that this book would have been written.

Blog 11/15/22

5 lessons from running a (remote) design systems book club

Last year I gifted a design systems book I had been reading to a friend and she suggested starting a mini book club so that she’d have some accountability to finish reading the book. I took her up on the offer and so in late spring, our design systems book club was born. But how can you make the meetings fun and engaging even though you're physically separated? Here are a couple of things I learned from running my very first remote book club with my friend!

Blog 3/12/21

Introduction to Web Programming in F# with Giraffe – Part 3

In this series we are investigating web programming with Giraffe and the Giraffe View Engine plus a few other useful F# libraries.

Blog 11/30/22

Introduction to Partial Function Application in F#

Partial Function Application is one of the core functional programming concepts that everyone should understand as it is widely used in most F# codebases.In this post I will introduce you to the grace and power of partial application. We will start with tupled arguments that most devs will recognise and then move onto curried arguments that allow us to use partial application.

Mit Google Workspace den digitalen Arbeitsplatz ermöglichen Sales Freshsales
Service 8/17/23

Gemini

Experience Gemini in Google Cloud and revamp the way you work. Discover innovative Generative AI functions for maximum efficiency.

Blog 3/11/21

Introduction to Web Programming in F# with Giraffe – Part 2

In this series we are investigating web programming with Giraffe and the Giraffe View Engine plus a few other useful F# libraries.

Blog 5/18/22

Introduction to Functional Programming in F#

Dive into functional programming with F# in our introductory series. Learn how to solve real business problems using F#'s functional programming features. This first part covers setting up your environment, basic F# syntax, and implementing a simple use case. Perfect for developers looking to enhance their skills in functional programming.

Blog 3/10/21

Introduction to Web Programming in F# with Giraffe – Part 1

In this series we are investigating web programming with Giraffe and the Giraffe View Engine plus a few other useful F# libraries.

Blog

Working across the Atlantic: an interview with Bill

What is it like to work for a German company as an American? We asked our American teammate Bill. The change from American to German work culture can be an exciting challenge. In our latest interview, Bill shares how he experiences these cultural differences, what has surprised him, and how he has integrated into the German way of working. Dive into the exciting dynamics of intercultural work!

Blog 9/17/21

How to gather data from Miro

Learn how to gather data from Miro boards with this step-by-step guide. Streamline your data collection for deeper insights.

Blog 7/22/24

So You are Building an AI Assistant?

So you are building an AI assistant for the business? This is a popular topic in the companies these days. Everybody seems to be doing that. While running AI Research in the last months, I have discovered that many companies in the USA and Europe are building some sort of AI assistant these days, mostly around enterprise workflow automation and knowledge bases. There are common patterns in how such projects work most of the time. So let me tell you a story...

Process Integration & Automation
Service

Process Integration & Automation

Digitizing and improving business processes and reacting to changes in an agile way – these are the challenges that more and more companies need to face.

Server farm
Leistung 2/14/22

From Unix to Linux with Adabas/Natural

Mit Adabas/Natural von Unix nach Linux

Blog 5/25/21

From the idea to the product: The genesis of Skwill

We strongly believe in the benefits of continuous learning at work; this has led us to developing products that we also enjoy using ourselves. Meet Skwill.

Blog 5/20/22

My Weekly Shutdown Routine

Discover my weekly shutdown routine to enhance productivity and start each week fresh. Learn effective techniques for reflection and organization.

Blog 9/14/22

Learn & Share video Obsidian

Knowledge is very powerful. So, finding the right tool to help you gather, structure and access information anywhere and anytime, is rather a necessity than an option. You want to accomplish your tasks better? You want a reliable tool which is easy to use, extendable and adaptable to your personal needs? Today I would like to introduce you to the knowledge management system of my choice: Obsidian.

Blog 9/15/22

Introduction to Functional Programming in F# – Part 3

Dive into F# data structures and pattern matching. Simplify code and enhance functionality with these powerful features.

Blog 4/28/23

Creating a Social Media Posts Generator Website with ChatGPT

Using the GPT-3-turbo and DALL-E models in Node.js to create a social post generator for a fictional product can be really helpful. The author uses ChatGPT to create an API that utilizes the openai library for Node.js., a Vue component with an input for the title and message of the post. This article provides step-by-step instructions for setting up the project and includes links to the code repository.

Produkt

Google AI

Google Cloud Platform saves you costly investments and relies on high scalability to help you drive innovation in your company!

Blog 3/17/22

Using NLP libraries for post-processing

Learn how to analyse sticky notes in miro from event stormings and how this analysis can be carried out with the help of the spaCy library.

Blog 9/13/22

Introduction to Functional Programming in F# – Part 2

Explore functions, types, and modules in F#. Enhance your skills with practical examples and insights in this detailed guide.

Bleiben Sie mit dem TIMETOACT GROUP Newsletter auf dem Laufenden!