The standard programming model of most programming environments is characterized by several sharp borders: Compile-time versus run-time, compiler vs. program, object level vs. meta level, expressions vs. types, and so forth. I argue that we should abandon or at least weaken these distinctions. To this end, I will present a library for collections that diffuses the compile-time/run-time distinction, an extensible programming language that unifies compiler extensions and object level programs, and a type system that coalesces the usual stratification into universes like terms, types, kinds. In each case, significant expressive power is gained by making borders permeable.