A masochist's guide to web development