Writing Database Migrations That Are Safe to Run on Every Deploy
Database changes run automatically with every release. Here is how we write migrations that are additive, guarded and safe for a database many custome...
28 posts
Database changes run automatically with every release. Here is how we write migrations that are additive, guarded and safe for a database many custome...
Two-factor authentication only protects an account if every way of signing in respects it. Here is how we closed the side doors that many apps leave o...
Forms are where people sign up, pay, register and ask for help. Here is how we make them clear and usable for everyone, including people using screen...
New frameworks appear every month. Here is why we build on mature, well-documented tools and spend our creativity on the problems our customers actual...
An uploaded file can carry more than a picture. Here is how we check types, enforce limits and clean risky formats before any upload can appear in fro...
Most slow pages are slow because of images, fonts and late-loading content. Here are the practical habits we use to make pages appear quickly and stay...
APIs are how software talks to other software. This beginner-friendly explanation uses everyday examples to show how requests, responses, endpoints an...
AI coding assistants can explain errors, suggest code and even run tasks for you. Here is how beginners can use them as tutors rather than crutches, a...
Nobody should wait for a newsletter to send before a page responds. Here is how we decide what runs immediately, what goes to a queue and how people s...
Many people navigate the web without a mouse. This fifteen-minute keyboard test helps you find hidden barriers on your own website, from invisible foc...
A webhook is how one app tells another that something just happened. Learn how webhooks differ from regular API calls, where you already rely on them,...
Two organizations can both have a page called About. Here is how composite unique keys keep addresses unique inside each account without blocking othe...