<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Tony&apos;s Notes</title><description>Web, Cloudflare and engineering practice.</description><link>https://notes.tao.im/en/</link><language>en</language><item><title>CORS Is Not Authentication</title><link>https://notes.tao.im/en/writing/cors-not-authentication/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/cors-not-authentication/</guid><description>Test browser readability, server execution and session authorization as separate outcomes.</description><pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate></item><item><title>SaaS Pricing Should Follow the Value of Use</title><link>https://notes.tao.im/en/writing/saas-pricing-value-boundaries/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/saas-pricing-value-boundaries/</guid><description>Separate value, resource cost and billing units without making safe collaboration unnecessarily expensive.</description><pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate></item><item><title>HTTP Errors Need a Data Contract Too</title><link>https://notes.tao.im/en/writing/http-error-contract/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/http-error-contract/</guid><description>Keep missing resources, failed dependencies, empty searches and unknown write outcomes distinct.</description><pubDate>Sun, 25 Oct 2026 00:00:00 GMT</pubDate></item><item><title>HTTP Streaming Requires Backpressure and Cancellation</title><link>https://notes.tao.im/en/writing/http-streaming-backpressure/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/http-streaming-backpressure/</guid><description>Preserve stream semantics while bounding buffers, message sizes and work after disconnect.</description><pubDate>Sun, 25 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Responsive Images Need a Budget for Size, Crop, and Priority</title><link>https://notes.tao.im/en/writing/responsive-image-budget/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/responsive-image-budget/</guid><description>Deliver appropriate images without making mobile readers download desktop originals or lose essential detail.</description><pubDate>Sat, 24 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Site Search: Zero Results Is Not the End</title><link>https://notes.tao.im/en/writing/search-zero-results-recovery/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/search-zero-results-recovery/</guid><description>Distinguish no match, narrow scope, indexing delay, and service failure without leaking permissions.</description><pubDate>Sat, 24 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Browser Language Negotiation: Preferences, Explicit Choices, and Caches</title><link>https://notes.tao.im/en/writing/browser-language-negotiation/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/browser-language-negotiation/</guid><description>Predictable first visits without repeatedly overriding a reader&apos;s chosen language.</description><pubDate>Fri, 23 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Table Density Should Make Comparison Faster, Not Text Smaller</title><link>https://notes.tao.im/en/writing/data-table-density-comparison/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/data-table-density-comparison/</guid><description>Prioritize fields, numeric meaning, frozen columns, and context around a real comparison task.</description><pubDate>Fri, 23 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Markdown Is Not a Security Boundary</title><link>https://notes.tao.im/en/writing/markdown-html-security/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/markdown-html-security/</guid><description>Trace trust from authors and rendering plugins to HTML, links, feeds, and build-time capabilities.</description><pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate></item><item><title>SaaS Onboarding: Let the First Useful Action Happen</title><link>https://notes.tao.im/en/writing/saas-first-use-onboarding/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/saas-first-use-onboarding/</guid><description>Work backward from saving and retrieving a real note, not from completing a tour.</description><pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Prioritization Is More Than Turning Opinions into Decimals</title><link>https://notes.tao.im/en/writing/prioritization-under-uncertainty/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/prioritization-under-uncertainty/</guid><description>Separate value, evidence, constraints, opportunity cost, and learning before trusting a score.</description><pubDate>Wed, 21 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Worker Secrets Must Not Cross the Browser Boundary</title><link>https://notes.tao.im/en/writing/worker-secret-boundary/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/worker-secret-boundary/</guid><description>Separate deployment configuration, runtime bindings, public build variables, and credential rotation.</description><pubDate>Wed, 21 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Workers Custom Domains: Diagnose DNS, Routing, and TLS Separately</title><link>https://notes.tao.im/en/writing/dns-worker-custom-domain/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/dns-worker-custom-domain/</guid><description>Replace repeated DNS edits with evidence about name resolution, trusted connections, and the responding application.</description><pubDate>Tue, 20 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Two Redirect Boundaries: Request Semantics and Trusted Destinations</title><link>https://notes.tao.im/en/writing/http-redirect-safety/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/http-redirect-safety/</guid><description>Choose redirect status codes deliberately and prevent login return paths from becoming open redirects.</description><pubDate>Tue, 20 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Roll Out CSP by Observing Violations, Then Restricting Capabilities</title><link>https://notes.tao.im/en/writing/csp-rollout/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/csp-rollout/</guid><description>Introduce a content security policy without accidentally blocking legitimate scripts and styles.</description><pubDate>Mon, 19 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Navigation: Knowing Where You Are Matters More Than More Links</title><link>https://notes.tao.im/en/writing/navigation-orientation-hierarchy/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/navigation-orientation-hierarchy/</guid><description>Make scope, object hierarchy, selected routes, and mobile navigation understandable from a deep link.</description><pubDate>Mon, 19 Oct 2026 00:00:00 GMT</pubDate></item><item><title>ETags and Conditional Requests: A 304 Still Requires a Request</title><link>https://notes.tao.im/en/writing/conditional-http-requests/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/conditional-http-requests/</guid><description>Representation validators reduce body transfer, but freshness, encoding, and write conflicts remain separate concerns.</description><pubDate>Sun, 18 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Release Risk Depends on Recovery, Not Just Lines Changed</title><link>https://notes.tao.im/en/writing/release-risk-product-design/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/release-risk-product-design/</guid><description>Evaluate rollout, rollback, forward repair, and persistent side effects around user outcomes.</description><pubDate>Sun, 18 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Form Errors Should Explain What to Change and Why</title><link>https://notes.tao.im/en/writing/form-errors-actionable-recovery/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/form-errors-actionable-recovery/</guid><description>Separate field problems from service failures and make asynchronous validation recoverable.</description><pubDate>Sat, 17 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Workers Cache API and CDN Caching Are Not the Same Switch</title><link>https://notes.tao.im/en/writing/worker-cache-api-semantics/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/worker-cache-api-semantics/</guid><description>Distinguish fetch caching, explicit Cache API storage, location scope, and invalidation.</description><pubDate>Sat, 17 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Astro Island Boundaries: Who Should Pay the JavaScript Cost?</title><link>https://notes.tao.im/en/writing/astro-island-boundaries/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/astro-island-boundaries/</guid><description>Choose hydration around real interactions, then measure loading, execution, and recovery.</description><pubDate>Fri, 16 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Decide How a Product Experiment Ends Before Looking at Results</title><link>https://notes.tao.im/en/writing/product-experiment-design/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/product-experiment-design/</guid><description>Specify randomization, primary metrics, guardrails, and low-traffic alternatives in advance.</description><pubDate>Fri, 16 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Canonical URLs Are a Deployment Contract, Not Just an SEO Tag</title><link>https://notes.tao.im/en/writing/canonical-url-contract/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/canonical-url-contract/</guid><description>Keep origins, paths, language versions, previews, and content identity consistent.</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate></item><item><title>RSS Is a Public API: Keep It Inside Publication Rules</title><link>https://notes.tao.im/en/writing/rss-publication-boundary/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/rss-publication-boundary/</guid><description>Align article routes, feeds, sitemaps, stable identities, and withdrawal behavior.</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Product Metrics Begin with Events That Represent Real Value</title><link>https://notes.tao.im/en/writing/product-metrics-definition/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/product-metrics-definition/</guid><description>Define activation, retention, cohorts, and quality without letting clicks impersonate success.</description><pubDate>Wed, 14 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Static Route Collisions: A Slug Is More Than a Filename</title><link>https://notes.tao.im/en/writing/static-route-collisions/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/static-route-collisions/</guid><description>Reserve and normalize final paths before content routes overwrite each other.</description><pubDate>Wed, 14 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Accessibility Is Not a Checklist: Start with a Keyboard Task</title><link>https://notes.tao.im/en/writing/accessibility-keyboard-task/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/accessibility-keyboard-task/</guid><description>Trace an assignment workflow through controls, focus, announcements, and real assistive-technology testing.</description><pubDate>Tue, 13 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Catch Editorial Errors Before Building with Content Schemas</title><link>https://notes.tao.im/en/writing/astro-content-schema/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/astro-content-schema/</guid><description>An executable metadata contract for Astro articles, without confusing valid structure with trustworthy content.</description><pubDate>Tue, 13 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Cache Keys Start with Which Responses May Be Shared</title><link>https://notes.tao.im/en/writing/cache-key-design/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/cache-key-design/</guid><description>A response-sharing contract for language, identity, query parameters, invalidation, and rollback.</description><pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate></item><item><title>When Users Ask for a Feature, Ask How They Do the Job Today</title><link>https://notes.tao.im/en/writing/product-discovery-evidence/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/product-discovery-evidence/</guid><description>Turn requests into testable opportunities using recent behavior, artifacts, and small experiments.</description><pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Astro + Workers: Deploying a Content Website</title><link>https://notes.tao.im/en/writing/astro-workers/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/astro-workers/</guid><description>From Markdown to static HTML to the edge: keeping content, builds, and delivery separate.</description><pubDate>Sun, 11 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Maintain Technical Notes Like Code</title><link>https://notes.tao.im/en/writing/content-first/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/content-first/</guid><description>Executable metadata contracts, explicit publication decisions, and verification at the reader&apos;s actual entry points.</description><pubDate>Sat, 10 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Committed, Pushed, Live: Three Different Completion States</title><link>https://notes.tao.im/en/writing/verify-deployment/</link><guid isPermaLink="true">https://notes.tao.im/en/writing/verify-deployment/</guid><description>Close the release loop with evidence for the exact source revision, remote branch, artifact, and public response.</description><pubDate>Fri, 09 Oct 2026 00:00:00 GMT</pubDate></item></channel></rss>