Page 9 - Monthly Archives: September 2025
-
Maxim Mironjuk
-
September 16, 2025
Generated columns automatically compute a value from other columns in the same row and, unlike plain expressions in a WHERE clause, can be indexed directly. This article explains the difference between STORED and VIRTUAL, shows indexing strategies, and covers concrete use cases for JSON extraction and computed totals in MySQL 8.
-
Maxim Mironjuk
-
September 16, 2025
Lighthouse CI has established itself as a practical tool for checking performance metrics directly in a pull request, but it works with simulated network conditions on a single machine, usually running locally inside the CI environment. The WebPageTest API takes a different route: it runs real load time tests from real locations, over real network connections with realistic throttling, and additionally delivers a filmstrip view that shows the visual loading sequence frame by frame. This article explains the difference to Lighthouse CI, shows how to define performance budgets as an automated CI gate, and describes how results get compared between deployments to catch regressions early.
-
Maxim Mironjuk
-
September 16, 2025
Prop drilling and global variables are signs of tight coupling. Custom Events offer a native DOM solution: components send events, others listen, without a direct reference to each other, without a framework, and with full TypeScript support.
-
Maxim Mironjuk
-
September 15, 2025
With marks: crop and the bleed descriptors of the @page rule, crop marks and bleed can be simulated directly in the browser, no layout or print software required. Anyone who understands where this CSS mechanic ends and where real print production with dedicated PDF export begins avoids expensive surprises right before a print job ships.
-
Maxim Mironjuk
-
September 15, 2025
Choosing the right Vue 3 component library decides accessibility, bundle size and how much design control the team keeps. Headless UI, Radix Vue, shadcn/vue, PrimeVue and Naive UI follow fundamentally different philosophies, and this article shows which one is right for which context.
-
Maxim Mironjuk
-
September 15, 2025
Poor API error responses cost development time, on both sides. When consumers only get {"error": "Something went wrong"}, they can neither react programmatically nor debug in a targeted way. RFC 9457 Problem Details for HTTP APIs, machine-readable error codes, structured field errors and correlation IDs turn error cases into a first-class feature of the API, not an afterthought.
-
Maxim Mironjuk
-
September 15, 2025
Forcing document.querySelector results through as any or as HTMLInputElement wholesale throws away exactly the type safety TypeScript is supposed to provide. This article shows how to properly secure DOM elements, events, forms, and custom data attributes using the built-in lib.dom.d.ts types, real null checks, clean type guards, and typed event listeners, so the compiler catches real bugs instead of hiding them behind any.
-
Maxim Mironjuk
-
September 15, 2025
Since PHP 8.0, the JIT compiler translates hot opcode paths into native machine code at runtime, but the effect depends entirely on the workload: numerical computation, image processing, and parsing large volumes of data show measurable runtime gains, while classic, database-heavy web applications barely benefit because wait time on syscalls dominates there. This article explains the architecture of Function JIT and Tracing JIT, the relevant opcache.jit configuration values, and a solid benchmark methodology to measure the actual effect in your own project instead of guessing.
-
Maxim Mironjuk
-
September 15, 2025
Generic SEO extensions often produce Schema.org markup that is duplicated or incomplete, because they have no access to the actual Hyvä ViewModel data. Building Hyvä Schema.org markup directly in the phtml template through a dedicated ViewModel gives full control over Product, Breadcrumb and Organization data, without extra module overhead and without conflicts with the CSP setup.
-
Maxim Mironjuk
-
September 14, 2025
Event driven microservices replace synchronous REST calls between services with asynchronous integration events distributed through Symfony Messenger onto a shared broker. This article shows how the transactional outbox pattern solves the dual write problem, how consumers stay idempotent, how event schemas can be versioned, and when a saga orchestrator becomes necessary for distributed business processes.
-