<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Saliem Talash — Journal</title>
    <link>https://steo.io/journal/</link>
    <description>Notes on building, design and the web.</description>
    <language>en-ca</language>
    <lastBuildDate>Sat, 17 Oct 2026 12:00:00 GMT</lastBuildDate>
    <atom:link href="https://steo.io/journal/feed.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>A blue palette that does not turn purple</title>
      <link>https://steo.io/journal/a-blue-palette-that-does-not-turn-purple/</link>
      <guid isPermaLink="true">https://steo.io/journal/a-blue-palette-that-does-not-turn-purple/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Craft</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>Why blue drifts violet in glows and gradients, how OKLCH hue angles fix it, and a working token set with a method to test it on real screens.</description>
    </item>
    <item>
      <title>A one-page spec for a first release</title>
      <link>https://steo.io/journal/a-one-page-spec-for-a-first-release/</link>
      <guid isPermaLink="true">https://steo.io/journal/a-one-page-spec-for-a-first-release/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Founders</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>A one-page spec for a first release: user, goal, must/should/won&apos;t scope, &apos;done when&apos; criteria, constraints and rollback, plus a script that checks it.</description>
    </item>
    <item>
      <title>A performance budget for a site with WebGL</title>
      <link>https://steo.io/journal/a-performance-budget-for-a-site-with-webgl/</link>
      <guid isPermaLink="true">https://steo.io/journal/a-performance-budget-for-a-site-with-webgl/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Build</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>What to cap on a WebGL site: pixel ratio, particles, textures, shaders and frame time, with device tiers, on-demand rendering and how to measure.</description>
    </item>
    <item>
      <title>A plans page that explains itself</title>
      <link>https://steo.io/journal/a-plans-page-that-explains-itself/</link>
      <guid isPermaLink="true">https://steo.io/journal/a-plans-page-that-explains-itself/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Founders</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>Structure a plans page: audience-led plan names, limits that say what happens at the edge, an accessible comparison table, plus clear free and cancel text.</description>
    </item>
    <item>
      <title>A site launch checklist for a static site</title>
      <link>https://steo.io/journal/a-site-launch-checklist-for-a-static-site/</link>
      <guid isPermaLink="true">https://steo.io/journal/a-site-launch-checklist-for-a-static-site/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Build</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>A launch audit for a static site in two passes: a script over the built folder, then curl checks on the live host for redirects, status codes and caching.</description>
    </item>
    <item>
      <title>A work page that explains itself in ten seconds</title>
      <link>https://steo.io/journal/a-work-page-that-explains-itself-in-ten-seconds/</link>
      <guid isPermaLink="true">https://steo.io/journal/a-work-page-that-explains-itself-in-ten-seconds/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Craft</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>How to structure each project entry on a portfolio or work page: what it is, who it is for, one honest line of proof, plus ordering, imagery and links.</description>
    </item>
    <item>
      <title>Accessibility of canvas and WebGL content</title>
      <link>https://steo.io/journal/accessibility-of-canvas-and-webgl-content/</link>
      <guid isPermaLink="true">https://steo.io/journal/accessibility-of-canvas-and-webgl-content/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Build</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>Canvas and WebGL output is a bitmap. How to name it, describe it, hide it when decorative, and make a viewer keyboard-operable, with browser results.</description>
    </item>
    <item>
      <title>AI-generated content and search: what Google says</title>
      <link>https://steo.io/journal/ai-generated-content-and-search-what-google-says/</link>
      <guid isPermaLink="true">https://steo.io/journal/ai-generated-content-and-search-what-google-says/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>AI</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>A close reading of Google&apos;s AI content guidance, its scaled content abuse policy and helpful-content questions, with dates and what they leave unsaid.</description>
    </item>
    <item>
      <title>Canonical URLs, redirects and the www question</title>
      <link>https://steo.io/journal/canonical-urls-redirects-and-the-www-question/</link>
      <guid isPermaLink="true">https://steo.io/journal/canonical-urls-redirects-and-the-www-question/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Web</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>Choose one address per page: rel=canonical, 301 versus 308, apex versus www, trailing slashes and HTTPS, with curl checks and a duplicate-URL table.</description>
    </item>
    <item>
      <title>Core Web Vitals in plain language</title>
      <link>https://steo.io/journal/core-web-vitals-in-plain-language/</link>
      <guid isPermaLink="true">https://steo.io/journal/core-web-vitals-in-plain-language/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Build</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>LCP, INP and CLS explained with the published good thresholds, what actually moves each one, lab versus field data, and a diagnosis table.</description>
    </item>
    <item>
      <title>Dark interfaces that stay readable</title>
      <link>https://steo.io/journal/dark-interfaces-that-stay-readable/</link>
      <guid isPermaLink="true">https://steo.io/journal/dark-interfaces-that-stay-readable/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Craft</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>Contrast math for dark UI: WCAG 4.5:1 and 3:1 in practice, a worked table of text levels, and why pure black grounds are worth avoiding.</description>
    </item>
    <item>
      <title>Easing is a personality</title>
      <link>https://steo.io/journal/easing-is-a-personality/</link>
      <guid isPermaLink="true">https://steo.io/journal/easing-is-a-personality/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Craft</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>What cubic-bezier curves do, why entrances use ease-out and exits ease-in, and a table of durations and curves for a design system.</description>
    </item>
    <item>
      <title>Font loading without layout shift</title>
      <link>https://steo.io/journal/font-loading-without-layout-shift/</link>
      <guid isPermaLink="true">https://steo.io/journal/font-loading-without-layout-shift/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Build</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>Why web fonts move text, how font-display, preload, subsetting and metric-matched fallbacks fix it, and a before-and-after method to prove it.</description>
    </item>
    <item>
      <title>Frames, brackets and borders in interface design</title>
      <link>https://steo.io/journal/frames-brackets-and-borders-in-interface-design/</link>
      <guid isPermaLink="true">https://steo.io/journal/frames-brackets-and-borders-in-interface-design/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Craft</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>How hairline frames, corner brackets and inset chrome create place and focus on a page, with CSS patterns and the performance and accessibility costs.</description>
    </item>
    <item>
      <title>How a page transition works without a framework</title>
      <link>https://steo.io/journal/how-a-page-transition-works-without-a-framework/</link>
      <guid isPermaLink="true">https://steo.io/journal/how-a-page-transition-works-without-a-framework/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Build</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>Build soft page transitions with fetch, DOMParser and history.pushState: scroll restoration, focus, announcements, caching, Back and Forward, fallbacks.</description>
    </item>
    <item>
      <title>How DNS works for someone who just bought a domain</title>
      <link>https://steo.io/journal/how-dns-works-for-someone-who-just-bought-a-domain/</link>
      <guid isPermaLink="true">https://steo.io/journal/how-dns-works-for-someone-who-just-bought-a-domain/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Web</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>Registrar, registry, DNS host and web host explained, plus record types, TTL, why an apex CNAME fails, what propagation is, and dig with real output.</description>
    </item>
    <item>
      <title>Reviewing AI-written copy before it goes public</title>
      <link>https://steo.io/journal/how-to-review-ai-written-copy-before-it-goes-public/</link>
      <guid isPermaLink="true">https://steo.io/journal/how-to-review-ai-written-copy-before-it-goes-public/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>AI</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>A seven-step review for AI-drafted articles and pages: a claim ledger, a script that tests quotes against sources, metadata checks and a recorded sign-off.</description>
    </item>
    <item>
      <title>hreflang for a bilingual Canadian site</title>
      <link>https://steo.io/journal/hreflang-for-a-bilingual-canadian-site/</link>
      <guid isPermaLink="true">https://steo.io/journal/hreflang-for-a-bilingual-canadian-site/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Web</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>Which codes to use for English and French in Canada, how reciprocal pairs, x-default and real language links work, and how to handle partial translation.</description>
    </item>
    <item>
      <title>Images in 2026: AVIF, WebP and srcset</title>
      <link>https://steo.io/journal/images-in-2026-avif-webp-srcset/</link>
      <guid isPermaLink="true">https://steo.io/journal/images-in-2026-avif-webp-srcset/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Build</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>Pick image formats, write srcset and sizes correctly, reserve space, set loading and fetchpriority, and know when a video is the wrong answer.</description>
    </item>
    <item>
      <title>Internal linking that passes context</title>
      <link>https://steo.io/journal/internal-linking-that-passes-context/</link>
      <guid isPermaLink="true">https://steo.io/journal/internal-linking-that-passes-context/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Web</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>Write internal links that tell readers and Google what the next page is about: anchor text, context, real anchors, and a script that finds orphan pages.</description>
    </item>
    <item>
      <title>Keeping names, handles and profiles consistent</title>
      <link>https://steo.io/journal/keeping-names-handles-and-profiles-consistent/</link>
      <guid isPermaLink="true">https://steo.io/journal/keeping-names-handles-and-profiles-consistent/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Web</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>Decide once which name goes where: site name, display name, handle and legal name, how Google reads them, and how to audit and change them without drift.</description>
    </item>
    <item>
      <title>Naming a product: a method that kills bad names early</title>
      <link>https://steo.io/journal/naming-a-product-a-method/</link>
      <guid isPermaLink="true">https://steo.io/journal/naming-a-product-a-method/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Founders</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>A staged method for naming a product: write the brief, generate widely, run cheap checks first, then domain and Canadian trademark searches.</description>
    </item>
    <item>
      <title>Pairing a display serif with a geometric sans</title>
      <link>https://steo.io/journal/pairing-a-display-serif-with-a-geometric-sans/</link>
      <guid isPermaLink="true">https://steo.io/journal/pairing-a-display-serif-with-a-geometric-sans/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Craft</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>How to pair a display serif with a geometric sans: roles, x-height matching, optical size, tracking and line-height, and italic as emphasis.</description>
    </item>
    <item>
      <title>Particle systems in the browser, a first tour</title>
      <link>https://steo.io/journal/particle-systems-in-the-browser-a-first-tour/</link>
      <guid isPermaLink="true">https://steo.io/journal/particle-systems-in-the-browser-a-first-tour/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Build</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>How a WebGL particle field works: Points, per-vertex attributes, morph targets, GPU versus CPU updates, additive blending and a runnable three.js example.</description>
    </item>
    <item>
      <title>Pointing a domain at a new host without downtime</title>
      <link>https://steo.io/journal/pointing-a-domain-at-a-new-host-without-downtime/</link>
      <guid isPermaLink="true">https://steo.io/journal/pointing-a-domain-at-a-new-host-without-downtime/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Web</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>A cutover plan: lower the TTL, stage and test on the new host, line up the certificate, switch records, keep www working, check CAA and DNSSEC, roll back.</description>
    </item>
    <item>
      <title>prefers-reduced-motion, done properly</title>
      <link>https://steo.io/journal/prefers-reduced-motion-done-properly/</link>
      <guid isPermaLink="true">https://steo.io/journal/prefers-reduced-motion-done-properly/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Craft</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>What to remove and keep when a visitor asks for less motion: the media query, matchMedia, canvases, video, pause controls, WCAG and a test routine.</description>
    </item>
    <item>
      <title>Preview deployments and rollbacks</title>
      <link>https://steo.io/journal/preview-deployments-and-rollbacks/</link>
      <guid isPermaLink="true">https://steo.io/journal/preview-deployments-and-rollbacks/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Build</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>How preview URLs, staged production builds, promotion and instant rollback work on Vercel, what each proves or restores, and the trap after a rollback.</description>
    </item>
    <item>
      <title>Release notes people read</title>
      <link>https://steo.io/journal/release-notes-people-read/</link>
      <guid isPermaLink="true">https://steo.io/journal/release-notes-people-read/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Founders</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>Turn a commit log into release notes users read: Keep a Changelog structure, what version numbers promise under SemVer, wording rules and a checker script.</description>
    </item>
    <item>
      <title>Shipping every week as a team of one</title>
      <link>https://steo.io/journal/shipping-every-week-as-a-team-of-one/</link>
      <guid isPermaLink="true">https://steo.io/journal/shipping-every-week-as-a-team-of-one/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Founders</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>A weekly release routine for a solo builder: slice work small, keep main deployable, hold the date and quality, flex scope, and measure with a script.</description>
    </item>
    <item>
      <title>Sitemaps, robots.txt and Search Console for a new site</title>
      <link>https://steo.io/journal/sitemaps-robots-txt-and-search-console-for-a-new-site/</link>
      <guid isPermaLink="true">https://steo.io/journal/sitemaps-robots-txt-and-search-console-for-a-new-site/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Web</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>What a sitemap, robots.txt and noindex each do and do not do, how to verify ownership, read the indexing reports, and run a day-one sequence.</description>
    </item>
    <item>
      <title>Smooth scrolling without the regret</title>
      <link>https://steo.io/journal/smooth-scrolling-without-the-regret/</link>
      <guid isPermaLink="true">https://steo.io/journal/smooth-scrolling-without-the-regret/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Craft</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>What smooth-scroll libraries change, what to test in find-in-page, keyboard, anchors and focus, and how to scope the effect and respect reduced motion.</description>
    </item>
    <item>
      <title>Static HTML first: why server-rendered pages still win</title>
      <link>https://steo.io/journal/static-html-first-why-server-rendered-pages-still-win/</link>
      <guid isPermaLink="true">https://steo.io/journal/static-html-first-why-server-rendered-pages-still-win/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Build</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>What a crawler and a slow phone actually receive from static, server-rendered and client-rendered pages, and how to check your own site with curl.</description>
    </item>
    <item>
      <title>Structured data for a person and a small company</title>
      <link>https://steo.io/journal/structured-data-for-a-person-and-a-small-company/</link>
      <guid isPermaLink="true">https://steo.io/journal/structured-data-for-a-person-and-a-small-company/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Web</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>JSON-LD for Person, Organization, WebSite and Article with @id and sameAs done properly, how to validate it, and what it does not promise.</description>
    </item>
    <item>
      <title>Titles, descriptions and snippets</title>
      <link>https://steo.io/journal/titles-descriptions-and-snippets/</link>
      <guid isPermaLink="true">https://steo.io/journal/titles-descriptions-and-snippets/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>Web</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>What Google&apos;s documentation says about title links and snippets, why length is not a rule, why your text gets rewritten, and how to test the result.</description>
    </item>
    <item>
      <title>What an AI website builder can and cannot do</title>
      <link>https://steo.io/journal/what-an-ai-website-builder-can-and-cannot-do/</link>
      <guid isPermaLink="true">https://steo.io/journal/what-an-ai-website-builder-can-and-cannot-do/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>AI</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>A decision framework for AI site builders: where drafts are strong, where they invent or generalise, what a person must check, and a pre-publish list.</description>
    </item>
    <item>
      <title>Writing a prompt that produces a better first draft</title>
      <link>https://steo.io/journal/writing-a-prompt-that-produces-a-better-first-draft/</link>
      <guid isPermaLink="true">https://steo.io/journal/writing-a-prompt-that-produces-a-better-first-draft/</guid>
      <pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate>
      <category>AI</category>
      <dc:creator>Saliem Talash</dc:creator>
      <description>Audience, offer, facts, tone, constraints and exclusions: a prompt anatomy with a fictional before and after, and how to iterate in small diffs.</description>
    </item>
  </channel>
</rss>
