Articles
Vibe Coding a Real Site with AI, Vercel V0, and Cursor
Apr 25, 2025
๐
7 minutes read๐
ArticleLately, I've been thinking a lot about "vibe coding" โ moving fast, staying in flow, and using AI to accelerate idea exploration rather than getting bogged down in setup.
"Vibe coding," a term popularized by AI researcher Andrej Karpathy, refers to levera...
Vibe Coding with AI
Apr 25, 2025
๐
5 minutes read๐
ArticleThereโs a new kind of developer flow happening, and it doesnโt start with types, diagrams, or frameworks.
It starts with a vibe.
What Is โVibe Codingโ?
We used to architect before we coded. Debate folder structures. Argue about types.
Now? You have an ...
"O" so SOLID
Apr 9, 2025
๐
6 minutes read๐
ArticleThe 'O' in SOLID stands for the Open/Closed Principle. This principle suggests that software entities (classes, modules, functions, etc.) should be open for extension but closed for modification. In other words, you should be able to add new functionality ...
GitHub code spaces
Oct 5, 2024
๐
2 minutes read๐
ArticleToday I found myself away from my computer, but I needed to update something on my site. I had my iPad, so I decided to give code spaces a try. Considering Iโm using a tablet without a keyboard, or a mouse, the experience was generally pleasant.
Itโs not...
London Marathon 2024 - Race Report
Apr 21, 2024
๐
16 minutes read๐
ArticleThis 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
...
A guide to GROQ
Aug 5, 2023
๐
14 minutes read๐
ArticleGROQ (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
...
GROQ vs GraphQL
Aug 4, 2023
๐
2 minutes read๐
ArticleWhile 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...
Tuple to Object - TypeScript Challenge Explained
Mar 13, 2023
๐
less than a minute read๐
ArticleMy 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
Mar 12, 2023
๐
less than a minute read๐
ArticleMy 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
Mar 11, 2023
๐
about a minute read๐
ArticleMy 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
Mar 9, 2023
๐
about a minute read๐
ArticleIn 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...