Constant Thinking

Colophon

How This Site is Made

A colophon is a traditional publishing term for “how this thing was created.” Here’s mine.

TL;DR 🚀

Constant Thinking is built with a privacy-first, simplicity and performance focus using modern static site generation:

  • Generator/CMS: Zola (Rust-based, fast)
  • Styling: Tailwind CSS with custom components
  • Interactivity: Minimal Alpine.js where needed
  • Infrastructure/Hosting: Serverless infrastructure on AWS, as Code (CDK)
  • Analytics: Simple, custom privacy-focused (no cookies, no tracking)
  • Content: Markdown with manual curation

Core Principles: Privacy-first, simple, optimized, content-focused experience, and sustainable web practices. No cookies, no client-side tracking, just useful, fast, accessible content.


History 📚

This blog has been through some changes since 2010:

  1. 2004: My very first blog article was on Sun’s employee blogging platform, running on Apache Webroller
  2. 2010: Launched as a Drupal-based blog - the early days of exploring running my own content management system
  3. 2017: Rearchitected to static generation with a custom AWS Lambda/Step Functions distributed static site generator on S3/CloudFront
  4. 2022: Migrated to Pelican, an open-source Python static site generator (still Amazon S3/Amazon CloudFront)
  5. 2025: Current iteration with Zola - Rust-based performance with modern tooling

Each iteration taught me something new about web performance, content management, and the balance between complexity and maintainability.


Technical Architecture 🏗️

For developers who want to know what’s under the hood

Static Site Generation

Zola handles the heavy lifting — a Rust-based static site generator that’s both powerful and incredibly fast. Key features:

  • Content organization with sections and taxonomies
  • CommonMark Markdown with TOML front matter
  • Tera templates for layouts
  • Built-in syntax highlighting and RSS generation
  • Single binary deployment (no dependency hell)

Styling & Design

Tailwind CSS provides the utility-first CSS foundation:

  • PostCSS processing pipeline with development/production configurations
  • Custom components for cards, prose content, and responsive layouts
  • Design tokens for consistent colors and spacing
  • Source maps in development, minification in production
  • CSS purging to keep bundle sizes minimal

JavaScript Philosophy

Minimal JavaScript with Alpine.js for targeted interactivity:

  • Self-hosted dependencies (no CDN for privacy/control)
  • Mobile menu functionality with mobile-first design
  • Enhanced search with elasticlunr and keyboard navigation
  • Privacy-focused video embedding with click-to-play
  • No heavy frameworks or build systems for client-side JS

Content Management

Flat-file approach with multiple content types:

  • Posts: Long-form articles (/posts/YYYY-MM-DD-slug/)
  • Links: External content with commentary (/links/YYYY-MM-DD-slug/)
  • Notes: Quick thoughts and TIL content (/notes/YYYY-MM-DD-slug/)
  • Pages: Static content like this colophon (/page-name/)

All content is manually curated in Markdown with structured front matter. This gives me fine-grained control over presentation while keeping the authoring experience enjoyable.

Infrastructure & Deployment

AWS-native architecture with Infrastructure as Code:

Analytics & Privacy

Custom privacy-focused analytics system:

  • Server-side only (CloudFront logs + custom processing)
  • No cookies, no client-side tracking, no personal data collection
  • Weekly aggregated reports with visitor and page view metrics
  • Chart.js for clean data visualization
  • Fully compliant with privacy regulations

IndieWeb Integration

Modern IndieWeb standards for social interaction:


Development Tools & Workflow 🛠️

Writing & Development

Zed.dev is my primary editor for both writing and development:

  • AI-assisted coding with integrated large language models
  • Blazingly fast UI
  • Markdown support for content creation
  • Remote editing capabilities
  • Rust-based editor

AI Collaboration

I believe in transparent AI collaboration and actively work with Claude and other large language models in various forms:

This isn’t about replacing human creativity, but augmenting it. AI helps me focus on the interesting problems while handling repetitive tasks and providing helpful and different perspectives on technical challenges.

Build System

Make-based build system with comprehensive validation:

  • Content validation and link checking
  • HTML minification for production
  • Image optimization with responsive variants
  • Automated deployment to staging and production
  • Integration testing before going live

Design Philosophy 🎨

Typography

  • Headers: System fonts optimized for readability across platforms
  • Body: Carefully selected font stack with fallbacks
  • Code: Monospace fonts with syntax highlighting via Zola’s built-in support

Performance

Every technical decision prioritizes speed and accessibility:

  • Static file delivery leverages AWS’s Cloud experience and CDN
  • Minimal JavaScript reduces parsing and execution overhead
  • Responsive images with proper sizing and modern formats
  • Critical CSS inlined, non-critical CSS loaded asynchronously

Privacy by Design

  • No cookies: Site functions fully without any cookies
  • No client-side tracking: All analytics happen server-side
  • No external dependencies: Self-hosted fonts and scripts where possible
  • Transparent data handling: This colophon and privacy page explain everything

Why These Choices? 🤔

Static Generation: Fast, secure, and resilient. Static files can handle any traffic securely and efficiently.

Rust-based Tools: Zola and Zed both prioritize performance and reliability. The Rust ecosystem’s focus on safety and speed aligns with my values. Also, I’d like to learn more Rust in the future.

Privacy-First: I don’t like cookies and I imagine neither do you. As a European citizen, I also value privacy a lot.

Manual Curation: Automated content pipelines can introduce quality issues. Manual curation ensures every post meets my standards.

Infrastructure as Code: AWS CDK lets me version control and test infrastructure changes, making deployments predictable and reversible.


This colophon was written in June 2025 and reflects the current state of the blog. Like the site itself, it will evolve as new tools and techniques emerge. For questions about implementation details, feel free to reach out.