A single thirty-day window made the scanning look like one steady thing. Three months shows the opposite: overlapping campaigns that surge and vanish, an edge that loses its lead and then takes it back, and a curated filter already drifting out of date.
Read more →This site's robots.txt politely asks crawlers to avoid six paths. None of the six exist. Anyone who asks for one anyway has just introduced themselves.
Read more →Some code changes can be verified by reading the diff. Others require understanding the code. The split matters.
Read more →One CloudFront edge location dominated the probe traffic by a factor of six. Pulling that thread led to Azure Canada Central and a particular kind of internet scavenger.
Read more →A homework photo turned a simple maths question into three valid answers and a late-night lesson in why notation matters.
Read more →A static site with no login pages, no forms, and no commercial value still attracts more than twenty thousand unsolicited requests a month. This is what that traffic contains.
Read more →Why a CloudFront Function was the right choice for canonical host redirects and URL rewriting, and what would change that decision.
Read more →How a slow GitHub Actions run led to a handful of small fixes: browser caching, dropping WebKit, and understanding what --with-deps actually does.
Read more →A privacy-preserving analytics pipeline on AWS, built to cost almost nothing.
Read more →Reflections on the shift from compliance to structural engineering and a curated reading list for building deeper accessibility literacy.
Read more →