Today I was part of the day's lucky 10 000 people :D
I've been wondering for a long time why Common Lisp has the two package-macros, both of which are obligatory. I mean, somehow Clojure makes do with its optional in-ns macro?
Today I got stuck with a frightening cyclical dependency, where a function in a package, which a later package depended on, was in itself depending on a symbol defined in that later package. This was cyclic enough that I couldn't hack my way out of the hole by extracting the hard parts into a third package.
That's when it clicked, that the way I had been prepending (defpackage :ilpos-dumb-package) (in-package :ilpos-dumb-package) on every file's header was kind of dumb. If I extracted all the defpackage-macros into their own files, which would be loaded before the actual software gets loaded, would the public symbols be interned (despite their implementations not existing yet) and I get rid of all the load-time errors?
By golly, exactly that happened