Who am I?
I am a software engineer based in London, UK.
How is this website built?
This website was created using the T3 Stack.
It's built on the Next.js react framework and primarily uses Static Site Generation (SSG) to generate pages at build-time and Incremental Static Regeneration (ISR) to keep those pages up to date.
I'm using the free tier of Hygraph as a headless CMS to store the contents of blog posts. Even this About page content you're reading is hosted there. The content is served to the website via a GraphQL API, and I extract the relevant TypeScript query types using the GraphQL Code Generator.
tRPC is used to build end-to-end typesafe APIs; any changes made to the interface of an endpoint built in tRPC will be reflected on the client. The Zod library is used in conjunction with tRPC to declare the schema of the endpoint's interface. No more accidentally passing in incorrect or missing parameters.
Styling is implemented with tailwindcss. Rather than write CSS in modules, JSS or styled-components, which can grow the served CSS files indefinitely, tailwindcss offers a finite set of utility classes to style elements. This 'utility-first' approach ensures the served CSS file does not grow as duplicate styles are added, and purging means we only bundle the used tailwindcss classes. Styling elements using utility classes takes a little getting used to, but I can't see myself returning to the traditional route soon.
Finally, this is hosted using Vercel. I'm using it because of its integration with Next.js and because it's free and quick.
Why am I doing this?
I have no specific goals in mind. I like to program, and explaining topics helps reinforce what I've learnt. I particularly enjoy functional programming and type safety, so expect to see most topics revolve around that.