I figured out why web.py wasn't working: turns out in web.py 0.2 and earlier, you were expected to print the output to stdout instead of returning a string. A few lines of s/return/print/ later, and you have what you see here.
Yes, it doesn't look very much different. You may notice the permalinks. I'm considering adding breadcrumbs, since now I can support those too with urls like https://zarvox.org/shortlog/2010/10. Maybe I'll just add those for permalinks.
Note that the backend shift and new features were not without purpose - permalink support is a prerequisite for implementing Atom feeds, as previously discussed. However, implementing Atom is going to wait until I finish my HCI project due Friday.