Want to make an amazing webbed site like the one burning its way into your very brain now? Here you go:

#Use all .in files in this directory as posts
POSTS != ls *.in
# As well as all images.
JPEGS != ls *.jpg
PNGS != ls *.png

# Specify where to put the html files
OUTDIR ?= ~/www

# Declare "all" as phony (doesn't actually generate a file named "all")
.phony: all posts images

# Tell make that we have suffix rules for .in and .html
.SUFFIXES: .in .html .jpg .png .ping

# Apply the rule by saying that all depends on html versions of all of our .in files
# The variable expansion is a search&replace.
all:   images

posts: ${POSTS:S/.in$/.html$/}

images: ${JPEGS:S/.jpg$/.png$/} ${PNGS:S/.png$/.ping$/}

# Suffix rule. When asked to build a .html file, look for a corresponding .in file and build it with cat.
.in.html:
	cat templates/header.html $< templates/footer.html > ${OUTDIR}/$@

.jpg.png:
	lowtechify $< ${OUTDIR}/$@

# Fake suffix to trick make into doing what we want.
.png.ping:
	lowtechify "$<" "${OUTDIR}/$<"

In addition, this makes use of my "lowtechify" script, which is here

#!/bin/sh

# Resize to a max of 1024x1024 (keeping aspect ratio)
# Then reduce to 2 colors with dithering
# The color reduction picks something close to the "average" color
# of the image, so then
convert "$1" -resize '1024x1024>' -define module:colorspace=HSB  -dither FloydSteinberg -colors 2 -modulate 100,1000 "$2"

I've included a couple of images to demonstrate how it works:

A picture of a mountainside on a slightly cloudy day A close-up of cherry blossoms

No really, that's what makes this site. Put your header-ey stuff in templates/header.html, the footer-ey stuff in templates/footer.html, all of your posts are ".in" files in the same directory as the makefile. I keep my www directory in ~/www but you can do whatever, I'm not your mom. For what it's worth this runs on bmake, I use openbsd as my primary OS.

If you want to see the whole thing, you can just check out its repository


But this page is ugly!
Why?