Q&A with Kenny Kerr on C++, Window Clippings and Micro-ISVs

Kenny Kerr is a software developer and entrepreneur. He is passionate about software and getting it done right. His new company recently launched Window Clippings 3, a screen capture tool designed to produce the highest quality screenshots. You can follow Kenny on Twitter at @kennykerr.

1. Who are you?

I am a husband and father of five. We live in Ontario, Canada. I’ve been developing software for twelve years and most of it on Windows with C++ and C#.

2. What are your interests around software development?

I enjoy writing software for Windows. It has such a rich set of libraries for building applications and there’s always more to learn. I prefer using C++ on the client because it affords me a great deal of control and expressiveness, which is quite rewarding.

3. What interests you about C++?

C++ is such an intriguing language for a few reasons. It has a collection of powerful features. You can use any number of these features individually but it gets particularly interesting when combined together in different ways. It helps to look at the evolution of C++ and see that the full extent of its power has only become known over time as the community of developers experiment with the building blocks that the language provides. As the next wave of standardization plays out, I anticipate even more innovation from a language that has already delivered much.

4. What are some of the more exciting aspects of C++?

C++ allows you to blend very low level techniques with high level abstractions very efficiently and in ways that continue to surprise me. I can design an elegant library that is easy to understand and simple to use while hiding a very complex or efficient implementation behind the scenes. It is a language ideally suited to library developers. It is why C++ can go so far with relatively few language changes or additions. On the other hand, having some new language features to play with is always exciting. Visual C++ has begun to introduce a handful of core language improvements as part of C++0x that make writing libraries and applications simpler and with greater expressiveness.

5. Recently, you kicked off a blog series entitled, “The new C++ for the new Windows”. Tell us a little about it.

I have spent the last year getting to know many of the additions to C++ that form part of the upcoming standard for the language. This includes language improvements as well as additions to the standard library. After I had spent a few months using these new features in production, I started looking at the way I was developing applications for Windows and began to realize that the code was overly complex. Part of it came from relying on outdated libraries that I felt were no longer helping me to be more productive but instead only helping to form bad habits. I also realized that I needed to embrace the Standard Template Library (STL) and discard any libraries and techniques that didn’t play nicely with it. “The new C++ for the new Windows” is my attempt to share some of these ideas and to put a more modern spin on native C++ development for Windows. Many developers are introduced to Windows development with C++ via libraries such as Microsoft Foundation Classes (MFC) and the Active Template Library (ATL), which are really quite old and outdated as far as current best practices go for the use of C++. I want to show developers that there is a better way to go about writing Windows applications.

Editor’s Note: You can read Kenny’s first post in his blog series entitled, “The new C++ for the new Windows” here: “The new C++ for the new Windows / Part 0 / Putting bugs into buckets” .

6. What is Window Clippings?

Window Clippings is a screen capture tool that I developed mostly in my spare time over the last few years. It is designed to produce the highest quality screenshots with as little effort as possible from the user. The latest version is specifically engineered to perfectly capture the appearance of application windows on Windows 7.

7. What inspired you to build Window Clippings?

A few years ago, I started using Microsoft OneNote and noticed its neat screen capture feature called “Create Screen Clipping”. It allows you to easily drag your mouse across the screen to select a region which would then be copied into a OneNote page. I immediately thought that it would be useful if I could use a similar approach to accurately capture windows instead with just a click of the mouse. It started in the Windows XP days with windows having simple rounded corners but it put me in a good position to support today’s windows produced by Windows 7 by means of desktop composition with its translucency and shadows.

8. How did you develop Window Clippings?

Window Clippings was developed using Visual C++ using only native code. It relies on only those libraries that are included with Visual C++ and Windows itself. Image processing for example is done using Direct2D and the Windows Imaging Component (WIC) framework.

9. What's your take on the state of the Micro-ISV today?

The concept of a Micro-ISV is important as it allows software developers to be regarded and recognized as craftsman in their own right. I would love to see more developers making the leap as entrepreneurs. The challenge as a Micro-ISV is to somehow get your wares into the global marketplace without the marketing budget of the likes of Microsoft and other software corporations.

10. What advice would you have for developers considering the Micro-ISV route?

Having only recently made the leap myself I cannot claim to be in a position to offer that much advice. I will however say that it is going to be more work than you image but the rewards of building something that you can truly call your own cannot be measured.

11. What are you reading these days?

I read a lot of books and in different fields. As an entrepreneur you need to be knowledgeable and educated in many different areas of life. You should also be determined to do things right. The more you know the better you will be at getting it right the first time. I recently read Sanderson’s book on ASP.NET MVC and found it quite helpful as I hadn’t done web development in a long time. If you’re looking for inspiration and advice on starting your own business I recommend Growing a Business by Paul Hawken. Advanced Windows Debugging by Mario Hewardt and Daniel Pravat is another excellent book to have around. Finally, if you’re so inclined then pick up a copy of Make it Right by Canada’s own Mike Holmes.