Monthly Archives: June 2025
-
Maxim Mironjuk
-
June 30, 2025
Classic search accepts a search request and finds matching documents in an index. Some use cases, however, need exactly the opposite direction: a new document arrives, and the application must figure out which of many stored search queries would match it. A typical example is a price alert, where thousands of customers have stored individual search criteria and need to be notified as soon as a new product satisfies exactly those criteria. Elasticsearch provides the percolator query for this, which indexes stored search queries as documents in their own right and efficiently checks, for every new product, which of them match. How this works, how the price alert use case can be implemented concretely, and where the performance limits sit with very many stored queries is what this article covers.
-
Maxim Mironjuk
-
June 30, 2025
Outdated dependencies are, according to OWASP, one of the most common entry points into web applications. This article shows how Magento teams monitor CVE databases, protect composer.lock against uncontrolled drift, automate updates with Dependabot or Renovate, and reliably keep up with Magento's quarterly security patch cycle without destabilizing the codebase.
-
Maxim Mironjuk
-
June 30, 2025
Manual memoization with useMemo and useCallback is error prone, hard to maintain and frequently used incorrectly. The React Compiler analyzes component code at build time and automatically inserts the right memoization wrappers, without developers having to manage dependency arrays or decide when something should be cached. How that works and what it means.
-
Maxim Mironjuk
-
June 30, 2025
Schema definition, query language, mutations, and resolvers are the four load-bearing pillars of every GraphQL system. Anyone who understands how they work together and where the typical mistakes happen builds APIs that scale, instead of APIs that have to be rebuilt after the first release to production.
-
Maxim Mironjuk
-
June 30, 2025
Manually written test cases almost always only check inputs a developer can imagine, while real attackers systematically search for exactly the inputs nobody thought of. Fuzzing closes this gap by automatically firing huge amounts of random or deliberately mutated input at an application while watching for crashes, memory errors, or unexpected behavior indicating an actual security vulnerability, instead of relying on the limited imagination of a single test author.
-
Maxim Mironjuk
-
June 30, 2025
The new CSS property field-sizing makes the well known JavaScript tricks for auto-growing textareas obsolete. With field-sizing: content, a form field adapts to its content starting from the very first keystroke, natively in the browser, with no event listener and no layout hacks.
-
Maxim Mironjuk
-
June 30, 2025
rsync is more than a copy tool: with the right flags it becomes a full deployment engine. --delete for exact mirrors, --exclude-from for clean exclusions, --checksum for reliable transfers, --link-dest for atomic deployments, and --bwlimit for controlled bandwidth make rsync the standard for professional server deployments.
-
Maxim Mironjuk
-
June 30, 2025
Playwright has established itself alongside Cypress as a second central solution for end to end tests and ships with multi browser support, a built in Trace Viewer and a free worker model right out of the box. This article walks through installation, the configuration file and a first real test against a Magento and Hyva storefront, so teams can make an informed choice between Cypress and Playwright.
-
Maxim Mironjuk
-
June 30, 2025
An appointment shifts by an hour, a month is suddenly displayed wrong, a report shows a duplicated date on the night of a clock change. Timezones and dates are one of the areas of JavaScript where small misunderstandings create large, hard to reproduce bugs. This article shows the concrete pitfalls and how to reliably avoid them.
-
Maxim Mironjuk
-
June 30, 2025
Anyone who has stored JSON data as a plain string in Redis knows the problem: even the smallest change to a single field requires loading the entire document, deserializing it, changing it, and writing the whole thing back. RedisJSON solves this by managing JSON documents as their own native data type and allowing targeted access to individual paths through JSONPath expressions, without ever moving the whole document.
-