Archive ai 1st Nov 2026 In Two Minds We rejected the ghost in the machine, then rebuilt it in a datacenter. ai 30th Oct 2026 How Swatcher builds a paint palette How Swatcher builds paint palettes where every colour is a real paint: a Haiku reader, PHP shortlists, and a strict enum-constrained composer, plus speed and cost numbers. personal 27th Oct 2026 Way Back When A look back at early web development: phpBB signatures, Flash and Dreamweaver in college, IE6 hacks and spacer GIFs, CSS3 Pie, and a first job with WordPress. ai 25th Oct 2026 I've Been Here Before I asked AI to migrate my site to a hand-rolled CMS with custom writing tools. ai 3rd Sept 2026 Swatcher 2.0 Swatcher has been rebuilt with lessons learned. ai 25th Jul 2026 A Collection of Music Tools AI coded music tools I use to write music and learn about the mixing process. music 10th May 2026 Making More Music I want to explore different styles, and play whatever it is I feel like playing. This time: soundtrack style music. music 2nd May 2026 Hey, I wrote a song I've been recording a few bits over the last while, and I've finally put together a song. ai 20th Feb 2026 What's next for Swatcher The journey so far, and what's coming next. Is it successful? javascript 15th Jan 2026 Swatcher Updates What has been going on with Swatcher since launch, what's working, what's changing? seo 29th Sept 2025 Single Page Application SEO with Edge Functions Use Netlify Edge Functions and cheerio to inject title, description and theme-color meta tags into a single page app before it loads, improving SEO. api 24th Sept 2025 How To: Build and Deploy an API How to build and deploy an API using Express, TypeScript and Fly.io javascript 17th Aug 2025 Served Collect recipes from Instagram, TikTok and the web. Build meal plans and shopping lists and compare prices in some Irish stores. javascript 4th Aug 2025 Swatcher Homepage Redesign Playing around with the Swatcher homepage to simplify things and entice people to explore. javascript 21st Jul 2025 Swatcher Capture colours from the real world with your camera, explore thousands of paint colours, create palettes and collections. javascript 22nd Jun 2025 Swatch This: June 22nd Updates You can now use text prompts, check colour contrast and view previous results. javascript 19th Jun 2025 Swatcher: Exports Exporting colour palettes to different formats like JSON, Tailwind, CSS... javascript 14th Jun 2025 Injecting Personality A couple of minor tweaks to add some personality to this website. javascript 11th Jun 2025 Working with Claude and Images Sending images to Claude for analysis. javascript 7th Jun 2025 Swatch This An image analysis tool to generate a colour scheme for you. 17th Oct 2024 Video: Home-cooked Feed Reader Little walkthrough of my local feed reader and some thoughts. 7th Aug 2024 DNS Propagation The weight of waiting. 16th Jun 2024 Got Married Great days. Great rest required. regex 17th Apr 2024 Tidy Up with Regex Using regex to quickly tidy up all the areas in my site where I'm using a shortcode instead of markdown links. css 3rd Mar 2024 Tailwind Is... I don't get all this hate for Tailwind. It's not going anywhere, so it's probably time to move on. html 20th Feb 2024 Using the Least Amount of JavaScript Applying minimal JavaScript by resorting to less than standard ways of doing things. html 10th Feb 2024 The Web Should Be Simple We sure know how to overcomplicate things. Or maybe we don't understand the building blocks of what makes a website accessible. html 28th Jan 2024 Rediscovering the Joy in Coding Going back to basics by putting aside the typical frameworks and making my own rules. 7th Jan 2024 The Year Ahead What's the plan for the year? Thinking about what I want to achieve. html 7th Jan 2024 Popover API For many years, we had to do this manually or rely on third-party solutions. Now, though, it's a different world. In this post we'll take a quick look at how it works with a demo. 5th Jan 2024 New Year, New Design It's a brand new year full of the same old stuff, but hey look, a new design for the site! 10th Dec 2023 Visiting Family & Friends Visiting the family and their pets back home in Limerick. javascript 4th Dec 2023 Scrollable Container Controls with React Hooks Revisiting some old code to convert it to using hooks. react 4th Dec 2023 Multi-Select Checkboxes with React Hooks An old code demo revised to use React Hooks. 28th Nov 2023 Lenore and the new routine Lenore's routine and how it fits around the other two cats. cats 25th Nov 2023 New Kitten A new kitten joins the crew javascript 13th Apr 2023 Distant Sound Small experiment with sound based on scroll distance. 17th Sept 2022 Fixing MS Edge Battery Drain on M1 Mac Edge was destroying the battery life on my Macbook Air M1 22nd Aug 2022 Vue Timeline An infinite scroll timeline component written for Vue 3. 1st Jul 2022 New Job 🎉 Interesting times when it comes to career progression. Back to React. 22nd Dec 2020 My 2020 A recap of the year. javascript 25th Oct 2020 Vue Data Table Exploring how to tackle a data table in Vue without relying on third-party solutions. javascript 3rd Oct 2020 Coping with Bad Dates Deriving multiple date ranges from a single one when presented with unavailable dates. css 7th May 2020 IE11 Placeholder Transition Issue A combination of autoprefixer and transitions styles broke an input in IE11. javascript 4th May 2020 DraftJS: Mentions Plugin with Scrolling and Keyboard Navigation Solving the problem of a scrolling results list with the DraftJS mentions plugin. javascript 22nd Mar 2020 Text Selection Particle Effects Creating particle effects based on text selection using the Web Animations API. javascript 22nd Jun 2019 Building an Appreciation System Using Google Sheets as a back-end, we can record likes on anything we want on a static site. 9th Jun 2019 Self-Host Google Fonts Self-hosting Google Fonts gives you more control over performance and loading of your fonts. javascript 28th May 2019 Image Parallax and Blur with Tornis Using the Tornis library to create a parallax and blur effect on a cover image while scrolling. 22nd May 2019 Task Management How I handle task management - a combination of software with pen and paper depending on the context. react 20th May 2019 Multi-Select Checkboxes with React Listen for hotkeys to select multiple checkboxes in a few clicks. 19th May 2019 Web Cloaks A few observations on techniques that are used to disguise a problem with a website. inspiration 17th May 2019 Clever Logos A collection of clever logos. Great for getting the brain going when you're looking for inspiration. javascript 15th May 2019 Derived Stores With Svelte Getting up to speed with derived stores in Svelte and how they compare to something like computed properties in Vue. javascript 3rd May 2019 Scrollable Container Controls with React Managing a scrollable container with React by adding button controls, and seeing when they should be enabled or disabled. cms 28th Sept 2018 Vapid CMS Vapid is a content management system that has a very smart way of letting you focus on the code, while constructing a dashboard based on your templates. design 27th Sept 2018 Website Inspiration A few things that got me excited to try my hand at redesigning my website. That's not to say I'm a designer, cause I'm not. javascript 15th Sept 2018 HTML Imports & Component-Driven Development Playing around with HTML Imports before deprecation, pining for a native, relatively hassle-free way of building a component library. performance 9th Sept 2018 Improving Client-Side Performance A few ways in which we can improve client-side performance focusing on images, third-party scripts and more. javascript 8th Sept 2018 Building a Table of Contents with the Intersection Observer API How to build a live-updating table of contents using Intersection Observer. analytics 24th Aug 2018 Fathom Analytics Installing Fathom analytics, an open-source alternative to traditional web analytics, on Heroku. external-links 21st Aug 2018 Avatars.io Avatars.io lets you quickly grab a URL to an avatar of yours from a few different services cms 19th Aug 2018 A Signal in the Static Moving from Craft CMS to Hugo and Netlify life 24th Jul 2018 What Do I Know? The web moves fast, but it doesn't invalidate what you already know. javascript 29th May 2018 Create an RSS Feed Reader javascript 12th May 2018 Upgrading to webpack 4 Moving from Laravel Mix to webpack 4, and the performance benefits. javascript 15th Apr 2018 Do Not Track How to use window.doNotTrack to decide when to use tracking. 20th Mar 2018 My Local Environment Timeline wordpress 8th Mar 2018 The Weary WordPress Dev css 2nd Mar 2018 Theming with CSS Custom Properties javascript 23rd Feb 2018 Page Visibility API 19th Feb 2018 Use AppleScript to Automate with iTerm javascript 12th Feb 2018 DIY RSS Feed Reader Building your own Feed Reader with Vue.js and Node javascript 4th Feb 2018 Craft Plugins Browser A small project to browse Craft CMS plugins by popularity. css 2nd Feb 2018 Variable Fonts javascript 9th Jan 2018 Client-Side Search with Algolia Adding client-side search with Algolia. javascript 8th Jan 2018 Building My Site Part III: Fine Tuning Final tweaks and performance improvements for my website. cms 7th Jan 2018 Building My Site Part II: Setup Setting up my new website with Craft CMS. craft 6th Jan 2018 Building My Site Part I: Decisions Building my website with Craft CMS. javascript 18th Dec 2017 Building a 'Now Playing' Feature Show the world what you're listening to because it's important. javascript 19th Jul 2017 Tip for React PropTypes with Storybook 6th Aug 2016 First Seven Jobs 10th Apr 2016 Resourceful Learning javascript 14th Feb 2016 Vue.js and Spotify Experiment 12th Sept 2015 Up and Atom css 25th Aug 2015 The (Clip) Path of Least Resistance php 23rd Aug 2015 Timber and Twig Reignited My Love for WordPress javascript 27th Jul 2015 Expanding menu with GSAP javascript 25th Jul 2015 Lightweight Utility Object 19th Jul 2015 Responsibilities of a Web Person php 9th Jul 2015 Getting Started with WordPress and Unit Testing 26th Jun 2015 Pace Yourself javascript 5th Apr 2015 Building a full-screen overlay A JavaScript approach to a full-screen overlay css 17th Mar 2015 Quickly build a simple grid with Sass 8th Feb 2015 Wait, what am I meant to be doing again? javascript 9th Jan 2015 Web Project Boilerplate - Browserify with ES6 javascript 14th Dec 2014 Foundation 5.5 javascript 13th Dec 2014 Front-end Strategy with a sprinkling of ExpressionEngine
ai 30th Oct 2026 How Swatcher builds a paint palette How Swatcher builds paint palettes where every colour is a real paint: a Haiku reader, PHP shortlists, and a strict enum-constrained composer, plus speed and cost numbers.
personal 27th Oct 2026 Way Back When A look back at early web development: phpBB signatures, Flash and Dreamweaver in college, IE6 hacks and spacer GIFs, CSS3 Pie, and a first job with WordPress.
ai 25th Oct 2026 I've Been Here Before I asked AI to migrate my site to a hand-rolled CMS with custom writing tools.
ai 25th Jul 2026 A Collection of Music Tools AI coded music tools I use to write music and learn about the mixing process.
music 10th May 2026 Making More Music I want to explore different styles, and play whatever it is I feel like playing. This time: soundtrack style music.
music 2nd May 2026 Hey, I wrote a song I've been recording a few bits over the last while, and I've finally put together a song.
ai 20th Feb 2026 What's next for Swatcher The journey so far, and what's coming next. Is it successful?
javascript 15th Jan 2026 Swatcher Updates What has been going on with Swatcher since launch, what's working, what's changing?
seo 29th Sept 2025 Single Page Application SEO with Edge Functions Use Netlify Edge Functions and cheerio to inject title, description and theme-color meta tags into a single page app before it loads, improving SEO.
api 24th Sept 2025 How To: Build and Deploy an API How to build and deploy an API using Express, TypeScript and Fly.io
javascript 17th Aug 2025 Served Collect recipes from Instagram, TikTok and the web. Build meal plans and shopping lists and compare prices in some Irish stores.
javascript 4th Aug 2025 Swatcher Homepage Redesign Playing around with the Swatcher homepage to simplify things and entice people to explore.
javascript 21st Jul 2025 Swatcher Capture colours from the real world with your camera, explore thousands of paint colours, create palettes and collections.
javascript 22nd Jun 2025 Swatch This: June 22nd Updates You can now use text prompts, check colour contrast and view previous results.
javascript 19th Jun 2025 Swatcher: Exports Exporting colour palettes to different formats like JSON, Tailwind, CSS...
javascript 14th Jun 2025 Injecting Personality A couple of minor tweaks to add some personality to this website.
17th Oct 2024 Video: Home-cooked Feed Reader Little walkthrough of my local feed reader and some thoughts.
regex 17th Apr 2024 Tidy Up with Regex Using regex to quickly tidy up all the areas in my site where I'm using a shortcode instead of markdown links.
css 3rd Mar 2024 Tailwind Is... I don't get all this hate for Tailwind. It's not going anywhere, so it's probably time to move on.
html 20th Feb 2024 Using the Least Amount of JavaScript Applying minimal JavaScript by resorting to less than standard ways of doing things.
html 10th Feb 2024 The Web Should Be Simple We sure know how to overcomplicate things. Or maybe we don't understand the building blocks of what makes a website accessible.
html 28th Jan 2024 Rediscovering the Joy in Coding Going back to basics by putting aside the typical frameworks and making my own rules.
html 7th Jan 2024 Popover API For many years, we had to do this manually or rely on third-party solutions. Now, though, it's a different world. In this post we'll take a quick look at how it works with a demo.
5th Jan 2024 New Year, New Design It's a brand new year full of the same old stuff, but hey look, a new design for the site!
javascript 4th Dec 2023 Scrollable Container Controls with React Hooks Revisiting some old code to convert it to using hooks.
react 4th Dec 2023 Multi-Select Checkboxes with React Hooks An old code demo revised to use React Hooks.
17th Sept 2022 Fixing MS Edge Battery Drain on M1 Mac Edge was destroying the battery life on my Macbook Air M1
javascript 25th Oct 2020 Vue Data Table Exploring how to tackle a data table in Vue without relying on third-party solutions.
javascript 3rd Oct 2020 Coping with Bad Dates Deriving multiple date ranges from a single one when presented with unavailable dates.
css 7th May 2020 IE11 Placeholder Transition Issue A combination of autoprefixer and transitions styles broke an input in IE11.
javascript 4th May 2020 DraftJS: Mentions Plugin with Scrolling and Keyboard Navigation Solving the problem of a scrolling results list with the DraftJS mentions plugin.
javascript 22nd Mar 2020 Text Selection Particle Effects Creating particle effects based on text selection using the Web Animations API.
javascript 22nd Jun 2019 Building an Appreciation System Using Google Sheets as a back-end, we can record likes on anything we want on a static site.
9th Jun 2019 Self-Host Google Fonts Self-hosting Google Fonts gives you more control over performance and loading of your fonts.
javascript 28th May 2019 Image Parallax and Blur with Tornis Using the Tornis library to create a parallax and blur effect on a cover image while scrolling.
22nd May 2019 Task Management How I handle task management - a combination of software with pen and paper depending on the context.
react 20th May 2019 Multi-Select Checkboxes with React Listen for hotkeys to select multiple checkboxes in a few clicks.
19th May 2019 Web Cloaks A few observations on techniques that are used to disguise a problem with a website.
inspiration 17th May 2019 Clever Logos A collection of clever logos. Great for getting the brain going when you're looking for inspiration.
javascript 15th May 2019 Derived Stores With Svelte Getting up to speed with derived stores in Svelte and how they compare to something like computed properties in Vue.
javascript 3rd May 2019 Scrollable Container Controls with React Managing a scrollable container with React by adding button controls, and seeing when they should be enabled or disabled.
cms 28th Sept 2018 Vapid CMS Vapid is a content management system that has a very smart way of letting you focus on the code, while constructing a dashboard based on your templates.
design 27th Sept 2018 Website Inspiration A few things that got me excited to try my hand at redesigning my website. That's not to say I'm a designer, cause I'm not.
javascript 15th Sept 2018 HTML Imports & Component-Driven Development Playing around with HTML Imports before deprecation, pining for a native, relatively hassle-free way of building a component library.
performance 9th Sept 2018 Improving Client-Side Performance A few ways in which we can improve client-side performance focusing on images, third-party scripts and more.
javascript 8th Sept 2018 Building a Table of Contents with the Intersection Observer API How to build a live-updating table of contents using Intersection Observer.
analytics 24th Aug 2018 Fathom Analytics Installing Fathom analytics, an open-source alternative to traditional web analytics, on Heroku.
external-links 21st Aug 2018 Avatars.io Avatars.io lets you quickly grab a URL to an avatar of yours from a few different services
life 24th Jul 2018 What Do I Know? The web moves fast, but it doesn't invalidate what you already know.
javascript 12th May 2018 Upgrading to webpack 4 Moving from Laravel Mix to webpack 4, and the performance benefits.
javascript 4th Feb 2018 Craft Plugins Browser A small project to browse Craft CMS plugins by popularity.
javascript 8th Jan 2018 Building My Site Part III: Fine Tuning Final tweaks and performance improvements for my website.
javascript 18th Dec 2017 Building a 'Now Playing' Feature Show the world what you're listening to because it's important.
javascript 5th Apr 2015 Building a full-screen overlay A JavaScript approach to a full-screen overlay