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 (
makevariants, 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
cargoas 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
markdownpackage 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.