Embedded C++ Development for the Game Boy Advance at OpenWest 2017

OpenWest 2017 has accepted my proposed talk on Embedded C++ Development for the Game Boy Advance. I will be presenting this talk on Wednesday, July 12th from 4:00 pm to 4:50 pm. If you are interested in C++ for embedded development, I think you will enjoy this presentation. We’ll be showing how the “Zero Overhead Abstraction” of C++ lends itself to creating clearer code for embedded platforms without losing anything in efficiency. I’ll see you there!

The Mystery of Ctrl+[

Tommy Bennett gave a great lightning talk at CppCon 2016 entitled “Algorithm Mnemonics: Increase Your Productivity With STL Algorithms”. This was really two lightning talks jammed into one. In the second half, Tommy talks about how to increase your productivity with the vim editor simply by learning to use Ctrl+[ instead of ESC because of the distance traveled by your fingers on the keyboard. In the talk, Tommy wonders why Ctrl+[ works for ESC. This short post will explain the mystery of Ctrl+[ along with other interesting characters you can type on your keyboard.

Read the rest of this entry »

Utah C++ Programmers July, 2016: SIMD Parallelism with CPU Intrinsics (MMX, SSE, AVX, etc.)

At this month’s Utah C++ Programmers meetup, I’ll be presenting the basics of invoking SIMD CPU instruction set extensions using compiler intrinsics functions.

SIMD Parallelism with CPU Intrinsics (MMX, SSE, AVX, etc.)
Wednesday, July 13, 2016
6:00 PM – 8:00 PM

Food will be provided, courtesy of our sponsor Apremis Technology Placement. Thanks, Apremis! Please RSVP through the above link so we have a proper head count for food.

Refactoring to Learn a New Code Base

When you join a team with a large existing code base, it can be intimidating. How long does it take to become familiar with a million lines of code? I don’t have the answer to that question, but based on my past experience it easily takes several years if not more. Meanwhile, the rest of the team is adding and changing code all the time. When I apply small, focused, systemic refactorings to a code base, I visit lots of code that may be unfamiliar to me. Visiting unfamiliar code and making the same kind of systematic change throughout can help me become more familiar with the code.

Read the rest of this entry »

Utah C++ Programmers: Concurrency and Parallelism with <thread>

This month, Greg Hodgson will give us a presentation on concurrency and parallelism with <thread>. Thanks for presenting, Greg!

Slides for Utah Code Camp Presentations

I have posted the slide decks for my Spring 2016, Utah Code Camp are available on slideshare.net:

Thanks to everyone who attended Code Camp and a very special thanks to all the sponsors that make the event happen!

Proposed Utah Code Camp Spring 2016 Talks

It’s that time of year again and I’ve proposed the following talks for the 2016 Utah Code Camp. Please vote for those you’d like to see as I doubt I will be able to give all of them :-).

Vote here: Utah Code Camp Spring 2016 Sessions

Update: Two of my talks were accepted, thank you for your votes! That’s quite a bit of work for me in such a short time, but I will give it the old college try and do my best not to disappoint anyone. See you at Code Camp!

Proposed talks:

  • Software Practices and Principles
    • Why TDD is a Design Activity

      Do you think design is that thing you do at the beginning before you start implementation? Oh pshaw, waterfall thinker! Design is an activity. Designs evolve. Software is the most mutable substance known to mankind. TDD embraces that evolution and malleability and changes design from a phase into an activity we practice every day.

    • Accepted: Modern C++

      Has it been a while since you looked at C++? Do you have a “backwards looking” perspective on C++ based on poorly written old code? Come take a look at modern C++ and dispel your misconceptions about C++. Embrace lightweight abstraction mechanisms with efficient implementations that make your phone’s battery last longer! C++14 is stable and is implemented across all major platforms. C++17 standardization is underway. Compilers are implementing C++17 support in anticipation of the standard, instead of waiting until it is released. The library working group in the standards committee has additions to the C++ Standard Library coming your way.

  • Microsoft Technologies
    • Accepted: Developing iOS and Android Apps with Visual Studio

      In this presentation, we’ll take a look at the additions to Visual Studio 2015 that support the development of iOS and Android applications. We will emphasize cross-platform development of a single code base.

    • NodeJS for Visual Studio

      In this presentation, I’ll give a quick tour of the NodeJS integration for Visual Studio.

Slides for Consuming and Creating Libraries in C++

I have uploaded my slides for my presentation on Creating and Consuming Libraries in C++. Not every word of what I discussed is in the slides, but there should be enough there for you to follow the discussion.

Utah C++ Programmers: Consuming and Creating Libraries

In this month’s Utah C++ Programmers meetup, I’ll present the basics on consuming and creating libraries for C++ programs. ConsultNet is now a sponsor of Utah C++ Programmers and will be providing us with food for the meeting. Thanks, ConsultNet!

Read the rest of this entry »

Visual Studio 2015 Update 2 RC Released

Microsoft has released a release candidate of Update 2 for Visual Studio 2015. Of interest to C++ developers are the completion of C++11, C++14 and current C++17 library features as well as numerous performance and bug fix improvements to the IDE and the compiler. There are some breaking changes for existing code bases that were not written in conformance with the ISO C++ standard, but instead relied on the old non-conforming behavior of the Microsoft compiler.

Refactoring Test Suite Results for Visual Studio 2015

Last Friday I updated the test results for my C++ refactoring test suite to include results from Visual Studio 2015 Update 1. Visual Studio 2015 is the first release of Visual Studio to support refactoring for native C++ projects without any additional add-ons. Prior to Update 1, Visual Studio requried a free add-on for Extract Function and Extract Method, but this has since been folded into Update 1 and made available to all Visual Studio users. Extract Function and Change Signature are disabled by default and can be enabled in Tools / Options / Text Editor / C/C++ / Refactoring.

Read the rest of this entry »

CppCast #17: Exercism.io and Refactoring

CppCast interviewed me for episode 17 of their C++ podcast last night. We had a great time talking about exercism.io and refactoring in C++. Check it out!

Refactoring Test Results for CLion 140-1221.2

I ran through a bunch of refactorings in the latest early access program (EAP) build of JetBrains CLion using my refactoring test suite, now hosted on github.


Refactoring % Passing Passed Failed
Add/Remove Block Delimiters 46.16% 6 7
Change Signature 100% 11 0
Compress To/Expand From Ternary Expression 69.24% 9 4
Create Method Stub 54.55% 12 10
Create Setter Method 66.67% 20 10
Extract Function 73.69% 14 5
Extract Method 5% 1 19
Extract Parameter 40% 2 3
Flatten Conditional 100% 1 0
Inline Macro 83.34% 5 1
Inline Recent Assignment 0% 0 2
Inline Result 0% 0 5
Inline Variable 22.23% 2 7
Introduce Constant 30.77% 4 9
Introduce Local 66.67% 4 2
Move Method 29.73% 11 26
Remove Unused Parameters 100% 3 0
Rename 77.09% 74 22
Simplify Boolean Expression 100% 13 0
Split Initialization From Declaration 81.82% 9 2
Split Multi-Variable Declaration 100% 19 0

The overall score card looks quite promising, particularly for an early access build that isn’t guaranteed to work at all. The general impression I got was that the refactoring support is better than other tools I have tried. It did much better with pointers to functions, pointers to class members, and references to class members than other refactoring tools. It did a good job of recognizing the appropriate scope for identifiers and properly performed well on rename operations, even when combined with using statements.

Read the rest of this entry »

An Interview with InfoQ about Exercism.io

InfoQ has just published an interview with myself and Katrina Owen, the creator of exercism.io. Check it out!

Adding Static Analysis to Your C++ GitHub Repository

Static analysis can be extremely useful for monitoring the quality of your code base. These tools analyze your source code and check for certain kinds of mistakes that can be detected purely based on how the code is written. In this post, I’ll show you how you can add two free static analysis tools to a free continuous integration build for your C++ github repository.

Read the rest of this entry »

DevExpress Discontinues C++ Refactoring Support

DevExpress announces that they will discontinue support for C++ refactoring in their CodeRush product.

Refactoring Test Results for VAX 10.8.2036.0 built 2014.05.22

I ran through three refactorings (Extract Function, Extract Method, Rename) in the latest version of Visual AssistX using my refactoring test suite and posted the results on the Whole Tomato support forums.


Refactoring % Passing Passed Failed
Extract Function 0% 0 18
Extract Method 45% 9 11
Rename 63.55% 61 35

Feel free to comment here on the test suite itself. I’ll probably move this to github to encourage more pull requests for improvements to the tests. I haven’t updated it for C++11 language features. Feel free to post in the Whole Tomato support forum thread for comments on Visual AssistX itself.

Read the rest of this entry »

C++ Now! 2014 Presentations Posted

Ray Fix is posting all the presentations of C++ Now! 2014

You can read my presentations here:

C++ Now! 2014 was a wonderful experience! I very much enjoyed talking with the attendees, both during the show and afterwards at restaurants and the bar. I hope to attend again next year.

Free Workshop: Test-Driven Development in C++, Wednesday, April 30, 2014

Have you heard about that new thing the kids are doing called test-driven development and wondered what it’s all about? Is it about testing? Is it about design? Is it good or is it bad?

Come join me for an evening workshop where I will show you what it’s all about and you’ll have a chance to try it out for yourself on a problem large enough to be interesting, but small enough that you can make progress on it during the workshop. The workshop will use the Boost.Test and Turtle libraries.

Thanks to Fusion-io for the meeting facilities, WiFi access, food (pizza from The Pie) and refreshments.

Seating is limited, so please RSVP to reserve your space.

Date Wednesday, April 30, 2014
Time 6 PM – 9 PM
Location Fusion-io (Google maps)
2855 E. Cottonwood Parkway
Suite 100
Salt Lake City, UT 84121

Read the rest of this entry »

Three Sessions Accepted for Spring 2014 Utah Code Camp!

Of the sessions I proposed to the Spring 2014 Utah Code Camp, they accepted “Walk Down GPU Lane” and “C++ User Group Bootup” talks. Later, one of the speakers cancelled and they needed to fill a slot, so I’m going to present a dry-run of my C++ Now! 2014 talk “Build your own C++ refactoring tool with C++ and clang”.

Read the rest of this entry »