Some dude posted a short CGI handler to comp.lang.lisp a couple weeks ago, and it struck me as so fundamentally wrongheaded that I thought I'd try to do it The Right Way. I've learned a lot in the process, though I can't say I've gotten to The Right Way yet.
Base64 decoding confuses me. The spec says to ignore all input that isn't in the base64 alphabet, but warns that if the input ends on a 3-byte boundary there is no trailing padding. So how can you know when you're done decoding? EOF? Relying on content-length? Ad hoc? It seems to me that if, for example, there were two separate base64-encoded inputs in a file, you would need some external information to figure out where the first one stops and where the second one begins.