Back in 2001 I was working for a company which is, as far as I know, no longer in existence. I think it was bought out by a larger company. The companies initials were C F and I won't identify what kind of software we did except to say that it was mostly server software with an emphasis on high throughput data transformation.
Almost by definition, if we were doing data transformation, we needed a modular architecture if only because customer A wants his data transformed this way whilst customer B wants it transformed that way and as for customer Z? Of him the less said the better :-)
This led to the inevitable fingerpointing when trouble shooting. Was the bug in module 1 or module 2? It could become difficult to trace the flow of data from one module to another thence to a third and then via a callback to the first again so we could isolate the source of an error.
I took it upon myself to write a logging service[^] that, if used correctly, would give us an audit trail for tracing the flow of execution through a complex system.
The logging service didn't have much to offer in terms of product features that one could put onto a datasheet and earn the coveted check in the box. If you've got a boss who is datasheet driven that can be a problem. Fortunately, my current boss understands that sometimes one has to perform work that seems to offer little benefit to the end user but that can save much time for the development team down the track.
So much is prologue.
Working for a company who's initials were C F and writing a service that performed logging what more natural than to call the resulting program CFLogger? Incidentally, I'm leaning more and more to the idea of prepending the companies initials on each executable and DLL; it does tend to disambiguate when viewing a directory listing.
It worked well and I was able to get most of my fellow developers (all 4 of them) to buy into it and soon we had accurate audit trails showing us exactly how and why our code took *that* path instead of *this* path. Made it a lot easier to debug.
If you've spent any time at all in software development you know perfectly well that what works in the development environment doesn't work once you get it into a customers hands. So CFLogger became part of the install that went onto each server. Gave us easy to follow audit trails and made debugging things on the customers servers much easier.
But one afternoon a manager noticed CFLogger in the services applet.
He went ballistic! 'You can't have a service called CFLogger. Sounds too much like C Flogger!'
As far as I can work out his concern was that it sounded like
a: A reference to masturbation.
b: A reference to bondage.
c: A reference to the selling of goods cheap.
d: A reference to the beating of a dead horse.
Take your pick of what was really bothering him.