Page 8 - Monthly Archives: July 2025
-
Maxim Mironjuk
-
July 23, 2025
Bash scripts quickly grow beyond the size of a single one-liner. Anyone who consistently uses functions, local scope with local and declare, libraries via BASH_SOURCE, and namerefs builds automation that remains understandable and extensible even a year later.
-
Maxim Mironjuk
-
July 23, 2025
A single call to htmlspecialchars() is often mistaken for complete XSS protection, yet safe output encoding always depends on where the value ends up: HTML body, HTML attribute, JavaScript string and URL each require their own escaping rules, and mixing them up leaves open exactly the gap that was supposed to be closed.
-
Maxim Mironjuk
-
July 23, 2025
Alpine.js debugging feels different from React or Vue because there is no dedicated component tree panel out of the box. With browser DevTools, the Alpine DevTools extension and a few console techniques, you can still see, change and trace the state of any component live, before a bug ever reaches production.
-
Maxim Mironjuk
-
July 23, 2025
Off-the-shelf rule sets catch generic problems, but every mature codebase accumulates conventions that only a custom rule can enforce mechanically. This article walks through the anatomy of an ESLint rule, from syntactic and typed linting through fixer functions, testing with RuleTester, and wiring everything into an ESLint 9 flat config.
-
Maxim Mironjuk
-
July 23, 2025
An E2E test that, while loading a page, inevitably also waits on a real tracking script, an embedded chat widget, or an external payment script, automatically inherits the entire instability, load time, and rate limiting of these foreign systems the team doesn't control, even though the actual test case usually has nothing substantively to do with these third-party services. Deliberately blocking, or where genuinely necessary, deliberately mocking external scripts decouples test stability from the reliability of these foreign systems and measurably speeds up test runs.
-
Maxim Mironjuk
-
July 22, 2025
Transparent Huge Pages sound like a free performance win, since the kernel forms larger memory pages on its own without requiring any application changes. On database and cache servers, that very automation regularly turns out to be a source of unpredictable latency spikes, while statically reserved huge pages offer a very different, far more controllable behavior.
-
Maxim Mironjuk
-
July 22, 2025
Featured snippets sit above the classic first organic result and hand users the answer right inside the results page. Understanding which format Google favors for which type of query lets you target position zero deliberately instead of hoping for it.
-
Maxim Mironjuk
-
July 22, 2025
A Docker image is not a black box. It is an ordered sequence of read-only layers that together form the container's filesystem. Anyone who understands how layers are built, why the build cache gets invalidated, and how registries distribute images efficiently writes Dockerfiles that build fast and produce small images.
-
Maxim Mironjuk
-
July 22, 2025
Vitest UI replaces plain terminal output with an interactive dashboard in the browser, complete with test filtering, module graph, coverage heatmap and snapshot diffs at a glance. Anyone regularly searching through hundreds of tests in a Vue project finds failing cases and untested code paths much faster with Vitest UI than by scrolling through console logs.
-
Maxim Mironjuk
-
July 22, 2025
Quoting in Bash is the most underestimated topic in shell programming. Word splitting and globbing break scripts in ways that are invisible while you write them, yet they show up reliably in production data with spaces, special characters and wildcards. This article covers all the common quoting mistakes and shows the correct alternatives.
-