Ten years ago, Filip Roséen built his blog engine using a tool most developers reserve for build automation: a single Makefile. No JavaScript frameworks, no content management systems—just GNU Make orchestrating Markdown conversion via cmark and templating with mustache. As he revisits this forgotten artifact, Roséen uncovers a profound truth about technical maturity: experience often comes at the cost of creative liberty.

The Beauty of Constrained Tooling

Roséen's Makefile (preserved below) performed all essential static site generation tasks:
- Content aggregation with pattern rules
- Metadata extraction via Git history
- Page rendering through Mustache templates
- Automatic cleanup routines

# Core rendering workflow
$(OUTDIR)/posts/%/index.html: makefile header.md footer.md config.yaml posts/%/*
  $(call RenderEntity,posts/$*/contents.md,posts/$*/index.html)

# Metadata extraction magic
define GenerateYaml
  { \
    git log -1 --diff-filter=A --follow $(call YamlDates,created) -- "$1"; \
    git log -1                          $(call YamlDates,modified) -- "$1"; \
  } | awk '{$$1=$$1};1'
endef

Wisdom vs. Creative Instinct

What strikes Roséen most isn't the code's elegance—it's the mindset it represents:

"When I was younger the immediate task was everything... No need to evaluate dependency-X vs dependency-Y, no need to think about future features. I only wrote code."

He contrasts this with today's reality: senior developers become "the person who worries," paralyzed by foresight of scaling issues, maintenance burdens, and dependency risks. The freedom to just build diminishes as technical knowledge grows.

A Time Capsule for Future Developers

Roséen's plea to new programmers carries unexpected urgency:
1. Preserve your early work – "Shitty" code becomes priceless technical heritage
2. Embrace tactical solutions – Not every project needs enterprise-grade architecture
3. Guard against over-engineering – Tomorrow's hypotheticals shouldn't block today's prototypes

The intact Makefile—resurrected via Docker after dependency headaches—stands as proof: constrained tools foster focused innovation. In an age of bloated frameworks, Roséen's decade-old creation still generates valid HTML, RSS feeds, and sitemaps. Its endurance questions whether modern complexity always represents progress.

# Full project at:
# https://refp.se/articles/a-makefile-driven-blog

Source: Filip Roséen, A Makefile-Powered Blog