Archive: 2025-04 | Page 21
Archive: April 2025
-
Apr 6, 2025
OFFSET-based pagination gets slower with every additional page, because the database still has to read and discard every skipped row. Keyset pagination, also called cursor pagination, replaces the page counter with a comparison against the last seen value and thereby delivers constant response times regardless of how deep you page into the result set.
-
Apr 6, 2025
Every request payload an API accepts is, from TypeScript's point of view, unknown at first, no matter how trustworthy the client appears. This article shows how the trust boundary pattern consistently anchors validation at the system boundary, with middleware that validates before every handler, typed request objects throughout the rest of the code, and structured error propagation that prevents unchecked data from reaching deeper into the application.
-
Apr 6, 2025
Frontend performance is visible down to the smallest detail in the DevTools, but the backend side usually stays a black box to the browser. The Server-Timing API closes that gap by carrying server-side measurements such as database time, cache status, or rendering duration straight into the browser's tools and the Navigation Timing API through a simple HTTP header.
-
Apr 5, 2025
Good API documentation is not what gets generated automatically from OpenAPI comments. It is what enables an external developer to make their first successful API call within 15 minutes and then keep integrating on their own, without opening a support ticket.
-
Apr 5, 2025
Teams that spin up a separate Node or PHP backend for their Nuxt frontend often duplicate infrastructure unnecessarily. Nuxt Server Routes build on the Nitro server and deliver routing, validation, error handling and caching in the same codebase, deployed as a single artifact.
-
Apr 5, 2025
Microsoft ties Bing search and Copilot chat together more tightly than Google currently ties Google Search and Gemini, and additionally uses IndexNow, a protocol that gets new content into the index considerably faster than classic crawling. Anyone who understands this technical integration can optimize for Bing Copilot on purpose, instead of treating Bing as a smaller Google clone.
-
Apr 5, 2025
Anyone who changes a GraphQL schema without knowing the existing clients risks silent breakage in the frontend. Additive evolution, structured deprecations, and automated schema diffs with GraphQL Inspector make schema changes predictable instead of random.
-
Apr 5, 2025
Subagents delegate focused subtasks to a separate Claude Code context with its own context window and its own system prompt. This helps with parallel codebase research and isolated review passes, but it adds coordination overhead that is not worth it for simple tasks, where a single agent often remains the better choice.
-
Apr 5, 2025
The built-in Symfony Validator constraints cover standard cases, but business logic like unique slugs, domain-specific formats, or dependencies between fields calls for custom constraint classes. Implementing them correctly keeps validation logic testable, reusable, and cleanly separated from controllers.
-
Apr 5, 2025
Any online shop that sells electrical devices, electronic accessories with a built-in battery, or loose batteries in Germany falls under the German Electrical and Electronic Equipment Act, known as ElektroG, and often additionally under the German Battery Act, known as BattG. Both laws require registration before the first sale and set out under which conditions customers may return old devices or used batteries free of charge. This article explains in plain language what these duties actually mean, who is affected and which steps make sense right now.