A bunch of cool tools and libraries power this site.

The current primary model helping build the site is `opus-5.5`.
The current primary image model for the site's art is `gpt-image-2.5-sunburst`.
The writing on the site is all mine, no llm text here.[^clearer]

## the site

- [Astro](https://astro.build), prerendered, with [Preact](https://preactjs.com) components
- Posts are markdown, through [unified](https://unifiedjs.com) ([remark](https://github.com/remarkjs/remark), [remark-directive](https://github.com/remarkjs/remark-directive), [remark-gfm](https://github.com/remarkjs/remark-gfm), [remark-smartypants](https://github.com/silvenon/remark-smartypants)), [hast-util-to-jsx-runtime](https://github.com/syntax-tree/hast-util-to-jsx-runtime)
- Code highlighting: [Shiki](https://shiki.style)
- Share cards: [Satori](https://github.com/vercel/satori) and [resvg](https://github.com/RazrFalcon/resvg), as WebAssembly ([cf-wasm](https://github.com/fineshopdesign/cf-wasm))
- Search reranking and ask scott's agent: [Jev](https://typesafe.ai), from TypeSafe
- Type: [Fraunces](https://fonts.google.com/specimen/Fraunces), [Bricolage Grotesque](https://fonts.google.com/specimen/Bricolage+Grotesque), [JetBrains Mono](https://www.jetbrains.com/lp/mono/) and [Press Start 2P](https://fonts.google.com/specimen/Press+Start+2P), self-hosted via [Fontsource](https://fontsource.org)
- Icons: [Phosphor](https://phosphoricons.com)

## cloudflare

- [Workers](https://developers.cloudflare.com/workers/), with [static assets](https://developers.cloudflare.com/workers/static-assets/) for the pages
- [D1](https://developers.cloudflare.com/d1/): votes, reads, subscribers, the inbox
- [Durable Objects](https://developers.cloudflare.com/durable-objects/): a conversation each for ask scott's agent
- [Workflows](https://developers.cloudflare.com/workflows/): sending the newsletter
- [Cron Triggers](https://developers.cloudflare.com/workers/configuration/cron-triggers/): scheduled posts and issues
- [Workers AI](https://developers.cloudflare.com/workers-ai/) and [Vectorize](https://developers.cloudflare.com/vectorize/): search
- [Email Service](https://developers.cloudflare.com/email-service/): the newsletter
- [Turnstile](https://developers.cloudflare.com/turnstile/), [rate limiting](https://developers.cloudflare.com/workers/runtime-apis/bindings/rate-limit/) and the [WAF](https://developers.cloudflare.com/waf/)
- [Access](https://developers.cloudflare.com/cloudflare-one/): staging and previews
- [Worker Previews](https://developers.cloudflare.com/workers/previews/): staging, and a preview per pull request
- [Web Analytics](https://developers.cloudflare.com/web-analytics/), [Workers Logs](https://developers.cloudflare.com/workers/observability/logs/workers-logs/)
- [Registrar](https://developers.cloudflare.com/registrar/)

## tools

- [TypeScript](https://www.typescriptlang.org), [Vite](https://vite.dev), [pnpm](https://pnpm.io), [wrangler](https://developers.cloudflare.com/workers/wrangler/)
- Components built in [Storybook](https://storybook.js.org), every story a browser test in [Vitest](https://vitest.dev) and [Playwright](https://playwright.dev)
- Accessibility checked with [axe](https://github.com/dequelabs/axe-core), pages with [Lighthouse](https://developer.chrome.com/docs/lighthouse)
- [Biome](https://biomejs.dev) for formatting and lint, [Lefthook](https://lefthook.dev) for git hooks
- [GitHub](https://github.com), [GitHub Actions](https://github.com/features/actions) and [Dependabot](https://docs.github.com/en/code-security/dependabot)

## licensing

Code: MIT[^open-source]

[^open-source]: once open-sourced, should be before end November 2026, cleaning up a few things first

My Writing: [CC BY-NC 4.0.](https://creativecommons.org/licenses/by-nc/4.0/deed.en)

[^clearer]: Even though it might be clearer at times than my scatterbrained structures!

## site commit

Built from [`bffcec8`](https://github.com/scottroemeschke/professional-blog/commit/bffcec8bcd249f3897346f40f408389b39f01f74).
