Programming languages come with increasingly powerful type-level programming features and meta-programming facilities – both of which shift part of the computation from dynamic (our traditional notion of “run-time”) to static (what often think of as “compile-time”). This boundary is being blurred as compilation increasingly happens at run-time and computations are staged. This means we have to start thinking about debuggers and profilers for our type systems. But we must also ask whether that additional expressive power is actually a net positive. Where is the point of diminishing returns?