Colophon
How this site is made, what it stands for, and why owning your own corner of the web matters more than ever.
Why
I started tinkering with web dev in the early 2000s. The golden age of Java applets, blogrolls, and hand-curated RSS feeds. Then MySpace exploded, Facebook followed, and the open web quietly gave way to walled gardens. By 2010, I had traded my RSS collection for podcasts (The B&B Podcast, ATP, The Prompt, The Talk Show…) and Twitter, consumed through apps like Twitterrific, Tweetbot, and later Spring. These third-party clients had pulled Twitter’s entire ecosystem upward, pioneering patterns like the sidebar navigation and pull-to-refresh (introduced by Tweetie) that Apple itself would eventually adopt.
The decline was slow, then sudden. API restrictions gradually crippled third-party clients, reserving features like polls for the official app. Then the acquisition happened, and the shit show began: walking into HQ carrying a sink (“let that sink in”), the glowing 𝕏 sign on the roof keeping neighbors awake, blue checkmarks force-gifted to people like Stephen King and LeBron James who had publicly announced they wanted nothing to do with them. Then API pricing went through the roof, killing third-party clients for good and forcing everyone onto the dreadful official app. What had been my primary tech discovery tool turned into a swamp of OnlyFans bots, clickbait trends and engagement farming, and unabashed fascist rhetoric.
Everyone scattered: some to Mastodon, others to Threads, others to Bluesky. Some influencers, regrettably, stayed on Twitter, while the rest split between Fediverse advocates and AT Protocol converts. Out of the wreckage, a collective realization emerged: no matter how much you love a platform, owning your data and controlling your own distribution is priceless. Personal websites started making a comeback.
The best time to buy a domain was 20 years ago. The second best time is today.
Owning a personal site had always been a fantasy. I could never quite find the legitimacy to publish. But what was once a daydream became a necessity. An intrinsic need to write took hold, and to do it properly, I needed a medium that my perpetually unsatisfied temperament could be proud of.
Technology
This site is built with Next.js (App Router) and TypeScript. Content is authored in MDX: Markdown with embedded React components.
MDX is what makes this site more than a blog. Every page can mix prose with custom React components. Here are a few, rendered live with their props:
The markdown processing pipeline is built on unified with remark (parsing, GFM, math) and rehype (KaTeX rendering, slug generation, autolinked headings, smart quotes, em dash handling). MDX rendering is handled by next-mdx-remote-client, and syntax highlighting by Sugar High.
Code quality is enforced by Oxlint and Oxfmt (Rust-based linting and formatting that run in milliseconds) with Husky pre-commit hooks to keep things honest.
Typography
Three typefaces, each with a role:
- Roobert for headings. A geometric sans-serif with personality.
- PP Neue Montreal for body text. A neo-grotesque. I’ve always been drawn to grotesques, and this one strikes the right balance: clean and legible, but quietly distinctive.
- Geist Mono for code. Designed for terminals and editors.
Design
Dark theme, always. The layout is built on a CSS Grid breakout pattern inspired by Ryan Mulligan and SmolCSS. Instead of wrapping content in a constrained container and then fighting to let certain elements escape it, every child sits on a grid with named columns — content, popout, feature, full — and picks the width it needs. Code blocks pop out to popout, hero visuals stretch to full, and prose stays in content. No max-width hacks, no negative margins. Styled with Tailwind CSS and shadcn/ui.
Every visual on this site is pure code: CSS, Three.js, Canvas. No AI-generated images, no stock photography. Animations are handled by Motion with a custom staggered animation system.
Content
Every piece is hand-written, in both English and French. AI is used for proofreading, never for drafting or actual writing. The full reasoning behind this is on the /ai page.
The site supports bilingual content with locale-based routing, language switching, and alternate hreflang tags. Syndication is available via RSS and Atom feeds in both languages.
Every page also responds to the Accept header: request text/markdown or text/plain and you’ll get a clean markdown version instead of HTML, with custom components converted to plain-text equivalents through a dedicated remark plugin.
Hosting and privacy
Hosted on Vercel. Analytics are provided by Vercel Web Analytics and Speed Insights: anonymous, cookie-free, and compliant by design. No personal data is collected. Full details on the /privacy page.
This is a /colophon page, a page describing how this site is made. The tradition comes from publishing, where a colophon documents the typefaces, paper, and printing methods used to produce a book. See all slash pages.