Page 18 - Monthly Archives: February 2025
-
Maxim Mironjuk
-
February 04, 2025
Making a custom Magento module GraphQL-ready sounds simple, yet it often fails because of missing structure: misplaced schema files, resolvers without clear delegation, di.xml entries that never take effect. This article shows what the file layout should look like and why convention matters more here than creativity.
-
Maxim Mironjuk
-
February 04, 2025
Bun runs TypeScript files directly, with no need for tsc or a bundler to run first, which noticeably shortens development loops. What matters to understand is that Bun only transpiles TypeScript, stripping types and translating syntax, but performs no type checking, that responsibility still sits with a separate tsc invocation or the IDE.
-
Maxim Mironjuk
-
February 04, 2025
A poorly designed Component API in a shared component library creates extra work for every team member who uses it. Props without default values, Emits without type contracts, missing slots for composition points and an undocumented Expose interface all make components hard to use. With clear conventions and TypeScript, Component APIs emerge that are stable, extensible and backwards-compatible.
-
Maxim Mironjuk
-
February 04, 2025
A deployment to staging can happen automatically, a deployment to production needs a deliberate approval. GitLab Environments, when: manual and deployment approvals implement exactly this approval model, complete with a visible deployment history and variable scoping based environment isolation.
-
Maxim Mironjuk
-
February 04, 2025
Treating HAVING and WHERE as interchangeable filter clauses produces queries that either work by accident or run needlessly slow. The difference lies in execution order: WHERE filters before aggregation, HAVING after, and that is exactly what decides what can be filtered at all.
-
Maxim Mironjuk
-
February 03, 2025
CSS pseudo elements are one of the most powerful, yet most often superficially used, features of CSS. ::before and ::after with content and counter, the modern pseudo elements ::marker, ::selection and ::first-line: this article shows what is really possible and which tricks actually work in modern CSS.
-
Maxim Mironjuk
-
February 03, 2025
Loading spinner, error message, data: this triangle of state gets typed out almost identically in every component that loads data from an API. A custom hook bundles that pattern in one place before it silently spreads to every component that needs it, and at the same time shows exactly where a hand-rolled solution ends and a library like TanStack Query begins.
-
Maxim Mironjuk
-
February 03, 2025
The init() hook shows up in every Alpine.js tutorial, but destroy() is frequently overlooked. That is exactly what causes slow-building memory leaks, orphaned event listeners and bugs that only surface after several page navigations. This article explains both hooks in full.
-
Maxim Mironjuk
-
February 03, 2025
With Tailwind v4, native CSS nesting officially enters the workflow through the new Rust-based engine. Developers coming from years of Sass nesting need to adjust a few habits, but gain a technique that runs directly in the browser with no preprocessor at all.
-
Maxim Mironjuk
-
February 03, 2025
On a classic page load, the browser reliably resets focus to the top of the document. With client-side routing and dynamically toggled modals, that does not happen on its own. Fail to explicitly move focus after navigation and when opening or closing dialogs, and your single page application becomes effectively unusable for keyboard and screen reader users.
-