All posts
40 posts
- Documentation people actually readMost internal docs are written once and trusted never. A few habits keep them short, current and useful.
- Measuring your CDN hit ratio honestlyA 95 percent hit ratio can hide a site where every page view still waits on the origin.
- In defense of the humble loading stateSpinners, skeletons and progress bars each say something different about the wait. Choose the one that tells the truth.
- Query budgets for server-rendered pagesA page that runs forty queries is slow even when every query is fast. Count them.
- Navigation patterns on mobileThe hamburger menu hides everything. Sometimes that is right, and often it is not.
- Should you ship on Fridays?The rule against Friday deploys is really a statement about how much you trust your pipeline.
- Screen reader testing basicsYou do not need to be an expert to catch the worst problems. Twenty minutes with a screen reader is enough to start.
- Origin shielding, explainedA CDN with hundreds of locations can hammer your origin with hundreds of identical requests. A shield fixes that.
- Choosing a type pairingTwo typefaces should contrast in role and agree in spirit. A short method for finding a pair that works.
- Service workers and the offline-first webA service worker sits between your page and the network. That position is powerful, and it deserves care.
- Dark mode, done properlyInverting colors is not a dark theme. A proper one is designed, tested, and respectful of the reader's choice.
- Code review as teachingA review is the most frequent conversation engineers have about craft. Make it a good one.
- Preconnect, preload and other resource hintsResource hints let you tell the browser about the future. Used well, they save hundreds of milliseconds.
- Writing microcopy that disappearsThe best interface text is the text nobody notices, because it said exactly what was needed and nothing more.
- Layout shift and how to stop itNothing erodes trust like a button that moves just as you tap it. Most shifts come from four causes.
- Brotli, gzip and the compression you forgotText compression is one of the oldest performance wins on the web, and it is still misconfigured surprisingly often.
- Observability for small teamsYou do not need a platform team to know when your site is broken. Three signals cover most of it.
- Alt text that actually helpsDescribing an image well is a writing skill. A few rules make it much easier.
- Putting your JavaScript on a dietBytes of script cost more than bytes of anything else. A practical order of operations for shipping less.
- Design tokens that lastName tokens for their purpose, not their value, and a rebrand becomes an afternoon instead of a quarter.
- Cache invalidation strategies that scalePurge by URL, purge by tag, or never purge at all. Choosing well depends on how your content changes.
- Forms people actually finishEvery field is a question someone has to answer. Ask fewer, ask clearly, and say what went wrong.
- Making sense of interaction to next paintINP replaced first input delay because responsiveness is about every tap, not just the first one.
- Line length and readabilityThe width of a paragraph changes how easily people read it. The sweet spot is narrower than most layouts allow.
- HTTP/3 in practiceQUIC changes how connections start and recover. What that means for real pages on real networks.
- Postmortems without blameAn incident review that hunts for a culprit teaches people to hide. One that hunts for causes teaches the system.
- A keyboard navigation checklistUnplug your mouse for ten minutes. You will find more bugs than any automated scanner.
- Edge rendering and its tradeoffsRendering close to the visitor sounds like pure win. It is, until your data lives somewhere else.
- Motion that explains, not decoratesGood animation tells people where something came from and where it went. Everything else is noise.
- Auditing your third-party scriptsAnalytics, chat widgets and tag managers add up. A one-afternoon audit usually finds a second of savings.
- Grids that survive real contentLayouts break when the headline is twice as long as the mockup. Design for the content you will actually get.
- Understanding largest contentful paintLCP measures when the main thing on the page appears. Here is how to find that thing and make it arrive sooner.
- The case for boring technologyEvery new tool spends a little of the team's attention. Spend it where it buys something.
- Writing a performance budget your team will keepA budget only works if it is specific, enforced automatically, and owned by someone.
- Images are most of your pageOn a typical site, images outweigh code several times over. Treat them as a first-class performance concern.
- Color contrast is not optionalLight gray text on a white background looks refined in a mockup and fails real readers in sunlight.
- The real cost of a web fontTypefaces are worth it. Here is how to pay for them without stalling the first render.
- Designing for the empty stateThe first screen a new user sees is usually the emptiest one. It deserves more care than it gets.
- A field guide to Cache-Controlmax-age, s-maxage, stale-while-revalidate and the directives that quietly decide how fast your site feels.
- Why time to first byte still mattersEvery other metric waits on the first byte. Here is where the milliseconds go and how to get them back.