41554 blogs · [ { "id": "01a07dac-1338-7145-a1c8-577f25ad28e5", "title": "In defense of two-state theme toggles", "url": "https://joshcollinsworth.com/blog/in-defense-of-two-state-theme-toggles", "published_at": "2026-08-21T00:00:00+00:00" }, { "id": "01a07dac-1338-7145-a1c8-577f268c72f4", "title": "LLMs and performative productivity", "url": "https://joshcollinsworth.com/blog/productivity", "published_at": "2026-06-05T00:00:00+00:00" }, { "id": "01a07dac-1338-7145-a1c8-577f276ac1b0", "title": "Man Cereal", "url": "https://joshcollinsworth.com/blog/man-cereal", "published_at": "2026-03-03T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bee2cb78d", "title": "My review of the Nüborn Baby at 3 months", "url": "https://joshcollinsworth.com/blog/baby-review", "published_at": "2026-01-16T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340beec40ac1", "title": "2025 Year in Review", "url": "https://joshcollinsworth.com/blog/2025", "published_at": "2025-12-30T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340beee3e3b1", "title": "AI optimism is a class privilege", "url": "https://joshcollinsworth.com/blog/sloptimism", "published_at": "2025-12-03T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bef215944", "title": "Alchemy", "url": "https://joshcollinsworth.com/blog/alchemy", "published_at": "2025-11-09T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bef566cab", "title": "Titles matter", "url": "https://joshcollinsworth.com/blog/titles-matter", "published_at": "2025-08-26T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bf035197d", "title": "The blissful zen of a good side project", "url": "https://joshcollinsworth.com/blog/the-blissful-zen-of-a-good-side-project", "published_at": "2025-04-04T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bf03a82a3", "title": "Goodbye, Griff. You were a good boy.", "url": "https://joshcollinsworth.com/blog/goodbye-griff", "published_at": "2025-01-27T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bf0a7c18c", "title": "Rare words in common phrases, and how to avoid getting them wrong", "url": "https://joshcollinsworth.com/blog/rare-words-in-common-phrases", "published_at": "2025-01-24T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bf0fe8421", "title": "Things I enjoyed in 2024", "url": "https://joshcollinsworth.com/blog/enjoyed-in-2024", "published_at": "2024-12-24T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bf1805ba2", "title": "The childlike and the childish", "url": "https://joshcollinsworth.com/blog/childlike-and-childish", "published_at": "2024-11-06T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bf2461d71", "title": "A response to \"Defending Open Source: Protecting the Future of WordPress\"", "url": "https://joshcollinsworth.com/blog/response-to-defending-open-source", "published_at": "2024-11-05T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bf2ffac6d", "title": "If WordPress is to survive, Matt Mullenweg must be removed", "url": "https://joshcollinsworth.com/blog/fire-matt", "published_at": "2024-09-27T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bf312d607", "title": "For whatever it's worth: my advice on job hunting in tech", "url": "https://joshcollinsworth.com/blog/fwiw", "published_at": "2024-06-07T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bf3ebcef4", "title": "A decade of code", "url": "https://joshcollinsworth.com/blog/ten-years-of-code", "published_at": "2024-05-10T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bf4689fee", "title": "Follow-up: the Glove80 after six months", "url": "https://joshcollinsworth.com/blog/glove80-followup", "published_at": "2024-04-08T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bf494e203", "title": "The quiet, pervasive devaluation of frontend", "url": "https://joshcollinsworth.com/blog/devaluing-frontend", "published_at": "2024-03-07T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bf5634b97", "title": "I worry our Copilot is leaving some passengers behind", "url": "https://joshcollinsworth.com/blog/copilot", "published_at": "2024-02-13T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bf6158380", "title": "Things I enjoyed in 2023", "url": "https://joshcollinsworth.com/blog/enjoyed-in-2023", "published_at": "2023-12-30T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bf6953f39", "title": "First impressions of the MoErgo Glove80 ergonomic keyboard", "url": "https://joshcollinsworth.com/blog/glove80-first-impressions", "published_at": "2023-10-24T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bf6c147ef", "title": "A message from the Captain of the S.S. Layoff", "url": "https://joshcollinsworth.com/blog/layoffs-are-bullshit", "published_at": "2023-10-04T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bf6da18c9", "title": "Classic rock, Mario Kart, and why we can't agree on Tailwind", "url": "https://joshcollinsworth.com/blog/tailwind-is-smart-steering", "published_at": "2023-09-26T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bf7b0273a", "title": "Things you forgot (or never knew) because of React", "url": "https://joshcollinsworth.com/blog/antiquated-react", "published_at": "2023-08-04T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bf895745b", "title": "Alfred vs. Raycast: my constant debate", "url": "https://joshcollinsworth.com/blog/alfred-raycast", "published_at": "2023-07-24T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bf8f3a152", "title": "Adding page transitions in SvelteKit", "url": "https://joshcollinsworth.com/blog/sveltekit-page-transitions", "published_at": "2023-03-01T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bf94499c8", "title": "Ten tips for better CSS transitions and animations", "url": "https://joshcollinsworth.com/blog/great-transitions", "published_at": "2023-02-28T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bf9830fee", "title": "Understanding easing and cubic-bezier curves in CSS", "url": "https://joshcollinsworth.com/blog/easing-curves", "published_at": "2023-02-22T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bf983e045", "title": "Impressions of the ZSA Moonlander at one month", "url": "https://joshcollinsworth.com/blog/moonlander", "published_at": "2023-01-24T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bfa21a336", "title": "Why you should never use px to set font-size in CSS", "url": "https://joshcollinsworth.com/blog/never-use-px-for-font-size", "published_at": "2022-10-28T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bfa958c75", "title": "Forty-two", "url": "https://joshcollinsworth.com/blog/42-for-42", "published_at": "2022-10-26T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bfabb4464", "title": "Breaking changes in SvelteKit, August 2022", "url": "https://joshcollinsworth.com/blog/sveltekit-breaking-changes", "published_at": "2022-08-17T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bfac1b778", "title": "The self-fulfilling prophecy of React", "url": "https://joshcollinsworth.com/blog/self-fulfilling-prophecy-of-react", "published_at": "2022-07-27T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bfae5f158", "title": "Announcing Hondo", "url": "https://joshcollinsworth.com/blog/announcing-hondo", "published_at": "2022-07-14T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bfba23c8d", "title": "Building accessible toggle buttons (with examples for Svelte, Vue, and React)", "url": "https://joshcollinsworth.com/blog/accessible-toggle-buttons", "published_at": "2022-05-19T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bfbad9a35", "title": "Debugging iOS Safari (when all you have is a Mac)", "url": "https://joshcollinsworth.com/blog/debugging-ios-on-mac", "published_at": "2022-05-10T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bfbe82989", "title": "Creating dynamic bar charts with CSS grid", "url": "https://joshcollinsworth.com/blog/css-grid-bar-charts", "published_at": "2022-03-24T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bfc96dd61", "title": "Let's learn SvelteKit by building a static Markdown blog from scratch", "url": "https://joshcollinsworth.com/blog/build-static-sveltekit-markdown-blog", "published_at": "2021-12-27T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bfd54c96c", "title": "Adding blog comments to your static site with utterances", "url": "https://joshcollinsworth.com/blog/add-blog-comments-static-site", "published_at": "2021-11-06T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bfe4242ad", "title": "Converting from Gridsome to SvelteKit", "url": "https://joshcollinsworth.com/blog/converting-from-gridsome-to-sveltekit", "published_at": "2021-10-04T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bff263866", "title": "Introducing Svelte, and Comparing Svelte with React and Vue", "url": "https://joshcollinsworth.com/blog/introducing-svelte-comparing-with-react-vue", "published_at": "2021-10-01T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340bffdf4e96", "title": "Goodbye, WordPress", "url": "https://joshcollinsworth.com/blog/goodbye-wordpress", "published_at": "2021-02-01T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340c00a998da", "title": "Announcing Quina (My First App)!", "url": "https://joshcollinsworth.com/blog/announcing-quina-my-first-app", "published_at": "2020-12-10T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340c00ffe8f1", "title": "How to Create Custom Editor Blocks with Block Lab", "url": "https://joshcollinsworth.com/blog/creating-custom-gutenberg-blocks-with-the-block-lab-plugin", "published_at": "2020-06-14T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340c01c84756", "title": "A New Headless Site with Gridsome", "url": "https://joshcollinsworth.com/blog/a-new-headless-site-with-gridsome", "published_at": "2020-06-06T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340c0249e78f", "title": "This isn't the Time, But it's the Perfect Time; Goodbye, Instagram", "url": "https://joshcollinsworth.com/blog/goodbye-instagram", "published_at": "2020-06-03T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340c030b769c", "title": "How to Connect Local with CodeKit", "url": "https://joshcollinsworth.com/blog/how-to-connect-local-with-codekit", "published_at": "2020-02-21T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340c032ace19", "title": "How to Check Uniqueness in an Array of Objects in JavaScript", "url": "https://joshcollinsworth.com/blog/confirm-all-ids-are-unique-in-an-array-of-javascript-objects-using-map-and-sets", "published_at": "2020-02-17T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340c032df406", "title": "Adding Gutenberg Full- and Wide-Width Image Support to Your WordPress Theme", "url": "https://joshcollinsworth.com/blog/adding-gutenberg-full-and-wide-width-image-support-to-your-wordpress-theme", "published_at": "2019-03-16T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340c03caf3e0", "title": "Let's Learn CSS Variables!", "url": "https://joshcollinsworth.com/blog/lets-learn-css-variables", "published_at": "2018-02-25T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340c04a8730e", "title": "New Site, New Theme for 2018", "url": "https://joshcollinsworth.com/blog/new-site-new-theme-for-2018", "published_at": "2018-01-02T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340c04c35492", "title": "Five Ways to Become a Better Designer (That Aren't Design)", "url": "https://joshcollinsworth.com/blog/five-ways-to-become-a-better-designer-that-arent-design", "published_at": "2017-02-04T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340c0511c744", "title": "My Essential Tools for WordPress Development", "url": "https://joshcollinsworth.com/blog/essential-tools-wordpress-development", "published_at": "2016-06-25T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340c054e6bc5", "title": "The Five Things I Wish Somebody Had Told Me as a Design Student", "url": "https://joshcollinsworth.com/blog/the-five-things-i-wish-somebody-had-told-me-as-a-design-student", "published_at": "2016-02-21T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340c05ae13c1", "title": "WordPress Child Theme Explanation and Walkthrough", "url": "https://joshcollinsworth.com/blog/wordpress-child-theme-explanation", "published_at": "2015-12-31T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340c05b50c37", "title": "Why Designers Shouldn't \"Fix\" Other Designers' Logos", "url": "https://joshcollinsworth.com/blog/why-designers-shouldnt-remake-other-designers-logos", "published_at": "2015-09-04T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340c0690c3a2", "title": "8 Mistakes to Avoid in Your Student Design Portfolio", "url": "https://joshcollinsworth.com/blog/8-student-portfolio-mistakes", "published_at": "2015-08-20T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340c074ece23", "title": "Profit is Not a Value", "url": "https://joshcollinsworth.com/blog/profit-is-not-a-value", "published_at": "2015-08-05T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340c079cfee2", "title": "Understanding the Difference Between Image and Vector File Types", "url": "https://joshcollinsworth.com/blog/filetypes", "published_at": "2015-06-11T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340c07c89620", "title": "Pantone, Color, and What I Wish I Had Known Sooner as a Designer", "url": "https://joshcollinsworth.com/blog/pantone", "published_at": "2015-04-01T00:00:00+00:00" }, { "id": "01a07dac-1339-73c1-9b95-340c08a119e6", "title": "Social Media, Compulsion, and the 12 Things I Learned on My Break from Facebook", "url": "https://joshcollinsworth.com/blog/12-things", "published_at": "2015-03-27T00:00:00+00:00" } ] posts Claim your blog
Back to Josh Collinsworth | Blog
Blog · corpus.blog/blogs/joshcollinsworth.com/posts

Josh Collinsworth | Blog

joshcollinsworth.com

2026

2025

2024

2023

2022

2021

2020

2019

2018

2017

2016

2015