Building Dependency Injection with Crystal Macros

When I first came across dependency injection I was a sceptic. Surely we could just create objects the normal way instead of worrying about modules and bindings? Eventually though I realised how you’re actually just generating the boilerplate code that you’d need to pass the dependencies around manually, and writing that code yourself is a huge waste of time. I then wondered how hard it would be…