Page 173 - Maxim Mironjuk
-
Maxim Mironjuk
-
September 10, 2025
Direct calls to new DateTime() or time() are the classic reason time-dependent logic is hard to test. A custom Clock abstraction fixes the problem at the root and lets you set fixed points in time inside PHPUnit tests.
-
Maxim Mironjuk
-
September 10, 2025
In traditional applications, the current state is stored and its history is discarded. Event sourcing turns this principle around: not the state, but the sequence of events that led to it, is the primary source of truth. The current state is always derivable, and therefore fully auditable, capable of time travel, and easy to debug.
-
Maxim Mironjuk
-
September 10, 2025
The Google results page has long stopped being ten equal blue links: featured snippets, knowledge panels, image carousels, and shopping results all compete for the same screen space. Understanding which feature is realistically achievable for which search intent keeps optimization effort from being wasted on unreachable goals.
-
Maxim Mironjuk
-
September 10, 2025
Custom Bundles were long the standard for reusable Symfony modules. With PHP config classes, Symfony Flex and modern DI patterns, there are lighter-weight paths today, but for public packages, complex container manipulation and Compiler Passes, bundles are still the right tool.
-
Maxim Mironjuk
-
September 10, 2025
Anyone who changes a prompt and only reads the new answer once manually confuses a single case with a reliable improvement. Evaluating prompt quality systematically means building test cases, grading rubrics and automated comparisons that make every prompt change objectively and repeatably measurable.
-
Maxim Mironjuk
-
September 10, 2025
Without a deliberate API versioning strategy, every breaking change turns into a crisis meeting with external integrators. In PHP, three established approaches are available: a version number in the URI, a dedicated version header, or versioning through the Accept header via content negotiation. Which API versioning approach fits depends on your customer structure, release rhythm and the number of versions supported in parallel.
-
Maxim Mironjuk
-
September 10, 2025
A beautiful color palette is not automatically a readable color palette. A color contrast audit reveals which text and background combinations of a Tailwind CSS palette actually pass WCAG AA, before they become a trap for users with reduced vision in the design system.
-
Maxim Mironjuk
-
September 10, 2025
The parallel extension brings real multithreading to PHP: Runtime, Future and Channel create isolated operating system threads instead of cooperative concurrency. Anyone who understands the strict data isolation between threads and knows the limits of closures and autoloading can noticeably speed up CPU intensive tasks without switching to external extensions like Swoole.
-
Maxim Mironjuk
-
September 09, 2025
Assertion functions let you declare runtime checks so the TypeScript compiler folds them into its control flow analysis. This article covers the asserts syntax, how it differs from classic type guards using is, and when writing your own assertion functions actually pays off in practice.
-
Maxim Mironjuk
-
September 09, 2025
Documentation that diverges from the code is worse than no documentation at all. Anyone who doesn't maintain OpenAPI schemas, validation rules, and example values in a structured way in Symfony builds up technical debt that discharges with every breaking change. This article shows how to keep schemas, examples, and validation permanently in sync.
-