My name is Mark Smithson and this site is a collection of my thoughts on various topics.

I am a software developer with an interest in product development and have started and run a number of companies. Other interests include classic cars, motor racing, skiing and cycling

I hope you find the content on this site interesting and would love to hear from you if you have any comments or thoughts.

Latest articles

HHandling undefined in Typescript

11.08.20231 Min Read — In Development

Today I learned a neat way of handling in Typescript. Suppose you have retrieved some data from an API which has optional fields. The Typescript model may look like this: The type of will be . If we…

SSQL Refresh - Row Numbers and Ranks

21.12.20223 Min Read — In Development

Window Functions Part 2 One of the most common uses for window functions is to return the first row for ina group or partition. To demonstrate this we will find the first flight for each flight number…

SSQL Refresh - Window Functions Part 1

04.12.20225 Min Read — In Development

When I first saw a Window Function, I dismissed it as another way to do a . Having learnt more about them, they are now another valuable tool in my SQL toolbox. Let's get started with an introduction…

SSQL Refresh - Common Table Expressions

09.09.20222 Min Read — In Development

I started a new role where our system stores data in a PostgreSQL database. It has been some time since I have used SQL in anger, having worked on systems using NoSQL databases for the past 10 years…

BBuilding and Deploying Software

10.01.20224 Min Read — In Development

A PagerDuty notification has just woken you up, there is a problem with your production site. You check the site and logs and everything seems OK at the moment, so you close the alert and try and get…

IInvoking Scala Methods

01.12.20211 Min Read — In Development

I am learning Scala at the moment. One of the things that seemed strange is the ability to invoke methods in a number of different ways. For example all the following are valid and equivalent: Why…

UUpdates across multiple GitHub repositories

27.11.20213 Min Read — In Development

You have adopted a microservices architecture and now have a number of services in different repositories. Perhaps you have created a template repository for these services and used this for all the…

PPulumi Function Serialisation by Example

15.11.202111 Min Read — In Development

Pulumi is an Infrastructure as Code tool, similar Terraform, except that instead of using a specialised language like hcl or yaml, you use general purpose programming languages including Javascript…

JJest Mocking Patterns

27.08.20216 Min Read — In Development

Getting your head around using Jest to mock dependencies, particularly with Typescript can be difficult. The documentation focusses on features, making it challenging to work out how to make use of…

112 Factor App Secrets Management

31.05.20213 Min Read — In Development

The Twelve-Factor App describes a 12 principles for building Software-as-a-Service (SaaS) apps. The Third Factor "Config" states that there must be strict separation of config from code. It suggests…

SService Entity Identifiers

15.05.20213 Min Read — In Development

In a service oriented architecture, different parts of the system domain are managed by different services. A Order Service may manage orders and order items, whilst a Customer Service manages…

WWalking Skeleton

18.10.20201 Min Read — In Development

It is common in software projects to encounter delays when you are trying to deploy the software or to get the system into production. Developers who have been working on the system struggle to…

AAnxiety Driven Development

04.10.20202 Min Read — In Development

Creating software involves doing something that hasn’t been done before - it is inherently an activity with uncertainty and risk. It is not surprising that software projects are late, use more…

UUsing Branching with Terraform

10.03.20191 Min Read — In Cloud

When writing the code for my article on Paired Security Groups in AWS, I made use of terraform to setup the various different configuration I wanted to demonstrate. This triggered some thoughts about…

PPaired Security Groups in AWS

09.03.20193 Min Read — In Cloud

Security Groups are virtual firewalls for instances and other resources in AWS. They allow you to define sets of rules for incoming and outgoing traffic. EC2 instances can have multiple security…

HHigh Output Management

05.01.20193 Min Read — In Books

Book Cover - High Output Management by Andy Grove This book was first published in 1983 and revised in 1995 by Andrew Grove who was the Chairman and CEO of Intel. Some of the examples in the book show…


03.01.20191 Min Read — In General

As you can see this site is currently being built. It is built using Gatsby and the Minimal Blog Starter https://github.com/LekoArts/gatsby-starter-minimal-blog. It is deployed using Netlify. Once the…

© 2019-2022 by Mark Smithson. All rights reserved.
Last build: 14.08.2023