41554 blogs · [ { "id": "01a08d58-2182-716f-9959-7ebe5947ccf4", "title": "Why XML sitemaps are losing their pretty view", "url": "https://joost.blog/xml-sitemaps-without-xslt/", "published_at": "2026-09-10T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26d9a82820", "title": "MCP goes stateless", "url": "https://joost.blog/mcp-goes-stateless/", "published_at": "2026-07-28T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26d9c3ed79", "title": "The future of the website", "url": "https://joost.blog/future-of-the-website/", "published_at": "2026-07-22T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26d9fcbbc8", "title": "Stewarded open source is not enough: who can cut you off?", "url": "https://joost.blog/who-can-cut-you-off/", "published_at": "2026-07-10T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26da1d2433", "title": "OKF and ARD: complementary by accident", "url": "https://joost.blog/okf-ard/", "published_at": "2026-06-20T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26daa29e83", "title": "A new home for Progress Planner, and for us", "url": "https://joost.blog/progress-planner-joins-your-online/", "published_at": "2026-06-04T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26dabd4eae", "title": "Lovable should sponsor TanStack", "url": "https://joost.blog/sponsor-tanstack/", "published_at": "2026-06-03T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26db067763", "title": "Block the abuse, not the future", "url": "https://joost.blog/block-the-abuse/", "published_at": "2026-06-02T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26db8e5aad", "title": "Fixing the plumbing of the web", "url": "https://joost.blog/fixing-the-plumbing/", "published_at": "2026-05-29T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26dc094ad1", "title": "Open Source First is right, but not enough.", "url": "https://joost.blog/open-source-first-not-enough/", "published_at": "2026-05-24T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26dc948a8b", "title": "Agent-ready by design", "url": "https://joost.blog/agent-native/", "published_at": "2026-05-22T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26dd819316", "title": "What's a visitor in the age of AI?", "url": "https://joost.blog/what-is-a-visitor/", "published_at": "2026-05-21T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26de1dbfa8", "title": "FAQ schema died twice. The fix is FAQSection.", "url": "https://joost.blog/faq-schema-cycle/", "published_at": "2026-05-11T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26de56baa2", "title": "Vol. XV: out with the AI slop", "url": "https://joost.blog/vol-xv/", "published_at": "2026-05-09T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26df46cdd9", "title": "If WordPress gets CPTs in Core, we also need custom fields", "url": "https://joost.blog/wordpress-custom-fields-in-core/", "published_at": "2026-05-08T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26e033ae50", "title": "The missing guide to SEO domain migrations", "url": "https://joost.blog/seo-domain-migrations/", "published_at": "2026-05-06T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26e06c4aee", "title": "What agent-ready looks like for a static blog", "url": "https://joost.blog/agent-ready/", "published_at": "2026-05-04T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26e09d7ae7", "title": "The agency case for open source", "url": "https://joost.blog/open-source-agency/", "published_at": "2026-04-24T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26e17377dc", "title": "Dropping Astro's ClientRouter for web standards", "url": "https://joost.blog/replacing-astro-clientrouter/", "published_at": "2026-04-22T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26e1864338", "title": "How I made my skills update themselves", "url": "https://joost.blog/self-updating-agent-skills/", "published_at": "2026-04-14T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26e2393ea7", "title": "Standards don't prove themselves", "url": "https://joost.blog/standards-dont-prove-themselves/", "published_at": "2026-04-13T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26e27705a1", "title": "Astro SEO: the definitive guide.", "url": "https://joost.blog/astro-seo-complete-guide/", "published_at": "2026-04-12T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26e29b88cd", "title": "SEO-graph - for the machine-readable web", "url": "https://joost.blog/seo-graph/", "published_at": "2026-04-10T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26e29c935c", "title": "Defending the open web is not enough", "url": "https://joost.blog/defending-open-web-not-enough/", "published_at": "2026-04-07T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26e2e7ef52", "title": "WordPress needs to refactor, not redecorate", "url": "https://joost.blog/wordpress-refactor-not-redecorate/", "published_at": "2026-04-03T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26e39ad605", "title": "EmDash: a CMS built for 2026", "url": "https://joost.blog/emdash-cms/", "published_at": "2026-04-01T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26e418fcfc", "title": "Ask Joost: AI-powered answers from my blog", "url": "https://joost.blog/ai-powered-answers-ask-joost/", "published_at": "2026-03-26T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26e42f04cc", "title": "Do you need a CMS?", "url": "https://joost.blog/do-you-need-a-cms/", "published_at": "2026-03-21T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26e5050454", "title": "AI optimization is replaying early SEO, just faster", "url": "https://joost.blog/ai-optimization-is-replaying-early-seo-just-faster/", "published_at": "2026-03-11T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26e581d101", "title": "FAIR, WordPress, and Knowing When to Stop", "url": "https://joost.blog/fair-wordpress-and-knowing-when-to-stop/", "published_at": "2026-02-26T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26e5b3b735", "title": "Share Obsidian links that actually work everywhere", "url": "https://joost.blog/obsidian-agent-links/", "published_at": "2026-02-25T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26e64846e0", "title": "Why healthy doubt beats AI confidence theater", "url": "https://joost.blog/healthy-doubt/", "published_at": "2026-02-21T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26e64bf760", "title": "Building an Autonomous Feedback Agent", "url": "https://joost.blog/autonomous-feedback-agent/", "published_at": "2026-02-14T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26e691dc08", "title": "Great minds think alike? My WordPress take on Markdown for Agents", "url": "https://joost.blog/markdown-alternate/", "published_at": "2026-02-12T00:00:00+00:00" }, { "id": "01a08790-6dab-71d0-a0ef-fe26e7061bdc", "title": "The silence is deafening: Google’s “agentic” future leaves the WordPress economy behind", "url": "https://joost.blog/deafening-silence-google-wordpress-agentic/", "published_at": "2026-01-12T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e501491805", "title": "The Tailwind paradox: the high price of “enough”", "url": "https://joost.blog/tailwind-paradox/", "published_at": "2026-01-11T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e50176e1a4", "title": "From installation to integration: Making plugins “agent-ready”", "url": "https://joost.blog/agent-ready-plugins/", "published_at": "2025-12-24T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e5017cbc3a", "title": "Vibe coding is a trap: why WordPress needs a design system now", "url": "https://joost.blog/vibe-coding-trap-design-system/", "published_at": "2025-12-23T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e501f87694", "title": "The generalization tax: why WordPress is still the smart architectural base", "url": "https://joost.blog/wordpress-architecture-base-ai/", "published_at": "2025-12-22T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e5024dda06", "title": "The death of Code Copyright (and the rise of the Architect)", "url": "https://joost.blog/rise-architect/", "published_at": "2025-12-21T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e50343d193", "title": "A new path forward for WordPress, and for the open web", "url": "https://joost.blog/path-forward-for-wordpress/", "published_at": "2025-06-06T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e503c8dd75", "title": "Innovation in WordPress: a look at plugin development", "url": "https://joost.blog/innovation-in-wordpress/", "published_at": "2025-06-05T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e5047dbd02", "title": "The unintended consequences of making SEO “for everyone”", "url": "https://joost.blog/unintended-consequences-seo-for-everyone/", "published_at": "2025-04-22T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e5052cf7f0", "title": "Build websites like it’s 2005 (and win in 2025)", "url": "https://joost.blog/build-websites-like-2005/", "published_at": "2025-03-26T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e505c88f7d", "title": "Redirect-By HTTP headers", "url": "https://joost.blog/redirect-by-http-headers/", "published_at": "2025-03-13T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e506b5f6fe", "title": "WordPress comments, cookies and caching", "url": "https://joost.blog/wordpress-comment-cookies-and-caching/", "published_at": "2025-01-01T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e5070f079d", "title": "Breaking the Status Quo", "url": "https://joost.blog/wordpress-leadership/", "published_at": "2024-12-20T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e50749f363", "title": "WordPress, and what should be on its roadmap", "url": "https://joost.blog/wordpress-roadmap/", "published_at": "2024-12-12T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e507a785f5", "title": "Can I safely use AVIF or WebP share images?", "url": "https://joost.blog/use-avif-webp-share-images/", "published_at": "2024-12-04T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e5086e9aa7", "title": "The People Behind the Platform: How WordPress’s Community Drives its Success", "url": "https://joost.blog/people-behind-the-platform/", "published_at": "2024-10-31T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e508874d8f", "title": "Transparency, Contribution, and the Future of WordPress", "url": "https://joost.blog/transparency-contribution-and-the-future-of-wordpress/", "published_at": "2024-09-26T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e508b944b2", "title": "CMS market share June 2024 commentary", "url": "https://joost.blog/cms-market-share-june-2024-commentary/", "published_at": "2024-07-02T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e5092f527a", "title": "CMS Market share measured “right”", "url": "https://joost.blog/cms-market-share-measured-right/", "published_at": "2024-07-02T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e509f219a9", "title": "Introducing a new plugin: Progress Planner", "url": "https://joost.blog/introducing-a-new-plugin-progress-planner/", "published_at": "2024-06-07T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e50a3e0dc4", "title": "A right-click / contextmenu logo popover", "url": "https://joost.blog/popover-contextmenu/", "published_at": "2024-05-27T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e50b3a614f", "title": "Docusign to Documenso", "url": "https://joost.blog/docusign-to-documenso/", "published_at": "2024-03-15T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e50b665c7d", "title": "HelpScout to Freescout", "url": "https://joost.blog/helpscout-to-freescout/", "published_at": "2024-03-07T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e50c49bc17", "title": "Playground Blueprint Builder", "url": "https://joost.blog/playground-blueprint-builder/", "published_at": "2024-03-06T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e50d42a372", "title": "Cleaning up WordPress option clutter", "url": "https://joost.blog/cleaning-up-wordpress-option-clutter/", "published_at": "2024-02-29T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e50df1f664", "title": "Designing plugins to be uninstalled", "url": "https://joost.blog/designing-plugins-to-be-uninstalled/", "published_at": "2024-02-02T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e50dfb8f9b", "title": "Research: WordPress publications misuse tags", "url": "https://joost.blog/research-wordpress-publications-misuse-tags/", "published_at": "2024-01-30T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e50eb26639", "title": "Multi-currency awesomeness with EDD & Cloudflare", "url": "https://joost.blog/multi-currency-awesomeness-with-edd-cloudflare/", "published_at": "2024-01-26T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e50f4b9feb", "title": "GitHub Actions to keep your WordPress plugin healthy", "url": "https://joost.blog/github-actions-wordpress/", "published_at": "2024-01-23T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e50f704860", "title": "WordPress needs more dev-rel", "url": "https://joost.blog/wordpress-needs-more-dev-rel/", "published_at": "2024-01-01T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e50ffc2ceb", "title": "Clickable WhatsApp links", "url": "https://joost.blog/clickable-whatsapp-links/", "published_at": "2023-12-30T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e510407739", "title": "Good-looking GitHub profile pages", "url": "https://joost.blog/good-looking-github-profile-pages/", "published_at": "2023-12-20T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e510dcdbf5", "title": "How to create a healthy GitHub repository", "url": "https://joost.blog/healthy-github-repository/", "published_at": "2023-12-19T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e51140f366", "title": "Plugin demos with the WordPress playground", "url": "https://joost.blog/plugin-demos-with-the-wordpress-playground/", "published_at": "2023-12-14T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e511499952", "title": "Saying goodbye to Marieke at Yoast", "url": "https://joost.blog/saying-goodbye-to-marieke-at-yoast/", "published_at": "2023-06-26T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e51165c51b", "title": "How to deal with plugin security issues", "url": "https://joost.blog/plugin-security-issues/", "published_at": "2023-04-11T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e51177c97a", "title": "Gravity Forms notification routing with a lookup table", "url": "https://joost.blog/gravity-forms-notification-routing-with-a-lookup-table/", "published_at": "2023-02-16T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e51240539c", "title": "WordPress’ admin UI needs to be better", "url": "https://joost.blog/wordpress-admin-ui-needs-to-be-better/", "published_at": "2023-01-25T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e51327e528", "title": "Social & Schema images: naming considerations", "url": "https://joost.blog/social-schema-images-naming-considerations/", "published_at": "2022-07-06T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e5141828af", "title": "Optimize crawling: let’s turn things around!", "url": "https://joost.blog/optimize-crawling-lets-turn-things-around/", "published_at": "2022-06-02T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e5143cb389", "title": "Optimize crawling, for the environment", "url": "https://joost.blog/optimize-crawling-for-the-environment/", "published_at": "2022-05-24T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e514a31915", "title": "WordPress’ market share is shrinking", "url": "https://joost.blog/wordpress-market-share-shrinking/", "published_at": "2022-05-11T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e514c0ca1d", "title": "Transitioning to a new role at Yoast", "url": "https://joost.blog/new-role-at-yoast/", "published_at": "2022-03-18T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e515448683", "title": "Elementor: WordPress’ secret growth driver?", "url": "https://joost.blog/elementor-wordpress-secret-growth-driver/", "published_at": "2021-12-13T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e515fc6a99", "title": "Yoast joins Newfold", "url": "https://joost.blog/yoast-joins-newfold/", "published_at": "2021-08-12T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e516f8ab2d", "title": "Organize your screenshots on MacOS", "url": "https://joost.blog/organize-screenshots-macos/", "published_at": "2021-07-22T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e5176c695d", "title": "Building a trusted web, step 1.", "url": "https://joost.blog/building-a-trusted-web-step-1/", "published_at": "2020-10-28T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e51773677d", "title": "How to get week numbers in your Mac menu bar", "url": "https://joost.blog/how-to-get-week-numbers-in-your-mac-menu-bar/", "published_at": "2020-04-24T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e51844a20d", "title": "Automatically convert WebP files to PNG", "url": "https://joost.blog/automatically-convert-webp-files-to-png/", "published_at": "2020-02-08T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e5191bdd1f", "title": "Google’s robots changes, the web & the law", "url": "https://joost.blog/googles-robots-changes-the-web-the-law/", "published_at": "2019-09-12T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e51a166175", "title": "Traveling to Peru", "url": "https://joost.blog/traveling-to-peru/", "published_at": "2019-06-17T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e51aac4c04", "title": "(Why) I’m stepping down from my WordPress marketing role", "url": "https://joost.blog/why-im-stepping-down-from-my-wordpress-marketing-role/", "published_at": "2019-06-05T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e51b4087bc", "title": "Marketing WordPress – first steps", "url": "https://joost.blog/marketing-wordpress-first-steps/", "published_at": "2019-02-22T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e51bf2f102", "title": "Stepping “down” at Yoast", "url": "https://joost.blog/stepping-down-at-yoast/", "published_at": "2019-01-24T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e51c4c2dc1", "title": "Leading marketing & communication for WordPress", "url": "https://joost.blog/leading-marketing-communication-for-wordpress/", "published_at": "2019-01-21T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e51cb4a71d", "title": "Karen Sparck Jones", "url": "https://joost.blog/karen-sparck-jones/", "published_at": "2019-01-03T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e51d1e25b6", "title": "Democratizing publishing", "url": "https://joost.blog/democratizing-publishing/", "published_at": "2018-12-27T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e51d91e86c", "title": "After WCUS 2018: WordPress & Gutenberg FAQ", "url": "https://joost.blog/the-after-wcus-wordpress-gutenberg-faq/", "published_at": "2018-12-12T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e51e29e0c8", "title": "WordPress 5.0 needs a different timeline", "url": "https://joost.blog/wordpress-5-0-needs-a-different-timeline/", "published_at": "2018-11-06T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e51ee059b2", "title": "Gutenberg and Yoast SEO", "url": "https://joost.blog/gutenberg-and-yoast-seo/", "published_at": "2017-06-17T00:00:00+00:00" }, { "id": "01a08790-6dac-736e-831f-82e51f833f27", "title": "Blogging about not SEO", "url": "https://joost.blog/blogging-about-not-seo/", "published_at": "2017-01-14T00:00:00+00:00" } ] posts Claim your blog
Back to Joost de Valk - Internet entrepreneur · Joost.blog
Blog · corpus.blog/blogs/joost.blog/posts

Joost de Valk - Internet entrepreneur · Joost.blog

joost.blog

2026

2025

2024

2023

2022

2021

2020

2019

2018

2017