41554 blogs · [ { "id": "01a0d9db-f555-7351-b652-692306d44ccc", "title": "Reading Progress Bars are Bad UX", "url": "https://maxschmitt.me/posts/reading-progress-bars", "published_at": "2026-09-24T00:00:00+00:00" }, { "id": "01a0bb91-c045-72bf-ad15-8b9f359a736a", "title": "A Simple Guide to Calm UI", "url": "https://maxschmitt.me/posts/calm", "published_at": "2026-09-17T00:00:00+00:00" }, { "id": "01a087a2-df4d-7006-9a95-9e8780b712d5", "title": "How a Potential Client Almost Cost Me My Google Account", "url": "https://maxschmitt.me/posts/phishing-attempt", "published_at": "2026-05-29T00:00:00+00:00" }, { "id": "01a087a2-df4d-7006-9a95-9e8781494c8d", "title": "2025: Year 4 of Building Cakedesk as a Solo Developer", "url": "https://maxschmitt.me/posts/cakedesk-2025", "published_at": "2025-12-31T00:00:00+00:00" }, { "id": "01a087a2-df4d-7006-9a95-9e878158a7de", "title": "Redesigning the Cakedesk Website", "url": "https://maxschmitt.me/posts/cakedesk-website-redesign", "published_at": "2025-12-30T00:00:00+00:00" }, { "id": "01a087a2-df4d-7006-9a95-9e8781751507", "title": "A Useful Bash Function for Debugging Flaky Tests", "url": "https://maxschmitt.me/posts/bash-function-flaky-tests", "published_at": "2025-11-24T00:00:00+00:00" }, { "id": "01a087a2-df4d-7006-9a95-9e8781b0eaeb", "title": "Behind the Scenes: Sending Invoices Without Leaving Cakedesk", "url": "https://maxschmitt.me/posts/cakedesk-emails", "published_at": "2025-07-10T00:00:00+00:00" }, { "id": "01a087a2-df4d-7006-9a95-9e878207e5f8", "title": "2024: Year 3 of Building Cakedesk as a Solo Developer", "url": "https://maxschmitt.me/posts/cakedesk-2024", "published_at": "2025-01-02T00:00:00+00:00" }, { "id": "01a087a2-df4d-7006-9a95-9e8782e7d4d0", "title": "Deploying Laravel with SQLite on Dokku", "url": "https://maxschmitt.me/posts/dokku-laravel-sqlite", "published_at": "2024-10-01T00:00:00+00:00" }, { "id": "01a087a2-df4d-7006-9a95-9e8783ddfaab", "title": "Toasts are Bad UX", "url": "https://maxschmitt.me/posts/toasts-bad-ux", "published_at": "2024-07-17T00:00:00+00:00" }, { "id": "01a087a2-df4d-7006-9a95-9e87842183f9", "title": "GitHub: How to get Notifications from Work Repositories to your Work Email", "url": "https://maxschmitt.me/posts/github-notifications-work-email", "published_at": "2024-04-19T00:00:00+00:00" }, { "id": "01a087a2-df4d-7006-9a95-9e8784efa0fb", "title": "React Breakpoint Props: How Simple Components Become Complicated due to Server-Side Rendering", "url": "https://maxschmitt.me/posts/react-ssr-breakpoint-props", "published_at": "2024-04-12T00:00:00+00:00" }, { "id": "01a087a2-df4d-7006-9a95-9e87859f17a9", "title": "VS Code: 3 Ways to Navigate Long Test Files", "url": "https://maxschmitt.me/posts/vscode-long-test-files", "published_at": "2024-03-29T00:00:00+00:00" }, { "id": "01a087a2-df4d-7006-9a95-9e8785b933b2", "title": "Dokku: How to host Puppeteer + Node.js apps", "url": "https://maxschmitt.me/posts/dokku-nodejs-puppeteer", "published_at": "2024-03-22T00:00:00+00:00" }, { "id": "01a087a2-df4d-7006-9a95-9e87867c66ab", "title": "Next.js: How to Mock Server-Side Requests Using Playwright", "url": "https://maxschmitt.me/posts/nextjs-ssr-request-mocking-playwright", "published_at": "2024-03-15T00:00:00+00:00" }, { "id": "01a087a2-df4d-7006-9a95-9e8786b4bf7d", "title": "Next.js: How to add a Contact Form (App Router)", "url": "https://maxschmitt.me/posts/nextjs-contact-form-app-router", "published_at": "2024-03-07T00:00:00+00:00" }, { "id": "01a087a2-df4d-7006-9a95-9e8787814e33", "title": "Next.js: How to add a Contact Form (Pages Router)", "url": "https://maxschmitt.me/posts/nextjs-contact-form", "published_at": "2024-03-01T00:00:00+00:00" }, { "id": "01a087a2-df4d-7006-9a95-9e87887d35f7", "title": "Next.js, Sanity & TypeScript: A Setup That Works", "url": "https://maxschmitt.me/posts/nextjs-sanity-typescript", "published_at": "2024-02-23T00:00:00+00:00" }, { "id": "01a087a2-df4d-7006-9a95-9e87895a070c", "title": "Sanity: How to Edit Documents as JSON", "url": "https://maxschmitt.me/posts/sanity-edit-document-as-json", "published_at": "2024-02-16T00:00:00+00:00" }, { "id": "01a087a2-df4d-7006-9a95-9e8789a87fa1", "title": "How Plausible Analytics Keeps a Tiny (< 1KB) Tracking Script", "url": "https://maxschmitt.me/posts/tiny-plausible-tracking-script", "published_at": "2023-10-26T00:00:00+00:00" }, { "id": "01a087a2-df4d-7006-9a95-9e878a123b3c", "title": "How to fix Sanity Error: Uncaught error - Could not resolve jsonType of undefined. No parent type found", "url": "https://maxschmitt.me/posts/sanity-error-could-not-resolve-json-type-of-undefined", "published_at": "2023-10-25T00:00:00+00:00" }, { "id": "01a087a2-df4d-7006-9a95-9e878afbace6", "title": "Next.js: The Easiest Way to Create an API Proxy (2023)", "url": "https://maxschmitt.me/posts/next-js-api-proxy", "published_at": "2023-09-27T00:00:00+00:00" }, { "id": "01a087a2-df4d-7006-9a95-9e878b287fb3", "title": "Contentful: How to Find Unused Types", "url": "https://maxschmitt.me/posts/contentful-find-unused-types", "published_at": "2023-08-17T00:00:00+00:00" }, { "id": "01a087a2-df4d-7006-9a95-9e878bc0a758", "title": "Next.js: How to Get and Set Cookies (2023)", "url": "https://maxschmitt.me/posts/next-js-cookies", "published_at": "2023-07-11T00:00:00+00:00" }, { "id": "01a087a2-df4d-7006-9a95-9e878c42f40f", "title": "A Free Remote Pair Programming Solution", "url": "https://maxschmitt.me/posts/free-remote-pair-programming", "published_at": "2023-05-24T00:00:00+00:00" }, { "id": "01a087a2-df4d-7006-9a95-9e878c8c886a", "title": "Next.js: How to Show the 404 Page (App Router)", "url": "https://maxschmitt.me/posts/nextjs-404-page-app-router", "published_at": "2023-05-16T00:00:00+00:00" }, { "id": "01a087a2-df4d-7006-9a95-9e878d7d2cac", "title": "Next.js: Integrating Contentful and TypeScript (App Router)", "url": "https://maxschmitt.me/posts/nextjs-contentful-typescript", "published_at": "2023-05-14T00:00:00+00:00" } ] posts Claim your blog
Back to maxschmitt.me
Blog · corpus.blog/blogs/maxschmitt.me/posts

maxschmitt.me

maxschmitt.me

2026

2025

2024

2023