notes
Notes on reading a page you did not write
Method, not announcements. Some of these are decisions this product had to make, written down with the reasoning that produced them. The rest are the things we had to understand first - why a stacking context beats a large number, why a contrast ratio measured on a swatch is not the one on the page, what a build gives away about itself.
rss every note in full, no address required
or one topic: layout css typography accessibility builds privacy
- 4 min layout Why srcset keeps picking the wrong image A srcset with four good widths on it will still fetch the largest one on a phone, and the attribute doing that is not srcset. sizes is the half that decides, it is guessed far more often than it is measured, and its default is the worst value it can hold.
- 5 min builds What a source map says about the build that shipped it A source map is not a leak by itself. It is a decision, and on most sites nobody made it - the bundler defaulted, the flag was never read, and the original source went out with the minified file.
- 4 min css Which CSS rule wins, and why it is not the specific one Nearly everyone reaches for specificity first, and nearly everyone is starting three steps too late. Specificity is the fourth tie-breaker, and by the time the cascade gets to it most of the interesting decisions have already been made.
- 4 min layout Why your sticky header stops sticking position: sticky has no error state. When it does not work it simply behaves as relative - and the cause is usually an ancestor you have never looked at, changed by somebody solving a different problem.
- 6 min layout Why z-index: 9999 does not put your element on top The number is almost never the problem. z-index: 9999 loses to z-index: 2 every day of the week, and it loses for a reason that is nowhere near the element you were editing.
- 6 min layout What makes a page scroll sideways overflow-x: hidden on body is not a fix. It is a way of not knowing which element is forty pixels too wide - and it quietly breaks position: sticky on everything inside it on the way past.
- 5 min accessibility Contrast checkers measure a colour you never shipped Every contrast checker asks for two colours. A real page hands you one of them at best - the other is a gradient beneath a semi-transparent card above a photograph, and not one of those is a hex value anybody typed.
- 6 min typography The font a page declares is not the font you see font-family is a wish list and the browser grants the first wish it can. Nearly every typography bug lives in the gap between the name in the stylesheet and the shapes on the screen.
- 5 min css Recovering a Tailwind theme from a site you did not build Nobody ships tailwind.config.js. What reaches the browser is a compiled stylesheet and a great many class attributes - and between those two, most of a design system is still legible.
- 5 min builds What a page tells you about how it was built Every page announces its own construction, in six different ways, with six different levels of honesty. Knowing which kind of evidence you are looking at matters more than the list of names it produces.
- 4 min css Measuring AI-generated markup without guessing You cannot detect that code was written by a model. You can measure a texture that generated code tends to have - and then the hard part is not flagging the careful hand-written page that happens to share it.
- 5 min privacy Why this extension asks for no website permissions Every browser extension you install shows you a list before it runs. Most inspection tools ask for access to all your data on all websites, because it is the easiest thing to ask for. It is also the thing that makes people close the tab.