Page 10 - Monthly Archives: March 2026
-
Maxim Mironjuk
-
March 18, 2026
Few terms cause as much anxiety around accessibility as the cease and desist letter. Understanding the actual risk for a Magento store requires cleanly separating unfair competition law from the BFSG's own, quite different enforcement mechanism.
-
Maxim Mironjuk
-
March 18, 2026
Video transcoding, a large data export, or complex report generation rarely fits within the response time of a single synchronous HTTP request. The long-running operations pattern solves this by immediately confirming the operation with HTTP 202 Accepted, while the actual work runs asynchronously in the background and the client polls progress through a separate status endpoint.
-
Maxim Mironjuk
-
March 18, 2026
Attribute selectors are usually reduced to [class] and [id], yet the specification includes prefix, suffix and substring matching, a case-insensitive flag, and the ability to use data attributes as a complete styling interface. This recipe collection shows how much declarative logic lives inside the selector alone.
-
Maxim Mironjuk
-
March 18, 2026
Semantic product recommendations based on similarity rather than exact attribute filters need a way to efficiently search embedding vectors by closeness. Redis Vector Search, built on top of RediSearch, brings exactly this capability through HNSW and FLAT indexes directly into the Redis infrastructure that is likely already in place.
-
Maxim Mironjuk
-
March 18, 2026
A placeholder is a fleeting hint, not a persistent label. It disappears as soon as someone starts typing, is not reliably announced as a field label by many screen readers, and is often hard to read because of its usually faint contrast. This article shows how labels and placeholders correctly work together and where exactly the line falls.
-
Maxim Mironjuk
-
March 17, 2026
Long comparison tables without a fixed header cost users time and orientation. With position: sticky, Alpine.js x-data, and IntersectionObserver, you get a fully scroll-aware table header, complete with a shadow indicator, optional column highlighting, and a responsive fallback strategy, without a jQuery plugin and without JavaScript-based position calculations.
-
Maxim Mironjuk
-
March 17, 2026
A performance budget sets clear upper limits for load time, bundle size, and request count before a store becomes slow, instead of reacting only after the fact. Deriving budgets from real baseline measurements and checking them automatically in the build prevents individual deployments or one extra script from quietly degrading performance without anyone noticing.
-
Maxim Mironjuk
-
March 17, 2026
Magento Open Source has no native store credit feature: the feature for an account-bound customer balance exists only in Adobe Commerce. Anyone who still wants to offer store credit, to refund returns as balance instead of a chargeback, or to build a loyalty program with an ongoing customer balance account, builds a custom module: with declarative schema, Service Contracts, an immutable ledger and a dedicated checkout total calculation.
-
Maxim Mironjuk
-
March 17, 2026
Internal CLI tools almost always grow organically: a flag here, a subcommand there, until nobody can say precisely what a user is allowed to type anymore. With Commander and yargs you can declare flags, options and subcommands so that TypeScript infers the handler signature automatically, turning typos in flag names into compile errors instead of silent undefined values at runtime.
-
Maxim Mironjuk
-
March 17, 2026
Almost every PHP developer has built their own observer pattern at some point, usually a subject class with a list of callbacks. PSR-14 formalizes that pattern into two cleanly separated contracts. We implement both ourselves, including stoppable events, and build a practical domain event mechanism from it without any framework.
-