John Torjo - C++ Expert


In addition to my work, I do love to write libraries, and articles. And when it's both, it's even better - and it's been like that quite a few times! And every now and then, I throw a free app, just over the top...

Just between you an' me, using C++ templates is one of my fetishes... However, as the doctor prescribed, I do use them with caution - just when they're useful...

As libraries come, dealing with logging/formatting is my favorite - I've written quite a few logging libs in my days. You'll see one here, but I will soon start work on the next one...


Boost Logging Lib, v2. - logging, in a very flexible manner.
I've learned from version 1 of Boost Logging Lib, and now you can really customize the way you log - from syntax, to formatting messages, and specifying where they are to be outputted.
more details

Win32 GUI Generics Library
- generics and GUI do mix after all !
If you wanna see what C++ is capable of, you can take a look at this code - it's taken over 1 year of development - but it's been a blast!
Makes GUI programming easy in C++: GUI RAII, no message maps, easy event processing, loose coupling, fast compilation times, no main loop, and much more
> Portable library: works for MSVC, gcc, Comeau 
more details 

C++ tips - every now and then, I write tips on my blog. This is just a page with the links to those tips.

Boost Logging Library
(v1)- logging, the easy and straightforward way
I've used this library successfully on many projects. Even though it got rejected by Boost, I do believe you can use it, until I come up with the next one ;)

Co-author of the Range Template library , featured in C++ Users Journal, on Oct and Dec '04
RTL is designed to be used together with STL algorithms, making the code much more compact and easier to understand. A range abstracts walking over an STL sequence, from a begin, up to an end. RTL ranges can be composed, such as transforming and then filtering of an existing STL container. 
more details

smart_assert library
Author of the revolutionary SMART_ASSERT library, successfully used for many projects; enhances assertions and helps catch bugs early

Straightforward Settings
Allows persisting of application-related settings.
Manipulating settings is very easy and straightforward. The code that uses the settings is isolated from where the settings are actually stored. Thus, in case you need to change the storage (for example, change it from a file to the registry), you will only need to change one or two lines of code. 

Easy, light-weight, efficient convert-anything-to-string library

Cross Builder
- Click, Build, Run!
Do you want to check your code on multiple compilers, and do you want to do it in a cool and simple UI? There you go...
Source code is available (see the "more details" page for more details ;)).
more details

Easy Log View

Logging the exact right stuff is hard. What do you do when there's a problem, and that extra logging info is not there? Why not log as much as possible, and have filters on your logs? This way, you can even have multiple views of your logs : the errors, normal logging, debug & errors, etc... Yup, just what the doctor prescribed ...
more details


When debugging, watching variables that are arrays/collections/long strings is quite hard. However, there's help - you can log what you want (using Boost Logging Library), and break when you want (alpa version)
more details