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

E-Book

E-Book: Transition von SAP ByDesign zu S/4HANA Cloud

Sorgen Sie für einen reibungslosen Übergang von SAP Business ByDesign zu S/4HANA Public Cloud. Lernen Sie die wichtigsten Unterschiede, Best Practices und einen Schritt-für-Schritt-Plan kennen.

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.

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

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 opens a new chapter in the USA: Nick Howser is our new CEO! With 13+ years in the Atlassian ecosystem and a strong focus on customer success, he will drive growth in the US.

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!

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. At the same time, a change of service provider became necessary, which meant that all components of the IAM had to be moved to a new data center.

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.

Referenz 8/8/22

Interdisciplinary collaboration at C&A with Atlassian

To homogenize the toolchain TIMETOACT replaced two independent ticketing systems for C&A Services GmbH &Co. with the Atlassian product range. With this step into the enterprise cloud, the fashion retailer is putting is putting an exclamation mark on cross-departmental and cross-location digital collaboration.

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

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.

Referenz 4/22/21

Flexibility in the data evaluation of a theme park

With the support of TIMETOACT, an theme park in Germany has been using TM1 for many years in different areas of the company to carry out reporting, analysis and planning processes easily and flexibly.

Referenz 3/30/22

License and software consulting from a single source

TIMETOACT has been supporting the sports retailer for more than two years, not only for the support of the ILMT, but also for consulting on IBM Cognos - which was part of the IBM audit, among other things.

Blog

Crisis management & building a sustainable future with AI

Non-profit organizations develop AI models to tackle global challenges - and draw lessons for businesses worldwide

Blog

Responsible AI: A Guide to Ethical AI Development

Responsible AI is a key requirement in the development and use of AI technologies. You can find everything you need to know here!

Kompetenz 7/29/21

AI - A technology is revolutionizing our everyday lives

For ARS, AI is an increasingly natural and organic part of software engineering. This is particularly true in cases where it is an integral part of applications and functions.

Bleiben Sie mit dem TIMETOACT GROUP Newsletter auf dem Laufenden!