Articles
You'll find articles I publish on Substack as well as technical posts here. You can read my Substacks directly at Life, the Universe, and STEAM and Ask me about my podcast.
Chartable is Dead, Long Live… Websites?
On Chartable being unset and conversion metrics.October 2, 20245 minsRSS to JSON with Make
Fetch RSS as JSON using webhooks and Make (formerly Integromat).September 10, 20244 minsPrevent scroll preservation on jump links in Next.js
Allow jump links to scroll to the correct position in Next.js.July 10, 20241 minsTest thrown errors in Next.js 14 with Storybook
Throw errors in Next.js components and make them testable in Storybook interaction testsJune 16, 20241 minsTesting Next.js 14 and Supabase
Pro tips for getting testing up and running with Next.js 14.May 29, 20242 minsHelp, I'm stuck in a time loop!
When code words and proving who we are in meat-space isn't just for science fiction and spies.May 21, 20248 minsTransfer assets between Meta Business Portfolios
The art of social-media management with Meta is apparently a convoluted one.May 15, 20242 minsNext.js ForwardRef Error in Storybook
Getting around interesting quirks with dynamically loading components in Next.jsMay 7, 20242 minsSystems thinking our biosphere
Conservation is a systems problem. Because it's all connected.March 24, 20249 minsDe-extinct our future
Bands get to come back for another round, why not our flora and fauna.February 18, 20246 mins‘I made this, so I own it’
Some ideas about 'ownership' in AI SaaS groups are making me channel Inigo Montoya when Vizzini keeps saying 'inconceivable'.January 8, 202411 minsSlugify headings for filenames in Obsidian
I was mildly inconvenienced in my quest for improved publishing workflows, so I figured out how to write an Obsidian plugin to slugify filenames from headings.December 31, 20233 minsInteractive Transcripts with YouTube & Descript
I recently added interactive show notes and transcripts to the STEAM Powered website. Here's how I did it.December 28, 20235 minsConvert Gist Links in Markdown to Embeds in Next.js
Convert unadorned gist links in markdown to React-compatible embeds in Next.js.December 24, 20232 minsGenerate QOTD in Obsidian templates
Programmatically insert quotes into Obsidian templates with TemplaterDecember 20, 20231 minsShare sessions across subdomains with Supabase
Quick snippet for sharing cookies across subdomains using Supabase auth.October 5, 20231 minsMigrate WordPress to Eleventy with Colocated Images
How I migrated old WordPress blogs to Eleventy with colocated image support.September 23, 20236 minsAccessing pathname in Next.js generateMetadata
An annoying hack to get access to the current pathname in Next.js 13 app router generateMetadata function.September 10, 20231 minsRecently, in workflow optimisation
An revision of tools for improved productivity and workflow management.August 28, 20235 minsSomething wicked this way comes
The one about why we need to talk about new technology.July 2, 20239 minsChatGPT, my drunk friend
A cursory foray into using ChatGPT for research purposes.April 30, 20238 minsKeeping it real while making reels
Reviewing my reel making strategy for podcast promotion.March 14, 202311 minsWhat I didn't know about podcast hosting platforms
Sharing what I've learned about podcasting lessons the long way so that you don't have to.January 15, 202312 minsFood for Thought
Some thoughts about climate change and the agricultural industry.January 8, 20236 minsConvert DeepGram to Descript transcript format
Use DeepGram transcripts in your Descript projects.January 1, 20231 minsProgrammatically Post to Mastodon with Make
Use web requests to automate or programmatically post to Mastodon with Make.January 1, 20233 minsHoly Shark
A tale of YouTube granting me some nice numbers by connecting naked yoga and sharks.January 1, 20234 minsI have no idea what I'm doing
A few people have told me what I post about the backend of my podcasting journey on Facebook is interesting/amusing and I should make it more accessible.December 18, 20222 minsFeeling Inspired by Tech
Some thoughts about attending the WiTWA TechPlus conference and WestTechFest, and feeling pretty inspired by the current state of STEAM.December 11, 20227 minsColocated images with MDX and Next.js
An inelegant workaround to use colocated images with MDX on Next.js.November 8, 20223 minsConvert DeepGram to autoEdit transcript format
Use DeepGram as your Speech-to-Text (STT) engine in autoEdit 3.November 2, 20221 minsBuggy Font Display on MacOS
Workarounds for letters displaying with cutouts on MacOS.September 5, 20221 minsProxy Redirect Netlify Sites
Proxy redirect parts of one Netlify site to another.August 22, 20222 minsImprove DaVinci Resolve Audio Export Quality
Reduce artefacts in audio exports from DaVinci Resolve.August 5, 20223 minsContentful Embedded Content in Gatsby
Integration and rendering of Contentful embedded assets and entries.March 18, 20221 minsWhat do you do, exactly?
Some thoughts about what this #freelance #dev thing actually involves other than being a code-monkey who sits around in PJs all day.March 18, 20228 minsBookmark everything (Raindrop.io to Tumblr with Zapier)
Automatically post Raindrop.io bookmarks to Tumblr.February 6, 20222 minsCompassion & Tech
Found some great examples of compassionate technology like HippoCamera, No Isolation, CSIRO's CALD app, and programs like April Wensel’s Compassionate Coding.February 4, 202211 minsIntermission
I launched a web app called Thesaurus Inventus as a Pinterest for writers.November 25, 20217 minsHow to Succeed
Some thoughts about the discourse happening around self-taught vs formal education, and what it means to be successful.October 25, 202110 minsClean-up Extraneous Paragraph Tags and Table Whitespace in MDX on GatsbyJS
MDX wraps components with paragraph tags and can add extra whitespace in tables which produce invalid HTML. This GatsbyJS plugin cleans up the markup.October 9, 20211 minsBake-in SRT Captions into Videos Using ffmpeg
How to create baked-in captions in videos using srt files and ffmpeg.October 1, 20211 minsEducational Engagement
Thoughts some brilliant women in STEM had to share about how we can promote educational engagement, stoke enquiring minds, and get kids (and everyone else) excited about STEM.September 29, 20218 minsCartoons and Classical Music
Classical music in cartoons like Bluey, Sarah and Duck, Looney Tunes, and Disney.September 11, 20216 minsCollaboration
When you have a broad range of experiences, and work in teams where everyone can bring something different to the table, magic happens.August 24, 20216 minsThe ‘A’ in STEAM
The arts is more than 'just' making things pretty. It's integrated into everything that we do in so many different ways.August 12, 20215 minsConfigure audio over Xrdp on CentOS
Configuring Xrdp on CentOS for use over Microsoft Remote Desktop.December 23, 20203 minsGenerate SRT files with Google Cloud Services
Using Google Cloud Services Speech to Text to generate SRT files from short videos.December 4, 20202 minsCreate Group Permissions with Migrations in Django
How to create permissions on groups in Django in a migration.November 6, 20201 minsFairlight Audio Clean-Up
The technical details behind the creation of STEAM Powered.October 1, 20204 minsConvert DaVinci Resolve Markers to YouTube-Compatible Timelines
Use DaVinci Resolve marker EDLs to create timelines that can be used in show notes and YouTube timelines.July 29, 20201 minsCopying Fairlight settings between timelines
Replicate Fairlight settings when using the same track on multiple timelines.July 26, 20201 mins