Learning Modern C++ from Scratch

C++ is a language having a reputation of being hard to learn.

In this C++ course of mine published by Pluralsight, I did my best to prove the opposite: C++ can be learned in a simple, interesting, and fun way!

I used a variety of engaging visuals, metaphors and example demo code to try to teach modern, clear, good C++ from scratch, from the beginning, without any previous programming knowledge.

And, even if you already know C++, you may have fun watching this course as well.

Note: The table of contents and a brief course overview are freely available in the course page.

Sample slide: Iterating through vector elements
Sample slide: Iterating through std::vector’s elements

Here’s some of what my reviewers wrote about this course:

You sound really passionate about this technology.  It comes across in the narration and it’s quite infectious.

You’re a very talented teacher, offering lots of examples, analogies and stories that make the concepts easy to grasp.  The visuals are also really helpful for understanding the concepts.

Overall, I really enjoyed this module.  The content is logically structured, you do a great job explaining the concepts, supported by engaging visuals.  There’s also a nice mix of theory and demos.  You clearly understand your beginner audience, the knowledge they currently have, and how to lead them to a deeper understanding of this technology.  Bravo!

The demo showing the bug with implementing the swap function was excellent. It immediately reinforced your earlier lesson on the scope of local variables.

Fantastic use of Camtasia callouts in the demos.

Sample slide: Introducing the std::string class
Sample slide: Introducing the std::string class

I’d like to sincerely thank Mike Woodring of Pluralsight for approving this course idea, my fantastic editor Beth Gerard-Hess for her continuous encouragement and support during this course production (working with Beth is an absolute pleasure), Stephan T. Lavavej for interesting email conversations that provided good food for thought, all my reviewers (both peer and QA) for their quality course feedback, and all the Pluralsight persons who worked on this course.

This C++ course has been a work of love for me, I put my heart into it: I hope you will enjoy the result!

 

C++ Wrappers for Windows Registry APIs

I uploaded on GitHub some C++ code of mine that wraps some Windows registry C-interface APIs, using RAII, STL classes like std::wstring and std::vector, and signals error conditions using exceptions.

Using these high-level C++ wrappers, you can easily access the Windows registry with simple code like this:

// Open a registry key
RegKey key{ 
    HKEY_CURRENT_USER, 
    LR"(SOFTWARE\MyKey\SubKey)" 
};

// Read a DWORD value
DWORD dw = key.GetDwordValue(L"MyValue1");

// Read a string value
wstring s = key.GetStringValue(L"MyValue2");

// Enumerate the values under the given key
auto values = key.EnumValues();

// etc.

On the May issue of MSDN Magazine you’ll find an article describing some of the techniques applied in this code.

EDIT 2017-05-02: Added link to my MSDN Magazine article.

Reorg of My Blog’s Taxonomies

Initially, I used categories as the only taxonomy to group my blog posts together based on their content.

More recently, I discovered that, in addition to categories, WordPress offers also tags. Actually, I initially thought of categories just like tags, but after some research on the Internet, I figured out there’s a difference between these taxonomies.

So, it’s been quite a while I wanted to reorganize my blog taxonomies, following the advice I read in several places to reduce the number of categories, and adding tags for finer-grained and cross-category classifications.

I spent a fair amount of time thinking about this taxonomy reorg for my blog, and re-tagging all the existing posts, and finally I was able to reduce the number of categories from the initial 19 to just 6.

In particular, I “moved” several previous categories (like Bugs, PerformanceATL, STL, Unicode, Pluralsight, etc.) to tags. Two important categories now are C++, which groups topics related to the C++ language and standard library, and Windows C++ Programming, which is focused on the application of C++ to Windows development (for example, think of Win32 C++ programming, ATL, and so on).

I hope this reorg will increase the “information organization” quality of this blog!

Enjoy! 🙂