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

Women's power in IT: A conversation with Sarah

On International Women's Day 2025, our colleague Sarah shares what the motto means to her. She talks about her path to leadership, challenges in IT, and how she experiences equality daily.

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

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 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.

Blog 7/15/21

Building a micro frontend consuming a design system | Part 3

In this blopgpost, you will learn how to create a react application that consumes a design system.

Blog

How I Won the Enterprise RAG Challenge

In this article, Ilia Ris describes the approach that helped him achieve first place in both prize categories and the overall SotA leaderboard.

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...

Insights

These are the proud winners of the Enterprise RAG Challenge

Discover the winners of the Enterprise RAG Challenge! Explore top RAG solutions, watch the official announcement, and see how AI-driven retrieval and LLMs shaped the best-performing models.

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.

Blog 12/22/23

ADRs as a Tool to Build Empowered Teams

Learn how we use Architecture Decision Records (ADRs) to build empowered, autonomous teams, enhancing decision-making and collaboration.

Leistung 2/9/22

Application development on IBM i (AS400)

We maintain, modernise or migrate IBM i applications (AS400). To ensure that digital transformation does not remain a buzzword, we provide the developer manpower to drive and realise it.

Wütender Leopard
Leistung 5/12/23

IBM i (AS400) modernization reimagined. Holistic.

IBM i (AS400) modernization reimagined. Holistic. Open to the future.

Blog 7/16/21

Building A Shell Application for Micro Frontends | Part 4

We already have a design system, several micro frontends consuming this design system, and now we need a shell application that imports micro frontends and displays them.

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 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 6/24/21

Using a Skill/Will matrix for personal career development

Discover how a Skill/Will Matrix helps employees identify strengths and areas for growth, boosting personal and professional development.

Two people discussing in front of a computer
Lösung 2/14/22

The COBOL Survival Team for IBM i (AS400)

COBOL developers on IBM i (AS400) are a rare commodity. PKS provides a powerful team especially for this application!

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.

Bleiben Sie mit dem TIMETOACT GROUP Newsletter auf dem Laufenden!