Events

CppCon 2014 Volunteers Wanted -- by Boris Kolpackov

Especially if you're local to the Seattle area, this is a great way for students and others to be part of CppCon.

CppCon 2014 Volunteers Wanted

by Boris Kolpackov

Of course if you're a student you also have the option of the discounted Student registrations that let you attend the whole thing without the distraction of occasionally holding up signs and untangling A/V cords -- some Student registrations are still available. But there's also fun in being part of running things.

From the announcement:

If you would like to attend CppCon 2014, see great C++ content, and meet our speakers and attendees, but a week’s registration doesn’t fit your time or money budget, consider volunteering.

We are looking for volunteers to help run the conference. We need people to help assemble registration packets and badges, register attendees, assist speakers with Audio/Video, and in general be on hand to make things run smoothly. In exchange, we’ll see to it that you’ll spend at least half of your time in sessions. It would be great if you could join us for the whole week, but if you can only make it for one or two days, we can work with that. This is a particularly great opportunity for local students with an interest in C++. If you are interested or would like more information, please email volunteers@cppcon.org.

CppCon Program Highlights, 12 of N: Advanced Meta Techniques

The CppCon 2014 conference program has been posted for the upcoming September conference. We've received requests that the program continue to be posted in "bite-sized" posts, a few sessions at a time, to make the 100+ sessions easier to absorb, so here is another set of talks. This series of posts will conclude once the entire conference program has been posted in this way.

 

No C++ conference would be complete without coverage of advanced techniques that enable high performance, expressive power, or both at the same time. Here is a selection of some of the advanced topics that will be presented this year at CppCon.

In this post:

  • Practical Functional Programming in C++
  • Practical Type Erasure
  • Pragmatic Type Erasure: Solving Classic OOP Problems with an Elegant Design Pattern
  • Polymorphism with Unions
  • Modern Template Metaprogramming: A Compendium

 

Practical Functional Programming in C++

To the untrained eye, pure functional programming may appear to be out of place in our traditionally imperative C++ world. However, the functional paradigm has become increasing prominent in production C++ codes, especially when implementing asynchronous execution.

This talk is intended as a primer for attendees who are either unfamiliar with functional programming or have doubts its practical uses in modern C++. The following topics will be covered:

* Functions as First-Class Entities (function objects, lambdas, Callable, std::function) * Higher Orders (, composition/bind) * Functions with Clear Inputs/Outputs (pure functions - side effect free) * Monads and Parallelism (future/promise, async)

Examples from different sectors of industry/academia will be presented throughout.

No prior functional programming knowledge will be needed. While this talk will cover some theory, coverage of non-C++ programming languages will be minimal. The focus of this talk will be the application of theories from FP to C++, not FP itself.

Speaker: Bryce Adelstein-Lelbach. Bryce Adelstein-Lelbach is a researcher at the Center of Computation and Technology (CCT) at Louisiana State University. He works on the HPX runtime system and his research interests include parallel and distributed programming frameworks for scientific applications. He has been working on HPX for over a year now.

 

Practical Type Erasure

Type erasure looks like a neat concept, but what are its real life uses? This talk will briefly show the inner workings of type erasure, and demonstrate a real working implementation of a configuration system from public domain production code. Uses and pitfalls of type erasure will also be covered.

Speaker: Cheinan Marks, Spiral Genetics. As an engineer with a chemical engineering background, Cheinan is interested in practical code and wants to take the latest advances both in science and programming and use them in real life working code along with applying engineering principles to software development. Cheinan is a senior developer at Spiral Genetics, Inc. in Seattle.

 

Pragmatic Type Erasure: Solving Classic OOP Problems with an Elegant Design Pattern

There are numerous, serious OOP design problems that we have all encountered in production code. These include, among others: - object lifetime/ownership - how to make classes from different class hierarchies conform to a common interface - writing classes that can present multiple interfaces - separating interface and implementation - how to write virtual functions so that subclasses override them properly - the virtual inheritance "diamond of death"

Proper use of type erasure can mitigate, or outright eliminate, these and other problems, without sacrificing performance.

This talk will cover the OOP design problems above and more, and will cover hand-rolled and library-based type erasure approaches that solve those problems. Performance metrics will be provided for the different approaches, and source code will be available after the talk.

Speaker: Zach Laine, Senior Programmer, Intific. Zach Laine has been using C++ in industry for 11 years, focusing on data visualization, numeric computing, games, generic programming, and good library design. He finds the process of writing bio blurbs to be a little uncomfortable.

 

Polymorphism with Unions

Using tagged unions to create families of polymorphic types that are more flexible and more easily maintained than those formed with inheritance alone. We demonstrate the design pattern and implementation techniques of sum types with examples from a compiler development project. We also examine the technique's impact on project management and engineering and on algorithm design, including the role of type switches, value type semantics, and multiple dispatch polymorphism.

Speaker: Jason Lucas, Architect, Orly Atomics. Jason Lucas is an alum of the Microsoft Visual C++ team and has been writing extensively in C++ since the early 90s. He is the architect for Orly, an open source, large-scale, distributed, transactional, and consistent graph database (all in C++) which also includes a compiler for distributed programs.

 

Modern Template Metaprogramming: A Compendium

Template metaprogramming has become an important part of a C++ programmer's toolkit. This talk will demonstrate state-of-the-art metaprogramming techniques, applying each to obtain representative implementations of selected standard library facilities. Along the way, we will look at void_t, a recently-proposed, extremely simple new candidate whose use has been described by one expert as "highly advanced (and elegant), and surprising even to experienced template metaprogrammers."

Speaker: Walter E. Brown . With broad experience in industry, academia, consulting, and research, Dr. Walter E. Brown has been a C++ programmer for over thirty years, joining the C++ standards effort in 2000. Among numerous other contributions, he is responsible for introducing such now-standard C++ library features as cbegin/cend and common_type as well as headers and , and has significantly impacted such core language features as alias templates, contextual conversions, and variable templates. He conceived and served as project editor for the International Standard on Special Mathematical Functions in C++. When not playing with his grandchildren, Dr. Brown is an Emeritus participant in the C++ standards process, with several more core and library proposals under consideration. He was recently appointed an associate project editor for the C++ standard itself.

CppCon 2014 Call for Lightning Talks -- Boris Kolpackov

cppcon-025.PNGMuch of the CppCon content is outside session hours, including lightning talks. Details announced today on cppcon.org:

CppCon 2014 Call for Lightning Talks

by Boris Kolpackov

From the announcement:

On Tuesday, the evening program will include Lightning Talks -- 4 talks of 15 minutes and 4 talks of 5 minutes. Expect fast paced fun with talks that are funny or intriguing from speakers at all experience levels.

If you’ve never seen a lighting talk before, check out this example (it’s just 4 and a half minutes long and funnier if you know Ruby or JavaScript) or search you tube for “lightning talk” to see a variety of examples. They cover a single topic and they start with the good stuff and make a point. Anyone can do one, but be sure to practice because 5 minutes goes by incredibly fast and 15 minutes isn’t much easier. If there’s one technique you wish everyone knew, one little known fact that should be well known, one tool that makes your life easier every day, or a collection of little things that you can fit into 5 or 15 minutes, you can propose a lighting talk, and you should.

We’ll be selecting the 8 sessions on Monday, Day 1 of the conference, from submissions we receive before and during the conference. Just email open-content@cppcon.org and tell us what you want to talk about, what length you need and a little bit about yourself. Even if you don’t plan to submit, plan to attend, it’s sure to be fun!

CppCon Program Highlights, 11 of N: C++11/14 Design

The CppCon 2014 conference program has been posted for the upcoming September conference. We've received requests that the program continue to be posted in "bite-sized" posts, a few sessions at a time, to make the 100+ sessions easier to absorb, so here is another set of talks. This series of posts will conclude once the entire conference program has been posted in this way.

 

Now that we have Modern C++ in the form of C++11 and C++14, how does this change the guidance for authoring types and techniques for using them in popular patterns? In this set of talks, world-class speakers and trainers address these issues.

In this post:

  • The Canonical Class
  • The Implementation of Value Types
  • Accept No Visitors

 

The Canonical Class

It was a simpler time. A period in which every college student and learn-C++-in-a-weekend duffer could write a class with the assuredness that it would behave as desired when assigned and copied. There was a check list. Complete the checklist, add some domain specific behaviour, bake in the regression oven, and you were done.

Enter C++11 with its fancy new use of the delete keyword, additional applications of explicit, rvalue references, and some perfect forwarding. How are you to write a "simple" class? Should you include a swap? What does movable mean and are there expected semantics? When is the noexcept specifier used?

During this session we will explore the boilerplate of a C++11 class. The session will touch on rvalue references, move semantics, perfect forwarding, explicit, noexcept, initializer lists, and more as it applies to producing the desired semantics for our classes and structs.

Speaker: Michael Caisse, Ciere Consulting. Michael Caisse has been crafting code in C++ for nearly 25-years. He is the owner of Ciere Consulting which provides software consulting and contracting services, C++ training, and Project Recovery for failing multidisciplinary engineering projects. :: ciere.com

 

The Implementation of Value Types

Predefined value types are central to C++ efficiency and robustness. More importantly, C++ provides mechanisms that enable programmers to create high-quality value types, programmers are not limited to the small predefined value types. However, implementing a high-quality type requires attention to several problems, among them portability, representation, efficient copying, efficient parameters, aliasing, constant initialization, and constant expressions. We present the issues and several approaches to implementing high-quality value types.

Speaker: Lawrence Crowl. Dr. Lawrence Crowl has expertise in programming languages, compilers, and parallel programming. He has been mixing threads with C++ for twenty-five years and is a major contributor to C++11. His goal is to achieve both high quality and high performance programs.

 

Accept No Visitors

Visitor Design Pattern was an attempt to overcome a limitation of object-oriented languages -- inability to retroactively introduce new polymorphic functions. While it was quite efficient in providing extensibility of functions, it was never truly retroactive, easy to teach, use or maintain, and it achieved this at the cost of hindering extensibility of classes, introduction of control inversion and requiring tons of boilerplate code to be written. Visitor Design Pattern is a workaround, not a solution to the problem and in this talk I would like to discuss a more elegant yet as efficient solution in the form of a Match statement. We will look at several use-cases for the Visitor Design Pattern, their encoding using both approaches and ultimately their advantages and disadvantages.

Speaker: Yuriy Solodkyy. Yuriy Solodkyy received his PhD from Texas A&M University, while working under the supervision of Dr. Bjarne Stroustrup on the ways to simplify the analysis of C++ programs. He is currently trying to materialize some of those ideas while working in the Visual C++ team at Microsoft. His research interests include C++, generic programming, and abstract interpretation. More information about Yuriy can be found at his university page at https://parasol.tamu.edu/~yuriys/. Website: https://parasol.tamu.edu/~yuriys/

CppCon 2014 Open Content -- Boris Kolpackov

cppcon-032.PNGToday CppCon announced information about the evening sessions -- and, if you read closely, about early-daytime sessions.

This next bit is important: All CppCon Mon-Thu 8:30-10:00pm evening sessions and all Tue-Fri 8:00-8:45am sessions are free and open to everyone -- free to attend, and to propose and even lead a session whether or not you're registered for the daytime CppCon program. If you are reading this then you're interested in C++, so if you also live locally in the Seattle area then go fire up your calendar now block off all these evenings (and early mornings!) and come on by before and after work and join in the fun! You will learn a lot and enjoy a lot. And if you're attending CppCon but only there for a one- or two-day registration, that means you're still in town and should still plan to attend all these free events for every evening (and early morning) you're there -- if you don't, you're missing a great opportunity and a great part of your visit to CppCon.

From author and committee panels to lightning talks and hackathons and more, you won't want to miss the CppCon night life. This conference does not end at 5:30. Plan to be there again at 8:30pm every night Mon-Thu, and at 8:00am Tue-Fri. It's free as in air.

Here's the link:

CppCon 2014 Open Content

by Boris Kolpackov

And the announcement:

Each evening the conference activities will break for dinner from 5:45 to 8:30, giving you time to head out and enjoy a meal with fellow attendees. But after eating, don’t head back for a boring night in your hotel room -- come back to the venue for another 90 minutes of learning and networking!

Monday through Thursday from 8:30 pm to 10 pm is the evening program. Looser and less structured than the daytime program, it’s designed to get you engaged and give you opportunities that traditional sessions can’t offer. In our six rooms, one will hold a single “conference planned” session that spans the full 90 minutes, and the other five will hold open content, two 45-minute sessions per room. There will also be open content in all 6 rooms from 8:00am to 8:45 Tuesday through Friday.

The “conference planned” sessions are Meet the Authors Monday, Lightning Talks Tuesday, Grill the Committee Wednesday and Conference Planning Thursday. More details on each of these will be coming shortly.

Open content is just that, open! Attendees and speakers alike can propose sessions on anything that interests them. These might be a single facilitator leading a room through an exercise, activity or demo, a panel of 3-5 people taking questions from the room and answering them, a “hackathon” on a specific project, or an open conversation among the whole room. The projector is available (possibly to take collaborative notes, possibly to display content related to the exercise; typical slide presentations are not the best fit for open content sessions.)

Many of these “Birds of a Feather” talks will be proposed on site as the conference progresses. A speaker who gets a lot of post-talk questions may agree to host a Q&A session in the open content time. An attendee inspired by a session may host a session to explore a topic further or start on a group implementation of something. Some can be proposed in advance and with 64 slots to fill, our job will be easier if many of them are. To propose a session, simply email open-content@cppcon.org and tell us who you are and what you want a session about. If you have time constraints such as “after a specific session” or “not on the same day as a specific session” let us know in the email. (For example, someone who will be grilled at Grill The Committee Wednesday can’t do an open session Wednesday evening.)

These sessions will be open in another way too -- evening content does not require conference registration. That’s right, everyone who is in the area is welcome to come and join us for all the evening sessions, including to propose or lead a session. This is part of our goal to be an inclusive conference for the entire C++ community.

Attendees will be able to express their interest in these sessions in advance, enabling us to schedule them and to select the most popular if we have more submissions than slots. More details on that will follow soon. For now, please email your submissions as soon as you can so that our planning work can get underway. See you in Bellevue!

C++ User Group Meetings in August

Again, the overview about the upcoming user group meetings for the new month. As it is August, there are not as much meetings due to summer.

C++ User Group Meetings in August 2014

by Jens Weller

From the article:

6.8. C++ UG Austin - Pragmatic Type Erasure
13.8 C++ UG Bay area/San Francisco
14.8 C++ UG Dresden - Compile Time Sort"
14.8 C++ UG NRW/Aachen - Various talks
19.8 C++ UG Berlin - Experience with C++11 in ArangoDB
20.8 C++ UG NRW/Düsseldorf - Wartungtechniken
28.8 C++ UG Amsterdam - Event Driven Design in C++11

CppCon Program Highlights, 10 of N: Migrating Code to Modern C++

The CppCon 2014 conference program has been posted for the upcoming September conference. We've received requests that the program continue to be posted in "bite-sized" posts, a few sessions at a time, to make the 100+ sessions easier to absorb, so here is another set of talks. This series of posts will conclude once the entire conference program has been posted in this way.

 

There is lots -- lots -- of existing C++ code. How can you effectively bring existing C++ code forward to C++11/14? How can you upgrade your coding styles and conventions? The following CppCon 2014 talks tackle these issues and more.

In this post:

  • Adventures in Updating a Legacy Codebase
  • Elevate Your Code to Modern C++11 with Automated Tooling
  • An Overview of C++11/14

 

Adventures in Updating a Legacy Codebase

Still maintaining a legacy application? Do you have strdup()'s crying to be replaced with std::string? Do pre-standard headers such as iostream.h litter your code? Do boost libraries no longer compile with your favorite C++98 compiler? From GUIs to kernel drivers, this talk will look at some of the adventures taken while updating a codebase with more than 20 years of history to C++11.

Speaker: Billy Baker, Senior Staff Engineer, FlightSafety International. Billy Baker has developed deterministic real-time flight simulation software using C++ for FlightSafety International, Evans and Sutherland and Boeing since 1997. At C++ committee meetings, he can most likely be found in LWG. He received his B.S. and M.S in Applied Mathematics from the University of Tulsa and is currently working on a Ph.D. in Computer Science. If asked, he will tell stories from his research semester at NCSA when web browsers did not yet have forms support.

 

Elevate Your Code to Modern C++11 with Automated Tooling

This talk will motivate and demonstrate how to transform your existing C++ code into more modern style and better quality. A key to that is refactoring the code into better shape. While manual refactoring can be tedious and error prone the author demonstrates automated refactoring that was created by his students and assistants and himself over the last nine years on the basis of Eclipse CDT. The tooling works with all compilers, because it is independent of one.

For example, we will show how to eliminate unnecessary macros or replace them by type-safe C++11/14 alternative code automatically. Or, to replace pointers, plain arrays and manual memory management by references, smart pointers, std::string, std::array, or std::vector automatically. Also other transformations, such as introducing a template parameter to reduce a coupling to a single concrete type are demonstrated. All with the goal to modernize and hopefully simplify your C++ code. Even if you are not deeply interested in modernizing your code base, some helpful tooling, such as toggling function definitions into a single place, to change their signature, can be of great help. On the other hand, many of the proposed improvements can also be applied with your favorite code editor only more tediously.

Speaker: Peter Sommerlad, Professor, Director IFS, FHO HSR Rapperswil -- IFS Institute for Software. Prof. Peter Sommerlad is head of IFS Institute for Software at FHO HSR Rapperswil. Peter is co-author of the books POSA Vol.1 and Security Patterns. His goal is to make software simpler by Decremental Development: Refactoring software down to 10% its size with better architecture, testability and quality and functionality. Peter is a member of the C++ standardization committee, ACCU, ACM, SI and president of SWEN.Website: http://wiki.hsr.ch/PeterSommerladTwitter handle: @PeterSommerlad

 

An Overview of C++11/14

This accelerated introduction to C++11/C++14 surveys most of the key additions to the C++ language, including support for 1) increased code clarity (lambdas, uniform initialization, auto, new OOD control), 2) improved performance (rvalue references and move constructors), 3) multithreading (concurrency and atomic types).

The presentation is designed for those who truly need a quick overview of the new C++, so the focus is on breadth rather than depth. Whenever feasible, new language features are presented in a style showcasing how they improve over their "Old C++" counterparts.

Speaker: Leor Zolman, BD Software. Leor Zolman has been involved in system software/compiler development, system administration, application development, and education for 40 years, spanning the CP/M, UNIX, and Windows operating systems. Leor is the author of The BD Software C Compiler (“BDS C”, 1979), the first native-code C compiler targeted exclusively for personal computers. In the early 90’s, Leor was a member of the technical staff of R&D Publications, where he wrote columns for R&D’s magazines: The C/C++ Users Journal, Windows Developer’s Journal, and SysAdmin, and he also authored the first book ever published by R&D Books: Illustrated C. More recently, in addition to designing and delivering on-site training courses on C, C++, Java, Perl, and Unix, Leor wrote STLFilt: An STL Error Message Decryptor for C++, a Freeware tool for simplification of complex (i.e., unreadable) template-related C++ error diagnostics. When not engaged in learning or teaching C++, you may find Leor administering and participating in several financial discussions boards, riding his BMW R1200RT, playing tennis or showing people the Ring Nebula through his LX200GPS telescope at star parties around the North Shore Boston area.

CppCon Program Highlights, 9 of N: Safety

The CppCon 2014 conference program has been posted for the upcoming September conference. We've received requests that the program continue to be posted in "bite-sized" posts, a few sessions at a time, to make the 100+ sessions easier to absorb, so here is another set of talks. This series of posts will conclude once the entire conference program has been posted in this way.

 

Safety and C++ are complementary, and C++ is regularly used in safety-critical systems including with strong static analysis support across multiple popular compilers. From the latest jet fighter avionics systems to the most modern Clang sanitizers, CppCon has a number of talks in this area including the following four. As always, the talks are by Those Who Know and Those Who Do -- including in some of the world's most famous codebases.

In this post:

  • The Joint Strike Fighter Coding Standard: Using C++ on Mission and Safety Critical Platforms
  • Sanitize your C++ code
  • Exception-Safe Code
  • 0xBADC0DE

 

The Joint Strike Fighter Coding Standard: Using C++ on Mission and Safety Critical Platforms

The Joint Strike Fighter (JSF) is the first major DOD aircraft program to use C++. Much of this software is either safety critical or mission critical and so must be written in such a way as to be clear, readable, unambiguous, testable, and maintainable. We discuss the driving requirements behind the standard and its evolution. We give a quick overview of our standard and discuss how it differs from later standards such as MISRA C++. We discuss lessons learned over our nine year history of applying the standard to a large embedded software program. We also address ambiguities in rules and difficulties with automated checking of conformance with the standard.

Speaker: Bill Emshoff, Senior Staff Software Engineer, Lockheed Martin. Bill Emshoff has been programming in C++ for over 12 years. He is currently a Senior Staff Software Engineer working on the Joint Strike Fighter program at Lockheed Martin, where he has evolved to become an informal interpreter of the JSF coding standard and champion of static analysis as a means to catch and prevent coding errors prior to formal test.

 

Sanitize your C++ code

"Sanitizers" is a family of dynamic testing tools built into C++ compilers (Clang and GCC):•AddressSanitizer finds memory errors, such as use-after-free, buffer overflows, and leaks;

  • ThreadSanitizer finds data races, deadlocks, and other threading bugs;
  • MemorySanitizer finds uses of uninitialized memory;
  • UndefinedBehaviorSanitizer finds other kinds of undefined behavior, such as use of incorrect dynamic type, shift by illegal amount and many others.

You will learn how these tools work, how to use them on small programs and how we deploy them in large projects.

Speaker: Kostya Serebryany, Software Engineer, Google. Konstantin (Kostya) Serebryany is a Software Engineer at Google. His team develops and deploys dynamic testing tools, such as AddressSanitizer and ThreadSanitizer. Prior to joining Google in 2007, Konstantin spent 4 years at Elbrus/MCST working for Sun compiler lab and then 3 years at Intel Compiler Lab. Konstantin holds a PhD from mesi.ru and a Master from msu.ru.Twitter handle: @kayseesee

 

Exception-Safe Code

Are you 100% confident that your code is exception-safe?

Safe usage of exceptions is a non-trivial problem that the industry has struggled with for the better part of two decades. If you have fear, uncertainty, or doubt about exception safety or just want to see the best practices for using exceptions in C++ and/or C++11/14, this session is for you. We'll start with "What is the problem we are trying to solve?" and discuss alternatives, acknowledge the challenges associated with exception usage, and cover some well-meaning but misguided attempts at safety. I will then present a set of guidelines that are the basis for safe exception usage and solid implementation techniques, including how to transition from an exception-unsafe legacy code base.

When we are finished you will know how to produce code that is easier to write, easier to understand, faster, and 100% robust in the face of exceptions.

Speaker: Jon Kalb Jon has been programming in C++ for over twenty years. During the last two decades he has written C++ for Apple, Dow Chemical, Intuit, Lotus, Microsoft, Netscape, Sun, Yahoo! and some less well­‐known companies. He taught C++ in the graduate school at Golden Gate University for three years and is a founding moderator of the Boost‐User and Boost‐Interest mailing lists.

Jon is active in the Silicon Valley chapter of the ACCU and programs the C++ track at the Silicon Valley Code Camp.

 

0xBADC0DE

My motivation for this talk is my own experience as a freelancer and trainer. I have seen a lot of good and bad code in different places. As a freelancer I often had to deal with different, unknown and often large codebases. This talk tries not only to show examples of bad code, but also to analyze why it exists in the first place, and how to deal with it or fix it. I'll visit anti-patterns, but this talk is not about anti-patterns, as that would only spotlight one of the many problems.

Speaker: Jens Weller Jens is a longtime C++ expert and the organizer of the European C++ conference Meeting C++.

CppCon Program Highlights, 8 of N: C++ Tools

The CppCon 2014 conference program has been posted for the upcoming September conference. We've received requests that the program continue to be posted in "bite-sized" posts, a few sessions at a time, to make the 100+ sessions easier to absorb, so here is another set of talks. This series of posts will conclude once the entire conference program has been posted in this way.

 

Tool support is essential to modern software engineering techniques, including notably refactoring and the unit testing heavily popularized by TDD. Here are some of the CppCon talks related to such tooling. As always, the talks are by the people in the trenches, who are heavily using the tools or actively involved in developing them -- in some of the world's largest code bases and code repositories with O(10 billion) lines of preprocessed code.

In this post:

  • Large-Scale Refactoring @ Google
  • C++ Test-driven Development: Unit Testing, Code Assistance and Refactoring
  • Pragmatic Unit Testing in C++
  • A CTO's guide to Modern C++

 

Large-Scale Refactoring @ Google

Many organizations have significant investments in a large existing C++ codebase, and Google is no exception. Our code is intended to survive for decades, but continue to track new language standards as they emerge. To do so, we have developed tools and techniques which provide the ability to automatically refactor code to use new APIs as they become available.

In this talk, I'll discuss some of the reasons for doing migrations that impact hundreds of thousands of files, and how we do them at Google, using tools such as ClangMR. I'll give examples, such as our recent migration to the standardized std::unique_ptr and std::shared_ptr types and lessons we've learned from these experiences. Finally, I'll point out pitfalls others may face in doing similar work, and suggest ways that they can be avoided.

Speaker: Hyrum Wright, Software Engineer, Google. Hyrum Wright is a software engineer at Google, working on C++ library infrastructure. He is a member of the Apache Software Foundation, and a contributor to Apache Subversion. In a previous life, he was a grad student. He enjoys cycling. Twitter handle: @hyrumwright

 

C++ Test-driven Development: Unit Testing, Code Assistance and Refactoring

Unit Testing and TDD, if applied correctly, lead to high quality and simple code. If done by hand, both often require writing some boiler-plate code and can be slow and cumbersome. Especially refactoring without good tool support can be a burden. Java and C# developers are used to have good tool support for these tasks to be effective. Many C++ developers often aren't even aware of the need for the practices, because without tool support and training of the goals, they are hard to discover.

This talk introduces C++ Unit Testing, Test-driven Development, and Refactoring and demonstrates the tooling available for Eclipse CDT for free on www.cevelop.com that was inspired and implemented by the author and his team.

For example, when phrasing a unit test to use a to-be-defined class, the class is generated automatically from its name used as a type. Another tool feature is simplifying a function, by extracting a sub-function and placing a call in its place.

Speaker: Peter Sommerlad, Professor, Director IFS, FHO HSR Rapperswil - IFS Institute for Software. Prof. Peter Sommerlad is head of IFS Institute for Software at FHO HSR Rapperswil. Peter is co-author of the books POSA Vol.1 and Security Patterns. His goal is to make software simpler by Decremental Development: Refactoring software down to 10% its size with better architecture, testability and quality and functionality. Peter is a member of the C++ standardization committee, ACCU, ACM, SI and president of SWEN.Website: http://wiki.hsr.ch/PeterSommerladTwitter handle: @PeterSommerlad

 

Pragmatic Unit Testing in C++

Successful adoption of unit testing goes beyond picking a framework: The effectiveness of unit testing is dependent on run-time analysis, static analysis, and other tools to make up the "iron triangle" necessary to get profitable increases in feature velocity and MTBF in the field. We'll cover where to start in a legacy codebase get the most ROI on unit testing effort, the top 5 legacy design knots and refactoring steps to loosen those knots, and how to write tests that are easy to read *and* maintain. Intermediate knowledge of linkers and preprocessors are highly recommended.

A CTO's guide to Modern C++

It's a very exciting time for C++ programmers: multiple competitive, capable toolchains to choose from, a re-invigorated standard body, and great IDEs that even die-hard emacs/edlin users are flocking toward. On the flipside, there are practical aspects that are extremely frustrating: what vendor can I pay for support of my toolchain/debugger/IDE? how can I fund open source development to move the needle in areas I care about? what static analysis tools are available that actually work? These questions, and other operational aspects of maintaining a C++ engineering organization, are covered in detail so you can immediately start covering your bases without learning the hard way.

Speaker: Matt Hargett Matt Hargett is Chief Technology Officer at PacerPro, and lives in San Francisco with his husband of 14 years. His first programming was on a TI 99/4a with his mother, and his first reverse engineering was on an 8086 to make shareware games easier to finish. Matt co-authored Pragmatic Unit Testing in C#, and has spoken at conferences around the world on network security, reverse engineering, unit testing, and static analysis. His hobbies include world travel, playing video games, and writing/publishing indie pop songs under the moniker "the making of the making of".

CppCon Program Highlights, 8 of N: C++ Tools

The CppCon 2014 conference program has been posted for the upcoming September conference. We've received requests that the program continue to be posted in "bite-sized" posts, a few sessions at a time, to make the 100+ sessions easier to absorb, so here is another set of talks. This series of posts will conclude once the entire conference program has been posted in this way.

 

Tool support is essential to modern software engineering techniques, including notably refactoring and the unit testing heavily popularized by TDD. Here are some of the CppCon talks related to such tooling. As always, the talks are by the people in the trenches, who are heavily using the tools or actively involved in developing them -- in some of the world's largest code bases and code repositories with O(10 billion) lines of preprocessed code.

In this post:

  • Large-Scale Refactoring @ Google
  • C++ Test-driven Development: Unit Testing, Code Assistance and Refactoring
  • Pragmatic Unit Testing in C++
  • A CTO's guide to Modern C++

 

Large-Scale Refactoring @ Google

Many organizations have significant investments in a large existing C++ codebase, and Google is no exception. Our code is intended to survive for decades, but continue to track new language standards as they emerge. To do so, we have developed tools and techniques which provide the ability to automatically refactor code to use new APIs as they become available.

In this talk, I'll discuss some of the reasons for doing migrations that impact hundreds of thousands of files, and how we do them at Google, using tools such as ClangMR. I'll give examples, such as our recent migration to the standardized std::unique_ptr and std::shared_ptr types and lessons we've learned from these experiences. Finally, I'll point out pitfalls others may face in doing similar work, and suggest ways that they can be avoided.

Speaker: Hyrum Wright, Software Engineer, Google. Hyrum Wright is a software engineer at Google, working on C++ library infrastructure. He is a member of the Apache Software Foundation, and a contributor to Apache Subversion. In a previous life, he was a grad student. He enjoys cycling. Twitter handle: @hyrumwright

 

C++ Test-driven Development: Unit Testing, Code Assistance and Refactoring

Unit Testing and TDD, if applied correctly, lead to high quality and simple code. If done by hand, both often require writing some boiler-plate code and can be slow and cumbersome. Especially refactoring without good tool support can be a burden. Java and C# developers are used to have good tool support for these tasks to be effective. Many C++ developers often aren't even aware of the need for the practices, because without tool support and training of the goals, they are hard to discover.

This talk introduces C++ Unit Testing, Test-driven Development, and Refactoring and demonstrates the tooling available for Eclipse CDT for free on www.cevelop.com that was inspired and implemented by the author and his team.

For example, when phrasing a unit test to use a to-be-defined class, the class is generated automatically from its name used as a type. Another tool feature is simplifying a function, by extracting a sub-function and placing a call in its place.

Speaker: Peter Sommerlad, Professor, Director IFS, FHO HSR Rapperswil - IFS Institute for Software. Prof. Peter Sommerlad is head of IFS Institute for Software at FHO HSR Rapperswil. Peter is co-author of the books POSA Vol.1 and Security Patterns. His goal is to make software simpler by Decremental Development: Refactoring software down to 10% its size with better architecture, testability and quality and functionality. Peter is a member of the C++ standardization committee, ACCU, ACM, SI and president of SWEN.Website: http://wiki.hsr.ch/PeterSommerladTwitter handle: @PeterSommerlad

 

Pragmatic Unit Testing in C++

Successful adoption of unit testing goes beyond picking a framework: The effectiveness of unit testing is dependent on run-time analysis, static analysis, and other tools to make up the "iron triangle" necessary to get profitable increases in feature velocity and MTBF in the field. We'll cover where to start in a legacy codebase get the most ROI on unit testing effort, the top 5 legacy design knots and refactoring steps to loosen those knots, and how to write tests that are easy to read *and* maintain. Intermediate knowledge of linkers and preprocessors are highly recommended.

A CTO's guide to Modern C++

It's a very exciting time for C++ programmers: multiple competitive, capable toolchains to choose from, a re-invigorated standard body, and great IDEs that even die-hard emacs/edlin users are flocking toward. On the flipside, there are practical aspects that are extremely frustrating: what vendor can I pay for support of my toolchain/debugger/IDE? how can I fund open source development to move the needle in areas I care about? what static analysis tools are available that actually work? These questions, and other operational aspects of maintaining a C++ engineering organization, are covered in detail so you can immediately start covering your bases without learning the hard way.

Speaker: Matt Hargett Matt Hargett is Chief Technology Officer at PacerPro, and lives in San Francisco with his husband of 14 years. His first programming was on a TI 99/4a with his mother, and his first reverse engineering was on an 8086 to make shareware games easier to finish. Matt co-authored Pragmatic Unit Testing in C#, and has spoken at conferences around the world on network security, reverse engineering, unit testing, and static analysis. His hobbies include world travel, playing video games, and writing/publishing indie pop songs under the moniker "the making of the making of".