~/observability

This site is observed.

Real SLOs with a visible error budget, real-user Web Vitals, and synthetic probes — for a personal website, because measuring reliability is the job. All of it without cookies, identifiers, or tracking of any kind.

custom RUM · synthetics every 5 min · CloudWatch EMF · SLOs as code · loading…

availability, since launch target ≥ 99.9% · synthetic, 5-min checks
error budget remaining of allowed downtime in the window
LCP p75, real users, 7 days target < 1.5s
requests, 24h (CloudFront edge) error rate: —

status.json isn’t published yet — the pipeline is collecting its first data. Check back soon; the publisher runs hourly.

Note: availability is measured from 6 August 2026, when this site went into service, on a rolling 30-day window thereafter. Before that date the domain was deliberately unpointed while I was still verifying the claims on these pages — probe failures from that period record a configuration I chose, not unplanned downtime, which is the thing an error budget exists to measure. Nothing inside the window is excluded or reset: an error budget you rewrite when it looks bad isn’t an error budget.

availability — daily (%)
view as table
dayavailability %
probe latency p75 — last 24h (ms)
view as table
hourp75 ms

web vitals — real users, 7 days

CLS p75
INP p75
TTFB p75
RUM samples

the pipeline

How the sausage is measured.

Observability pipeline Browsers send Web Vitals beacons through CloudFront to a Lambda that emits CloudWatch metrics. Synthetic probes run every five minutes. An hourly publisher queries CloudWatch and writes status.json to S3, which this page reads. your browser rum.js · sendBeacon /rum CloudFront behavior Lambda validate · EMF CloudWatch metrics · no PII synthetics probe every 5 min publisher hourly · SLO math status.json S3 · 5-min TTL this page fetches status.json — same origin, same CSP, no third parties

why it looks like this

Right-sized on purpose.

At 10,000-device scale, this job belongs to a custom OpenTelemetry Collector feeding SLO-backed alerting — I’ve built that. For one static page, an OTel pipeline would be theater: the right-sized version is a 2KB purpose-built beacon, two tiny Lambdas, and CloudWatch's embedded metric format. Same discipline — SLIs first, SLOs as code, error budgets you can see — sized for the system it observes.

The beacon observes pages, not people: no cookies, no identifiers, no fingerprinting, and it honors Do Not Track. Separately, the CDN keeps standard access logs — including client IP — for 90 days, first-party only, never shared or sold. Two different jobs: the beacon measures the experience, the logs record the traffic. The whole pipeline is in the public repo.