Monday, May 20, 2024
Despite it being a scorching day, I managed to keep my head cool and beat my target time, with a new PB to boot. There were a number of lessons I learnt from the London Marathon a month ago, which I put into action pre and during the race which really paye...
Sunday, April 21, 2024
This is THE race I have been trying to run for years, and when it finally came, it didnβt disappoint despite a sub-par performance on the day. I accomplished most of what I set out to achieve, and had an amazing day.
Goals
3:20:00 - Fail
3:30:00 - Fail
...
Friday, March 1, 2024
As many of you my know, I'm passionate about my running and the environment, and this year I've been fortunate enough to secure a spot in the London Marathon, and I'm running not just for personal achievement, but to support a cause close to my heart: WWF,...
Monday, January 29, 2024
If you manage to disable the suggested workouts feature on your Garmin Watch, then there is a quick way to re-enable it.
Go to your "Race calendar" > Select your event > Click start/stop button and an option for "Daily suggestions" will appear. You can c...
Saturday, August 5, 2023
GROQ (Graph Relational Object Queries) is a query language that was created by Sanity to query CMS data. Itβs a flexible query language and the use of projections makes it a powerful tool to construct complex and efficient data queries.
GROQ vs. GraphQL
...
Friday, August 4, 2023
While GROQ is nominally similar to GraphQL, there are subtle differences. Here's a quick run down of the similarities and differences, so that you can understand the reasons for GROQs existence, and some of itβs use-cases, before using it yourself
Both us...
Sunday, May 21, 2023
In working with Sanity and GROQ, there might be instances where you need to filter data using an optional field, and want a default value to kick in when null values are returned. For instance, consider an __i18n field added after a significant amount of c...
Saturday, May 20, 2023
When dealing with multiple sets of similar data, it's not uncommon to encounter overlapping filters. Let's say you need to pull up all your articles, then categorize them into two subsets: English and French. You might think you need three separate queries...
Saturday, May 6, 2023
The webhooks within Sanity CMS offer an amazingly powerful way to send data to 3rd parties when changes to content occur. However, the webhooks often require extra data retrieval to ensure the consuming service has all the necessary information for appropr...
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 ...
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...