Page 2 - Monthly Archives: August 2025
-
Maxim Mironjuk
-
August 30, 2025
A test suite with a few hundred tests runs completely in seconds, and nobody thinks about subsets. But once a project grows to several thousand tests, running the entire suite for every small change becomes impractical. PHPUnit's @group attributes and the command line's --filter parameter let you run exactly the tests relevant to the current change, for example only fast unit tests or only a specific module, provided the team agrees on a consistent taxonomy.
-
Maxim Mironjuk
-
August 30, 2025
A framework upgrade, an automated refactoring, or a formatting overhaul can change tens of thousands of lines in a single merge request, even though the actual content-relevant change makes up only a fraction of that. Without countermeasures, every reviewer drowns in noise and overlooks exactly the line that carries real risk. This article shows concrete techniques, from .gitattributes for generated files through clean commit separation to GitLab-specific diff view settings, that keep large, unavoidable diffs reviewable anyway.
-
Maxim Mironjuk
-
August 30, 2025
@apply is one of the most controversial features in Tailwind CSS. Condemned wholesale too often, reached for too carelessly. This article shows exactly when @apply delivers real value, when it undermines the utility-first approach, and which clean alternatives avoid the architectural trade-off.
-
Maxim Mironjuk
-
August 29, 2025
Realistic code sharing between React web and React Native does not mean using the same components everywhere, it means deliberately separating what is platform agnostic from what cannot be. Business logic, types, API clients and validation share cleanly, interface components mostly do not. This article shows a working monorepo structure with real examples.
-
Maxim Mironjuk
-
August 29, 2025
Dynamic data masking solves a problem that classic access control only partially covers: a support agent needs access to a customer table to find an order, but not the full credit card number or the private email address behind it. Instead of maintaining two separate copies of the table or overloading application logic with visibility rules, the database itself masks certain column values at runtime, depending on the role of the current connection. This article explains the mechanics, shows practical rules for different data types, and makes clear where the limits of the technique lie.
-
Maxim Mironjuk
-
August 29, 2025
Whoever stayed on React 17 has several major versions and deep changes to rendering, the root API and concurrent features ahead of them. The React 17 to 19 upgrade only succeeds safely with an intermediate step through React 18 and a structured checklist, not a single risky jump.
-
Maxim Mironjuk
-
August 29, 2025
As soon as several AI agents collaborate on a task, how they exchange information becomes the actual architecture decision. Communication patterns such as direct handoff, shared state, structured messaging and the blackboard pattern differ significantly in context consumption, coupling and error proneness, and the wrong choice quickly leads to context loss or conflicting intermediate states.
-
Maxim Mironjuk
-
August 29, 2025
useEffect runs after the paint, useLayoutEffect synchronously before it. A tiny timing difference on paper, one that in practice decides whether a DOM measurement for a tooltip or a scroll position visibly flickers or not.
-
Maxim Mironjuk
-
August 29, 2025
ReDoS, short for regular expression denial of service, arises when a regular expression exhibits behavior called catastrophic backtracking on certain, deliberately crafted inputs, in which the time needed for evaluation grows exponentially instead of linearly with input length, so that an input only a few hundred characters long can block the regex engine for seconds, minutes, or practically indefinitely. Since regular expressions are often used prominently for input validation, say for email or format checks right at the start of request processing, a single vulnerable regex can be enough to bring down an entire application with just a handful of requests.
-
Maxim Mironjuk
-
August 29, 2025
Once a REST API needs to deliver real-time updates, such as live order status, notifications, or price changes, teams face a choice between Server-Sent Events and WebSockets. Both solve the problem that classic HTTP polling creates unnecessary latency and load, but they differ fundamentally in protocol overhead, direction of data flow, and implementation complexity, which is why the choice significantly affects the long-term maintenance cost of an API extension.
-