Page 16 - Monthly Archives: December 2025
-
Maxim Mironjuk
-
December 12, 2025
A failed CI/CD run with a thousand lines of log often costs developers more time than the actual bugfix. Claude reads through build output systematically, separates real errors from noise, and quickly narrows down whether a failure stems from code, pipeline configuration, or infrastructure.
-
Maxim Mironjuk
-
December 11, 2025
Maintaining a separate hand-written interface for every variant of a TypeScript type eventually causes drift between the original and its copies. Mapped types systematically transform existing types with the K in keyof T syntax, apply and strip readonly and optional modifiers on demand, and rename keys with as, all without duplicating a single field.
-
Maxim Mironjuk
-
December 11, 2025
Data modeling with entity-relationship diagrams is the step that comes before every single CREATE TABLE statement: entities, attributes and relationships get defined conceptually first, before being translated into actual tables and foreign keys. This post explains entities, attributes, relationship types and cardinality notation through one continuous example, a library system, and shows the complete path from a diagram to SQL DDL.
-
Maxim Mironjuk
-
December 11, 2025
The automatic property-by-property comparison of assertEquals() fails for value objects with their own business definition of equality. assertObjectEquals() and custom comparator classes solve this by using the class's own real comparison logic.
-
Maxim Mironjuk
-
December 11, 2025
The Claude Code memory system automatically creates structured notes about projects and user preferences that persist across individual sessions, independent of the current context window. Unlike a manually maintained CLAUDE.md file, memory often emerges incidentally from feedback and recurring corrections, which makes control, traceability, and privacy central questions.
-
Maxim Mironjuk
-
December 11, 2025
Git Flow and GitHub Flow solve the same problem in different ways: how a team works on features in parallel without blocking each other. This article explains both branching strategies in detail, shows real Git commands for everyday work, and gives a clear recommendation for which model fits small teams and which fits large ones.
-
Maxim Mironjuk
-
December 10, 2025
A button with 30 Tailwind classes in the template is not a Tailwind problem, it is an architecture problem. Vue and Tailwind can be combined so that class logic lives in computed properties, variants are managed through cva and templates stay readable, without sacrificing the expressiveness of Tailwind.
-
Maxim Mironjuk
-
December 10, 2025
A single disk is always just a matter of time. RAID with mdadm spreads data redundantly across multiple disks, so a disk failure does not immediately take the server down but can be fixed while the system keeps running.
-
Maxim Mironjuk
-
December 10, 2025
When multiple users change the same record at the same time, the choice between Optimistic Locking and Pessimistic Locking determines whether your application reliably prevents lost updates or gets stuck waiting under load. This article explains both locking strategies in MySQL with real SQL and PHP code, walks through SELECT FOR UPDATE and version columns in detail, and helps you decide which model fits which use case.
-
Maxim Mironjuk
-
December 10, 2025
A GraphQL resolver that combines database queries, validation, permission checks and transformation logic in a single class is no longer a resolver, it is an unbounded mini-service. This article shows how to keep resolvers thin, introduce clear layers, and move business logic to where it actually belongs.
-