Page 9 - Monthly Archives: March 2026
-
Maxim Mironjuk
-
March 20, 2026
An international Magento shop running a Hyvä theme rarely needs a full i18n library like vue-i18n or react-intl, because most translatable text already flows through Magento's own translation mechanism from PHP. For purely client-side Alpine interactions, such as a filter bar or a quantity picker, a much leaner pattern built from a simple translation object and Alpine.store() is usually enough. This article covers how to build that pattern, how to handle plural forms and placeholders, and where the line to a real i18n library actually sits.
-
Maxim Mironjuk
-
March 20, 2026
An API key that has stayed unchanged for three years looks harmless on the surface as long as nothing goes wrong. That is exactly the problem: if the key was ever compromised, through a leaked log, an accidentally public repository, or a compromised third party, the window for an attacker stays open until someone actively swaps the key. Automated rotation closes that window systematically, without manual intervention and without taking applications down.
-
Maxim Mironjuk
-
March 19, 2026
Insecure REST APIs are not a rare occurrence. They do not arise from bad intentions but from missing security layers in a growing codebase. Authentication gaps, missing rate limiting, unvalidated input, SSRF vectors and mass assignment weaknesses are the most common findings in API security reviews, and they can be closed systematically with clear patterns.
-
Maxim Mironjuk
-
March 19, 2026
Every public API has to change eventually. The question is not whether, but how, without breaking existing clients. API versioning is not a pure architecture decision, it is an operational process: from the URI strategy through content negotiation to structured deprecation cycles, the strategy determines how much technical debt an API accumulates over time.
-
Maxim Mironjuk
-
March 19, 2026
Apollo Client connects GraphQL and React Native through a normalizing cache, typed hooks, and a persistence layer that keeps data available across app restarts. Configuring ApolloClient, InMemoryCache, and the Apollo hooks correctly means fewer network roundtrips, instant UI feedback through optimistic updates, and an app that stays usable even on flaky mobile connections.
-
Maxim Mironjuk
-
March 19, 2026
Anyone using modern frontend stacks with PhpStorm loses time to missing autocomplete configuration, failed CSS class completion, and Vite processes that aren't integrated into the IDE. The right settings reduce context switching between terminal, browser and editor to a minimum.
-
Maxim Mironjuk
-
March 19, 2026
A script with #!/bin/sh runs fine on your own machine and fails on a Debian server with a cryptic error. The reason is the gap between Dash and Bash: two shells with a shared POSIX base but very different feature sets.
-
Maxim Mironjuk
-
March 19, 2026
Managing multilingual product attributes in Magento 2 starts with understanding how the EAV model stores values per store view, and when an empty store view value silently falls back to the default store. Without this fallback mechanism in mind, translation gaps arise that stay invisible in the backend but appear as foreign language text in the storefront.
-
Maxim Mironjuk
-
March 19, 2026
How to use a custom Doctrine DBAL type to work with a Money object or an EmailAddress value object directly in entities, including convertToPHPValue, convertToDatabaseValue, and registration.
-
Maxim Mironjuk
-
March 18, 2026
A skeleton screen already shows the rough shape of the upcoming content during a fetch, instead of leaving an isolated spinner in empty space. In Alpine.js, that pattern comes together in a few lines using x-show, x-if, and a single loading state flag, provided the skeleton and the real content keep exactly the same size, so switching between them never produces a layout shift.
-