Tool creation seems like a standard way to improve one's programming abilities. The books that uses tool creation as a means to demonstrate good programming includes Software Tools and Software Tools in Pascal, and Learn More Python 3 the Hard Way. Books like the C Programming Language does not emphasize tool creation, but many of its example programs and exercises leads can be easily turned into simplified versions of the standard commandline tools.
This is my attempt to follow that tradition and try to learn good programming practices at the same time.