Page 303 - Maxim Mironjuk
-
Maxim Mironjuk
-
March 19, 2025
Decorators extend classes, methods, and properties with reusable behavior without touching the underlying code. Since TypeScript 5.0, the new TC39 Stage 3 standard is available with no compiler flag, while Angular and older NestJS versions still rely on experimentalDecorators and reflect-metadata. This article walks through both systems with real code examples for logging, validation, and dependency injection.
-
Maxim Mironjuk
-
March 19, 2025
A misconfigured Elasticsearch or OpenSearch installation noticeably slows down every category page and every faceted search in Magento. This article shows how index mapping, shard sizes, JVM heap, and query patterns determine actual response time, how to find bottlenecks with the Explain API and cluster health checks, and how to avoid expensive wildcard and fuzzy queries in layered navigation.
-
Maxim Mironjuk
-
March 18, 2025
A breadcrumb bar built from nested div and span elements with separators looks correct to sighted users, but delivers no information whatsoever to a screen reader that it's a navigation aid with a clear position in the page hierarchy. This article covers how nav with aria-label, aria-current, a semantically correct list structure, and accessible pagination controls create real, usable navigation for screen reader users, with complete practical examples from Hyva.
-
Maxim Mironjuk
-
March 18, 2025
EN 301 549 is the invisible foundation underneath most accessibility discussions in Europe: the BFSG, the European Accessibility Act, and public procurement rules all point back to this standard, yet few project teams have ever opened the actual document. Anyone who only knows WCAG only knows part of it.
-
Maxim Mironjuk
-
March 18, 2025
Custom share buttons hardcoded to a handful of social media platforms are outdated. The Web Share API opens the operating system's native share dialog, and the user decides which app to use: WhatsApp, Telegram, Email, Notes, or anything else. The result is better UX with less code and no dependency on third-party SDKs.
-
Maxim Mironjuk
-
March 18, 2025
Component Testing with Cypress closes the gap between isolated unit tests and slow end to end runs. Vue components are actually mounted in the browser, with a real DOM, real events, and controllable network calls, without booting up the entire application.
-
Maxim Mironjuk
-
March 17, 2025
A publicly reachable GraphQL endpoint that accepts arbitrary mutations is an open door for data manipulation, spam, and automated attacks. GraphQL persisted mutations close this gap by only allowing execution of a server-side pre-approved list of operations, everything else gets rejected before a single resolver ever runs.
-
Maxim Mironjuk
-
March 17, 2025
Error modeling is the neglected part of API design. RFC 9457 Problem Details, domain-specific error codes and polymorphic error schemas make the difference between an API where integrators have to guess what an error means and an API where errors are self-explanatory and machine-processable.
-
Maxim Mironjuk
-
March 17, 2025
A .env file with plaintext passwords inside the deployment artifact is a security risk many Symfony teams silently accept. Vault management with HashiCorp Vault replaces static secrets with dynamic, short lived credentials that rotate automatically and are logged without gaps. This article shows how Symfony is connected to Vault in practice.
-
Maxim Mironjuk
-
March 17, 2025
A skeleton screen, a placeholder layout made of gray boxes and bars shown in place of the actual content while it loads, has become a standard pattern for perceived loading states over the past several years. The crucial point that often gets missed is that a skeleton screen shortens perceived wait time without actually improving technical Core Web Vitals values like Largest Contentful Paint, and under certain circumstances it can even worsen the Cumulative Layout Shift score. This article explains why skeleton screens work psychologically, where their technical limits lie, how to avoid CLS risk at the transition to real content, and when a plain spinner is the more pragmatic choice.
-