Latest post

I blog about a lot of tech and learning topics. These posts are a combination of tutorials and thinking. I often revisit these posts and update them both as technologies change and my thinking changes.

Subscribe to the newsletter if you don't want to miss developments here and things I find or create.

Importing SVGs to Next.js

Teacher Developer Teacher

Being Smart !== Feeling Smart

Smile Multi Factor Authentication

Why Headless WordPress is an awesome choice

Headless WordPress: REST or GraphQL

WTF does headless mean?

8 Advantages of Headless WordPress

Headless WordPress: REST or GraphQL

Creating calendar events from a Google form

How are JavaScript and TypeScript related?

Authentication with Next.js API routes

Dealing with a database with Next.js API routes

Day 1 - Up and Running

New Learning Adventure - Typescript

Keeping secrets safe with Next.js API routes

What are Next.js API routes all about?

Why does your frontend application need a server?

Got a ton of server and database issues - is headless WordPress the answer?

Discord Inktober Bot (Netlify functions to the rescue!)

Creating a Netlify serverless function to send messages on Discord.

Creating an upload route in Express

A post and egghead video

Headless WordPress: Where should you host the WordPress instance?

Convinced by headless? Here are some options for hosting the WordPress instance.

Is Blitz.js worth your time?

I streamed working through the Blitz tutorial and this is what I found.

How to make sure your Express API doesn't get abused?

Authenticating requests to your API with JWTs

Learning React

Some of my recommended resources for learning React

Adding todos with SMS

GTD with Emacs, Dropbox and Twilio

3 Pillars of Learning

Thoughts about how to make learnings adventures transformative

Which programming language should I choose?

Thoughts about programming languages.

What is in a newsletter?

A brief survey of newsletters I read

Cancelling The Master Branch

Stop your Git projects having `master` as the primary branch

Developing an Express API

Developing the backend for a React app with Express

Adding Toast Notifications to Next Apps

Use react-toast-notifications to add toasts to Next Apps

Webmentions and Campfires

How do we know people are talking to us?

What is a digital garden?

Have you heard the term? What does it mean?

Streamed and Released a npm package!

Mob Coding: Gatsby Digital Garden

Working alongside some great egghead people to explore Gatsby digital gardens

Reflecting on the KCD React Marathon

What I learnt by attending 8x5hr workshops with Kent C. Dodds

Kent C. Dodds - Building React Apps Part 2

workshop - Building React Apps (the Sequel)

Kent C. Dodds - React Suspense

Workshop 7/8 - looking at experimental React suspense.

Premature Optimization

Is making a wiki a premature optimization?

Yak Shaving

How to get over yak shaving and do something interesting

Kent C. Dodds - React Performance

workshop - React Performance

Kent C. Dodds - Advanced Patterns

workshop - Advanced Patterns

Kent C. Dodds - Advanced Hooks

workshop - Advanced Hooks

Kent C. Dodds - Building React Apps Part 1

workshop - Building React Apps

Kent C. Dodds - React Hooks

workshop - React Hooks

Kent C. Dodds - React Fundamentals Workshop

workshop - React fundamentals

Advanced SQL Workshop

workshop on Advanced SQL

Getting around in SQL

Basic navigation in MySQL and PostgreSQL

Migrating from Create-React-App to Gatsby Stream

Migrating an existing CRA app to Gatsby

Why do I keep learning?

Why do I not stop learning after I have the basics?

Why do people stop learning?

Why do people stop learning after they get the basics?

Some learnings from my first 8 weeks freelancing

Python Geocoder: A Guide to Managing Locations in Your Apps

A brief exploration of how to use location data in applications.

Getting Started Quickly with Laravel Logging

A brief introduction to logging in Laravel.

Creating a Drupal Patch

Using the Drupal issue queue to contribute a patch

Protecting Credentials

Keeping credentials out of the webroot