Page 21 - Monthly Archives: April 2025
-
Maxim Mironjuk
-
April 06, 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.
-
Maxim Mironjuk
-
April 06, 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.
-
Maxim Mironjuk
-
April 05, 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.
-
Maxim Mironjuk
-
April 05, 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.
-
Maxim Mironjuk
-
April 05, 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.
-
Maxim Mironjuk
-
April 05, 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.
-
Maxim Mironjuk
-
April 05, 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.
-
Maxim Mironjuk
-
April 05, 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.
-
Maxim Mironjuk
-
April 05, 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.
-
Maxim Mironjuk
-
April 04, 2025
env.php does not belong in the repository, and it does not belong in the build artifact. Ignore that rule and you end up with a release model that breaks at the first environment switch. This article explains how app/etc, shared directories, and config.php correctly work together in the symlink release model with GitLab CI/CD.
-