Sep 2024 Alternatives to cosine similarity (code)Archive
Here are all the articles I've published since 2013. They're mostly about frontend web tech (although there are a few curveballs in there).
Aug 2024 How does cosine similarity work? (code)Jul 2024 How do you test the quality of search results? (code)Jun 2024 What even is a week? (dates are hard) (code)May 2024 Subsetting my font files reduced their size by more than 60% (typography)Apr 2024 Stacked Sparklines web component (code)Mar 2024 Known Pleasures: SVG line art (code)Feb 2024 RSS is Awesome (code)Jan 2024 So long, and thanks for all the Sass (code)Dec 2023 Mapping LLM embeddings in three dimensions (code)Nov 2023 Publishing on npm is weird (code)Oct 2023 TomBot2000: automatically finding related posts using LLMs (code)Sep 2023 Improving SVG chart interactivity with Voronoi diagrams (svg)Aug 2023 What if minesweeper kept getting harder? (code)May 2023 Adding client side search to a static site (code)Oct 2022 Oblique Strategies via npx (code)Feb 2022 Improving my Wordle opening words using simple node scripts (code)Oct 2021 Humility in software development (career)Sep 2021 Podcasting: what gear do you need? (podcasting)Jul 2021 Line graphs with React and D3.js (svg,audio)Apr 2021 Learning (and doing) in public (productivity)Mar 2021 Falling back in love with music (audio)Feb 2021 The year of writing (productivity)Jan 2021 RSS in 2021 (yes, it's still a thing) (code)Dec 2020 Building a delay effect with the Web Audio API (audio,code)Nov 2020 Dark mode: hard mode (code)Sent on 12th Aug, 2020Sent on 5th Aug, 2020Sent on 29th Jul, 2020Sent on 22nd Jul, 2020Sent on 15th Jul, 2020Sent on 8th Jul, 2020Sent on 1st Jul, 2020Sent on 24th Jun, 2020Sent on 17th Jun, 2020Sent on 10th Jun, 2020Sent on 3rd Jun, 2020Sent on 27th May, 2020Sent on 20th May, 2020May 2020 Podcasts for Nerds (podcasting)Sent on 13th May, 2020May 2020 Spiraling out of control? Open up the Bullet Journal again (productivity)Sent on 6th May, 2020Apr 2020 Installing acoustic panels (podcasting,audio)Apr 2020 CSS Naked Day (typography)Feb 2020 Twitter Cards with Nunjucks and 11ty (code)Jan 2020 The things I use (general)Jan 2020 Static site generators: Hugo vs Jekyll vs Gatsby vs 11ty (code)Dec 2019 Rugby prediction: retrospective (sports,data)Sep 2019 Algorithmically predicting the results of the 2019 Rugby World Cup (sports,data)Aug 2019 Using world ranking to predict the results of the 2019 Rugby World Cup pool stages (sports,data)Jul 2018 Writing well is essential. Try your best to get good at it (career,code)Jun 2017 You can now install Picobel using NPM (audio,code)May 2017 Recommended Listening: my favourite podcasts (podcasting)Apr 2017 Introducing Picobel.js - an audio player you can style with css (audio)Apr 2017 I changed my site's font to Comic Sans as an April Fool. It was a disaster. (typography)Mar 2017 Living with Alexa: the problems with "voice" as an interface (internet-of-things)Mar 2017 What is a decibel, anyway? (audio)Feb 2017 Inline SVG icon sprites are (still) not scary. (svg)Feb 2017 Getting to grips with SVG markup (svg)Jan 2017 Bullet Journal Revisited (productivity)Jan 2017 Well-written HTML doesn't need any styling. Except that it does. (typography,code)Jan 2017 n-minute read: calculating an average reading speed (code)Sep 2016 You are only as good as your README (career,code)Aug 2016 Don't turn your problem into your users' problem (career)Jan 2016 Which do you choose: native app or web app? (code)Dec 2015 Notes from ThingMonk: Day Two (internet-of-things)Dec 2015 Notes from ThingMonk: Day One (internet-of-things)Aug 2015 Why doesn’t everyone have an Internet Fridge? (internet-of-things)May 2015 Getting started with inline SVG icons (svg)Sep 2014 Inspirational Web People (career)Feb 2014 Fullpage screenshots in Firefox (utilities)Feb 2014 Futura for the win (typography)Sep 2013 Simple is hard (career)Sep 2013 A bullet-journal workflow (productivity)