Page 13 - Monthly Archives: July 2025
-
Maxim Mironjuk
-
July 16, 2025
An open security group that accidentally allows access from the entire internet, or a storage bucket without encryption, rarely comes from malicious intent. It usually comes from an overlooked default value in a Terraform file. Infrastructure-as-Code security scanning checks exactly these configurations automatically, before they are ever applied, preventing misconfigurations from surfacing only through a manual audit or, worse, through an actual incident.
-
Maxim Mironjuk
-
July 16, 2025
An alt text in a product catalog only becomes useful once it matches the context of the image without starting with image-of or photo-of. This article shows how alt text for product photos, infographics, and icons concretely differs, when empty alt attributes are correct, and how to audit existing catalog data for genuine quality instead of mere presence.
-
Maxim Mironjuk
-
July 16, 2025
jest-axe wires the rule engine of axe-core directly into Jest tests and checks rendered React components against recognized WCAG rules. In a CI pipeline, this stops obvious accessibility violations from silently reaching the main branch, but it does not replace manual review.
-
Maxim Mironjuk
-
July 16, 2025
Pagination decides the load time and consistency of every list endpoint. This article shows why classic offset pagination becomes slow with growing tables, how cursor-based keyset pagination works in PHP, and how opaque cursor tokens are encoded robustly.
-
Maxim Mironjuk
-
July 16, 2025
A test is only as meaningful as the data it runs on. Claude helps with test data generation by producing realistic, structurally consistent, and deliberately faulty datasets, from single fixtures to bulk data for performance tests, without ever using real customer data.
-
Maxim Mironjuk
-
July 16, 2025
ECMAScript is evolving faster than ever. ES2024 and ES2025 bring features the community has been asking for for years: grouping data, better promise control, real date handling without libraries, and structured pattern matching. This article covers every important addition with concrete examples.
-
Maxim Mironjuk
-
July 16, 2025
A red-outlined input field is useless to screen reader users if the error is not programmatically linked to the field. This article shows how aria-invalid, aria-describedby, and live regions reliably announce validation errors, including a complete accessible checkout example for Magento and Hyvä.
-
Maxim Mironjuk
-
July 15, 2025
@codeCoverageIgnore excludes lines of code from the coverage calculation, making it a legitimate tool for cases where real testability is neither meaningful nor possible, such as trivial getters or unreachable defensive code. But when the annotation gets spread generously over code that is hard to test but genuinely worth testing, an honest measurement tool turns into an inflated number that gives the team a false sense of safety.
-
Maxim Mironjuk
-
July 15, 2025
Few PHP topics get discussed with as much confident half knowledge as whether concatenation, interpolation, heredoc, or sprintf is fastest. The honest answer is that for the vast majority of real applications the difference is irrelevant, and anyone who still wants to speak with authority needs a clean benchmark setup rather than a quick microtime comparison inside a loop. This article shows how to measure this properly, what OPcache actually changes, and when readability should completely dominate the performance question.
-
Maxim Mironjuk
-
July 15, 2025
Classic tables store data row by row: each row sits physically together on disk, which makes single-record access fast. Analytical queries, by contrast, often read only a handful of columns, but across millions of rows, and with row storage still have to fetch every complete row from disk regardless. Columnstore indexes flip the storage model, lay out values column by column, and thereby achieve a speed gain on large aggregations that classic B-tree indexes can barely match.
-