Understanding Git Filter-Branch and the Git Storage Model
It's things like these that really get you into understanding the underlying "truth" of things.Four other examples really come to mind that I've encountered:
- Void pointers and structs in C (what actually are objects?)
- "Curiously recurring template pattern" in C++ (how does template metaprogramming work?)
- Ruby's declarative syntax in class definitions (ex: rail's `has_many`) (what are ruby classes?)
- Monkey-patching instances of Ruby objects (what are Ruby objects?)It's a similar feeling to those moments when you realize almost everything you've ever interacted with is artificial: other people made the decisions that made that thing this way......and different decisions are possible.