Back in 1983 I took a summer class in Basic on the Radio Shack TRS-80 Color Computer. I really enjoyed the games, but hated the programming. In 1985 I taught myself Pascal because my father knew it, but I found that it didn't agree with me either. This is not to disparage those languages, but to state that they simply weren't for me. Given my two failures I avoided programming for many many years. But by 1996 I had been programming quite a bit in a variety of high level scripting languages and though it was marginally satisfying, I still shied away from compiled languages.

Then I was introduced to C.

There was just something about this low level access that clicked with me and I've never looked back. I learned it quickly and moved forward to C++ and now C# as well. But as much as I like C#, I love C++ and I still open my digital copy of Scott Meyer's Effective C++ just for fun.

Multiple-reader, single-writer lock There are a lot of these multiple-reader single writer locks available. There is an excellent one written by Jeffrey Richter that you can find in his book Programming Applications for Microsoft Windows, but it lacked something I needed for a specific job I was working on. I needed a class that allowed for multiple reentry into the lock from the same thread or arbitrary object. Thus my MRSWSync class was born.
C6Crypto This is a simple class for cryptographically manipulating strings.
CTimeConvert Do you work with VARIANT dates? Or DBTIMESTAMPs? Or maybe you prefer time_t, tm or FILETIME? Well, I got so fed up with converting one type of time to another that I finally wrote a class that did it all for me. I don't know if this class can be used in commercial software since I shamelessly "reused" code from Microsoft's olevar.cpp in MFC for two of the functions, but it sure is nice for internal applications!
 
(Please seek legal council before using in a commercial application. C6 Software, Inc. can not be held liable if you do not cover your own legal bases.)