Page 333 - Mironsoft Blog
-
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.
-
Maxim Mironjuk
-
February 03, 2025
Anyone who only occasionally checks their own brand visibility in AI search engines with a random prompt is not collecting solid data, just snapshots with no basis for comparison. A systematic prompt workflow with standardized question sets, fixed documentation, and repeatable execution across multiple AI search engines makes visibility changes genuinely measurable for the first time. This article explains how to build such a workflow and how to automate it with API access.
-
Maxim Mironjuk
-
February 03, 2025
Running a Magento store into Black Friday without systematic load testing means relying on guesses instead of measurements. This article shows how load, stress, and spike tests differ, how to model realistic traffic patterns with k6, JMeter, and Locust, and which metrics beyond response time actually determine a store's true capacity.
-
Maxim Mironjuk
-
February 02, 2025
Classic page-by-page pagination with from and size works reliably for the first few result pages, but becomes expensive with deep pagination and returns inconsistent results the moment the underlying data set changes between two page fetches. For export functions that need to reliably and completely walk through thousands or millions of documents, that is not good enough. The point-in-time API solves this by capturing a consistent snapshot of the index at a fixed moment, against which search_after can then paginate efficiently and without duplicates or missing documents. How this combination works technically, how it differs from the older scroll mechanism, and how a robust export function can be built on top of it is what this article covers.
-
Maxim Mironjuk
-
February 02, 2025
SSH tunneling turns a single encrypted connection into a secure channel for any TCP service that would otherwise only be reachable locally on a server. This article explains local, remote and dynamic port forwarding through concrete examples, shows a tunnel into a database only reachable from the server itself, covers autossh for permanently stable connections, and the security risks of tunnels left open.
-
Maxim Mironjuk
-
February 02, 2025
A MySQL major version upgrade is not a simple package update command, it is a one-way street with several silent behavior changes that only surface after the upgrade. Between MySQL 5.7 and 8.0 lie changes to the optimizer, the default character encoding, authentication, and the entire query cache subsystem, all of which can hit a production Magento shop hard if they are not known before the upgrade.
-