Page 9 - Monthly Archives: January 2026
-
Maxim Mironjuk
-
January 23, 2026
Having a video on the page is not enough for good video SEO as long as Google cannot read machine readably what it is about. The VideoObject schema from the schema.org vocabulary provides exactly that information and is a prerequisite for video rich results and carousels in search. This article covers the required fields, a complete practical example, and the difference between self hosted video and embedded YouTube content.
-
Maxim Mironjuk
-
January 22, 2026
A crontab entry is only the beginning of a cron job. Without locking, jobs run in parallel. Without logging, errors disappear. Without monitoring, a broken cron job can run unnoticed for weeks. flock, structured logging, exit code checks and systemd timers turn fragile cron calls into reliable, observable automation units.
-
Maxim Mironjuk
-
January 22, 2026
Variants are the heart of the Tailwind approach. Tailwind CSS v4 extends them considerably: named groups, the has: selector, improved peer logic, and @custom-variant for project-specific states, all without writing a single custom CSS file.
-
Maxim Mironjuk
-
January 22, 2026
PHPUnit finds runtime errors, but only if the corresponding tests exist. PHPStan and Psalm find type errors statically, before the code is ever executed. Only the combination of both approaches closes the gaps that each tool leaves open on its own. This article shows how to integrate PHPStan, Psalm and PHPUnit as a continuous quality chain in PHP projects.
-
Maxim Mironjuk
-
January 22, 2026
A TypeScript library with dozens of internal modules produces just as many individual type declaration files on a standard build, with no visibility into which of them actually belong to the public API. API Extractor solves exactly this problem: a single rollup, a machine readable API report acting as a contract test, and release tags that spell out exactly what consumers are allowed to use.
-
Maxim Mironjuk
-
January 22, 2026
Anyone who only knows setup:upgrade, cache:flush and indexer:reindex is giving up most of the diagnostic and maintenance power the Magento CLI actually offers. Hidden gems such as dev:di:info, indexer:set-mode, maintenance:allow-ips and admin:user:unlock solve concrete problems in seconds that would otherwise require manual database queries, code searches or a full maintenance blackout.
-
Maxim Mironjuk
-
January 22, 2026
The HTML element together with
-
Maxim Mironjuk
-
January 21, 2026
Teams that write commit messages however they feel like lose the ability to evaluate changes programmatically and plan releases automatically. Conventional Commits standardizes the format around type(scope): description, turning the commit history into a reliable foundation for automated changelogs, semantic version numbers, and fully automated releases, all without manual steps in the CI/CD pipeline.
-
Maxim Mironjuk
-
January 21, 2026
The Observer Pattern decouples a state holder from the pieces of code that need to react to its changes, with no direct references between them at all. From a minimal subject class through the native EventTarget interface to WeakRef-based cleanup, this article shows how to implement the Observer Pattern robustly in plain JavaScript.
-
Maxim Mironjuk
-
January 21, 2026
Up through PHP 8.0, the spread operator in array literals only worked with numeric keys, associative arrays still had to be merged with array_merge. Since PHP 8.1, spread syntax supports string keys directly. We cover the difference from the classic numeric spread, collision behavior, and when switching away from array_merge actually pays off.
-