Page 5 - Monthly Archives: November 2025
-
Maxim Mironjuk
-
November 24, 2025
A DNS record pointing to a long decommissioned cloud service looks harmless, yet it is one of the most underrated vulnerabilities on the web. We explain how attackers take over dangling CNAME records, which cloud services are hit most often, and how a systematic DNS audit closes the gap before anyone exploits it.
-
Maxim Mironjuk
-
November 24, 2025
In production systems, GraphQL is not a query format, it is an architecture topic. Anyone who writes elegant queries but ignores resolver depth, N+1 problems, complexity limits and caching builds APIs that break under load. These 50 patterns show what actually works in real GraphQL projects.
-
Maxim Mironjuk
-
November 24, 2025
A central security team expected to personally review every pull request and every architecture decision inevitably hits a hard scaling limit as the developer headcount grows, since the number of security experts typically grows considerably slower than the number of developers and the code they produce. A security champions program solves this scaling problem by establishing, in every single development team, a person with a deeper interest in security as a local first point of contact who works closely with the central security team, without themselves being a full-time security expert.
-
Maxim Mironjuk
-
November 23, 2025
A robust reorder function does more than blindly copy order items into the cart: it checks before the click whether products are still sellable, surfaces missing items transparently, and lets customers decide consciously, through an Alpine.js confirmation dialog, which items are actually reordered, all backed cleanly by a controller, a ViewModel, CSRF protection and CSP-compliant scripts.
-
Maxim Mironjuk
-
November 23, 2025
Modern Magento stores built with Hyvä Theme and Alpine.js render large parts of their content in the browser, yet Google crawls, renders, and indexes that content in separate, time-shifted phases. This article explains how the Web Rendering Service works, which mistakes make client-side rendered pages invisible, and how URL Inspection and clean hydration timing ensure Googlebot truly sees everything.
-
Maxim Mironjuk
-
November 23, 2025
Anyone who writes tests without a clear pattern ends up with a test suite that is slow, brittle and hard to understand. Data providers, meaningful assertions, isolated mocks and a sensible coverage strategy separate tests that immediately catch a refactoring mistake from green tests that stay green despite bugs.
-
Maxim Mironjuk
-
November 22, 2025
Anyone who only checks DNS records one at a time by hand misses propagation problems and silent changes. Automating DNS lookups with dig and host processes domain lists in seconds, compares resolvers, and catches configuration mistakes before customers report them.
-
Maxim Mironjuk
-
November 22, 2025
An undo feature looks at first glance like something that requires a full-blown state management library. In practice, a solid undo/redo pattern can be built with a simple history array and a handful of lines of Alpine code. This article walks through a snapshot-based implementation using a form example, covers debouncing changes, and lays out exactly where this approach hits its limits with deeply nested state.
-
Maxim Mironjuk
-
November 22, 2025
Mutable objects are one of the most common sources of hard-to-trace bugs: a value changes somewhere in the call graph, and nobody quite remembers where. Readonly Properties move this guarantee from convention to the language level, for individual properties since PHP 8.1, for entire classes since PHP 8.3, turning immutability into a property the interpreter itself enforces instead of merely documenting.
-
Maxim Mironjuk
-
November 22, 2025
Pulling in an untyped JavaScript library costs you autocomplete and type safety across the whole project. Declaration files close that gap without touching the library's own code. This guide covers when DefinitelyTyped already has you covered, when you actually need your own types, and how to safely extend the global Window object.
-