"Software engineering" is a lie. Sure, we may write software, but we're not even close on the "engineering" part. We're craftspeople. We craft software. We cut and chisel and sand our code to make it fit and, like good woodworking, each endeavor is unique. In any form of crafting, it is sometimes necessary to have a specialized tool for a specific task, a tool uniquely suited to the way you work. We should be able to make and use these tools better than most, but it isn't a widely adopted practice. While many of us may use a programmable editor like vim or emacs, far fewer actually program it to meet our needs. Fewer still will write a tool specific to helping them code in some way.
Because I can enthusiastically talk about this topic for days, I'm forced to split this up into multiple parts. This will be part 1 & 2 (out of 4... or 37?). Part 1 will focus on how some of my developer tools work, showing the architecture and implementation details of flog and flay. Part 2 will demonstrate how to write one of your own from scratch. In the end you should have a much better handle on how to create tools for your own craft.