Page 10 - Monthly Archives: February 2025
-
Maxim Mironjuk
-
February 16, 2025
A GitLab pipeline made up of a single long script block is not a CI/CD process, it is automated chaos. Only once Build, Test, Package, Deploy, Verify and Rollback are modeled as distinct stages does a pipeline become traceable, rollback capable and workable for a whole team.
-
Maxim Mironjuk
-
February 16, 2025
PHPStan is the most powerful static analyzer for PHP, but in Symfony projects teams quickly hit limits: magic methods in repositories, Doctrine column types that differ from PHP types, container parameters without types and complex generic annotations. This article shows how to systematically bring PHPStan in Symfony to level 9.
-
Maxim Mironjuk
-
February 16, 2025
position:sticky is one of the most useful CSS features for modern layouts, and one of the most misunderstood. The sticky class in Tailwind CSS is quick to write, but without top, without a parent height, and with overflow on an ancestor, it gets silently ignored.
-
Maxim Mironjuk
-
February 16, 2025
A webhook endpoint is, by definition, publicly reachable and accepts data from an external service without the ability to apply the application's usual login mechanism. Without cryptographic signature verification, anyone who knows the URL can in principle inject arbitrary payloads and trigger business actions such as a payment confirmation or an order status change. This article shows how to build a dedicated webhook controller in Symfony, how to verify an HMAC signature safely against timing attacks using hash_hmac and hash_equals, when the built-in Symfony webhook component fits, and how to process repeated deliveries of the same event idempotently.
-
Maxim Mironjuk
-
February 15, 2025
A single prefers-reduced-motion rule in a single component does not solve a team problem. Only a central motion token system with clear tiers, automated testing and documented patterns ensures that every new animation in the project automatically takes proper account of motion sensitivity.
-
Maxim Mironjuk
-
February 15, 2025
Adding a column or changing an index on a table with millions of rows in a live Magento store risks long table locks and a visible outage at checkout. A well planned zero-downtime migration combines declarative schema deployments with online schema change tools such as gh-ost and pt-online-schema-change, so customers never notice a schema change happening underneath them.
-
Maxim Mironjuk
-
February 15, 2025
A trait copies real method bodies straight into a class, an interface only promises those methods exist, without shipping a single line of implementation. Anyone who mixes traits and interfaces, or swaps one for the other, loses exactly the sharpness that makes object-oriented design robust: horizontal reuse of behavior on one side, binding contracts for polymorphism and testability on the other.
-
Maxim Mironjuk
-
February 15, 2025
Running TypeScript in a monorepo without project references means waiting for a full type check of the entire codebase on every change, with no real type safety enforced between packages. Project references, composite builds, and a shared base configuration create an explicit dependency graph, fast incremental builds, and reliable boundaries between packages, even as the number of packages grows.
-
Maxim Mironjuk
-
February 14, 2025
Component documentation that nobody reads is wasted time. Storybook makes Vue components interactively explorable, for developers, designers, and QA teams alike, generated directly from the source code.
-
Maxim Mironjuk
-
February 14, 2025
A significant p-value result alone does not turn an AB test into a reliable decision basis. Claude helps calculate sample sizes in advance, choose the right significance test, interpret effect sizes, and avoid common mistakes such as peeking or multiple comparisons. This article covers the complete path from test design to a robust recommended action.
-