Performance
Where Serverless Cold Start Time Actually Goes
Everyone blames the platform. Most of a cold start is usually your own initialisation code, and you can measure exactly which part.
Method rather than tooling: forming a hypothesis, choosing the cheapest experiment that falsifies it, and finding the wrong assumption underneath a bug.
Performance
Everyone blames the platform. Most of a cold start is usually your own initialisation code, and you can measure exactly which part.
JavaScript
TypeScript gave up. Here is why recursive conditional types hit a wall, and how to restructure so they do not.
Networking
The proxy is telling you your application failed. Here is how to read the error log line and identify which of six things went wrong.
Shopify
Liquid fails quietly by design. Here is where the error actually goes and how to make your theme tell you what went wrong.
Shopify
checkout.liquid is gone. Here is what actually replaces each customisation and which ones have no replacement at all.
Debugging
A test that fails one time in fifty is reporting a real property of your system. Retrying it is throwing away the evidence.
Docker
Distroless and scratch images are great for security and miserable when something breaks. Here is how to investigate a container that ships nothing.
DevOps
A cache with the wrong key restores nothing and uploads everything. A cache with too broad a key restores stale artifacts. Both are common.
Tooling
Git is protecting you from combining two repositories that share no common ancestor. Sometimes that is exactly what you want.
Node.js
Memory climbs, the process gets killed, and restarting fixes it for six hours. Here is the diff based method that finds the retainer.
Python
pip says it is installed, python says it is not. Both are telling the truth about different Pythons.