41554 blogs · [ { "id": "01a087e1-0ebb-71cb-a9d2-6f2db38e880f", "title": "Don't check out", "url": "https://www.simeongriggs.dev/dont-check-out", "published_at": "2026-08-20T00:00:00+00:00" }, { "id": "01a087e1-0ebb-71cb-a9d2-6f2db39d8f5f", "title": "Adding smart features to dumb apps", "url": "https://www.simeongriggs.dev/add-ai-to-any-app", "published_at": "2026-03-04T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a31ce01ded", "title": "It feels pointless because it's easy", "url": "https://www.simeongriggs.dev/it-feels-pointless-because-it-s-easy", "published_at": "2026-01-06T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a31d8df501", "title": "Learning is about building personal context", "url": "https://www.simeongriggs.dev/learning-is-about-building-personal-context", "published_at": "2025-11-26T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a31dd4794d", "title": "Suspense's problematic prop", "url": "https://www.simeongriggs.dev/suspense-fallback-problematic-prop", "published_at": "2025-09-06T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a31e9b9eb3", "title": "Using Activity with Suspenseful data", "url": "https://www.simeongriggs.dev/use-the-activity-boundary-to-hide-suspenseful-components", "published_at": "2025-09-01T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a31f89f86d", "title": "When prompting—ask, don’t tell", "url": "https://www.simeongriggs.dev/when-prompting-ask-don-t-tell", "published_at": "2025-03-29T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a3203e3f85", "title": "Writing and performing a great talk", "url": "https://www.simeongriggs.dev/how-to-give-a-great-conference-talk", "published_at": "2025-03-21T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a3210a2fe9", "title": "Running for developers", "url": "https://www.simeongriggs.dev/running-for-developers", "published_at": "2024-12-11T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a321a5cdd7", "title": "Put a box around it", "url": "https://www.simeongriggs.dev/put-a-box-around-it", "published_at": "2024-11-15T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a321bfaee8", "title": "Conditional class names using DOM attributes as state", "url": "https://www.simeongriggs.dev/tailwindcss-conditional-class-names-the-right-way", "published_at": "2024-09-30T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a322482ace", "title": "Tailwind CSS is basically a standard, start acting like it", "url": "https://www.simeongriggs.dev/tailwind-css-is-a-standard-that-frameworks-should-bundle", "published_at": "2024-08-30T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a32344717a", "title": "Mastery is underrated", "url": "https://www.simeongriggs.dev/mastery-is-underrated", "published_at": "2024-05-09T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a3236a9071", "title": "Thoughts on teaching developers", "url": "https://www.simeongriggs.dev/thoughts-on-teaching-developers", "published_at": "2023-12-13T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a323f153c8", "title": "Query GraphQL in Remix in less than 60 seconds", "url": "https://www.simeongriggs.dev/simplest-way-to-query-graphql-in-a-remix-app", "published_at": "2023-09-18T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a324c3d3bb", "title": "Dynamic social sharing images from Remix with Satori", "url": "https://www.simeongriggs.dev/serve-dynamic-og-images-from-remix-with-satori", "published_at": "2023-02-28T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a324d8a83d", "title": "Add Vercel Analytics to a Remix Application", "url": "https://www.simeongriggs.dev/setup-vercel-web-vitals-and-audiences-on-remix", "published_at": "2022-12-07T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a3250f5744", "title": "Bridging the developer-author gap", "url": "https://www.simeongriggs.dev/narrowing-the-gap-between-developers-and-authors", "published_at": "2022-11-27T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a325c1f03c", "title": "In defence of over-engineering your blog", "url": "https://www.simeongriggs.dev/in-defence-of-over-engineering-your-blog", "published_at": "2022-10-31T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a32616d924", "title": "Prioritise content over components", "url": "https://www.simeongriggs.dev/components-considered-harmful-for-content", "published_at": "2022-10-03T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a326bbe92f", "title": "Type-safe GROQ Queries for Sanity Data with Zod", "url": "https://www.simeongriggs.dev/type-safe-groq-queries-for-sanity-data-with-zod", "published_at": "2022-09-24T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a326e88e57", "title": "Understanding reduce() as a combination of map() and filter()", "url": "https://www.simeongriggs.dev/replacing-chained-map-and-filter-with-reduce", "published_at": "2022-03-07T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a326eaf214", "title": "How to ask for things with Loom", "url": "https://www.simeongriggs.dev/how-to-ask-for-things", "published_at": "2022-02-14T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a327849b68", "title": "Using the Tailwind CSS Palette Generator and API", "url": "https://www.simeongriggs.dev/using-the-tailwind-css-palette-generator-and-api", "published_at": "2022-01-01T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a32839a2ae", "title": "There's never been a better time to build websites", "url": "https://www.simeongriggs.dev/there-has-never-been-a-better-time-to-build-websites", "published_at": "2021-12-17T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a328610f8a", "title": "Patterns for Next.js, Sanity.io, Catch-all Routes and Slugs", "url": "https://www.simeongriggs.dev/nextjs-sanity-slug-patterns", "published_at": "2021-04-19T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a3288cac01", "title": "Recipe websites, data modelling and user experience", "url": "https://www.simeongriggs.dev/designing-a-more-complete-recipe-website", "published_at": "2021-01-12T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a32902fd9a", "title": "Backup Sanity to AWS S3", "url": "https://www.simeongriggs.dev/backup-sanity-io-to-aws-s3", "published_at": "2020-12-11T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a32910fa51", "title": "The guide to useEffect() I wish I had", "url": "https://www.simeongriggs.dev/the-guide-to-useeffect-i-wish-i-had", "published_at": "2020-12-10T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a329950791", "title": "Fun with Tailwind CSS Plugins", "url": "https://www.simeongriggs.dev/fun-with-tailwind-css-plugins", "published_at": "2020-10-22T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a32a5535b5", "title": "Responsive, Extendable Squircles with SVG", "url": "https://www.simeongriggs.dev/responsive-extendable-squircles-with-svg-and-css", "published_at": "2020-09-28T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a32afaf84a", "title": "Gutenberg is the end of custom WordPress websites", "url": "https://www.simeongriggs.dev/gutenberg-is-the-end-of-custom-wordpress-websites", "published_at": "2020-06-23T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a32ba72ef4", "title": "Sanity Schema Generator", "url": "https://www.simeongriggs.dev/sanity-schema-generator", "published_at": "2020-06-09T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a32bfaf185", "title": "Create a Page Builder in Sanity for Gatsby", "url": "https://www.simeongriggs.dev/create-a-page-builder-in-sanity-for-gatsby", "published_at": "2020-05-20T00:00:00+00:00" }, { "id": "01a087e1-0ebc-7284-ac22-28a32cd31792", "title": "Roll your own Gatsby live preview for Sanity", "url": "https://www.simeongriggs.dev/roll-your-own-gatsby-live-preview-for-sanity", "published_at": "2020-05-18T00:00:00+00:00" } ] posts Claim your blog
Back to simeonGriggs.dev | Thoughts on Internet
Blog · corpus.blog/blogs/simeongriggs.dev/posts

simeonGriggs.dev | Thoughts on Internet

simeongriggs.dev

2026

2025

2024

2023

2022

2021

2020