Who is this blog for?
thoughtsA new colour palette
blogDeveloping mobile sites with the iOS simulator
devDev Cycle 4 Log
work logMarketing Cycle 3 Log
work logDev Cycle 3 Log
work logMarketing Cycle 2 Log
work logDev Cycle 2 Log
work logSabbatical Thoughts
thoughtsRebuilding this blog in Astro
devGit Config Changes
devCroque Monsieur and Croque Madame
recipeBak Kut Teh 肉骨茶
recipeReinstall global packages when upgrading node.js with nvm
devGood enough
blogBlog longevity
thoughtsTokushima, and recovering from burn out
thoughtsStructure of the new design
blogRedesign, part one
blogMillefe Year One Review
MillefeUndesign
blogESLint Flat Config and Next.js
devNPM Update
devLearning to say No
thoughtsFunctions in Javascript have an `arguments` keyword
devDEP#### errors when performing an npm install
devLimit number between a range
devValuesType generic type
devThe Collection Type
devDifference between useEffect and useLayoutEffect
devMac Studio Setup
devTask Management
thoughtsHello again
thoughtsNetlify Analytics fail. Cancelling subscription.
devNetlify wildcard redirects
devRenaming files in folder to a sequence of numbers
devPad a number with leading zeros
devreact-router-dom has no exported member 'Switch'
devMy Macs
thoughtsSpeccing the M2 MacBook Air
thoughtsSwitching to Netlify
blogFonts Reference
blogNo
thoughtsGit Undo Last Commit
devNo index signature with a parameter of type 'string' was found on type '{}'
devHello world
blog