RSSAmplifier

Blog

ijrussell

Recent content on ijrussell

ijrussell.github.ioRSS feed ↗15 posts

Latest posts

Celebrating 5 Years In Production

(This post is part of the 2024 F# Advent Calendar.) We started working on a new cloud-based SaaS product called GPS Aggregation (GPSA) in July 2019 for a spin-off of a large Austrian Logostics Company. We were one of two products being developed, the other being for Estimated Time of Arrival (ETA) calculations, which we would be providing raw data for. By the end of 2019 we were in production with…

About

My name is Ian Russell and I live near Coventry, UK. I’m a .NET Distributed Systems Specialist (C# & F#) and an experienced Domain-Driven Design practitioner. I’ve been writing software for nearly 30 years, mostly in the .NET (Core) space (C# since 2003 and F# since 2010). I’ve presented sessions at .NET User Groups and community conferences around the UK since 2010, mainly about…

Essential F#

Essential F# is a FREE 200-page practical ebook aimed at efficiently getting you up to speed with the essentials of functional-first programming in F#. It will help you to discover why F# is such a popular language with those who have spent time learning its secrets. You do not need to know any experience in Mathemetics, Category Theory, or Functional Programming to read this book. Essential F# is…

Free F# Training in 2024

Some exciting news. I’m teaming up with the Amplifying F# crew to bring free 2-hour weekly sessions for folks wanting to learn F#, starting early in 2024. Further details will be added in the coming days/weeks on the Amplifying F# website. Watch the announcement message from Roland Schlenker on YouTube. Prerequisites There will be an assumption that you have very little or no experience in…

Discriminated Unions in C#

This post was part of C# Advent Calendar 2023 run by @mgroves. Native Discriminated Unions in C# are a hot-topic for many in the Community. They have been a core F# feature from version 1.0 in 2005 and are used for many things in F# codebases including: Handling Nulls and Missing Values Handling Business Errors Domain Modelling There was a discussion document released earlier this year by the C#…

Integrating With Over 300 GPS Providers

Two of my ex-colleagues at Trustbit, Christian Folie and Daniel Weller, gave a presentation at the kanDDDinsky 2022 Conference in Berlin about a SaaS product we built that integrated with over 300 GPS Providers from across Europe to aggregate GPS data for a large European transport organisation. They tell the story of how we used Domain-Driven Design, Functional Programming in F#, and agile…

Introduction to TDD

In this post, we are going to do some Test-Driven Development (TDD). I find TDD very useful because the tests are the first user of my code, which means that if the tests are hard to write, then the code will be difficult to use. Many folks struggle with TDD, and unit testing in general, because they test the wrong things. Your tests should only validate observable behaviour, not the…

My Favourite Development Books 2023

I have read hundreds of books over the years and some of them have had a profound effect on me. In this post, I list my all-time favourite software development books. As you can imagine, this always proves to be a very difficult task; I could easily have tripled the size of the list this year, such has been the quality of recent publications, but keeping it small forces me to make hard decisions.

Testing C# with F#

In modern .Net Solutions, projects using different languages can happily co-exist. This means that you can use the best tool for the job such as F# for your domain logic and C# for your UI or as we do in this blog post, test C# code with F#. This will be the first post of many on .Net Interop. Anything that increases the use of F# has to be a good thing.

Retrospective 2022

I don’t normally do retrospectives but this year has been extraordinary for a number of reasons with soaring highs and deep lows. We’ve also had a long period of enforced isolation due to COVID Restrictions that adversely affected me more than I realised at the time. I’ve been writing code professionally for over 25 years, but have been wondering for a while if there are other…

Introduction to Interfaces in Go

In the last post, we looked at how to solve the use case from Chapter 1 of my Essential F# ebook using my limited knowledge of Go. In this post, we will use my new understanding of interfaces to solve the same problem. Getting Started Open the folder you created in the last post in VS Code. Add two new files: customer2.go and customer2_test.go to the folder. Add the following code to the top of…

I'm Learning to Program in Go

I’ve set myself the task of learning Go whilst I work out what I want to do next with my life. I have read For the Love of Go by John Arundel cover to cover and back again and have just started his next book, The Power of Go. I’m going to try to deliver at least one post per week, solving a new problem each time. I’m under no illusions that my first few posts will not be in any…

A More Efficient Solution of the Shortest Route Kata

This post describes how I improved on my submission to the Trustbit Transport Tycoon 2 Episode 2.1 problem. The blog post showing how I arrived at the original solution can be found at https://trustbit.tech/blog/2022/4/26/solving-transport-tycoon-2-episode-21-with-f. The task is to find the shortest route between two stations given a dataset of connections. See…

Essential F# ebook

Essential F# is a practical book aimed at efficiently getting you up to speed with the essentials of functional-first programming in F#. It will help you to discover why F# is such a popular language with those who have spent time learning its secrets. Essential F# is targeted at folks wanting to learn F# and assumes that the reader has no real knowledge of F# or functional programming. Some…

My Favourite Development Books

I have read hundreds of books over the years and some of them have had a profound effect on me. In this post, I will list my all-time favourite software development books. As you can imagine this has proven to be a very difficult task; I could easily have doubled the size of the list but keeping it small forces me to make decisions. So, here it is - My 10 favourite development books (in…