Articles



Vibe Coding a Real Site with AI, Vercel V0, and Cursor

Apr 25, 2025

๐Ÿ•‘
7 minutes read
๐Ÿ“–
Article
Lately, 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
๐Ÿ“–
Article
Thereโ€™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
๐Ÿ“–
Article
The '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
๐Ÿ“–
Article
Today 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
๐Ÿ“–
Article
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 ...

A guide to GROQ

Aug 5, 2023

๐Ÿ•‘
14 minutes read
๐Ÿ“–
Article
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 ...

GROQ vs GraphQL

Aug 4, 2023

๐Ÿ•‘
2 minutes read
๐Ÿ“–
Article
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...

Tuple to Object - TypeScript Challenge Explained

Mar 13, 2023

๐Ÿ•‘
less than a minute read
๐Ÿ“–
Article
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

Mar 12, 2023

๐Ÿ•‘
less than a minute read
๐Ÿ“–
Article
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

Mar 11, 2023

๐Ÿ•‘
about a minute read
๐Ÿ“–
Article
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

Mar 9, 2023

๐Ÿ•‘
about a minute read
๐Ÿ“–
Article
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...