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 »

UtahJS: Rendering the Utah Teapot with <div>

Tonight I’ll be making a short presentation during the UtahJS Meetup on how you can render the Utah teapot in HTML and CSS using only <div> elements. Come on down! Dinner is provided free by O. C. Tanner.

GDI PseudoCode and Coffee 10/26

The Salt Lake City chapter of Girl Develop It held a roundtable discussion on Sunday, October 26th. The topic was Terminology in Technology and we had a great discussion covering many topics, including:

  • What is the difference between jargon and technical vocabulary?
  • What does it mean to refer to the problem domain?
  • What is an API?
  • What’s the difference between a text editor and an IDE?
  • What’s your favorite text editor?
  • What’s your favorite IDE?
  • What is an endpoint?
  • What’s the difference between an endpoint and a route?
  • What is a compiler?

During the discussion, I mentioned a number of resources that I thought I would discuss and link here.

Read the rest of this entry »

The Keyboard Shall Set You Free

Jonathan Turner has released Keyboard Sith, a tool that disables your mouse and forces you to use the keyboard. Why would you want to do this? When I have taught courses on test-driven development and refactoring, I have noticed that the programmers that avoided the mouse and code completion facilities from their IDE (e.g. IntelliSense) always finished the exercise first. These programmers simply learned the keyboard shortcuts of their IDE to efficiently navigate around and simply learned to type their code faster than any browsing tool could complete it.

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 »

Two Sessions Accepted for C++ Now! 2014 (May 12-17, 2014)

I’m pleased to announce that two of my proposed sessions for C++ Now! 2014 have been accepted! I proposed three sessions to the conference: create a refactoring C++ tool in C++ with clang, test-driven development with Boost.Test and Turtle Mock, and automated acceptance testing with FitNesse. I would have been pleased if just one session were accepted and I’m quite happy that two sessions were accepted, even if it does mean a bunch of work for me. Both sessions will be workshop-oriented, meaning we’ll be looking at code and very few, if any, slides. Death to powerpoint! Long live the code!

Read the rest of this entry »

Spring 2014 Utah Code Camp: March 15th, 2014

The Spring 2014 Utah Code Camp is coming up and I’ve got some proposed sessions. Utah Code Camps are by the developer community and for the developer community. Utah Code Camp is always free! Spring 2014 Utah Code Camp will be held on March 15th, 2014 at the University of Utah Spencer Fox Eccles Business Building.

Read the rest of this entry »

Refactoring: Sort Members by Visibility

You have a C++ class that shows readers its implementation details before it shows readers its public interface.

Reorder the class members in order of decreasing visibility, preserving the relative order of the declarations within each visibility category.

Read the rest of this entry »

An HTTP Server in TECO, Part 2

Last summer for the Summer 2012 Retrochallenge Competition I made some progress on an HTTP server in TECO. While I didn’t quite finish, I did make considerable progress. For the Summer 2013 Retrochallenge Competition, I’ll attempt to finish off this HTTP server in TECO and support .TEC files as CGI scripts.

Visual Studio Bugs

Visual Studo 2012 had a nice add-in called the Microsoft Visual Studio 2012 Feedback Tool that lets you quickly report a bug to the connect website. I’ve found that making it easy to report bugs in VS has increased the likelihood that I actually will report bugs. With Connect, any user can add a “me too!” vote to someone else’s public bugs so that the product team has a better idea of the people affected by it. You can also add your own comments to someone else’s public bugs. This post will be updated over time with bugs I’ve filed so that you can add your own “me too!” vote or comment to the bug.

Visual Studio 2013 included a similar bug reporting tool. This list now includes bugs reported in Visual Studio 2013.

Unfortunately Visual Studio 2015 replaced the nice bug reporting tool with a “send a frown” feature. This files a bug report into a black hole where you can never see anything about that bug report again. This forces us to go back to the connect site and log bugs by hand. Why can’t they leave good features alone? I will continue to add bugs to this list filed against VS 2015, but man they are sure making it hard for me to provide feedback in a way that’s useful for me.

Read the rest of this entry »

Engineering Notebooks: High Level Thoughts and TDD To Do Lists

Ever since I was in college as an electrical engineering student, I’ve been advised to have an “engineering notebook”. The general recommendation was to have a single place where you wrote down all the important details of your work. In the case of circuit design, dated notes could be particularly important for establishing prior art in patenting intellectual property. However, since my career was headed in the software direction and software patents were not yet common, I didn’t give it much thought. As my career progressed, I found I had two kinds of information that I needed to write down as a software engineer: notes from meetings and design discussions and low-level task details related to the code I’m working on day-to-day. In this post, I’ll discuss a simple system that I’ve adopted for engineering notebooks that makes sense for software engineers practicing test-driven development (TDD).

Read the rest of this entry »

An HTTP Server in TECO

The Summer 2012 Retrochallenge Competition is on for the month of July, 2012. I’m going to implement a small web server in TECO and update this page with progress on my implementation.

Read the rest of this entry »

Game Debugging in Visual Studio 11

If you haven’t watched any of the //build presentations yet, there was one that got me quite excited where they showed off some of the new graphics debugging support in Visual Studio 11. Game Debugging in Visual Studio 11 is a recent Visual Studio team blog entry that goes into more detail on this. Now you can really drill down into the details of the graphics pipeline based on what you’re seeing in the rendered window and some mouse clicks. This is going to be awesome!

Fall 2011 Utah Code Camp Schedule Posted

They’ve posted the schedule for the Fall 2011 Utah Code Camp. I’ve got two sessions: one on push notifications with Windows Phone 7 and a roundtable discussion to get a C++ user’s group going in Utah. C++ for the win!

Utah Fall Code Camp 2011

The Utah Fall Code Camp 2011 is coming up and I’ve proposed a number of talks and volunteered to present some that didn’t yet have speakers. If any of these sessions sound interesting to you, please visit the Utah Code Camp web site and vote for them.

  • Open Source Development Track: Recursive Descent Parsers with Boost.Spirit
  • Microsoft Development Track: Powering Managed Applications with the GPU and SlimDX
  • Architecture Track: High Performance C++, or How to Make Friends With the Cache

The following talks already existed but had no speaker yet, so I volunteered to give them:

  • Mobile Development Track: Push Notifications and Tiles for Windows Phone
  • Mobile Development Track: Game Development for the Windows Phone 7.5

Read the rest of this entry »

“Domain Specific Languages” by Martin Fowler

In 2011, Martin Fowler wrote “Domain Specific Languages” published by Addison-Wesley. Examples of domain specific languages you might have encountered before are regular expression specifications, Makefiles, Direct3D’s high level shader language (HLSL), OpenGL’s GL shader language (GLSL), the Wavefront object file format (.obj) or input specifications to the compiler tools lex (.l) and yacc (.y). Fowler defines a domain specific language as “a computer programming language of limited expressiveness focused on a particular domain.” Domain specific languages (DSLs) have been around for a long time, but to date there hasn’t been any general treatment of the techniques and characteristics of DSLs in general, as opposed to the traits of a particular DSL. Fowler’s book is a good first entry.

Read the rest of this entry »