# Sean Behan > Sean Behan — senior full-stack developer in Ontario, Canada. Rust, TypeScript, NixOS and Cloudflare Workers; open to full-time work, remote or GTA hybrid. https://seanbehan.ca is the writing — posts, pages and the résumé of Sean Behan. https://codebam.ca is the work — open-source projects, products and services. One repository, one database, two front doors: each origin answers requests for the other's sections with a 301 to the canonical URL, so follow redirects rather than guessing which door serves what. How to fetch this site: - Entries that live in the database answer in three forms of one stored source: the HTML page, a markdown document, and JSON. That is every post (`/posts/`). Append `.md` or `.json` to the entry's URL, or request it with `Accept: text/markdown` or `Accept: application/json`. HTML stays the answer for browsers, for `*/*`, and for any client that does not name a format — there is no user-agent sniffing to trip over. - Everything else is HTML only, and appending a suffix is a 404 rather than a variant. The section pages — the home page, `/about`, `/contact` and `/links`, plus `/projects`, `/products` and `/services` on the work origin — are hand-written templates with no stored entry behind them; the archive `/posts` and the tag index `/posts/tags` are navigation over the entries. A post's markdown and JSON hang off the post's own URL, never the archive's. The résumé is the one section page that also answers as a document (below). - The markdown forms open with a metadata header (canonical URL, author, published and updated dates, tags, reading time) and carry the body with fenced code and absolute image URLs. The JSON forms hold the same facts as fields, the markdown body in `content`, and the page's heading anchors in `sections`. - Content pages advertise their alternates with `` and this file with ``. - The RSS feed carries the full text of recent posts in `content:encoded`, which answers questions about the corpus in one request rather than ten. - Unpublished drafts appear in no list, feed or file here; a draft's URL still renders if you already hold it, marked noindex. ## Writing - [All posts](https://seanbehan.ca/posts): the archive, newest first, with the title search over it. - [Post feed](https://seanbehan.ca/rss.xml): recent posts with full text, HTML. - [Tags](https://seanbehan.ca/posts/tags): the topic index with counts; each tag has its own feed under https://seanbehan.ca/posts/tag/. - [Search](https://seanbehan.ca/search.json): ranked slugs for a query in `?q=`; words are matched over titles, descriptions, tags and bodies. - [Résumé](https://seanbehan.ca/resume.md): the CV in its source markdown — the same file the HTML page, the PDF and the plain text are generated from. The PDF is https://seanbehan.ca/resume.pdf; the plain text is https://seanbehan.ca/resume.txt. ## Work - [Projects](https://codebam.ca/projects): case studies of the software that runs, with what each one had to survive. - [Products](https://codebam.ca/products): paid work, with prices. - [Services](https://codebam.ca/services): what kind of engagements are taken on. - [Contact](https://seanbehan.ca/contact): the forms and the address. ## Recent writing - [How I survived a DDoS Flood](https://seanbehan.ca/posts/how-i-survived-a-ddos-flood.md): 2026-08-28. Tagged cloudflare, emdash, networking. - [EmDash and Cloudflare Workers](https://seanbehan.ca/posts/emdash-and-cloudflare-workers.md): 2026-08-24. Tagged cloudflare, emdash. - [USB Cable Testing on Linux](https://seanbehan.ca/posts/usb-cable-testing.md): 2026-04-15. Tagged linux, test, usb, wireshark. - [Secure Boot NixOS UKI Installer](https://seanbehan.ca/posts/nixos-uki.md): 2025-07-06. Tagged nixos, secure-boot, steam-deck. - [Podman Quadlets](https://seanbehan.ca/posts/quadlets.md): 2025-03-28. Tagged containers, linux, podman, quadlet, systemd. - [Email bot](https://seanbehan.ca/posts/email-bot.md): 2024-12-04. Tagged cloudflare, serverless, typescript. - [NixOS Flakes](https://seanbehan.ca/posts/nixos.md): 2024-06-01. Tagged nixos. - [Cloudflare Workers Telegram Bot](https://seanbehan.ca/posts/cf-workers-telegram-bot.md): 2024-05-15. Tagged cloudflare, typescript. - [Search bar in Sveltekit](https://seanbehan.ca/posts/svelte-search.md): 2023-12-06. Tagged cloudflare, javascript, serverless, svelte, sveltekit, typescript. - [Auth and Databases in Sveltekit](https://seanbehan.ca/posts/svelte-auth.md): 2023-11-12. Tagged cloudflare, javascript, serverless, svelte, sveltekit, typescript. ## Optional - [Sitemap for this origin](https://seanbehan.ca/sitemap.xml): every indexable URL it serves. - [Sitemap for the other origin](https://codebam.ca/sitemap.xml): the same, across. - [robots.txt](https://seanbehan.ca/robots.txt): crawl rules — everything is open apart from the admin, and the few scrapers that take without giving back.