Configuration
In principle, managing configuration -- via the environment, the command line, database lookups (note from experience: great for keeping one copy across multiple systems, frequently a massive pain when doing diagnostics on production problems when you don't have access to production), or flat files should really be handed off to something like boost or another third party library. All the problems involving configurations have been met and surmounted many times before. But the point of this exercise was not to farm out functionality to boost (on any large scale), but to exercise modern coding skills. So, of course I built a basic config file parser. However, it's in XML rather than the old-fashioned line config file model, which allows a certain amount of extra flexibility to be built into the structure. This also means that keys and values can include spaces. This is another class that is over in general utilities, not in the immediate project. class ConfigFileReader ...