Page 2 - Monthly Archives: March 2026
-
Maxim Mironjuk
-
March 29, 2026
Arrays as request and response data containers are the most common maintenance problem in Symfony REST APIs: no type safety, no autocompletion, no documentation generated from the code. PHP 8.4 readonly properties, the Symfony Serializer and the Symfony Validator turn DTOs into a clear upgrade, with less code, more safety and better IDE support.
-
Maxim Mironjuk
-
March 29, 2026
The CAP theorem is often quoted as an abstract formula, but above all it is a practical decision tool for the moment a network actually fails. During a partition, a distributed system has to decide whether it keeps giving consistent answers and sacrifices availability for it, or stays available and accepts temporarily inconsistent data in return.
-
Maxim Mironjuk
-
March 29, 2026
A TypeScript review that only checks syntax misses the actual risks: any creep, unnecessary as assertions, unreadable generic constructs, and non-null assertions that mask real error sources. This article covers the most important red flags experienced reviewers look for, a practical checklist, and a way to keep type-safety rigor and review speed in balance.
-
Maxim Mironjuk
-
March 29, 2026
Your CSS architecture choice shapes team productivity, bundle size, maintainability, and onboarding effort for years to come. CSS-in-JS, Utility-First CSS, and Vanilla CSS all solve the same underlying problem with fundamentally different approaches, and each one has specific contexts where it comes out ahead.
-
Maxim Mironjuk
-
March 29, 2026
only and except were the standard way to run jobs conditionally in GitLab CI for years, but the rules keyword has superseded both for a long time and enables condition logic that only/except simply cannot express. This article shows why the migration pays off and how it succeeds step by step in existing pipelines.
-
Maxim Mironjuk
-
March 29, 2026
Anyone lifting a grown PHP project onto PHPUnit 10 or 11 runs into a flood of deprecation notices, changed assertion signatures, and removed interfaces. This article shows a structured path through the migration, without endangering the running test suite and without having to touch every test class at once.
-
Maxim Mironjuk
-
March 29, 2026
A test that sometimes passes and sometimes fails is worse than no test at all. It erodes trust in the entire test suite, forces manual re-runs and hides real regressions behind noise. Flaky tests arise from specific root causes, and every single one of them can be fixed for good.
-
Maxim Mironjuk
-
March 29, 2026
A design team usually hands over exactly one hex value for the brand color, while Tailwind expects a complete scale from 50 to 950 for backgrounds, borders, text and hover states. Anyone who tries to click together those eleven steps by hand in a graphics tool rarely gets a consistent result, because lightness and saturation are hard to space evenly without a fixed color space. An OKLCH-based interpolation automates that process and produces scales that feel just as even as Tailwind's own built-in palettes.
-
Maxim Mironjuk
-
March 28, 2026
Testing discount and tax calculations with only a handful of hand-picked example values checks nothing but the cases you happened to think of while writing them. Property-based testing lets a library generate hundreds of random inputs, verify a general property such as never negative, automatically surface edge cases, and shrink every failure down to the smallest possible counterexample.
-
Maxim Mironjuk
-
March 28, 2026
The Notifications API only displays what already lives in the browser. To actually reach users after the tab has long been closed, you need the Web Push API: VAPID identity, a push subscription, and a server that delivers through the browser's push service.
-