Why is this site built with C

C Toolchains: Simplicity vs. Pain

  • Some argue C’s “limited ecosystem” is a virtue: one small, carefully curated tool per project, often just gcc/clang + make, leads to durable, understandable setups that still build years later.
  • Others find C toolchains among the most painful:
    • Real projects almost always need a build system (make, CMake, autotools, etc.) and complex compiler flags.
    • Cross‑platform builds (Linux, macOS, BSDs, Windows) expose version quirks (make variants, old GNU make on macOS, different libcs, link flags).
    • Dependency management is described as “hell” unless you consciously keep deps tiny.
  • Counterexamples include simple multi-file projects built with a modest Makefile, and people using Zig, Bazel, or Rust’s cargo as more pleasant build fronts.

Why C for a Static Site?

  • Several point out that many languages meet the same requirements: markdown parsing, binary output, portability (Go, Python, Hugo, Jekyll, Zola, Nim, etc.).
  • Defenders note: the author wanted a single small C markdown library (md4c) and a thin wrapper with no external runtime, betting on C’s longevity.
  • Critics argue equivalent functionality is shorter, clearer, and more portable in higher-level languages, and note the C solution still depends on custom helper libraries and POSIX APIs, so it’s not as “pure C99 portable” as implied.

Performance and Incremental Builds

  • Some think optimizing for sub‑second full rebuilds of a blog is overkill; a 5‑minute deploy wouldn’t matter for a personal site.
  • Others value instant feedback while writing (live preview workflows), but note this doesn’t strictly require HTML generation—editors can preview markdown directly.
  • Multiple commenters say the “rebuild speed” problem could be trivially solved with incremental builds (timestamps, make, redo, git hooks).

Minimalism vs. Ecosystem Bloat

  • Strong sympathy for avoiding massive toolchains like Hugo/Pandoc stacks and N‑hundred‑dependency ecosystems.
  • Others argue the article is unfair to some tools: e.g., pandoc can be used as a single static binary; Python’s markdown package is tiny and sufficient.
  • A recurring theme: build the 20% you need instead of importing huge libraries, especially now that LLMs can help write small bespoke tools.

Safety, Content, and Longevity

  • Some would rather trust multiple memory‑safe libraries than one C tool, but others note the attack surface here is negligible: local markdown → static HTML → GitHub Pages.
  • Several emphasize that content format (markdown) and stable URLs matter more for longevity than the implementation language.