Page 11 - Monthly Archives: January 2025
-
Maxim Mironjuk
-
January 18, 2025
Create React App is officially deprecated and no longer maintained. Vite has taken over as the standard for React tooling: natural ESM in the dev server, sub-100ms hot module replacement, and a configuration that never requires ejecting. This article explains why the switch is worth it and how it goes smoothly.
-
Maxim Mironjuk
-
January 18, 2025
Domain Driven Design in Symfony rarely fails because of a poor strategic understanding of the business domain and almost always fails at the tactical implementation in code. This article shows concretely how value objects, aggregate boundaries, repository interfaces and domain events are implemented in Symfony, without Doctrine attributes polluting the pure domain layer.
-
Maxim Mironjuk
-
January 18, 2025
A database password in a .env file or a pipeline variable is a secret that eventually ends up in a log, a backup, or a history file. Vault secrets that Bash scripts fetch, verify, and never persist anywhere close exactly that gap, including dynamic database credentials and automatic rotation.
-
Maxim Mironjuk
-
January 17, 2025
Anyone who still references methods and functions through strings like 'strlen' or arrays like [$object, 'method'] gives up type checking, IDE refactoring, and reliable visibility checks. First-class callable syntax turns those references into real, parser-resolved expressions and closes one of the last string-based gaps in the language.
-
Maxim Mironjuk
-
January 17, 2025
A drop cap, the enlarged initial letter at the start of a paragraph, was built in CSS for years using float, an estimated font-size, and a lot of manual tuning. The initial-letter property now handles the height and alignment calculation natively and allows precise control over how many lines the initial spans.
-
Maxim Mironjuk
-
January 16, 2025
Password hashing directly determines how expensive it is for an attacker to crack each individual password after a database leak. Argon2id is now considered the preferred algorithm because it is memory-intensive and therefore resistant to GPU- and ASIC-backed attacks, while bcrypt with its CPU-bound cost function has worked as a solid standard for decades. This article shows how to correctly configure, salt, pepper, and migrate both algorithms in production using the PHP standard API password_hash() and password_verify().
-
Maxim Mironjuk
-
January 16, 2025
The GitLab Runner is the engine of every pipeline: it executes the jobs defined in .gitlab-ci.yml. Which runner type fits Magento builds and deployments depends on isolation, performance, security requirements, and available infrastructure.
-
Maxim Mironjuk
-
January 16, 2025
Starting Composer and npm from scratch costs minutes on every single build. The good news is that both package managers ship with robust local caches that can persist across Docker builds without inflating the image size. The key lies in correctly separating the lock file layer, the vendor layer and the cache mount, and in understanding which cache type is the right one for each situation.
-
Maxim Mironjuk
-
January 16, 2025
A scroll progress bar shows readers of a long article at a glance how much content still follows and how far they have already come. With Alpine.js, this progress indicator can be built in a few lines, bound performantly to the scroll event, and shown either as a horizontal bar at the top or vertically on the page edge.
-
Maxim Mironjuk
-
January 16, 2025
Global Magento stores lose revenue when every request has to travel across continents to reach the origin server. Edge functions move geolocation routing, A/B testing and image delivery to the nearest CDN node. The result is noticeably faster response times for customers in North America, Asia or Australia, without touching the core Magento logic running at the origin.
-