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

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.

Blog

Guest Blog: Team Dreiforce at the TIMETOACT Hackathon!

Team Dreiforce shares insights from the first TIMETOACT Hackathon, tackling logistics challenges, CO₂ constraints, and strategy to maximize profit in competition.

Blog

Guest Blog: Data Scientists at the TIMETOACT Hackathon

Three data scientists share their experience at the TIMETOACT Hackathon, tackling logistics simulation challenges with strategies balancing profit and sustainability.

Event

SAP Business Suite Innovation Day 2025 Barcelona

Join us in Barcelona as we showcase how SAP Cloud ERP drives transformation. Learn from our TIMETOACT success story and meet our experts in the GROW area.

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!

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

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.

Der Weg zur sicheren Digitalen Transformation mit Identity Management
Referenz

Trusted Advisory in a corporate division

It started with a project to introduce an IAM solution in a corporate division. In the meantime, the customer's IAM extends throughout the group.

Wütender Leopard
Leistung 5/12/23

IBM i (AS400) modernization reimagined. Holistic.

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

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.

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.

News 1/10/25

A new chapter for catworkx US

catworkx announces Nick Howser as new CEO of US operations. With 13+ years in the Atlassian ecosystem, he aims to enhance customer success and spearhead growth in the U.S. market.

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!

Referenz

Interdisciplinary collaboration at C&A with Atlassian

TIMETOACT supports C&A in homogenizing its tool landscape with the Atlassian product range ► Read Success Story now and learn more

Releasewechsel eines eingesetzten IAM-Tools
Referenz

Release change of a deployed IAM tool

TIMETOACT received the order to carry out a major release change for the IAM tool used and to develop the processes back to the standard of the product as far as possible.

Blog 12/19/22

Creating a Cross-Domain Capable ML Pipeline

As classifying images into categories is a ubiquitous task occurring in various domains, a need for a machine learning pipeline which can accommodate for new categories is easy to justify. In particular, common general requirements are to filter out low-quality (blurred, low contrast etc.) images, and to speed up the learning of new categories if image quality is sufficient. In this blog post we compare several image classification models from the transfer learning perspective.

Blog

[Whitepaper] Google Workspace: A more secure alternative

Read the whitepaper to find out how Google Workspace's secure-by-design and secure-by-default architecture protects customers.

Blog 10/6/21

Designing and Running a Workshop series: An outline

Learn how to design and execute impactful workshops. Discover tips, strategies, and a step-by-step outline for a successful workshop series.

Branche 9/5/25

Digital Solutions for a Strong Healthcare System

We simplify processes, modernise IT and reduce the workload for hospitals, health insurance funds and partners – for better care and less bureaucracy.

Bleiben Sie mit dem TIMETOACT GROUP Newsletter auf dem Laufenden!