Busy month…

It’s been quite a month for me. I’ll start with the ACCU conference in Bristol, April 21st to 25th.

The ACCU is the Association of C and C++ Users, an international body with largely European membership dedicated to professionalism in programming as well as the discussion of C++. Each year the conference collects some of the best names in the field for a five day exposition of what’s new and useful in the field. I went for the first time last year and found it a truly valuable experience. This year I decided to present: I took my colleague Tom Miles (@teknogrebo) with me and we discussed how we ported Total War: Rome 2 to OS X on the Mac. We spent quite a lot of time polishing this beast for a 90 minute slot but we ran out of time during delivery: we still had another 20 minutes of material when the session expired. View it here.

I didn’t attend the first day: this is set aside for tutorials and I didn’t see anything I could justify leaving my work for. In the remaining four days my notes list four keynotes and 11 talks. Here are my top five.

Marshall Clow told us all about hardening your code and introduced a series of sanitisers for Clang which I would like to wind in to the TW continuous integration process. In summary, he repeated the familiar mantra of version control, testing, compiler warnings, static and dynamic analysis and fuzzing. He also mentioned The Game Outcomes Project, which is well worth a read and you can find on Gamasutra. Marshall has posted slides for his talk here.

Olve Maudal didn’t do a C++ pub quiz this year (awwww…) (one day I’ll tell you how I made an utter buffoon of myself with Howard Hinnant, whom I didn’t recognise, on my team) but he did give an excellent talk on the History and Spirit of C and C++, which was a fine piece of industrial archaeology. His slides are here (and an alt is here).

David Sackstein gave a talk on coroutines. This is a hot topic right now, with several proposals making their stately and sedate way through the standardisation process. C# and Python have had this sort of thing for a while now, and it’s about time this paradigm was formally introduced to C++. David crammed a massive amount of content into 90 minutes and I recommend grabbing his powerpoint slides here. I tweeted about the richness of the talk at the time.

Chandler Carruth gave a talk on efficiency and performance through data structures and algorithms, carefully describing the difference between efficiency and performance and looking at power consumption and computation per Watt. The issue of discontiguous data structures being the root of all evil was covered (it’s the cache that kills it). We’ve known this in game dev for ever but it’s good to get it out beyond our little coding ghetto. No slides I’m afraid, but there is a version of this talk available on YouTube.

Dietmahr Kuehl addressed asynchronous operations, providing an interesting contrast to David Sackstein’s talk. He went into some detail about the multiple proposals on the table, N4397, N4398N4402 and N4453; described continuation functions, callbacks, completion tokens, all manner of coroutines; and left me feeling that this is a massive area of progress waiting to be made. Slides here.

Honourable mentions to Kevlin Henney’s many ways to write FizzBuzz, and Jonathan Wakely for an absorbing talk on ABIs.

See you next year!

Three days with Scott Meyers

Part of my role at CA is to develop the programmers on the Total War team.  I was rather delighted to be able to invite Scott Meyers, author of the Effective C++ series, to come and talk to the team at the beginning of December 2014.  This was such a great opportunity that I offered the training to programmers in the CA Console team, makers of Alien:Isolation, and Sports Interactive, our SEGA sister studio in London, makers of Football Manager.

You may have seen talks by Scott from various conference feeds.  He really is an excellent speaker and educator, having spent a long time perfecting his craft.  However, owning him for three days and having him deliver material from his new book, Effective Modern C++, was pretty special.  Since the first print run sold out immediately, he was unable to give us copies of his book, but we got to touch his personal copy.

10846003_10152522611607043_1502735018452724505_n

C++ has undergone some extraordinary changes since the last standard was ratified.  Type deduction is now a rather more complicated affair now that we have auto, decltype, lambdas and rvalue references.  Indeed, the three days was kicked off with an entire morning on type deduction, which was possibly the only time he could have sensibly delivered that part of his syllabus: it was the heftiest of topics to open the training, but so much of modern C++ relies on this, and understanding that is very important.

Scott covered all the headline features of modern C++ and stopped to answer all questions that arose, however simple or advanced: his stride didn’t break and sometimes he was able to postpone answers to a point further on in a topic.  It was extremely valuable for our organisation as a whole.  Of course, now I have to go and review the coding standards to accommodate all this: we have now moved on to Visual Studio 2013 as our primary compiler, and, for example, the efficiency of std::shared_ptr requires scrutiny.  I’ll keep you posted about our observations over the coming months.