Carl Topham
Fullstack engineer
I’m a senior developer with 15+ years experience in front and backend development. Working with languages from TypeScript & Node to Python and PHP. I have a deep understanding of modern web technologies and a passion for creating dynamic user interfaces, with robust backends and services.
Recent articles
Tuple to Object - TypeScript Challenge Explained
Monday, March 13, 2023
My solution to the Tuple to Object TypeScript Challenge as part of my journey to Understanding the TypeScript Challenges.
Given an array, transform it into an object type and the key/value must be in the provided array.
Solution
Loop over the values in ...
Readonly - TypeScript Challenge Explained
Sunday, March 12, 2023
My solution to the Readonly TypeScript Challenge as part of my journey to Understanding the TypeScript Challenges.
Given a type T, the utility should set the readonly keyword for all properties.
Solution
Explanation
{ } return an object/record type
re...
Pick - TypeScript Challenge Explained
Saturday, March 11, 2023
My solution to the Pick TypeScript Challenge as part of my journey to Understanding the TypeScript Challenges.
The MyPick generic type is a custom version of the native Pick generic function. Given a type T and a union of keys K, the generic function shou...
Uses for the TypeScript ‘as’ assertion
Thursday, March 9, 2023
In TypeScript there is a as assertion. There are two reasons for this annotation.
Firstly it's a way to tell TypeScript that a value is of a certain type which differs from what is being inferred, or has already been set. Essentially, it's used to tell Ty...
Understanding the TypeScript Challenges
Wednesday, March 1, 2023
TypeScript has a robust set of built-in utility types. There are a number of ways to gain better understanding of TypeScript and recreating these utilities is one if the best ways. To guide this learning track it's a good idea to try and complete TypeScrip...
Recent projects
Migrate carl-topham.com from Gatsby to Next.js
Rebuild my portfolio site (carl-topham.com) in Next.js, migrating from Gatsby
Running kit bag
Interactive kit bag checklist app to ensure that I always have the right running kit for training, races and all weather!
SmartSave & LiveLend WebApps
React.js Redux WebApps using REST APIs with Auth.
Chord generator script
Generates note combinations for different keys & chords
Advanced Strava Stats
Sync your Strava data and analyse it in extra ways than the official app. React, Redux, Saga, Axios & D3