Proof library by Michał Gacek
Practical notes on AI workflows, architecture, quality, and full-stack delivery.
These posts document decisions behind real systems: TypeScript, backend architecture, testing strategy, developer workflows, and AI beyond demos.
Featured article
Redis in Practice: A Case Study with Hono and TypeScript
A practical case study of using Redis in a small Hono + TypeScript API - caching, counters, rate limiting, and short-lived state. Patterns that solve real backend problems, not abstract SET foo bar tutorials.
-
How I Built an LLM Workflow That Stabilized E2E Tests in a Real Project
Flaky E2E tests are silent killers of team velocity. Here is how I turned an LLM from a code generator into a participant in a diagnostic process - using local skills, knowledge files, and anti-flake rules grounded in a real Playwright + Qase regression suite.
-
When to Use CPQ and the EAV Model - Lessons from Building a Prototype
CPQ and EAV are two of the most debated patterns in business systems. Here is when they actually make sense, when they are overkill, and why they so often end up in the same codebase.
-
How I Built an AI Agent From Scratch in TypeScript - No Frameworks, No Magic
A deep dive into building a real AI agent from scratch in TypeScript - no LangChain, no CrewAI, just a loop, the OpenAI API, and a few small libraries. Learn the architecture, the decisions, and the lessons that frameworks hide from you.
-
The End of Fast Coding: What Seniority Really Means in the Age of AI
In the age of AI, seniority is becoming less about writing code fast and more about making high-quality decisions in complex contexts.
-
MCP Is Not Dead. Most Teams Just Haven't Learned How to Evaluate It
A practical evaluation of MCP and CLI tooling for AI agents, covering centralization, security, observability, latency, and hybrid workflows.
-
Hard Negative Mining: A Practical Guide for Senior Developers
A practical explanation of hard negative mining for embeddings, ranking, recommendation systems, contrastive learning, and model evaluation.
-
TypeScript's `satisfies` Operator: When and How to Use It
Learn how TypeScript's satisfies operator preserves literal inference while checking object shapes, mapped types, and safer configuration objects.
-
Mastering Git: From Basics to Advanced Techniques
A practical Git guide covering setup, commits, branching, merging, remotes, rebasing, stashing, reflog recovery, and everyday workflow habits.
-
First post to start my journey
A short introductory note about starting a technical writing habit, learning in public, and documenting engineering experience.