Loading…
CppCon 2014 has ended
Sunday, September 7
 

4:00pm PDT

Registration
Welcome! Let's get the paperwork out of the way.

Sunday September 7, 2014 4:00pm - 6:00pm PDT
Meydenbauer Center 11100 NE 6th St., Bellevue, WA 98004

8:00pm PDT

Reception
Get acquainted with new friends and reacquainted with old friends.

Sunday September 7, 2014 8:00pm - 10:00pm PDT
Rainier Terrace Meydenbauer Center
 
Monday, September 8
 

8:00am PDT

Registration
Welcome! Let's get the paperwork out of the way.

Monday September 8, 2014 8:00am - 8:45am PDT
Fermat

8:45am PDT

Conference Welcome
Welcome to CppCon! Orientation to the conference facilities and events.

Speakers
avatar for Jon Kalb

Jon Kalb

Conference Chair, Jon Kalb, Consulting
Jon Kalb is using his decades of software engineering experience and knowledge about C++ to make other people better software engineers. He trains experienced software engineers to be better programmers. He presents at and helps run technical conferences and local user groups.He is... Read More →


Monday September 8, 2014 8:45am - 9:15am PDT
Fermat

9:15am PDT

Type Deduction and Why You Care
C++98 had template type deduction, and it worked so intuitively, there was little need to understand what took place under the covers. C++11 extends type deduction to include universal references, applies it to auto variables and lambda expressions, then throws in a special auto-only deduction rule. C++14 pushes the boundary further, adding two forms of function return type deduction (auto and decltype(auto)) for arbitrary functions and offering auto parameters for lambdas. The result is that what could be treated as a black box in C++98 has become a topic that practicing C++ developers really need to understand. This talk will give you the information you need to do that.

Speakers
avatar for Scott Meyers

Scott Meyers

Retired C++ Consultant, Self
Scott Meyers devoted over 25 years to the advancement of C++ before retiring from active involvement in it at the end of 2015. He's best known for his books, Effective C++, Effective Modern C++, More Effective C++, and Effective STL.


Monday September 8, 2014 9:15am - 10:45am PDT
Fermat

11:00am PDT

Emscripten and asm.js: C++'s role in the modern web
All major web browsers are written in C++, but C++ is starting to fill an important role in web *content* as well: while JavaScript is the only standards-compliant language available to websites, compiling other languages to JavaScript has been shown to be practical and effective. This talk will explain how Emscripten, an LLVM-based open source compiler from C++ to JavaScript, lets you run a C++ codebase on the web at near-native speed. To achieve that level of performance, Emscripten emits asm.js, a strict subset of JavaScript that is easy for JavaScript engines to optimize, and was designed specifically as a compilation target for languages like C and C++. We'll also discuss some of the more challenging aspects of compiling C++ to JavaScript, stemming from the C++ language itself, libraries and toolchains, and some thoughts on possible solutions.

Speakers
AZ

Alon Zakai

Researcher, Mozilla
Alon is a researcher at Mozilla, where he works on Emscripten, an LLVM-based compiler from C++ to JavaScript, as well as other projects related to porting existing content to the web.Twitter handle: @kripken... Read More →


Monday September 8, 2014 11:00am - 12:00pm PDT
Newton

11:00am PDT

How you can make a Boost C++ Library
The purpose of this presentation is to encourage C++ programmers to create and submit new quality C++ libraries to Boost.

Premises: a) C++ needs more quality libraries b) There are many C++ programmers who would like to contribute libraries but they are discouraged by the amount of effort and associated heartache.

Methodology: Walk through the website www.blincubator.com from the point of view of a C++ library contributor. It will address issues related to requirements, suggested tools, user feedback, library promotion. It will assume that the attendee is an intermediate to advanced C++ programmer with an idea for a library.

Speakers
avatar for Robert Ramey

Robert Ramey

Software Developer, RRSD
Robert Ramey is a freelance Software Developer living in Santa Barbara, California. (See www.rrsd.com.)  His long and varied career spans various aspects of software development including business data processing, product, embedded systems, custom software, and C++ library development. Lately, he has been mostly interested in C++ library design and implementation related to Boost... Read More →


Monday September 8, 2014 11:00am - 12:00pm PDT
Leibnitz

11:00am PDT

Modernizing Legacy C++ Code
C++ is a programming language with a long, storied history spanning over three decades--four if one includes its C ancestry. The C++ language has undergone many changes during that time, compiler technology has advanced substantially, and computers today are very different from the computers of decades past. But despite all of these advances, there's an awful lot of C++ code in use today that looks like it was written in the 1980s. In some cases, the code was written in the 1980s and it's still in use; in other cases, it's recently-written code that just doesn't use modern style.

In this talk, we'll discuss some of the problems with legacy code, and review some practical techniques for applying principles of modern C++ to gradually improve the quality of legacy code and improve maintainability and debuggability. We'll show how some very small changes to code can yield huge benefits.

Speakers
avatar for Kate Gregory

Kate Gregory

Partner, Gregory Consulting
Kate Gregory is an author, sought-after conference speaker, trainer, Microsoft Most Valuable Professional (MVP), and partner at Gregory Consulting. Kate has been using C++ since before Microsoft had a C++ compiler. She is an early adopter of many software technologies and tools, and... Read More →
avatar for James McNellis

James McNellis

Principal Software Engineer, Microsoft Corporation
James McNellis is a Principal Software Engineer at Microsoft where he works on the Time Travel Debugging (TTD) reverse debugging toolkit. Prior to joining the Windows Debuggers team in 2016, he worked on the Visual C++ team and was responsible for the Microsoft C Runtime (CRT) and... Read More →


Monday September 8, 2014 11:00am - 12:00pm PDT
Descartes

11:00am PDT

Overview of Parallel Programming in C++
Parallel programming was once considered to be the exclusive realm of weather forecasters and particle physicists working on multi-million dollar super computers while the rest us relied on chip manufacturers to crank out faster CPUs every year. That era has come to an end. Clock speedups have been largely replaced by having more CPUs on a chip. Your typical smart phone now has 2 to 4 cores and your typical laptop or tablet has 4 to 8 cores. Servers have dozens of cores and supercomputers have thousands of cores.

If you want to speed up a computation on modern hardware, you need to take advantage of the multiple cores available. This talk is provides an overview of the parallelism landscape. We'll explore the what, why, and how of parallel programming, discuss the distinction between parallelism and concurrency and how they overlap, and learn about the problems that one runs into. We'll conclude with an overview of existing parallelism technologies in C++ and the future directions being considered for parallel programming in standard C++.

Speakers
avatar for Pablo Halpern

Pablo Halpern

Software Engineer, Intel Corp.
Pablo Halpern has been programming in C++ since 1989 and has been a member of the C++ Standards Committee since 2007. He is currently an enginneer at Intel Corp., where he works on high-performance computing. As the former chairman of the Parallel Programming Models Working Group... Read More →


Monday September 8, 2014 11:00am - 12:00pm PDT
Pascal

11:00am PDT

What the committee did next!
Now that C++14 is done, what is the standard committee working on next?

After inking 8 years to produce the C++11 standard (arguably 13) there was a feeling we should be able to produce new work faster, more incrementally. With the renewed interest in C++, we have more participation on the committee, and have looked to harness that enthusiasm in new ways. In the last 3 years we have spun up at least a dozen new study groups, and have 8 or mode Technical Specifications in various stages of development that we hope to ship over the next 12-24 months. So what are all these new groups and specifications about? Come to this session and get a vision of where C++ is headed in the immediate and short-term future.

Speakers
avatar for Alisdair Meredith

Alisdair Meredith

Senior Developer, BloombergLP
Alisdair Meredith is a software developer at BloombergLP in New York, and the C++ Standard Committee Library Working Group chair.He has been an active member of the C++ committee for just over a decade, and by a lucky co-incidence his first meeting was the kick-off meeting for the... Read More →


Monday September 8, 2014 11:00am - 12:00pm PDT
Euler

2:00pm PDT

An Overview of C++11/14, Part I

This accelerated introduction to C++11/14 surveys most of the key additions to the C++ language, including support for increased code clarity (lambdas, uniform initialization, auto, new OOD control) and improved performance (rvalue references, move semantics and perfect forwarding.)

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.


Speakers
avatar for Leor Zolman

Leor Zolman

Head Hacker, 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... Read More →


Monday September 8, 2014 2:00pm - 3:00pm PDT
Leibnitz

2:00pm PDT

Common-sense acceleration of your MLOC build
In this talk, I lay out detailed examples of steps I took to dramatically improve build times, and ultimately developer productivity, in very large, legacy C/C++ codebases. Is it worth the extra money for SSD or a 15K RPM SAS? How do I make ccache and distcc work together? How do I profile-optimize my toolchain? What network topology issues come into play? These questions, and more, are addressed in detail so you can immediately apply what you've learned to shorten the timeline between when you make a change to your code and when you see it in action.

Speakers
MH

Matt Hargett

Matt's 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... Read More →


Monday September 8, 2014 2:00pm - 3:00pm PDT
Gauss

2:00pm PDT

Defensive Programming Done Right, Part I
In our component-based development methodology, each developer is responsible for ensuring that the software he or she creates is easy to understand and use, and not especially easy to misuse. One common form of misuse is to invoke a library function or method under circumstances where not all of its preconditions are satisfied, leading to undefined behavior. Contracts having undefined behavior are not necessarily undesirable, and (for many engineering reasons) are often optimal. Most would agree that a well-implemented library should do something other than silently continue when a pre-condition violation is detected, although these same folks might not agree on what specific action should be taken. Unfortunately, validating preconditions implies writing additional code that will execute at runtime. More code runs slower, and some would fairly argue that they should not be forced to pay for redundant runtime checks in the library software they use. Whether and to what extent library functions should validate their preconditions, and what should happen if a precondition violation is detected are questions that are best answered on an application by application basis - i.e., by the owner of main. "Defensive Programming Done Right" makes it all possible.

In this talk, we begin by reviewing the basic concepts of Design-By-Contract (DbC), and what we mean by the term "Defensive Programming" (DP). We then explore our overall approach to institutionalizing defensive programming in robust reusable library software such that each application can conveniently specify both the runtime budget (e.g., none, some, lots) for defensive checking, and also the specific action to be taken (e.g., abort, throw, spin) should a precondition violation occur. Along the way, we touch on how modern compilers and linkers work, binary compatibility, and the consequences of possibly violating the one-definition rule in mixed-mode builds. We conclude the talk by describing and then demonstrating our "negative testing" strategy (and supporting test apparatus) for readily verifying, in our component-level test drivers, that our defensive checks detect and report out-of-contract client use as intended. Actual source for the supporting utility components will be presented throughout the talk and made available afterwards.

Speakers
avatar for John Lakos

John Lakos

Software Engineer, Bloomberg
John Lakos, author of Large-Scale C++ Software Design [Addison-Wesley, 1996], serves at Bloomberg LP in New York City as a senior architect and mentor for C++ software development worldwide.  He is also an active voting member of the C++ Standards Committee’s Evolution Working... Read More →


Monday September 8, 2014 2:00pm - 3:00pm PDT
Descartes

2:00pm PDT

Generic Programming with Concepts Lite, Part I
In this talk, I will give an overview of the Concepts Lite language extension for C++ and present examples of its use in design and implementation of real-world generic libraries. Concepts Lite provides the ability for programmers to directly state constraints on template arguments as part of the template declaration. These constraints are predicates which determine whether or not a template argument can be used with that template. Constraints are checked by the compiler at the point of use, meaning that that effectively constrained generic libraries will not suffer from the usual problems of insane diagnostics. Libraries written using concepts will be far more readable and maintainable than the status quo. This talk will focus on generic programming, proposed language features, and their use in building real-world libraries.

Concepts Lite is a forthcoming ISO Technical Specification (TS) aimed at publication alongside C++14. Concepts Lite is implemented in a branch of GCC, which will be made available to the audience for experiments and experience.

Speakers
avatar for Andrew Sutton

Andrew Sutton

Owner, Lock3 Software, LLC
Andrew Sutton is an owner of Lock3 Software, LLC, a software research and development company in Kent, Ohio. His spends his days working on C++ language extensions in Clang and GCC and working on various WG21 language proposals.His past work included the design, specification, and... Read More →


Monday September 8, 2014 2:00pm - 3:00pm PDT
Newton

2:00pm PDT

How Facebook's HHVM Uses Modern C++ for Fun and Profit (Literally)
HHVM is a just-in-time compiler for PHP used by Facebook to serve billions of requests each day. This talk will give a quick overview of HHVM's history and architecture, followed by a deep dive into what made C++ the language of choice for writing HHVM.

C++ hits a sweet spot between performance and control on one end, and safety, maintainability, and convenience on the other.

The topics we’ll cover will include:
  • how to call into generated machine code from C++;
  • taking advantage of C++'s power to control "unsafe" details with memory including how memory is allocated, field size and layout, unions, reinterpret_casts, bit-stealing;
  • integrating generated machine code with C++ exception handling and C++ profiling tools;
  • leveraging templates and using the X Macro technique to improve performance and maintainability;
  • and taking advantage of new C++11 features like unrestricted unions and move constructors.
Finally, we'll go over some obstacles we encountered such as generating machine code that calls C++ virtual methods, and how C++'s superb flexibility allowed us to work around these obstacles.

Speakers
DP

Drew Paroski

Software Engineer, Facebook
Drew Paroski is a Software Engineer at Facebook and a co-creator of the HipHop Virtual Machine (HHVM) and the Hack programming language. Among other things, Drew is the primary designer and implementor of HHVM's virtual instruction set architecture and Hack's Collections framework... Read More →


Monday September 8, 2014 2:00pm - 3:00pm PDT
Euler

2:00pm PDT

Lock-Free Programming (or, Juggling Razor Blades), Part I
Example-driven talk on how to design and write lock-free algorithms and data structures using C++ atomic -- something that can look deceptively simple, but contains very deep topics. (Important note: This is not the same as my "atomic Weapons" talk; that talk was about the "what they are and why" of the C++ memory model and atomics, and did not cover how to actually use atomics to implement highly concurrent algorithms and data structures.)

Speakers
avatar for Herb Sutter

Herb Sutter

Software architect, Microsoft
Herb is an author, designer of several Standard C++ features, and chair of the ISO C++ committee and the Standard C++ Foundation. His current interest is simplifying C++.


Monday September 8, 2014 2:00pm - 3:00pm PDT
Pascal

3:15pm PDT

cppreference.com: documenting C++ one edit at a time
How do you convert hundreds of pages of C++ standardese into a resource that is accessible to software engineers around the world? This talk will describe the process of building a community-run website that documents all of the nooks and dark corners of the C++ programming language. I'll look back at the history of how C++ was defined, cover the current state of documentation, examine the pros and cons of running a fairly high-profile publicly-editable wiki, and try to guess at what the future holds.

Speakers
NK

Nate Kohl

Software Engineer, Google
Nate Kohl is an intergalactic computerist who enjoys herding cats.


Monday September 8, 2014 3:15pm - 3:45pm PDT
Gauss

3:15pm PDT

An Overview of C++11/14, Part II

This accelerated introduction to C++11/14 surveys most of the key additions to the C++ language, including support for increased code clarity (lambdas, uniform initialization, auto, new OOD control) and improved performance (rvalue references, move semantics and perfect forwarding.)

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.


Speakers
avatar for Leor Zolman

Leor Zolman

Head Hacker, 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... Read More →


Monday September 8, 2014 3:15pm - 4:15pm PDT
Leibnitz

3:15pm PDT

Defensive Programming Done Right, Part II
In our component-based development methodology, each developer is responsible for ensuring that the software he or she creates is easy to understand and use, and not especially easy to misuse. One common form of misuse is to invoke a library function or method under circumstances where not all of its preconditions are satisfied, leading to undefined behavior. Contracts having undefined behavior are not necessarily undesirable, and (for many engineering reasons) are often optimal. Most would agree that a well-implemented library should do something other than silently continue when a pre-condition violation is detected, although these same folks might not agree on what specific action should be taken. Unfortunately, validating preconditions implies writing additional code that will execute at runtime. More code runs slower, and some would fairly argue that they should not be forced to pay for redundant runtime checks in the library software they use. Whether and to what extent library functions should validate their preconditions, and what should happen if a precondition violation is detected are questions that are best answered on an application by application basis - i.e., by the owner of main. "Defensive Programming Done Right" makes it all possible.

In this talk, we begin by reviewing the basic concepts of Design-By-Contract (DbC), and what we mean by the term "Defensive Programming" (DP). We then explore our overall approach to institutionalizing defensive programming in robust reusable library software such that each application can conveniently specify both the runtime budget (e.g., none, some, lots) for defensive checking, and also the specific action to be taken (e.g., abort, throw, spin) should a precondition violation occur. Along the way, we touch on how modern compilers and linkers work, binary compatibility, and the consequences of possibly violating the one-definition rule in mixed-mode builds. We conclude the talk by describing and then demonstrating our "negative testing" strategy (and supporting test apparatus) for readily verifying, in our component-level test drivers, that our defensive checks detect and report out-of-contract client use as intended. Actual source for the supporting utility components will be presented throughout the talk and made available afterwards.

Speakers
avatar for John Lakos

John Lakos

Software Engineer, Bloomberg
John Lakos, author of Large-Scale C++ Software Design [Addison-Wesley, 1996], serves at Bloomberg LP in New York City as a senior architect and mentor for C++ software development worldwide.  He is also an active voting member of the C++ Standards Committee’s Evolution Working... Read More →


Monday September 8, 2014 3:15pm - 4:15pm PDT
Descartes

3:15pm PDT

Generic Programming with Concepts Lite, Part II
In this talk, I will give an overview of the Concepts Lite language extension for C++ and present examples of its use in design and implementation of real-world generic libraries. Concepts Lite provides the ability for programmers to directly state constraints on template arguments as part of the template declaration. These constraints are predicates which determine whether or not a template argument can be used with that template. Constraints are checked by the compiler at the point of use, meaning that that effectively constrained generic libraries will not suffer from the usual problems of insane diagnostics. Libraries written using concepts will be far more readable and maintainable than the status quo. This talk will focus on generic programming, proposed language features, and their use in building real-world libraries.

Concepts Lite is a forthcoming ISO Technical Specification (TS) aimed at publication alongside C++14. Concepts Lite is implemented in a branch of GCC, which will be made available to the audience for experiments and experience.

Speakers
avatar for Andrew Sutton

Andrew Sutton

Owner, Lock3 Software, LLC
Andrew Sutton is an owner of Lock3 Software, LLC, a software research and development company in Kent, Ohio. His spends his days working on C++ language extensions in Clang and GCC and working on various WG21 language proposals.His past work included the design, specification, and... Read More →


Monday September 8, 2014 3:15pm - 4:15pm PDT
Newton

3:15pm PDT

Lock-Free Programming (or, Juggling Razor Blades), Part II
Example-driven talk on how to design and write lock-free algorithms and data structures using C++ atomic -- something that can look deceptively simple, but contains very deep topics. (Important note: This is not the same as my "atomic Weapons" talk; that talk was about the "what they are and why" of the C++ memory model and atomics, and did not cover how to actually use atomics to implement highly concurrent algorithms and data structures.)

Speakers
avatar for Herb Sutter

Herb Sutter

Software architect, Microsoft
Herb is an author, designer of several Standard C++ features, and chair of the ISO C++ committee and the Standard C++ Foundation. His current interest is simplifying C++.


Monday September 8, 2014 3:15pm - 4:15pm PDT
Pascal

3:15pm PDT

Persisting C++ Classes in Relational Databases with ODB
ODB is an open source, cross-platform and cross-database (SQLite, PostgreSQL, MySQL, MS SQL Server, Oracle) object-relational mapping (ORM) system for C++. It allows you to persist C++ objects to a relational database without having to deal with tables, columns, or SQL, and without manually writing any mapping code.

In the first part of this two-part talk we will cover the basics of transactionally persisting, loading, updating, and deleting simple C++ classes in a database as well as querying the database for objects. We will then look into persisting C++ classes that have more interesting data members, such as containers and pointers to objects, or that form a polymorphic hierarchy. Support for C++11, Qt, and Boost value types, containers, and smart pointers will also be covered.

Targeting 5 different database systems at the same time may sound like a daunting task but as we will see it is not that hard with ODB. Life would also be a lot easier if our C++ classes never changed. The next best thing is to have comprehensive tooling support. So we will conclude the first half with a discussion of database schema evolution and its support in ODB.

Speakers
avatar for Boris Kolpackov

Boris Kolpackov

Chief Hacking Officer, Code Synthesis
Boris Kolpackov is a founder and CHO (Chief Hacking Officer) at Code Synthesis, a company focusing on the development of open-source tools and libraries for C++. For the past 10 years Boris has been working on solving interesting problems in the context of C++ using domain-specific... Read More →


Monday September 8, 2014 3:15pm - 4:15pm PDT
Euler

3:45pm PDT

Viewing the world through array-shaped glasses
It's agreed among experts that the most performant data structure in C++ is an array. Or a vector. Or a dynarray. Indeed, until recently there was no standardized approach in C++ to view these types in an uniform manner. It was even murkier when the data had logically more than one dimension. This talk is an introduction to the new features proposed for C++17 in N3851 [TBD: update after Rapperswil] bringing all contiguous data into harmony and lifting it to higher dimensions: index, bounds, array_view and more. Attendees will also learn how indexable algorithms differ from the traditional elemental ones, and what does it mean for parallelism.

Speakers
LM

Łukasz Mendakiewicz

Senior Software Engineer, Microsoft
Łukasz Mendakiewicz is a software engineer at Microsoft, where he focuses on the customer experience with parallel programming models for C++. He is especially interested in GPGPU acceleration, and puts this passion to work on C++ AMP. He holds an M.S. in Computer Science from AGH... Read More →


Monday September 8, 2014 3:45pm - 4:15pm PDT
Gauss

4:45pm PDT

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.

Speakers
avatar for Billy Baker

Billy Baker

Software Architect, 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 be found in library groups including chairing SG18, Library Evolution Working Group... Read More →


Monday September 8, 2014 4:45pm - 5:45pm PDT
Newton

4:45pm PDT

Efficiency with Algorithms, Performance with Data Structures
Why do you write C++ code? There is a good chance it is in part because of concerns about the performance of your software. Whether they stem from needing to run on every smaller mobile devices, squeezing the last few effects into video game, or because every watt of power in your data center costs too much, C++ programmers throughout the industry have an insatiable desire for writing high performance code.

Unfortunately, even with C++, this can be really challenging. Over the past twenty years processors, memory, software libraries, and even compilers have radically changed what makes C++ code fast. Even measuring the performance of your code can be a daunting task. This talk will dig into how modern processors work, what makes them fast, and how to exploit them effectively with modern C++ code. It will teach you how modern C++ optimizers see your code today, and how that is likely to change in the coming years. It will teach you how to reason better about the performance of your code, and how to write your code so that it performs better. You will even learn some tricks about how to measure the performance of your code.

Speakers
avatar for Chandler Carruth

Chandler Carruth

Software Engineer, Google
Chandler Carruth is the technical lead for Google's programming languages and software foundations. He has worked extensively on the C++ programming language and the Clang and LLVM compiler infrastructure. Previously, he worked on several pieces of Google's distributed build system... Read More →


Monday September 8, 2014 4:45pm - 5:45pm PDT
Pascal

4:45pm PDT

Introduction to C++ AMP (GPGPU Computing)
Meet C++ AMP (Accelerated Massive Parallelism), an abstraction layer on top of accelerators such as GPUs. In its current version it allows you to run code on any DX11 GPU, independent of the vendor, and it will even distribute workload across GPUs of different vendors simultaneously. C++ AMP was originally designed by Microsoft but is now an open standard. C++ AMP can deliver orders of magnitude performance increase with certain algorithms by utilizing the GPU to perform mathematical calculations. This talk will give a high level overview of what C++ AMP is and what it can do for you. It is time to start taking advantage of the computing power of GPUs!

Speakers
avatar for Marc Gregoire

Marc Gregoire

Software Architect, Nikon Metrology
MARC GREGOIRE is a software architect from Belgium. He graduated from the University of Leuven, Belgium, with a degree in "Burgerlijk ingenieur in de computer wetenschappen" (equivalent to a master of science in engineering in computer science). The year after, he received an advanced... Read More →


Monday September 8, 2014 4:45pm - 5:45pm PDT
Descartes

4:45pm PDT

ODB, Advanced Weapons and Tactics
Hiding a relational database behind an ORM does not work. Did I just say that? Yes! Performance and scalability limitations always get in the way. Should we then throw away the whole ORM idea and go back to SQL? We don't have to. In fact, the bulk of ODB features were specifically designed to resolve these limitations without degenerating to JOINs and SQL. And that's what the second part of this talk is all about: bulk operations, object caches, lazy pointers, views, change-tracking containers, optimistic concurrency, object sections (partitions), and prepared and cached queries. By the end of the second half you will be ready for anything that real-world C++ object persistence and database access can throw at you.

Speakers
avatar for Boris Kolpackov

Boris Kolpackov

Chief Hacking Officer, Code Synthesis
Boris Kolpackov is a founder and CHO (Chief Hacking Officer) at Code Synthesis, a company focusing on the development of open-source tools and libraries for C++. For the past 10 years Boris has been working on solving interesting problems in the context of C++ using domain-specific... Read More →


Monday September 8, 2014 4:45pm - 5:45pm PDT
Euler

4:45pm PDT

Rebuilding Boost Date-Time for C++11
Boost date_time is a widely used C++ library originally released in 2001 -- including being the basis for elements of the chrono library in c++11. While the library interface has stayed stable for more than a decade, the world around it has changed with the standard library and language changing. It is time for the library tobe rewritten to account for c++11.

The lecture describes in detail the design decisions and changes to the library for C++11. More generally it describes elements of design for a small valuetype library. Many of these considerations involve new features of C++11 and how they should be used. This includes noexcept, move construction/assignment (R-values), constexpr, enum classes, and user defined literals.

Attendees will learn about the design considerations and tradeoffs of using the new language features in their own work while getting a glimpse of boost date-time version 2.

Speakers
avatar for Jeff Garland

Jeff Garland

CrystalClear Software
Jeff Garland has worked on many large-scale, distributed software projects over the past 30+ years. The systems span many different domains including telephone switching, industrial process control, satellite ground control, ip-based communications, and financial systems. He has written... Read More →


Monday September 8, 2014 4:45pm - 5:45pm PDT
Leibnitz

8:30pm PDT

Boost Library Writers Workshop, Part 1

There would be two types of attendees - library authors and observers.

a) Each library author would make a very short presentation (3 min) of what the library attempts to accomplish.  To be eligible, a library must have documentation.

b) Authors draw lots to select a library other than their own.  Observers are also permitted to draw lots or just select a library they might be interested.

c) Each selected library is “critiqued” by investigating the library and keeping a contemporaneous log on the experience.  I’ll prepare a place where these critiques can be posted. 

d) I will be available to answer questions and provide encouragement.  Hopefully I can convince another boost author to show up.

So the timing would be:

8:30 - short introduction by me to describe the rules above.

8:35 - author presentations - assume 7

9:00 - drawing of lots - critique period begins

(9:15 - first session ends, second session begins in the same room, some attendees may switch sessions)

10:00 - pencils down - wrap up.

If there is demand, this session could be repeated subsequent evenings.


Speakers
avatar for Robert Ramey

Robert Ramey

Software Developer, RRSD
Robert Ramey is a freelance Software Developer living in Santa Barbara, California. (See www.rrsd.com.)  His long and varied career spans various aspects of software development including business data processing, product, embedded systems, custom software, and C++ library development. Lately, he has been mostly interested in C++ library design and implementation related to Boost... Read More →


Monday September 8, 2014 8:30pm - 9:15pm PDT
Descartes

8:30pm PDT

Mixins
"Inheritance is the base class of evil" - Sean Parent
Roger, copy that! But sometimes I really want my classes to "import" data members or functions which are better organized elsewhere. And I can do a lot with single inheritance, multiple inheritance, variadic inheritance. Awesome. But when I want to be decent and use composition?
  • I have to know how many members I want to add in advance. There is no variadic composition.
  • I have to decide on the names of those members in advance. There is no compile time way of choosing a name.
  • And if I want my class to offer methods of those members, I have to write forwarding functions and need to know the name of those methods in advance. If the interface of the member changes, my forwarding functions are likely to be broken.
Composition is quite limited when compared to inheritance. That's why we use inheritance so much, especially with templates.

I'll give a few examples, including a real-life case of variadic CRTP and an inheritance-based way of how to specify the names of your data members via template parameters. After that, I'll open the discussion by suggesting two conceptually simple language features and how they could improve our life:
  • Mixin classes
  • Name providers (still looking for a better name).

Speakers
avatar for Roland Bock

Roland Bock

Principal Software Engineer, PPRO Financial Ltd
From my days at the university, I hold a PHD in physics (although that was in the previous century and seems like a different life by now). Ever since then I have been developing software and/or managing engineering teams. In 2008, I started to learn C++ because I could not believe... Read More →


Monday September 8, 2014 8:30pm - 9:15pm PDT
Newton

8:30pm PDT

Meet the Authors
Moderators
avatar for Chandler Carruth

Chandler Carruth

Software Engineer, Google
Chandler Carruth is the technical lead for Google's programming languages and software foundations. He has worked extensively on the C++ programming language and the Clang and LLVM compiler infrastructure. Previously, he worked on several pieces of Google's distributed build system... Read More →

Speakers
AA

Alex Allain

Dropbox
Alex Allain has been writing about C++ since 1998, when he started Cprogramming.com. In 2012, he published Jumping into C++ to teach new programmers how to think like a professional C++ programmer. At Dropbox, Alex leads the Platforms and Libraries team, helping make the dream of... Read More →
avatar for Kate Gregory

Kate Gregory

Partner, Gregory Consulting
Kate Gregory is an author, sought-after conference speaker, trainer, Microsoft Most Valuable Professional (MVP), and partner at Gregory Consulting. Kate has been using C++ since before Microsoft had a C++ compiler. She is an early adopter of many software technologies and tools, and... Read More →
avatar for John Lakos

John Lakos

Software Engineer, Bloomberg
John Lakos, author of Large-Scale C++ Software Design [Addison-Wesley, 1996], serves at Bloomberg LP in New York City as a senior architect and mentor for C++ software development worldwide.  He is also an active voting member of the C++ Standards Committee’s Evolution Working... Read More →
avatar for Scott Meyers

Scott Meyers

Retired C++ Consultant, Self
Scott Meyers devoted over 25 years to the advancement of C++ before retiring from active involvement in it at the end of 2015. He's best known for his books, Effective C++, Effective Modern C++, More Effective C++, and Effective STL.
avatar for Ade Miller

Ade Miller

Technical Fellow, Conga
Ade Miller currently leads the Machine Learning Engineering Team at Conga, building the ML infrastructure behind their Contract Life-cycle Management products. Before joining Conga Ade led team responsible for CenturyLink Cloud's analytics platform. A highly distributed system providing... Read More →
avatar for Peter Sommerlad

Peter Sommerlad

founder, Better Software: Consulting, Training, Reviews
Peter Sommerlad was director of IFS Institute for Software at FHO/HSR Rapperswil, Switzerland. Peter is co-author of the books POSA Vol.1 and Security Patterns and contributed to "97 things every programmer should know". His goal is to make software simpler and safer by Decremental... Read More →
avatar for Herb Sutter

Herb Sutter

Software architect, Microsoft
Herb is an author, designer of several Standard C++ features, and chair of the ISO C++ committee and the Standard C++ Foundation. His current interest is simplifying C++.
MW

Michael Wong

OpenMP CEO/Architect, IBM/OpenMP
You can talk to me about anything including C++ (even C and that language that shall remain nameless but starts with F), Transactional Memory, Parallel Programming, OpenMP, astrophysics (where my degree came from), tennis (still trying to see if I can play for a living), travel, and... Read More →


Monday September 8, 2014 8:30pm - 10:00pm PDT
Pascal

9:15pm PDT

Boost Library Writers Workshop, Part 2

There would be two types of attendees - library authors and observers.

a) Each library author would make a very short presentation (3 min) of what the library attempts to accomplish.  To be eligible, a library must have documentation.

b) Authors draw lots to select a library other than their own.  Observers are also permitted to draw lots or just select a library they might be interested.

c) Each selected library is “critiqued” by investigating the library and keeping a contemporaneous log on the experience.  I’ll prepare a place where these critiques can be posted. 

d) I will be available to answer questions and provide encouragement.  Hopefully I can convince another boost author to show up.

So the timing would be:

8:30 - short introduction by me to describe the rules above.

8:35 - author presentations - assume 7

9:00 - drawing of lots - critique period begins

(9:15 - first session ends, second session begins in the same room, some attendees may switch sessions)

10:00 - pencils down - wrap up.

If there is demand, this session could be repeated subsequent evenings.


Speakers
avatar for Robert Ramey

Robert Ramey

Software Developer, RRSD
Robert Ramey is a freelance Software Developer living in Santa Barbara, California. (See www.rrsd.com.)  His long and varied career spans various aspects of software development including business data processing, product, embedded systems, custom software, and C++ library development. Lately, he has been mostly interested in C++ library design and implementation related to Boost... Read More →


Monday September 8, 2014 9:15pm - 10:00pm PDT
Descartes
 
Tuesday, September 9
 

9:00am PDT

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.

Speakers
avatar for Peter Sommerlad

Peter Sommerlad

founder, Better Software: Consulting, Training, Reviews
Peter Sommerlad was director of IFS Institute for Software at FHO/HSR Rapperswil, Switzerland. Peter is co-author of the books POSA Vol.1 and Security Patterns and contributed to "97 things every programmer should know". His goal is to make software simpler and safer by Decremental... Read More →


Tuesday September 9, 2014 9:00am - 10:00am PDT
Newton

9:00am PDT

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 with Clear Inputs/Outputs (side effects, referential transparency/value semantics)
* Functions as First-Class Entities (function objects, C++11 lambda functions, Callable/std::function)
* The Algebra of Functions (higher-order functions/<algorithm>, currying/std::bind, composition)
* Down the Rabbit Hole: Monads and Parallelism (calling functions/std::async, std::future, .then()/when_all(), futurization)

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.

Speakers
avatar for Bryce Adelstein Lelbach

Bryce Adelstein Lelbach

CUDA C++ Core Libraries Lead, NVIDIA


Tuesday September 9, 2014 9:00am - 10:00am PDT
Pascal

9:00am PDT

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.

Speakers
BE

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... Read More →


Tuesday September 9, 2014 9:00am - 10:00am PDT
Descartes

9:00am PDT

UI prototyping and development for multiple devices in C++
Using C++ for multi-device user interface and app development should be pretty straightforward. However, since the Standard C++ Language and Library specification does not specify a user interface library, it's actually quite challenging given that the two leading mobile platforms provide non-C++ User Interface APIs. Even more challenging is the new world of mobile devices and the myriad form factors, layouts, resolutions, sensors, and services that an application developer has to deal with. Plus, the deployment model for remote devices makes testing UI changes slower due to the increased build and turnaround time. This session will describe how C++ can be used effectively for multi-device UI development and also deliver a rapid prototyping experience to minimize the deployment time to the device for testing.

Speakers
J

JT

Director of Developer Products, Embarcadero Technologies
John "JT" Thomas, Director of Product Management at Embarcadero Technologies, has more than 15 years of product management and product development experience including hands-on experience with the early versions of Delphi and C++Builder at Borland Software. Previously, JT held product... Read More →


Tuesday September 9, 2014 9:00am - 10:00am PDT
Euler

9:00am PDT

Writing Data Parallel Algorithms on GPUs
Today most PCs, tablets and phones support multi-core processors and most programmers have some familiarity with writing (task) parallel code. Many of those same devices also have GPUs but writing code to run on a GPU is harder. Or is it?

Getting to grips with GPU programming is really about understanding things in a data parallel way. This talk will look at some of the common patterns for implementing algorithms on today's GPUs using examples from the C++ AMP Algorithms Library. Along the way it will cover some of the unique aspects of writing code for GPUs and contrast them with a more conventional code running on a CPU.

Speakers
avatar for Ade Miller

Ade Miller

Technical Fellow, Conga
Ade Miller currently leads the Machine Learning Engineering Team at Conga, building the ML infrastructure behind their Contract Life-cycle Management products. Before joining Conga Ade led team responsible for CenturyLink Cloud's analytics platform. A highly distributed system providing... Read More →


Tuesday September 9, 2014 9:00am - 10:00am PDT
Leibnitz

10:30am PDT

Make Simple Tasks Simple!
C++ faces two challenges: Helping programmers address the most demanding tasks in terms of performance, scale, and dependability. It must also help programmers be productive writing ordinary maintainable code. There is much more "ordinary code" than there is performance-critical code. Thus, C++ must make simple tasks simple while not getting in the way of tuning software for the last byte and last cycle where that's necessary. This talk focuses on what C++11 and C++14 offers to simplify programming: auto, range-for loops, move semantics, futures, concepts, and more. However, the focus is not primarily on language features: the key is programming: how can we write better, more readable, efficient, and more maintainable code? If you think that the essence of C++ is clever pointer manipulation and huge class hierarchies you may be in for a few surprises.

Speakers
avatar for Bjarne Stroustrup

Bjarne Stroustrup

technical fellow, morgan stanley
C++: history, design, use, standardization, future; performance, reliability; software developer education;distributed systemsBio: www.stroustrup.com/bio.html


Tuesday September 9, 2014 10:30am - 12:00pm PDT
Fermat

2:00pm PDT

Another fundamental shift in Parallelism Paradigm? OpenMP 4.0 for GPU/Accelerators and other things
Another fundamental shift in Parallelism Paradigm? Sure. When was the last time you heard that before?

But seriously, as the number of threads/cores continue to increase, there is a growing pressure on applications to exploit more of the available parallelism in their codes, including coarse-, medium-, and fine-grain parallelism. OpenMP has been one of the dominant shared-memory programming models but is evolving beyond that with a new Mission Statement (no, really!) making it well suited for exploiting medium- and fine-grained parallelism.

OpenMP 4.0 exhibits many of these features to support the next step in both consumer, high-performance and exascale computing, with one of the world's first programming model for high-level language support for GPU/Accelerators and vector SIMD across not 1 but 3 high-level languages: C++, C, and that language whose name we dare not speak, but starts with F.

Speakers
MW

Michael Wong

OpenMP CEO/Architect, IBM/OpenMP
You can talk to me about anything including C++ (even C and that language that shall remain nameless but starts with F), Transactional Memory, Parallel Programming, OpenMP, astrophysics (where my degree came from), tennis (still trying to see if I can play for a living), travel, and... Read More →


Tuesday September 9, 2014 2:00pm - 3:00pm PDT
Gauss

2:00pm PDT

C++11 in the Wild: Techniques from a Real Codebase
This talk presents several reusable constructs from a production C++11 codebase, each of which would not be possible without C++11's new features. Auto() is what Alexandrescu's ScopeGuard looks like after a dozen years of C++ evolution. make_iterable() constructs a container from a pair of iterators, enabling simple "foreach" iteration over legacy containers. spaceship() is an efficient "strcmp" for tuples. Time permitting, we'll look at some more arcane code samples.

Speakers
avatar for Arthur O'Dwyer

Arthur O'Dwyer

C++ Trainer
Arthur O'Dwyer is the author of "Mastering the C++17 STL" (Packt 2017) and of professional training courses such as "Intro to C++," "Classic STL: Algorithms, Containers, Iterators," and "The STL From Scratch." (Ask me about training your new hires!) Arthur is occasionally active on... Read More →


Tuesday September 9, 2014 2:00pm - 3:00pm PDT
Newton

2:00pm PDT

Exception-Safe Code, Part I
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.

Speakers
avatar for Jon Kalb

Jon Kalb

Conference Chair, Jon Kalb, Consulting
Jon Kalb is using his decades of software engineering experience and knowledge about C++ to make other people better software engineers. He trains experienced software engineers to be better programmers. He presents at and helps run technical conferences and local user groups.He is... Read More →


Tuesday September 9, 2014 2:00pm - 3:00pm PDT
Descartes

2:00pm PDT

From the Dropbox Trenches: A Deep Dive into Two Cross-Platform Mobile Apps Written in C++
At Dropbox we’ve spent the last year and a half building two cross platform mobile apps: the email client, Mailbox, and the photo gallery, Carousel. We started with the goal of a native look and feel with seamless performance but also needed to leverage a small team to build these apps on multiple platforms. We ultimately accomplished this by using C++ to share significant amounts of code in each app.

We’ll cover what portions of our apps we built in C++ and why we left some portions in the platform languages of Java and Objective-C, deep diving into some of the most important components. We’ll also discuss some unexpected benefits, areas we faced technical and human challenges, and some tips and tricks that you can use to leverage C++ to build very high performance apps.

Speakers
TG

Tony Grue

Dropbox
Tony Grue has been building mobile applications, mostly in C++, for the last 8 years.  He worked on Dropbox for Android as it grew from a few million to more than 100 million installs. Now he leads the Carousel for Android and lib-carousel teams at Dropbox. Before Dropbox, Tony was... Read More →
avatar for Steven Kabbes

Steven Kabbes

Software Engineer, Dropbox
Steven Kabbes is a mobile engineer at Dropbox. He was a member of the founding team of Mailbox and designed many of the core email sync algorithms that power it. Since then he has been working on cross platform mobile building the C++ layer of Mailbox which powers clients on iOS... Read More →


Tuesday September 9, 2014 2:00pm - 3:00pm PDT
Leibnitz

2:00pm PDT

Implementing wire protocols with Boost Fusion
There are a number of common serialization formats available which work well for marshaling C++ types into messaging protocols, e.g. ProtoBufs, Thrift, JSON, XML, FIX, etc. Unfortunately, not every protocol uses one of these popular encodings and instead implements a unique binary protocol. The classical "C" way of handling binary protocols is to use packed structs, unfortunately there are many binary protocols which are not particularly friendly to using this approach due to things like nested variable length data structures, etc.. The packed struct approach is also fairly limited in that it only generally supports primitive POD types.

This talk will explore an approach that uses Boost's Fusion library to implement an easily extensible serialization mechanism for on a non-trivial binary financial exchange protocol which exposes the underlying data in terms of "modern" C++ types. The talk will also cover aspects of general use of Boost Fusion and Boost MPL, type traits, enable_if, SFINAE, and other members of the C++ type system bestiary.

Speakers
TR

Thomas Rodgers

Sr Software Engineer - Platform Languages Runtime, RedHat, Inc
Thomas has been programming in C++ since 1989 and a member of the C++ Standards Committee since 2013. Thomas has worked in the financial industry since 1996 and currently works for DRW Trading Group in Chicago.


Tuesday September 9, 2014 2:00pm - 3:00pm PDT
Euler

2:00pm PDT

Modern Template Metaprogramming: A Compendium, Part I
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 new < type_traits > candidate whose use has been described by one expert as "highly advanced (and elegant), and surprising even to experienced template metaprogrammers."

Speakers
avatar for Walter E Brown

Walter E Brown

With broad experience in industry, academia, consulting, and research, Dr. Walter E. Brown has been a computer programmer for almost 60 years, and a C++ programmer for more than 40 years.He joined the C++ standards effort in 2000, and has since written circa 175 proposal papers. Among... Read More →


Tuesday September 9, 2014 2:00pm - 3:00pm PDT
Pascal

3:15pm PDT

Decomposing a Problem for Parallel Execution
So you want to speed up your computation using multicore parallel execution and you've picked a parallelism framework. What now? Parallelism frameworks give you the tools you need, but they don't actually parallelize the code; that's your job. To take advantage of parallel hardware, you must decompose your computation into tasks that can be computed in parallel. In this session, I'll present a real-world problem (the n-bodies problem) and guide you through several different ways in which it can be decomposed for parallel execution. We'll look at how to achieve scalability, resolve data races, and avoid negative multi-core cache effects. At the end of this session, you should have a conceptual understanding of parallel programming fundamentals that can be applied to a wide range of problems using a variety of frameworks.

Speakers
avatar for Pablo Halpern

Pablo Halpern

Software Engineer, Intel Corp.
Pablo Halpern has been programming in C++ since 1989 and has been a member of the C++ Standards Committee since 2007. He is currently an enginneer at Intel Corp., where he works on high-performance computing. As the former chairman of the Parallel Programming Models Working Group... Read More →


Tuesday September 9, 2014 3:15pm - 4:15pm PDT
Newton

3:15pm PDT

Embind and Emscripten: Blending C++11, JavaScript, and the Web Browser
Emscripten compiles C or C++ source code into JavaScript so it can run in a web browser. Emscripten is commonly used to port games to the web with no download or plugin required.

Embind is a C++11 binding library that makes it easy to expose libraries written in C++ to JavaScript. This allows JavaScript applications to take advantage of existing bodies of C++ code. In addition, C++ compiled into the asm.js subset of JavaScript is often faster than hand-written JavaScript, so Embind makes it convenient to accelerate JavaScript applications by writing high-performance functionality in C++.

With several motivating examples, this lecture will cover the design of embind, how variadic templates and constexpr facilitate interesting optimizations, and how embind minimizes its impact on the size of the generated JavaScript.

Speakers
avatar for Chad Austin

Chad Austin

Technical Director, IMVU
Chad is a Senior Technical Director at IMVU, where he works on highly scalable backend systems, front-end web architectures, and optimizing the bits and bytes of 3D graphics pipelines. C++ was Chad's first love, and he once mowed "C++" into his back yard before a rainstorm, where... Read More →


Tuesday September 9, 2014 3:15pm - 4:15pm PDT
Leibnitz

3:15pm PDT

Exception-Safe Code, Part II
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.

Speakers
avatar for Jon Kalb

Jon Kalb

Conference Chair, Jon Kalb, Consulting
Jon Kalb is using his decades of software engineering experience and knowledge about C++ to make other people better software engineers. He trains experienced software engineers to be better programmers. He presents at and helps run technical conferences and local user groups.He is... Read More →


Tuesday September 9, 2014 3:15pm - 4:15pm PDT
Descartes

3:15pm PDT

How Microsoft Uses C++ to Deliver Office (and More) Across iOS, Android, Windows, and Mac, Part I
What does it take to target multiple major mobile devices (as well as traditional environments) with portable, efficient, single-source code? This talk demonstrates architectures, techniques, and lessons learned rooted in actual experience with using C++ to deliver several major cross-platform projects across iOS, Android, Windows, and Mac: Microsoft Office (Word, Excel, PowerPoint, OneNote) and the SQL Server PowerBI. Each presents a different case study: For example, Office already used C++, whereas PowerBI was originally written in Silverlight and then rewritten in C++; Office is a set of user-facing apps, whereas PowerBI is a system component. Although some of these are demanding first-tier “Cadillac” applications, we expect this experience to be a model for the future as more and more apps fall into this category and use C++ to target many popular platforms from (mostly) a single source base. This talk will cover the following key topics and tradeoffs: Rich vs. reach, including access to latest OS features (e.g., iOS 8 additions) and hardware features (e.g., vector units, GPUs). Consistency of functionality. Client code vs. server/service web code. Sharing vs. quality, including dialing appropriately between more shared code and high quality code. Drawing the line between the bulk of C++ code and interfacing with non-C++ for UX and PALs (platform adaptation/abstraction layers) for target-specific user interface and system services. Architecting PALs, including why “mini-PALs” rather than an “über-PAL.” Forces “doing the right thing” and good architecture with composable components. How C++ enables things not feasible using other technologies. Velocity and enabling faster cross-platform development and deployment. Cost of maintenance, including time, size, and complexity (both breadth and depth). And, last but not least, developing in a single modern C++ source base built with different evolving C++ compilers, including VC++ and Clang/LLVM.

Speakers
TA

Tony Antoun

Microsoft
Tony Antoun is Director of Development for APEX, focusing on delivering Office on all Apple platforms and form factors (iPhone, iPad, Mac), as well as aligning the Office experience on other major platforms (Win32, WinRT, Android). Before that, Dev Manager for SQL PowerBI – a cross-platform... Read More →
IZ

Igor Zaika

Development Manager, Microsoft Corporation
Igor Zaika is the Development Manager for the Office Core Experience team at Microsoft, responsible for shared UX components and application framework used by Office applications. Before that, Igor worked in various areas related to Office client applications, ranging from building... Read More →


Tuesday September 9, 2014 3:15pm - 4:15pm PDT
Euler

3:15pm PDT

Modern Template Metaprogramming: A Compendium, Part II
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 < type_traits > candidate whose use has been described by one expert as "highly advanced (and elegant), and surprising even to experienced template metaprogrammers."

Speakers
avatar for Walter E Brown

Walter E Brown

With broad experience in industry, academia, consulting, and research, Dr. Walter E. Brown has been a computer programmer for almost 60 years, and a C++ programmer for more than 40 years.He joined the C++ standards effort in 2000, and has since written circa 175 proposal papers. Among... Read More →


Tuesday September 9, 2014 3:15pm - 4:15pm PDT
Pascal

4:45pm PDT

0xBADC0DE
My motivation for this talk is my own expierence 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.

Speakers
avatar for Jens Weller

Jens Weller

Meeting C++ / Community Organizer, Meetingcpp GmbH
Jens Weller has worked, since 2007, as a freelancer in C++, specialising in consulting, training and programming C++. He started with programming C++ back in 1998. He is an active member of the European C++ community and the founder of the Meeting C++ platform and conference. Jens... Read More →


Tuesday September 9, 2014 4:45pm - 5:45pm PDT
Leibnitz

4:45pm PDT

Asynchronous Computation in C++
With the adoption of the new C++11 Standard the community sees a revival of interest in the language. This interest is also driven by the demands that new computer architectures and technologies are exerting on application developers and domain scientists. Especially the need for highly runtime adaptive algorithms and applications puts a great strain on our ability to efficiently write code which performs well and which scales satisfactory, as multi-core and multi-threading is the new modality of computation. We argue that new programming models have to be developed if we are to gain continued scalability of computations as we increase the size of our systems. These are programming models which work equally well for inter-node as well for intra-node use. With the degree of complexity and size increasing in new hardware architectures, applications are more and more hindered by the main bottlenecks in computation, namely starvation, latency, overheads, and waiting for contention resolution. We present HPX, which is a general purpose parallel C++ runtime system implementing a new model of computation - ParalleX, that attempts to address those challenges. We show results from using HPX for leveraging and managing asynchrony, overlapping different phases of computation and communication, suggesting ways to seamlessly expose it to programmers in an easy to use way.

Speakers
HK

Hartmut Kaiser

STE||AR Group, CCT/LSU
Hartmut is a member of the faculty at the CS department at Louisiana State University (LSU) and a senior research scientist at LSU's Center for Computation and Technology (CCT). He received his doctorate from the Technical University of Chemnitz (Germany) in 1988. He is probably best... Read More →


Tuesday September 9, 2014 4:45pm - 5:45pm PDT
Newton

4:45pm PDT

Exception-Safe Code, Part III
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.

Speakers
avatar for Jon Kalb

Jon Kalb

Conference Chair, Jon Kalb, Consulting
Jon Kalb is using his decades of software engineering experience and knowledge about C++ to make other people better software engineers. He trains experienced software engineers to be better programmers. He presents at and helps run technical conferences and local user groups.He is... Read More →


Tuesday September 9, 2014 4:45pm - 5:45pm PDT
Descartes

4:45pm PDT

How Microsoft Uses C++ to Deliver Office (and More) Across iOS, Android, Windows, and Mac, Part II
What does it take to target multiple major mobile devices (as well as traditional environments) with portable, efficient, single-source code? This talk demonstrates architectures, techniques, and lessons learned rooted in actual experience with using C++ to deliver several major cross-platform projects across iOS, Android, Windows, and Mac: Microsoft Office (Word, Excel, PowerPoint, OneNote) and the SQL Server PowerBI. Each presents a different case study: For example, Office already used C++, whereas PowerBI was originally written in Silverlight and then rewritten in C++; Office is a set of user-facing apps, whereas PowerBI is a system component. Although some of these are demanding first-tier “Cadillac” applications, we expect this experience to be a model for the future as more and more apps fall into this category and use C++ to target many popular platforms from (mostly) a single source base. This talk will cover the following key topics and tradeoffs: Rich vs. reach, including access to latest OS features (e.g., iOS 8 additions) and hardware features (e.g., vector units, GPUs). Consistency of functionality. Client code vs. server/service web code. Sharing vs. quality, including dialing appropriately between more shared code and high quality code. Drawing the line between the bulk of C++ code and interfacing with non-C++ for UX and PALs (platform adaptation/abstraction layers) for target-specific user interface and system services. Architecting PALs, including why “mini-PALs” rather than an “über-PAL.” Forces “doing the right thing” and good architecture with composable components. How C++ enables things not feasible using other technologies. Velocity and enabling faster cross-platform development and deployment. Cost of maintenance, including time, size, and complexity (both breadth and depth). And, last but not least, developing in a single modern C++ source base built with different evolving C++ compilers, including VC++ and Clang/LLVM.

Speakers
TA

Tony Antoun

Microsoft
Tony Antoun is Director of Development for APEX, focusing on delivering Office on all Apple platforms and form factors (iPhone, iPad, Mac), as well as aligning the Office experience on other major platforms (Win32, WinRT, Android). Before that, Dev Manager for SQL PowerBI – a cross-platform... Read More →
IZ

Igor Zaika

Development Manager, Microsoft Corporation
Igor Zaika is the Development Manager for the Office Core Experience team at Microsoft, responsible for shared UX components and application framework used by Office applications. Before that, Igor worked in various areas related to Office client applications, ranging from building... Read More →


Tuesday September 9, 2014 4:45pm - 5:45pm PDT
Euler

4:45pm PDT

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.

Speakers
avatar for Zach Laine

Zach Laine

Principal Software Engineer, Cadence Design Systems
Zach Laine has been using C++ in industry for 15 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.


Tuesday September 9, 2014 4:45pm - 5:45pm PDT
Pascal

4:45pm PDT

The Committee Experience
What happens behind the closed doors of the ISO Standard Committee? And just how closed are they?

The session collects some anecdotes and relates what it is like to get involved in the process of standardizing C++, from the perspective of someone attending their first meeting - me 10 years ago! - to now. We will hear some of the highs and lows along the way to C++11, some misconceptions of what might be involved, and get some idea of what happens during a typical standard meeting, and between.

By the end you will have some idea of how the standard itself is actually formed, and hopefully spark the interest of folks who might be interested in getting involved themselves...

Speakers
avatar for Alisdair Meredith

Alisdair Meredith

Senior Developer, BloombergLP
Alisdair Meredith is a software developer at BloombergLP in New York, and the C++ Standard Committee Library Working Group chair.He has been an active member of the C++ committee for just over a decade, and by a lucky co-incidence his first meeting was the kick-off meeting for the... Read More →


Tuesday September 9, 2014 4:45pm - 5:45pm PDT
Gauss

8:30pm PDT

The sqlpp11-connector experiment, Part 1

In order to let more people experience type safety and other compile time constraints when programming SQL in C++, more connectors for sqlpp11 are required. Currently there are connectors for MySQL/MariaDb, Postgresql and Sqlite3, as well as an experimental binding to std::vector.

I would like to use the opportunity of having so many capable people in one place to try to add a few more connector libraries. These libraries would not be finished by the end of the day, but there are pretty good chances to get the first few queries processed.

 

"The compile time query checks are brilliant." dirkvdb

sqlpp11 is an EDSL for SQL in C++, allowing you to write SQL queries in name- and type-safe manner. You can learn a lot about how it works and how you benefit from it in my talk on Thursday.

sqlpp11 is vendor neutral. In order to work with a database, it requires a connector library. Such libraries are available for MySQL/MariaDb, PostgreSQL, Sqlite3 and (experimental) std::vector.

I want to use the opportunity of having so many highly capable developers in one place: Lets write a few more connector libraries. These could be for SQL databases, like Microsoft SQL, Oracle, Firebird, MemSQL, DB2 etc. If you're feeling more adventurous, we could at least start writing connectors to other databases, e.g. incoming JSON streams, or we could improve on the connector to C++ standard containers.

I'll start with a short introduction about what a connector looks like and how it is typically structured. After that we start coding (in teams, maybe). I will provide a skeleton so that you don't have to worry less about structure and boiler plate. I am sure that we will be successfully processing the first queries with new connectors by the end of the session.

Anyone can participate. It would be helpful if you

  • bring a laptop
  • are able to compile sqlpp11 (this is known to work for gcc>=4.8 and clang>=3.1)
  • have a connector in mind you want to write/work on
  • have some knowledge and access to the documentation of the interface of the database for that connector

Speakers
avatar for Roland Bock

Roland Bock

Principal Software Engineer, PPRO Financial Ltd
From my days at the university, I hold a PHD in physics (although that was in the previous century and seems like a different life by now). Ever since then I have been developing software and/or managing engineering teams. In 2008, I started to learn C++ because I could not believe... Read More →


Tuesday September 9, 2014 8:30pm - 9:15pm PDT
Descartes

8:30pm PDT

Coupled Multi-Physics Simulations in the Exascale Era and Its Implications on C++17
Emerging programming models, and their implementations will benefit from taking a strong applications perspective when validating the true applicability of the proposed technical specifications of solutions such as C++17 proposed standard.  In order to provide an applications perspective to drive a vertically integrated discussion, as a context, the core data structures, algorithms and parallel programming model utilized by the open source Stanford SU2 multi-physics C++ based toolkit, will be described in detail.  The objective of  the proposed “Open-Content”  session is  to foster  a  lively holistic discussion intertwining  a realistic
application context around important emerging topics including pertinent to C++17 including:
•  Does C++17 TM proposal’s proposed productivity gains mitigate it’s performance implications?
•  Does C++17 sufficiently enable cache-conscious programming?
•  How does C++17 enable scalability and
•  What lessons can C++17 learn from the DARPA HPCS language efforts?

The numerical solution of systems of partial differential equations or “coupled-multi-physics” simulations, is an important  application  area  for  academic,  governmental  and  industry  organizations  in  the  science, engineering and medical communities.  These organizations often utilize large-scale computing platforms to solve ever larger and more complex modeling and simulation problems. Consequently, the games and film industry over the past decade has been rapidly increasing the scope and resolution of their simulation models to feed their ever increasing demand of visual realism in games and feature-film visual effects.
In the past, heterogeneity has largely been at the Node level (i.e. single blade), with communication from the CPU to the Accelerator (many-core CPU, GPU / FPGA / DSP, etc.) through the PCIe protocol and it’s variants. In the near future, socket-level communication technologies such as Intel’s KTI or the IBM CAPI / Nvidia NVLink protocol, will enable accelerators to become equal piers to the main CPU, dramatically reducing  latency of  communication.  By  the  2017  timeframe,  it  is  likely  that  Accelerators  will  be  fully
integrated into the main CPU. Furthermore, to address memory access latency, bandwidth and IO, a range of  memory  technologies  are  emerging  including:  DDR4  memory,  on-package stacked high-bandwidth memory  and  non-volatile  memory  (i.e.  memory-channel  /  Flash)  technologies.   Finally,  large-scale compute servers for public / private clouds will aggregate these technologies and likely introduce silicon nano-photonics interconnects, further reducing the latency of communication while increasing bandwidth.
As we approach the “exascale” computing systems we can imagine 100s of cores in a single chip, with aggregate capabilities of 10 ^18th power flops / second, or roughly 1,000 fold performance of current systems.

Today it  is  a  “un-spoken”  truth that when  practically  applying  scalable  systems  utilizing heterogeneous computing, a substantial amount of computing resources are often left under-utilized due to the in-effective utilization  of  the  memory  hierarchy by the applications,  their underlying  libraries,  programming  models and supporting system software and hardware.  Furthermore as the simulation problem size increases, and the  modeling  of  “dynamic  systems”  becomes  important,  unstructured  adaptive  methods  (enabling  a simulation-level-of-detail) will become more important. Subsequently, it is likely that these applications
will require pointer-based data structures, dynamic memory allocation and irregular parallelism.

Speakers
avatar for Yahya H. Mirza

Yahya H. Mirza

YCEO/CTO, Aclectic Systems Inc.
Yahya H. Mirza’s original background was aeronautical engineering and he was initially employed by Battelle Research Labs. His experience at NASA Ames in 1989, simulating the hypersonic aerodynamics of waveriders on the Cray- YMP, brought him to an important realization. A clear... Read More →


Tuesday September 9, 2014 8:30pm - 10:00pm PDT
Leibnitz

8:30pm PDT

Lightning Talks
Lightning talks - some 15 minutes, some 5 minutes. Come for bite size talks you'll want more of!

Moderators
avatar for Kate Gregory

Kate Gregory

Partner, Gregory Consulting
Kate Gregory is an author, sought-after conference speaker, trainer, Microsoft Most Valuable Professional (MVP), and partner at Gregory Consulting. Kate has been using C++ since before Microsoft had a C++ compiler. She is an early adopter of many software technologies and tools, and... Read More →

Speakers
avatar for Jonathan Caves

Jonathan Caves

Developer, Microsoft Corporation
C++, Hiking, Opera, Beer - pick any three
avatar for Shy Shalom

Shy Shalom

Senior Software Engineer, Intigua
Wizard
avatar for Julian Smith

Julian Smith

Software Architect, Undo Software
Julian Smith is co-founder and Software Architect at Undo Software. He holds a physics degree from Oxford University and a Ph.D. in cognitive psychology from the University of Edinburgh. Along with co-founder and CEO Greg Law, Julian designed and developed Undo's patented record-and-rewind... Read More →
avatar for Peter Sommerlad

Peter Sommerlad

founder, Better Software: Consulting, Training, Reviews
Peter Sommerlad was director of IFS Institute for Software at FHO/HSR Rapperswil, Switzerland. Peter is co-author of the books POSA Vol.1 and Security Patterns and contributed to "97 things every programmer should know". His goal is to make software simpler and safer by Decremental... Read More →
MT

Martin Troxler

Senior Engineer, Komax AG
Programming in C++ since the early 90'. Responsible: - Development of realtime controller systems running on RT Linux for industrial manufacturing machines. Recent hot topics: - ReSTful server framework in C++ - (Unit) testing of new and legacy C++ code
avatar for Jeff Trull

Jeff Trull

Principal, Trull Consulting
Electronic CAD algorithmsModern C++ design patterns
avatar for Michael VanLoon

Michael VanLoon

Principal Software Engineer, F5 Networks
I have been developing software for over 30 years. Yes, I started before I was born. I have been doing C++ for over 20 years, not very well at first, and slightly better now. I work at F5 Networks, and have worked at Disney, VMware, Yahoo!, and Microsoft, among many others... Read More →
avatar for Jens Weller

Jens Weller

Meeting C++ / Community Organizer, Meetingcpp GmbH
Jens Weller has worked, since 2007, as a freelancer in C++, specialising in consulting, training and programming C++. He started with programming C++ back in 1998. He is an active member of the European C++ community and the founder of the Meeting C++ platform and conference. Jens... Read More →
avatar for Leor Zolman

Leor Zolman

Head Hacker, 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... Read More →


Tuesday September 9, 2014 8:30pm - 10:00pm PDT
Pascal

9:15pm PDT

Computer Book Publishing Today: The Seven Deadly Sins Revisited

Whether you're thinking about self-publishing, working with a traditional publisher, or exploring other options, deciding whether or not it makes sense to devote 2,000 hours of your life to writing a technical book is non-trivial question. Pearson Technology Group Executive Editor Gregory Doench will present an overview of the challenges and opportunities facing authors and publishers today. Starting with a snapshot of current market conditions, he will discuss critical success factors, as well as review mistakes and pitfalls to avoid. In addition, the seven questions you need to ask yourself before starting to write a book will also be explored.

He will be joined by Pearson colleagues Jennifer Bortel and Kim Boedigheimer for a Q&A session for anybody who would like to learn more about working with InformIT.com and Addison-Wesley.


Speakers

Tuesday September 9, 2014 9:15pm - 10:00pm PDT
Newton
 
Wednesday, September 10
 

8:00am PDT

Lightning Talks
Lightning talks - some 15 minutes, some 5 minutes. Come for bite size talks you'll want more of!

Moderators
avatar for Kate Gregory

Kate Gregory

Partner, Gregory Consulting
Kate Gregory is an author, sought-after conference speaker, trainer, Microsoft Most Valuable Professional (MVP), and partner at Gregory Consulting. Kate has been using C++ since before Microsoft had a C++ compiler. She is an early adopter of many software technologies and tools, and... Read More →

Speakers
avatar for Jonathan Caves

Jonathan Caves

Developer, Microsoft Corporation
C++, Hiking, Opera, Beer - pick any three
avatar for Brett Hall

Brett Hall

Principal Software Engineer, Wyatt Technology
Brett is the lead developer on Dynamics, a data collection and analysis package developed at Wyatt Technology(http://www.wyatt.com/) for use with their light scattering instruments. He holds a PhD in Physics from the University of California, Santa Barbara. Previous to joining Wyatt... Read More →
avatar for Michael VanLoon

Michael VanLoon

Principal Software Engineer, F5 Networks
I have been developing software for over 30 years. Yes, I started before I was born. I have been doing C++ for over 20 years, not very well at first, and slightly better now. I work at F5 Networks, and have worked at Disney, VMware, Yahoo!, and Microsoft, among many others... Read More →
avatar for Andy Webber

Andy Webber

Technologist, SIG


Wednesday September 10, 2014 8:00am - 8:45am PDT
Pascal

9:00am PDT

Founding C++ User Groups
Jens and Jon will share their experiences starting and working with local user groups and C++ conferences. They share some history and pointers on what has worked for them.

If you'd like to start or be active in a local tech group this session will be a good place to start.

Speakers
avatar for Jon Kalb

Jon Kalb

Conference Chair, Jon Kalb, Consulting
Jon Kalb is using his decades of software engineering experience and knowledge about C++ to make other people better software engineers. He trains experienced software engineers to be better programmers. He presents at and helps run technical conferences and local user groups.He is... Read More →
avatar for Jens Weller

Jens Weller

Meeting C++ / Community Organizer, Meetingcpp GmbH
Jens Weller has worked, since 2007, as a freelancer in C++, specialising in consulting, training and programming C++. He started with programming C++ back in 1998. He is an active member of the European C++ community and the founder of the Meeting C++ platform and conference. Jens... Read More →


Wednesday September 10, 2014 9:00am - 10:00am PDT
Descartes

9:00am PDT

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.

Speakers
avatar for Michael Caisse

Michael Caisse

Ciere Consulting
Michael Caisse has been crafting code in C++ for nearly 25-years. He is a regular speaker at various conferences and is passionate about teaching and training. Michael is the owner of Ciere Consulting which provides software consulting and contracting services, C++ training, and Project... Read More →


Wednesday September 10, 2014 9:00am - 10:00am PDT
Newton

9:00am PDT

The Philosophy of Google's C++ Code
The Google C++ Style Guide is a fairly popular guide for C++ coding practices, both at Google and externally, but some of its recommendations often seem dated and have created controversy and perceived tension with more modern C++ In this talk we will focus on the core philosophies underlying that guide, ranging from the common (be consistent) to the unusual (leave an explicit trace for the reader), and debunk the idea that Google's C++ is anything less than modern. We'll discuss how these core ideas inform contentious rules like "No non-const references" and "Don't use exceptions," and how the application of those rules has worked for us in practice, both as developers and reliability engineers (SREs).

Speakers
avatar for Titus Winters

Titus Winters

C++ Library Lead, Google
Titus Winters has spent the past 6 years working on Google's core C++ libraries. He's particularly interested in issues of large scale software engineer and codebase maintenance: how do we keep a codebase of over 100M lines of code consistent and flexible for the next decade? Along... Read More →


Wednesday September 10, 2014 9:00am - 10:00am PDT
Pascal

9:00am PDT

Your Help Wanted: Language Proposals in Flight
Want to collaborate in designing and implementing a new feature for C++17? Then this session is for YOU!

After reviewing the process by which a new C++ feature enters the language, we will look at one or two of the speaker's proposals that have received early favorable review from the standards committee, and that are awaiting sample implementation and/or formal wording. Attendee feedback will be solicited, and collaborators will be sought to help bring the proposal(s) to fruition.

Speakers
avatar for Walter E Brown

Walter E Brown

With broad experience in industry, academia, consulting, and research, Dr. Walter E. Brown has been a computer programmer for almost 60 years, and a C++ programmer for more than 40 years.He joined the C++ standards effort in 2000, and has since written circa 175 proposal papers. Among... Read More →


Wednesday September 10, 2014 9:00am - 10:00am PDT
Leibnitz

10:30am PDT

C++ on Mars: Incorporating C++ into Mars Rover Flight Software
One of the more challenging aspects of developing flight software (FSW) for NASA's Spirit and Opportunity Mars Exploration Rovers (MER) and Curiosity, the Mars Science Laboratory rover was how to enable them to drive themselves safely through unknown Martian terrain. When the MER mission was approved in the year 2000, JPL researchers had already demonstrated that capability on prototype rovers [1] using software written primarily in C++ on a VxWorks realtime O/S platform with shared memory. So when asked to incorporate that capability into the MER vehicles which also relied on a similar VxWorks realtime O/S, the team concluded it would be safest and most expedient to incorporate the already field-tested C++ software. But that presented a challenge, since at that point all rover FSW development was mandated to be done mainly in the C programming language.

In this talk we present some of the challenges we faced and solutions we found in deploying C++ onto the Mars Rovers. For example, dynamic allocation was initially precluded, but development of a specialized memory allocator (using the C++ "placement new" operator) enabled us to incorporate it safely into the flight system. We will discuss what aspects of C++ were incorporated, what simulation environments aided development, describe some of the tools used to validate system behavior, and explain how our success using C++ for the implementation of autonomous navigation on MER has influenced future FSW efforts.

[1] Jeffrey Biesiadecki, Mark W. Maimone, and Jack Morrison., "The Athena SDM Rover: A Testbed for Mars Rover Mobility," June 2001 iSAIRAS conference proceedings, Montreal, Canada., june 2001.

Speakers
MM

Mark Maimone

Caltech/JPL
Mark Maimone is a Navigation and Machine Vision researcher at JPL.Mark designed and developed the autonomous vision and navigation software that lets the MER and MSL Mars Rovers drive themselves safely, and wrote ground software that automated the analysis of Mobility and arm operations... Read More →


Wednesday September 10, 2014 10:30am - 12:00pm PDT
Fermat

2:00pm PDT

Boost.Asio and Boost.Serialization: Designs for Object Transmission, Part I
Network programming in C++ frequently requires programmers to find a way to express C++ objects as a sequence of bytes which can be transmitted and reconstructed on another network endpoint. In the case of simpler objects (such as most PODs), object serialization is trivial to perform.

For more complex C++ constructs (polymorphic objects, etc), the approach to serialization is more challenging. This talk will discuss how two powerful Boost libraries, Asio and Serialization, can be used to craft C++ networking code that can handle a vast array of uses cases. A prototype for a message passing framework will be developed throughout the talk.

Programmers familiar with or interested in network programming (but perhaps unfamiliar with Boost.Asio, Boost.Serialization or both) are the intended audience. No prior knowledge of Boost.Asio and Boost.Serialization will be assumed, and alternatives to both libraries will be discussed.

Speakers
avatar for Bryce Adelstein Lelbach

Bryce Adelstein Lelbach

CUDA C++ Core Libraries Lead, NVIDIA


Wednesday September 10, 2014 2:00pm - 3:00pm PDT
Leibnitz

2:00pm PDT

How to call C libraries from C++
Many libraries used by C++ programs present C-like interfaces that are compatible with C++, but are not directly compatible with good C++ style. Using these libraries directly is error-prone in many of the ways C++ is designed to avoid. It is better to pass through an interface layer that presents good C++ style on the C++ side.

But writing such an interface layer is daunting. Completing it may be an enormous task, as are documenting it and maintaining it as the underlying library evolves. To address this problem, I will present a style of writing such interfaces that can be used incrementally as needed, and that reduces documentation cost. I will also present a small library that supports the writing of interface layers in this style.

Speakers
avatar for Lisa Lippincott

Lisa Lippincott

Software Architect, Tanium
Lisa Lippincott designed the software architectures of Tanium and BigFix, two systems for managing large fleets of computers. She's also a language nerd, and has contributed to arcane parts of the C++ standard. In her spare time, she studies mathematical logic, and wants to make computer-checked... Read More →


Wednesday September 10, 2014 2:00pm - 3:00pm PDT
Euler

2:00pm PDT

Making Allocators Work, Part I
Memory is an important property for every object, as whatever resources it manages, it must occupy some memory. THe ability to customize memory allocation is important for every C++ program that cares about performance, debug ability and support.

The original C++ standard supported an allocator parameter for every container, yet this feature was widely derided or ignored, as it was underspecified to the point it could not portably be used. C++11 makes significant changes to the allocator model, that simply its use while making it more powerful.

The Library Fundamentals TS goes further, allowing allocators' type to be supplied at runtime, rather than compile type, using classic object oriented polymorphism - yet building on the infrastructure laid down in C++11.

This material should be of interest to both library authors and consumers, although clearly there are more details for the implementers to absorb. It also includes an interesting case study in C++11 compile time reflection, as required to implement the new 'allocator_traits' facility.

Speakers
avatar for Alisdair Meredith

Alisdair Meredith

Senior Developer, BloombergLP
Alisdair Meredith is a software developer at BloombergLP in New York, and the C++ Standard Committee Library Working Group chair.He has been an active member of the C++ committee for just over a decade, and by a lucky co-incidence his first meeting was the kick-off meeting for the... Read More →


Wednesday September 10, 2014 2:00pm - 3:00pm PDT
Descartes

2:00pm PDT

Making C++ Code Beautiful
Ask a non-C++ developer what they think of C++ and they'll give the language plenty of compliments: powerful, fast, flexible, and "the language for smart people". But along with that you are likely to hear ugly, complicated, hard to read, and "the language for smart people". Is it possible to write beautiful C++? Not arcanely elegant or wickedly compact, but readable, clear, expressive - beautiful! We say it is, and we want to show you how.

In this session, you'll see how to turn pages of "comic book characters swearing" into code you'll be proud to call your own. By making your code express your intent, using the power of new language and library functionality, and leaving hard-to-read constructs out of your vocabulary, you can give your code a makeover that will stand the test of time.

Speakers
avatar for Kate Gregory

Kate Gregory

Partner, Gregory Consulting
Kate Gregory is an author, sought-after conference speaker, trainer, Microsoft Most Valuable Professional (MVP), and partner at Gregory Consulting. Kate has been using C++ since before Microsoft had a C++ compiler. She is an early adopter of many software technologies and tools, and... Read More →
avatar for James McNellis

James McNellis

Principal Software Engineer, Microsoft Corporation
James McNellis is a Principal Software Engineer at Microsoft where he works on the Time Travel Debugging (TTD) reverse debugging toolkit. Prior to joining the Windows Debuggers team in 2016, he worked on the Visual C++ team and was responsible for the Microsoft C Runtime (CRT) and... Read More →


Wednesday September 10, 2014 2:00pm - 3:00pm PDT
Pascal

2:00pm PDT

Meta Techniques: Heterogeneous Polymorphism and Fast Prototyping at Facebook
As data driven systems evolve there's an ever growing demand for bringing new functionality into existing systems in an efficient, maintainable and least intrusive manner. When implementing features with different semantics or interfaces, virtual inheritance requires a compromise between design simplicity and performance. This implies a need for new techniques to achieve heterogeneous polymorphism efficiently. With C++11 and 14, type lists, type maps and variants can now be trivially implemented by the initiated. Facebook moves fast so we quickly adopted the new standards to further explore the capabilities of the type system. This talk demonstrates some meta-programming techniques like reflection and compile-time built structures to achieve heterogeneous polymorphism and fast prototyping.

Speakers
avatar for Marcelo  Juchem

Marcelo Juchem

Software Engineer, Facebook
Marcelo Juchem is a Software Engineer at Facebook, working in stream processing and spam fighting systems. Fascinated by template meta-programming, he sees the C++ compiler as a powerful type juggler and programmable code generator. Such capabilities allow the combinatoric composition... Read More →


Wednesday September 10, 2014 2:00pm - 3:00pm PDT
Newton

3:15pm PDT

Boost.Asio and Boost.Serialization: Designs for Object Transmission, Part II
Network programming in C++ frequently requires programmers to find a way to express C++ objects as a sequence of bytes which can be transmitted and reconstructed on another network endpoint. In the case of simpler objects (such as most PODs), object serialization is trivial to perform.

For more complex C++ constructs (polymorphic objects, etc), the approach to serialization is more challenging. This talk will discuss how two powerful Boost libraries, Asio and Serialization, can be used to craft C++ networking code that can handle a vast array of uses cases. A prototype for a message passing framework will be developed throughout the talk.

Programmers familiar with or interested in network programming (but perhaps unfamiliar with Boost.Asio, Boost.Serialization or both) are the intended audience. No prior knowledge of Boost.Asio and Boost.Serialization will be assumed, and alternatives to both libraries will be discussed.

Speakers
avatar for Bryce Adelstein Lelbach

Bryce Adelstein Lelbach

CUDA C++ Core Libraries Lead, NVIDIA


Wednesday September 10, 2014 3:15pm - 4:15pm PDT
Leibnitz

3:15pm PDT

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.

Speakers
avatar for Peter Sommerlad

Peter Sommerlad

founder, Better Software: Consulting, Training, Reviews
Peter Sommerlad was director of IFS Institute for Software at FHO/HSR Rapperswil, Switzerland. Peter is co-author of the books POSA Vol.1 and Security Patterns and contributed to "97 things every programmer should know". His goal is to make software simpler and safer by Decremental... Read More →


Wednesday September 10, 2014 3:15pm - 4:15pm PDT
Pascal

3:15pm PDT

Making Allocators Work, Part II
Memory is an important property for every object, as whatever resources it manages, it must occupy some memory. THe ability to customize memory allocation is important for every C++ program that cares about performance, debug ability and support.

The original C++ standard supported an allocator parameter for every container, yet this feature was widely derided or ignored, as it was underspecified to the point it could not portably be used. C++11 makes significant changes to the allocator model, that simply its use while making it more powerful.

The Library Fundamentals TS goes further, allowing allocators' type to be supplied at runtime, rather than compile type, using classic object oriented polymorphism - yet building on the infrastructure laid down in C++11.

This material should be of interest to both library authors and consumers, although clearly there are more details for the implementers to absorb. It also includes an interesting case study in C++11 compile time reflection, as required to implement the new 'allocator_traits' facility.

Speakers
avatar for Alisdair Meredith

Alisdair Meredith

Senior Developer, BloombergLP
Alisdair Meredith is a software developer at BloombergLP in New York, and the C++ Standard Committee Library Working Group chair.He has been an active member of the C++ committee for just over a decade, and by a lucky co-incidence his first meeting was the kick-off meeting for the... Read More →


Wednesday September 10, 2014 3:15pm - 4:15pm PDT
Descartes

3:15pm PDT

Multiplatform C++
C++ is a multiplatform language, yet many difficulties arise when you want the same code to compile properly and function identically on different platforms. If you put aside the obvious system programming related obstacles, and the differences you might have between compilers (especially when it comes to supporting C++11 and C++14), you come to the surprising conclusion that what is truly hard is all the "little things" you didn't anticipate.

This talk will be about our experience with our own software, quasardb, that runs every day on three OS (FreeBSD, Linux and Windows), is built with three compilers (clang, gcc and msvc) and supports two architectures (IA32 and AMD64).

How to build natively the same software on Windows and Linux, provided that they have radically different tool chains? How to work around the subtle, but existing differences between Linux and FreeBSD? How do you solve cross-tools, cross-platform file editing problems? How to prevent your maintenance costs from increasing dramatically?

Speakers
avatar for Edouard Alligand

Edouard Alligand

CEO, quasardb
Edouard has more than thirteen years of professional experience in software engineering. After years hacking the kernel of various operating systems, Edouard founded Bureau 14, the home of the hyperscalable database quasardb. Combining an excellent knowledge of low level programming... Read More →


Wednesday September 10, 2014 3:15pm - 4:15pm PDT
Gauss

3:15pm PDT

Parallelizing the Standard Algorithms Library
Until recently, C++ programmers building parallel programs found little support for parallelism in the standard toolbox. That's changing with the technical specification on Extensions for Parallelism in C++. This talk will explore how programmers can build portable parallel programs from high-level parallel algorithms which can execute on CPU threads, vector units, and even GPUs.

Speakers
JH

Jared Hoberock

Research Scientist, NVIDIA
Jared Hoberock is a research scientist at NVIDIA where he develops the Thrust parallel algorithms library and edits the Technical Specification on Extensions for Parallelism for C++.Website: http://github.com/jaredhoberock... Read More →


Wednesday September 10, 2014 3:15pm - 4:15pm PDT
Euler

3:15pm PDT

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.

Speakers
avatar for Lawrence Crowl

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.


Wednesday September 10, 2014 3:15pm - 4:15pm PDT
Newton

4:45pm PDT

C++ Memory Model Meets High-Update-Rate Data Structures
Highly performant and scalable techniques such as RCU and hazard pointers have been quite successful in read-mostly situations. However, there do come times when updates are necessary. It would be convenient if there was some general update-side counterpart to these techniques, but sadly there is not yet any such thing. Nevertheless, there are a number of specialized update-side techniques whose performance and scalability rival those of RCU and hazard pointers. This talk will discuss several of them, one of which is a solution to a challenge to the speaker at the 2014 Issaquah C++ standards committee meeting. This talk will also provide an outlook into the future of low-overhead scalable updates.

Speakers
avatar for Paul McKenney

Paul McKenney

Distinguished Engineer, IBM Linux Technology Center, Beaverton
Paul E. McKenney is a Distinguished Engineer with the IBM Linux Technology Center, where he maintains the RCU implementation within the Linux kernel. He has been coding for four decades, more than half of that on parallel hardware. His prior lives include the DYNIX/ptx kernel at Sequent... Read More →


Wednesday September 10, 2014 4:45pm - 5:45pm PDT
Descartes

4:45pm PDT

Costless Software Abstractions for Parallel Architectures
Performing large, intensive or non-trivial computing on array like data structures is one of the most common task in scientific computing, video game development and other fields. This matter of fact is backed up by the large number of tools, languages and libraries to perform such tasks. If we restrict ourselves to C++ based solutions, more than a dozen such libraries exists from BLAS/LAPACK C++ binding to template meta-programming based Blitz++ or Eigen. If all of these libraries provide good performance or good abstraction, none of them seems to fit the need of so many different user types.

Moreover, as parallel system complexity grows, the need to maintain all those components quickly become unwieldy. This talk explores various software design techniques - like Generative Programming, MetaProgramming and Generic Programming - and their application to the implementation of a parallel computing librariy in such a way that:

- abstraction and expressiveness are maximized - cost over efficiency is minimized

We'll skim over various applications and see how they can benefit from such tools. We will conclude by discussing what lessons were learnt from this kind of implementation and how those lessons can translate into new directions for the language itself.

Speakers
avatar for Joel Falcou

Joel Falcou

assistant professor, LRI - Université paris 11
Joel Falcou is an assistant professor at the University Paris-Sud andresearcher at the Laboratoire de Recherche d'Informatique in Orsay, France. His researches focus on studying generative programming idioms and techniques to design tools for parallel software development. The two... Read More →


Wednesday September 10, 2014 4:45pm - 5:45pm PDT
Euler

4:45pm PDT

Hourglass Interfaces for C++ APIs
C++ provides a much richer set of abstractions than C. Classes, templates, overloading, and other core C++ features can be leveraged for more readable syntax, better compile time typechecking, more open ended genericity and improved modularity. On the flip side, C89 still boasts some advantages over C++, especially when viewed through a pragmatic lens. C ABIs on many platforms have been stable for decades, practically every language supports binding to C code through foreign function interfaces, and including nearly any C89 header has a negligible effect on compile time on modern computers.

The Hourglass pattern provides the best of both worlds. It's a way to structure libraries that retains the pragmatic benefits of C89 while still providing C++'s richness both at an interface and implementation level. It makes providing bindings from other languages to C++ libraries easier, and insulates from ABI issues such as incompatibilities between debug and release variants of runtimes. This talk provides an overview of the pattern, teaches practical techniques for its implementation using C++98 and C++11, and shares experience from using the pattern in real world projects.

Speakers
SD

Stefanus Du Toit

Software Lead, Thalmic Labs
Stefanus Du Toit is a Software Lead at Thalmic Labs, where he enables amazing gestural experiences using the Myo armband. Stefanus previously worked as a Software Architect and Software Development Manager at Intel Corporation, and co-founded RapidMind (acquired by Intel), a startup... Read More →


Wednesday September 10, 2014 4:45pm - 5:45pm PDT
Leibnitz

4:45pm PDT

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.

Speakers
avatar for Hyrum Wright

Hyrum Wright

Software Engineer, Google
@hyrumwright">Hyrum Wright hates C++ less than the rest of the programming languages he's worked with, and works on large-scale change infrastructure at Google. He writes programs to rewrite other programs, and will eventually put himself out of a job. In a former life, he was an... Read More →


Wednesday September 10, 2014 4:45pm - 5:45pm PDT
Pascal

4:45pm PDT

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.

Speakers
MH

Matt Hargett

Matt's 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... Read More →


Wednesday September 10, 2014 4:45pm - 5:45pm PDT
Newton

8:00pm PDT

The perils of strict-aliasing

Followon from the lightning talk, contributions from attendees welcome.

I think that a lot of intermediate C++ programmers may not be aware of the issue and there is a lot of outdated information online. 

My name is Andy Webber and I work at SIG which is a financial trading company near Philadelphia, PA.  I started learning C++ in high school and I’ve been hooked ever since.  I especially enjoy attempting to understand the full stack from the hardware up through high-level software.  Understanding strict aliasing has been my crusade of late.


Speakers
avatar for Andy Webber

Andy Webber

Technologist, SIG


Wednesday September 10, 2014 8:00pm - 8:45pm PDT
Leibnitz

8:30pm PDT

Real world reversible debugging for C/C++ developers on Linux

Anyone who's written in C++ or other compiled languages will have had to fix bugs. I'll be describing and demonstrating a debugging tool for Linux called UndoDB that will appear almost miraculous - it allows programs to be run backwards as well as forwards, allowing the root causes of bugs to be found with astonishing ease. UndoDB uses advanced optimization techniques to allow practical debugging of even very large and CPU-intensive programs, with typical slow-down of only 2-4x compared to 50,000x for gdb's process record.

In the Open Content session I'll be expanding on the details presented in the lightning talk to include a more in-depth look at the UndoDB technology and how it works, and will present a series of demos working with challenging real world examples. There will be time for an interactive Q and A session at the end of the talk.


Speakers
avatar for Julian Smith

Julian Smith

Software Architect, Undo Software
Julian Smith is co-founder and Software Architect at Undo Software. He holds a physics degree from Oxford University and a Ph.D. in cognitive psychology from the University of Edinburgh. Along with co-founder and CEO Greg Law, Julian designed and developed Undo's patented record-and-rewind... Read More →


Wednesday September 10, 2014 8:30pm - 9:15pm PDT
Newton

8:30pm PDT

The JUCE framework - creative C++ coding in large-scale applications

JUCE (Jules' Utility Class Extensions) is an all­encompassing C++ class library for developing cross­platform software. It contains a number of classes allowing to create standard applications, and is particularly well­suited for building audio and real­time applications. In addition to the classes, JUCE offers support for linking and managing libraries and dependencies with dedicated software, the Introjucer. The Introjucer creates templates for most popular compiler environments that make the compiling toolchain simpler and faster.  

Come and learn about JUCE: What is it? Who uses it? What do they use it for? How does it work? What exciting things are planned for its future? We'll present a short talk about a few of the library's noteworthy features, and invite the audience to join in with questions and opinions. We hope this session will be interesting for people who've never heard of JUCE, and also for those who use it every day!


Speakers
avatar for Julian Storer

Julian Storer

CEO, Sound Stacks Ltd
Jules is a developer and founder who has created several audio technologies and companies in his 20+ year career. He's best known for creating JUCE and Tracktion, and is currently CEO of Sound Stacks Ltd.


Wednesday September 10, 2014 8:30pm - 9:15pm PDT
Descartes

8:30pm PDT

Grill the Committee
What would you like to know about how the C++ Standard happens?

The panel is made up of members of the C++ Standards Committee and the audience asks what's on your mind.

Moderators
avatar for Jon Kalb

Jon Kalb

Conference Chair, Jon Kalb, Consulting
Jon Kalb is using his decades of software engineering experience and knowledge about C++ to make other people better software engineers. He trains experienced software engineers to be better programmers. He presents at and helps run technical conferences and local user groups.He is... Read More →

Speakers
avatar for Walter E Brown

Walter E Brown

With broad experience in industry, academia, consulting, and research, Dr. Walter E. Brown has been a computer programmer for almost 60 years, and a C++ programmer for more than 40 years.He joined the C++ standards effort in 2000, and has since written circa 175 proposal papers. Among... Read More →
avatar for Chandler Carruth

Chandler Carruth

Software Engineer, Google
Chandler Carruth is the technical lead for Google's programming languages and software foundations. He has worked extensively on the C++ programming language and the Clang and LLVM compiler infrastructure. Previously, he worked on several pieces of Google's distributed build system... Read More →
avatar for Pablo Halpern

Pablo Halpern

Software Engineer, Intel Corp.
Pablo Halpern has been programming in C++ since 1989 and has been a member of the C++ Standards Committee since 2007. He is currently an enginneer at Intel Corp., where he works on high-performance computing. As the former chairman of the Parallel Programming Models Working Group... Read More →
avatar for Howard Hinnant

Howard Hinnant

Senior Software Engineer, Ripple
Lead author of several C++11 features including: move semantics, unique_ptr and . Lead author on three open source projects: A std::lib implementation: http://libcxx.llvm.org An Itanium ABI implementation: http://libcxxabi.llvm.org A date/time/timezone library: https://git... Read More →
avatar for John Lakos

John Lakos

Software Engineer, Bloomberg
John Lakos, author of Large-Scale C++ Software Design [Addison-Wesley, 1996], serves at Bloomberg LP in New York City as a senior architect and mentor for C++ software development worldwide.  He is also an active voting member of the C++ Standards Committee’s Evolution Working... Read More →
avatar for Stephan T. Lavavej

Stephan T. Lavavej

Programmer-Archaeologist, Microsoft
Stephan T. Lavavej is a Principal Software Engineer at Microsoft, maintaining Visual C++'s implementation of the C++ Standard Library since 2007. He also designed a couple of C++14 features: make_unique and the transparent operator functors. He likes his initials (which people can... Read More →
avatar for Nevin Liber

Nevin Liber

Senior Software Engineer, C++ Committee Member & Chicago meeting host, DRW Trading Group
Been doing C++ since 1988. Committee member and host of the 2013 Chicago C++ Standards Meeting.
avatar for Alisdair Meredith

Alisdair Meredith

Senior Developer, BloombergLP
Alisdair Meredith is a software developer at BloombergLP in New York, and the C++ Standard Committee Library Working Group chair.He has been an active member of the C++ committee for just over a decade, and by a lucky co-incidence his first meeting was the kick-off meeting for the... Read More →
avatar for Herb Sutter

Herb Sutter

Software architect, Microsoft
Herb is an author, designer of several Standard C++ features, and chair of the ISO C++ committee and the Standard C++ Foundation. His current interest is simplifying C++.
SD

Stefanus Du Toit

Software Lead, Thalmic Labs
Stefanus Du Toit is a Software Lead at Thalmic Labs, where he enables amazing gestural experiences using the Myo armband. Stefanus previously worked as a Software Architect and Software Development Manager at Intel Corporation, and co-founded RapidMind (acquired by Intel), a startup... Read More →
MW

Michael Wong

OpenMP CEO/Architect, IBM/OpenMP
You can talk to me about anything including C++ (even C and that language that shall remain nameless but starts with F), Transactional Memory, Parallel Programming, OpenMP, astrophysics (where my degree came from), tennis (still trying to see if I can play for a living), travel, and... Read More →

Staff

Wednesday September 10, 2014 8:30pm - 10:00pm PDT
Pascal
 
Thursday, September 11
 

8:00am PDT

Lightning Talks
Lightning talks - some 15 minutes, some 5 minutes. Come for bite size talks you'll want more of!

Speakers
avatar for Roland Bock

Roland Bock

Principal Software Engineer, PPRO Financial Ltd
From my days at the university, I hold a PHD in physics (although that was in the previous century and seems like a different life by now). Ever since then I have been developing software and/or managing engineering teams. In 2008, I started to learn C++ because I could not believe... Read More →
avatar for Kevin Carpenter

Kevin Carpenter

Lead Project Engineer, E.P.X.
Previously I developed on Windows with MFC building applications that perform financial simulations. Now I get to see how fast I can make credit card transactions complete using Linux and Oracle. For hobbies I enjoy working with micro-controllers interfaced to the real world. Both... Read More →
avatar for Boris Kolpackov

Boris Kolpackov

Chief Hacking Officer, Code Synthesis
Boris Kolpackov is a founder and CHO (Chief Hacking Officer) at Code Synthesis, a company focusing on the development of open-source tools and libraries for C++. For the past 10 years Boris has been working on solving interesting problems in the context of C++ using domain-specific... Read More →
KN

Karl Niu

Program Manager, Microsoft Visual C++
I work on Microsoft's C++ language conformance efforts and IntelliSense in Visual Studio. I am also interested in type theory and language design.
avatar for Ken Smith

Ken Smith

Production Engineer, Facebook
I


Thursday September 11, 2014 8:00am - 8:45am PDT
Pascal

9:00am PDT

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.

Speakers
JL

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... Read More →


Thursday September 11, 2014 9:00am - 10:00am PDT
Euler

9:00am PDT

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.

Speakers
CM

Cheinan Marks

Swarm64
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... Read More →


Thursday September 11, 2014 9:00am - 10:00am PDT
Descartes

9:00am PDT

Quick game development with C++11/C++14
Modern C++ has made game development a much more pleasurable experience. Features such as smart pointers and variadic templates are invaluable in speeding up the development process and in making the code cleaner and more robust. New easy-to-use multimedia libraries such as SFML, SDL and Cinder make dealing with graphics, sounds and input very easy, and work well with modern code principles. This talk guides the audience through the creation of an Arkanoid/Breakout clone in under 200 lines of code, using C++11/C++14 features and idioms. Chronologically sequential code segments, compiled and executed one by one, will show the attendees how a game is created from scratch, slowly becoming a playable product, step by step. The end result will be a small game, completely written in modern C++ code. Topics covered will range from basic graphics programming to entity management and collision detection/response.

Speakers
avatar for Vittorio Romeo

Vittorio Romeo

Software Engineer, Bloomberg
Vittorio Romeo (B.Sc. Computer Science) has been a Software Engineer at Bloomberg for more than 3 years, working on mission-critical company C++ infrastructure and providing Modern C++ training to hundreds of fellow employees.He began programming around the age of 8 and quickly became... Read More →


Thursday September 11, 2014 9:00am - 10:00am PDT
Leibnitz

9:00am PDT

sqlpp11, An SQL Library Worthy Of Modern C++
SQL and C++ are both strongly typed languages. They should play well together. But most C/C++ interfaces to SQL databases are string based. They force the developer to effectively hide the SQL types, names and expression structures from the compiler. This defers the validation of SQL expressions until runtime, i.e. unit tests or even production. And the strings might even be vendor specific, because different databases expect different dialects of SQL in those strings.

That feels wrong. Modern C++ can do better.

This talk gives an introduction to sqlpp11, a templated embedded domain specific language for SQL in C++. It allows you to build type-safe SQL expressions with type-safe results, all of which can be verified at compile time, long before your code enters unit tests or even production.

In addition to its obvious use with relational databases, sqlpp11 can also serve as an SQL frontend for all kinds of data sources: Since sqlpp11 offers complete SQL expression trees even at compile time, it isn't hard to apply SQL expressions to std::vector or std::map for instance, or streams, or XML, or JSON, you name it. With your help, sqlpp11 could become for C++ what LINQ is for C#.

Speakers
avatar for Roland Bock

Roland Bock

Principal Software Engineer, PPRO Financial Ltd
From my days at the university, I hold a PHD in physics (although that was in the previous century and seems like a different life by now). Ever since then I have been developing software and/or managing engineering teams. In 2008, I started to learn C++ because I could not believe... Read More →


Thursday September 11, 2014 9:00am - 10:00am PDT
Gauss

9:00am PDT

Using C++ to Connect to Web Services
Many languages have great support for connecting to web services. Trying to connect C++ applications to the cloud is difficult. The C++ standard library doesn't contain anything for networking (yet), and with the proliferation of devices, being able to do so in a cross platform manner is even more appealing. Often requiring use of multiple different styled, and potentially low level, libraries where asynchrony wasn't designed from the start. Or by building your own abstract layers over platform and operating system APIs, all of which distract from focusing on the core logic of your application.

The C++ REST SDK makes connecting to services easier by creating APIs focused on simplicity and asynchrony, built using tasks from the Parallel Patterns Library. This is done by putting together a series of cross platform libraries for working with HTTP, WebSockets, JSON, URIs, and OAuth. In many cases building on top of other popular open source libraries like Boost, OpenSSL, and WebSocket++. This talk will take a practical approach looking at what is involved in connecting to some of the common popular services from C++, using the C++ REST SDK and other libraries. Several tutorial style example and demos will be done using C++ code that runs on all the major platforms.

Speakers
SG

Steve Gates

Microsoft
Steve Gates is a senior engineer on the Visual C++ team at Microsoft. Joining Microsoft in 2007, he's worked on various runtimes and libraries for parallel and asynchronous programming, including the Parallel Patterns Library. For the past couple of years he's been focusing on improving... Read More →


Thursday September 11, 2014 9:00am - 10:00am PDT
Newton

9:00am PDT

Where did my performance go? (Scaling Visualization in concurrent C++ programs)
High performance is one of the main reasons programmers choose C++ for their applications. If you are writing in C++, odds are you need every bit of computing power your hardware can provide. Today, this means writing multi-threaded programs to effectively utilize the multiple CPU cores that the hardware manufacturers keep adding. Everyone knows that writing multi-threaded programs is hard. Writing correct multi-threaded programs is even harder. Only after spending countless hours debugging race conditions and weird intermittent bugs do many programmers learn that writing efficient multi-threaded programs is harder yet. Have you ever wanted to see what are all your threads doing when they should be busy computing? This talk will show you how.

We begin by studying several techniques necessary for collecting large amounts of data from the running program very efficiently, with little overhead and minimal disruption to the program itself. We will cover efficient thread-safe memory management and efficient thread-safe disk I/O. Along the way we dabble in lock-free programming just enough to meet our needs, lest the subject will spiral into an hour-long talk of its own. With all these techniques put together, we can collect information about what each thread is doing, which threads are computing and what exactly, and which threads are slacking off waiting on locks, and do it at the time scale of tens of microseconds if necessary. Then we process the collected data and create a timeline that shows exactly what the program was doing at every moment in time.

Speakers
avatar for Fedor Pikus

Fedor Pikus

Chief Scientist, Siemens
Fedor G Pikus is a Chief Engineering Scientist in the Design to Silicon division of Mentor Graphics Corp (Siemens business). His earlier positions included a Senior Software Engineer at Google and a Chief Software Architect for Calibre PERC, LVS, DFM at Mentor Graphics. He joined... Read More →


Thursday September 11, 2014 9:00am - 10:00am PDT
Pascal

10:30am PDT

Data-Oriented Design and C++
The transformation of data is the only purpose of any program. Common approaches in C++ which are antithetical to this goal will be presented in the context of a performance-critical domain (console game development). Additionally, limitations inherent in any C++ compiler and how that affects the practical use of the language when transforming that data will be demonstrated.

Speakers
avatar for Mike Acton

Mike Acton

Engine Director, Insomniac Games


Thursday September 11, 2014 10:30am - 12:00pm PDT
Fermat

12:00pm PDT

Gamers/Interactive High Performance real time Bof

Are you interested in improving C++ to support Gaming, real time/interactive requirements, high performance/low latency or GPU/Accelerator graphics in C++? Meet Michael Wong at the top of the escaltor on the 2nd Floor and we will head to a private room at the Wild Ginger next door to have an informal BoF to discuss how I can represent this important C++ interest group. 


Speakers
MW

Michael Wong

OpenMP CEO/Architect, IBM/OpenMP
You can talk to me about anything including C++ (even C and that language that shall remain nameless but starts with F), Transactional Memory, Parallel Programming, OpenMP, astrophysics (where my degree came from), tennis (still trying to see if I can play for a living), travel, and... Read More →


Thursday September 11, 2014 12:00pm - 1:45pm PDT
Meydenbauer Center 11100 NE 6th St., Bellevue, WA 98004

2:00pm PDT

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.

Speakers
MH

Matt Hargett

Matt's 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... Read More →


Thursday September 11, 2014 2:00pm - 3:00pm PDT
Gauss

2:00pm PDT

Creative Coding with C++
Realtime graphics, computer vision, hardware hacking, and audio synthesis are just a few of the crafts that fall under the banner term of "creative coding". In this session we'll talk about some of the creative projects putting C++ in places you might not expect it - everywhere from the Smithsonian's permanent design collection to robotic Coca-Cola dispensers on California beaches. We'll look at a wide spectrum of projects ranging from those of the "maker" community to commercial work from full-time professionals earning their livings in advertising and design agencies. And finally we'll take a look at how you can use the C++ you already know to jumpstart your own creative coding projects using the open source toolkit Cinder.

Speakers
AB

Andrew Bell

Technology Research Fellow, The Barbarian Group
Andrew Bell is a Technology Research Fellow working at the creative agency The Barbarian Group. He maintains Cinder, a C++ open source creative coding framework, as his full-time job. When he's not coding on Cinder he can be found doing everything from writing emails about Cinder... Read More →


Thursday September 11, 2014 2:00pm - 3:00pm PDT
Newton

2:00pm PDT

Embarcadero Case Study: Bringing CLANG/LLVM To Windows
CLANG/LLVM delivers a highly conforming C++ compiler and architecture for targeting multiple CPUs, and, as such, has seen success in iOS and other operating systems. Embarcadero has successfully delivered the first commercial compiler for Windows based on CLANG/LLVM. This session describes the benefits of CLANG/LLVM as well as the challenges in bringing it to the Windows operating system. Particular emphasis is placed on the managing the changes in CLANG as well as the additional features added to enable Windows development.

Speakers
J

JT

Director of Developer Products, Embarcadero Technologies
John "JT" Thomas, Director of Product Management at Embarcadero Technologies, has more than 15 years of product management and product development experience including hands-on experience with the early versions of Delphi and C++Builder at Borland Software. Previously, JT held product... Read More →


Thursday September 11, 2014 2:00pm - 3:00pm PDT
Euler

2:00pm PDT

Lock-free by Example
Dive into and follow along making a lock-free queue.

In particular, a multi-producer, multi-consumer, growing, shrinking, mostly contiguous, lock-free circular queue.

With this single (complicated!) example, we will come across, and attempt to solve, many of the typical problems found in lockfree programming, and delve into the pros and cons of various solutions to those problems.

Speakers
avatar for Tony Van Eerd

Tony Van Eerd

Ninja/Jedi/Tony, Christie Digital
Tony has been coding for well over 25 years, and maybe coding well for some of that. Lots of pixel++, UX, threading, etc. Previously at Inscriber, Adobe, BlackBerry, he now enables Painting with Light at Christie. He is on the C++ Committee. He is a Ninja and a Jedi.Follow @tvaneerd... Read More →


Thursday September 11, 2014 2:00pm - 3:00pm PDT
Descartes

2:00pm PDT

Metaprogramming with Boost.Hana: Unifying Boost.Fusion and Boost.MPL
Template metaprogramming sucks. No, seriously; you might like the imposed purely functional paradigm, but not the templates themselves. While C++11 has made our life easier, even simple metaprograms are often hard to write, impossible to maintain and slow to compile; we need better abstractions. In this talk, I will present Boost.Hana[1], an experimental C++14 library for heterogeneous computation. The library takes metaprogramming to a whole new level of expressiveness by unifying the well-known Boost.MPL and Boost.Fusion libraries under a single generic, purely functional interface. The library incorporates some of the most recent advances in C++ metaprogramming; I will give an overview of the most interesting implementation techniques used internally. Finally, I will show concrete ways to use the library so you, as a developer, can write less template black magic, increase your productivity and spend less time in coffee breaks waiting for the compiler (sorry).

[1]: https://github.com/ldionne/hana

Speakers
avatar for Louis Dionne

Louis Dionne

C++ Standard Library Engineer, Apple
Louis is a math and computer science enthusiast who got swallowed by the C++ monster when he was a naive, unsuspecting student. He now works for Apple, where he is responsible for libc++, the Standard Library shipped with LLVM/Clang. He is a member of the C++ Standards Committee and... Read More →


Thursday September 11, 2014 2:00pm - 3:00pm PDT
Leibnitz

2:00pm PDT

STL Features And Implementation Techniques
This session will cover selected STL features from C++11/14, both explaining how to use them and delving into implementation techniques that could be useful outside the STL.

I will avoid covering popular features you're already using (e.g. make_shared, make_unique) and obscure features of limited use (e.g. forward_list). The focus will be on useful but underappreciated features like dual-range algorithms, minimal allocators, and heterogeneous associative lookup.

Speakers
avatar for Stephan T. Lavavej

Stephan T. Lavavej

Programmer-Archaeologist, Microsoft
Stephan T. Lavavej is a Principal Software Engineer at Microsoft, maintaining Visual C++'s implementation of the C++ Standard Library since 2007. He also designed a couple of C++14 features: make_unique and the transparent operator functors. He likes his initials (which people can... Read More →


Thursday September 11, 2014 2:00pm - 3:00pm PDT
Pascal

3:15pm PDT

Async sequences and algorithms to compose them
All have heard and some have wept over all the many ways to express sequences (eg. iterator, range, container) and the algorithms to compose them (eg. filter, transform, merge, zip) in C++. I will describe one more sequence that must have a representation and an algorithm library - A sequence of values that will arrive over time.

Speakers
KS

Kirk Shoop

Dev, Microsoft Open Technologies, Inc.
Hi! I have a family. I like food. I need sun (My need for sun must be why I live in Seattle). I like C++. I don't like threads (My aversion to using threads must be why I spend all my free time working on a library that composes sequences on many threads). I work at Microsoft Open... Read More →


Thursday September 11, 2014 3:15pm - 4:15pm PDT
Euler

3:15pm PDT

C++ in Huge AAA Games
Video games like Assassin's Creed or Rainbow Six are among the biggest code bases with a single static linking. Iteration-time is critical to develop a great game and keeping a complete compilation-time of a few minutes is a constant challenge. This talk will explain the C++ usage reality at Ubisoft Montreal for huge projects. Ideas will be shared regarding performance, debugging and iteration time.

Speakers
NF

Nicolas Fleury

Architecte Technique, Ubisoft Montreal
Nicolas Fleury has been in video game industry for over 10 years, working as a Technical Architect on projects like Prince of Persia and currently on Rainbow Six: Siege. Before working in the game industry, he worked in computer assisted surgery, speech recognition and telecoms.


Thursday September 11, 2014 3:15pm - 4:15pm PDT
Descartes

3:15pm PDT

Mo' Hustle Mo' Problems
Reasonably-written C++ code will be naturally fast. This is to C++'s excellent low-penalty abstractions and a memory model close to the machine.

However, a large category of applications have no boundaries on desired speed, meaning there's no point of diminishing returns in making code faster. Better speed means less power consumed for the same work, more workload with the same data center expense, better features for the end user, more features for machine learning, better analytics, and more.

Optimizing has always been an art, and in particular optimizing C++ on contemporary hardware has become a task of formidable complexity. This is because modern hardware has a few peculiarities about it that are not sufficiently understood and explored. This talk discusses a few such effects, and guides the attendee on how to navigate design and implementation options in search for better performance.

Speakers
avatar for Andrei Alexandrescu

Andrei Alexandrescu

Software Development Consultant, Self Employed
Andrei Alexandrescu is a researcher, software engineer, and author. He wrote three best-selling books on programming (Modern C++ Design, C++ Coding Standards, and The D Programming Language) and numerous articles and papers on wide-ranging topics from programming to language design... Read More →


Thursday September 11, 2014 3:15pm - 4:15pm PDT
Pascal

3:15pm PDT

Simulating the Universe using modern C++
What is the link between C++11/14, parallelism and the open question of the origin of the accelerated expansion of the Universe ? Answer: numerical cosmology and all the techniques to make the best out of supercomputers to shed a new light on unsolved problem in physics. In this talk, I will present the numerical lessons coming from the Full Universe Run, a numerical experiment realized in 2012 on the entire Curie thin-nodes Supercomputer to simulate the evolution of cosmological structures during the last 13.7 billion years. I will focus on how this experiment has changed our view on software design in astrophysics and how we started to implement new approaches using C++11, template metaprogramming, constant expressions and std::thread in order to maximize both genericity and performance. I will also discuss optimization issues related to data locality, cache efficiency and spatial trees which are extensively used in our domain. I will also try to give some inputs on the cultural challenges raised by the introduction of C++11/14 in our domain. This talk will be concluded by thoughts on the needs of computational physicists and how C++17 may help us to solve some of the open problems we are currently facing.

Speakers
avatar for Vincent Reverdy

Vincent Reverdy

Researcher in Astrophysics and Mathematics, Ecole Normale Supérieure
Vincent has been working as a post-doctoral researcher at the University of Illinois at Urbana-Champaign (USA) since he obtained his PhD at the Paris observatory (France) in november 2014. His main scientific interests are related to cosmology and general relativity. He his particularly... Read More →


Thursday September 11, 2014 3:15pm - 4:15pm PDT
Gauss

3:15pm PDT

Unicode in C++
In some programming languages, text processing is easy. Unfortunately, C++ is not one of those languages. C++ lacks good, built-in support for Unicode, though the situation is starting to improve.

This session will begin with a brief overview of text encodings, and an introduction to Unicode and the various Unicode encodings. We'll look at the woeful state of Unicode support in C++98 (or, really, lack thereof), then take a look at the improvements that were made in C++11 and other improvements that have recently been proposed for standardization. We'll finish up with a discussion of several libraries designed to make it easier to work with Unicode in C++, including the widely-used, open-source International Components for Unicode (ICU) library.

Speakers
avatar for James McNellis

James McNellis

Principal Software Engineer, Microsoft Corporation
James McNellis is a Principal Software Engineer at Microsoft where he works on the Time Travel Debugging (TTD) reverse debugging toolkit. Prior to joining the Windows Debuggers team in 2016, he worked on the Visual C++ team and was responsible for the Microsoft C Runtime (CRT) and... Read More →


Thursday September 11, 2014 3:15pm - 4:15pm PDT
Leibnitz

3:15pm PDT

What's New In The C++14 Library
After the grand expansion of the C++11 library, the extensions in C++14 are more modest, often tweaking and cleaning up existing components.

Alisdair Meredith, the Library Working Group chair, walks through all these changes and additions, and a little insight into features that did not make the cut, and are expected to arrive in other Technical Specification before the next standard ships.

Speakers
avatar for Alisdair Meredith

Alisdair Meredith

Senior Developer, BloombergLP
Alisdair Meredith is a software developer at BloombergLP in New York, and the C++ Standard Committee Library Working Group chair.He has been an active member of the C++ committee for just over a decade, and by a lucky co-incidence his first meeting was the kick-off meeting for the... Read More →


Thursday September 11, 2014 3:15pm - 4:15pm PDT
Newton

4:45pm PDT

Gamgee: A C++14 library for genomics data processing and analysis
Our group has defined the standards for DNA and RNA sequencing data processing and analysis for disease research and clinical applications. In the last 5 years we have published our tools in the GATK (genome analysis toolkit) which is completely written in java. With the scaling of next generation sequencing and the immense amount of that needs to be processed we hit a performance wall and found ourselves limited by the language to make optimizations and rewrite the algorithms in a way that would conform better to modern hardware.

Enter Gamgee. A free and open source C++14 library that offers much of the functionality of the GATK framework with the performance necessary to scale to the hundreds of petabytes of todays complex diseases projects. We will show how the tools developed using the Gamgee library replaced legacy java GATK tools in the production pipeline of the Broad Institute. We will also talk about how the algorithms have changed to take advantage of the native libraries and modern hardware features such as SSE/AVX and GPUs.

Speakers
MC

Mauricio Carneiro

Group Lead, Computational Technology Development, Broad Institute of MIT and Harvard
Dr. Carneiro leads the computational technology development team at the Broad Institute of MIT and Harvard. He has contributed to major advances in DNA sequencing analysis with compression algorithms, statistical methods, heterogeneous compute optimizations and a systematic approach... Read More →


Thursday September 11, 2014 4:45pm - 5:45pm PDT
Gauss

4:45pm PDT

How Ubisoft Montreal Develops Games for Multicore - Before and After C++11
Multicore hit the video game industry in a big way. Every platform we develop for now comes in a multicore configuration, and we're always under pressure to exploit the hardware to its fullest. This talk will share our experience learning to develop C++ software for multicore processors over the last decade. It will also explore the new concurrency support in C++11, and examine the way C++11 has influenced the way we develop multicore software so far.

Speakers
JP

Jeff Preshing

Technical Architect, Ubisoft
Jeff Preshing is a Technical Architect at Ubisoft Montreal, where he's worked on games such as Rainbow Six Vegas, Child of Light and Assassin's Creed Unity. He also maintains a blog where he writes frequently about lock-free programming and the C++11 atomic library.


Thursday September 11, 2014 4:45pm - 5:45pm PDT
Descartes

4:45pm PDT

Practical Cross-Platform Mobile C++ Development at Dropbox
The conventional wisdom of multi-platform mobile development comes down to two choices: write all your complex logic at least twice or settle for a slow, non-native experience for your users. Come learn how Dropbox has embraced a third option, where fast, cross-platform code in C++ is married to a smooth, native UI for the best of both worlds.

In Dropbox’s new generation of iOS and Android apps, we leverage the strengths of the platform frameworks while only writing and maintaining one version of complex logic like data syncing. We’ll explain the benefits and pitfalls of interfacing C++ to platform-specific code via Objective-C++ and JNI and how code generation has freed us from much of the effort involved. We’ll share the benefits we’ve gained from C++11/14, as well as the drawbacks, and how we’ve overcome each platform’s quirks. Finally, we’ll share tools that let you try this out yourselves.

Speakers
AA

Alex Allain

Dropbox
Alex Allain has been writing about C++ since 1998, when he started Cprogramming.com. In 2012, he published Jumping into C++ to teach new programmers how to think like a professional C++ programmer. At Dropbox, Alex leads the Platforms and Libraries team, helping make the dream of... Read More →
avatar for Andrew Twyman

Andrew Twyman

Software Engineer, Dropbox
Andrew Twyman has been developing products and libraries in C++ for almost 10 years. He loves building robust systems and solving tricky low-level problems. Starting in 2012, Andrew helped spearhead Dropbox’s new approach to cross-platform mobile development. Now on the Platforms... Read More →


Thursday September 11, 2014 4:45pm - 5:45pm PDT
Newton

4:45pm PDT

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.

Speakers
avatar for Kostya Serebryany

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... Read More →


Thursday September 11, 2014 4:45pm - 5:45pm PDT
Pascal

4:45pm PDT

Types Don't Know #
This presentation will be based on the following paper which will be a proposal to the C++ standards committee:

http://htmlpreview.github.io/?https://github.com/HowardHinnant/papers/blob/master/hashing.html

This paper proposes a new hashing infrastructure that completely decouples hashing algorithms from individual types that need to be hashed. This decoupling divides the hashing computation among 3 different programmers who need not coordinate with each other:

1. Authors of hashable types (keys of type K) write their hashing support just once, using no specific hashing algorithm. This code resembles (and is approximately the same amount of work as) operator== and swap for a type.

2. Authors of hashing algorithms write a functor (e.g. H) that operates on a contiguous chunk of generic memory, represented by a void const* and a number of bytes. This code has no concept of a specific key type, only of bytes to be hashed.

3. Clients who want to hash keys of type K using hashing algorithm H will form a functor of type std::uhash to give to an unordered container.

unordered_set my_set;

Source code will be available at this link: https://github.com/HowardHinnant/hash_append

Speakers
avatar for Howard Hinnant

Howard Hinnant

Senior Software Engineer, Ripple
Lead author of several C++11 features including: move semantics, unique_ptr and . Lead author on three open source projects: A std::lib implementation: http://libcxx.llvm.org An Itanium ABI implementation: http://libcxxabi.llvm.org A date/time/timezone library: https://git... Read More →


Thursday September 11, 2014 4:45pm - 5:45pm PDT
Leibnitz

8:30pm PDT

How one might build a compile time format library

: there are some interesting challenges that one may run into building a compile time format library. In specific, I want to share techniques to answer these questions.

1. How can we pass a constant expression to a metafunction and retain its const-ness? This is easy if the expression is an integral, it gets more difficult when we have types such as const char * or std::tuple.

2. Can we get reasonable error messages? I share a technique to use a combination of SFINAE and static_assert to get cleaner error messages. Namely, we don't want to see all the candidates of operator<<.

I hope you can join me to explore these techniques :)


Speakers
avatar for Michael Park

Michael Park

Software Engineer, Facebook
I'm a software engineer at Facebook, working on the C++ libraries and standards team. My focus for C++ is to introduce pattern matching to facilitate better code.


Thursday September 11, 2014 8:30pm - 9:15pm PDT
Leibnitz

8:30pm PDT

Software Transactional Memory, For Reals

Followon from the lightning talk, contributions from attendees welcome.

Software transactional memory has been referred to in some quarters as "just a research toy". But for the right type of application this appears not to be the case as we've been using it successfully in shipping software at Wyatt Technology for the past three years. I'll get into why I think it has worked so well for us.

Brett Hall is the lead developer on Dynamics, a data collection and analysis package developed at Wyatt Technology for use with their light scattering instruments. He also blogs about C++, among other things, at backwardsincompatibilities.wordpress.com. The rest of the time he is mostly hanging out with his family and/or riding a mountain bike on the trails around Santa Barbara.


Speakers
avatar for Brett Hall

Brett Hall

Principal Software Engineer, Wyatt Technology
Brett is the lead developer on Dynamics, a data collection and analysis package developed at Wyatt Technology(http://www.wyatt.com/) for use with their light scattering instruments. He holds a PhD in Physics from the University of California, Santa Barbara. Previous to joining Wyatt... Read More →


Thursday September 11, 2014 8:30pm - 9:15pm PDT
Newton

8:30pm PDT

CppCon 2015 Kick-off Meeting
The planning committee for next year's conference gets started early. Join us if you'd like provide suggestions or otherwise pitch in.

Speakers
avatar for Jon Kalb

Jon Kalb

Conference Chair, Jon Kalb, Consulting
Jon Kalb is using his decades of software engineering experience and knowledge about C++ to make other people better software engineers. He trains experienced software engineers to be better programmers. He presents at and helps run technical conferences and local user groups.He is... Read More →


Thursday September 11, 2014 8:30pm - 10:00pm PDT
Pascal
 
Friday, September 12
 

8:00am PDT

Lightning Talks
Lightning talks continued!

Moderators
avatar for Kate Gregory

Kate Gregory

Partner, Gregory Consulting
Kate Gregory is an author, sought-after conference speaker, trainer, Microsoft Most Valuable Professional (MVP), and partner at Gregory Consulting. Kate has been using C++ since before Microsoft had a C++ compiler. She is an early adopter of many software technologies and tools, and... Read More →

Speakers
avatar for Michael Caisse

Michael Caisse

Ciere Consulting
Michael Caisse has been crafting code in C++ for nearly 25-years. He is a regular speaker at various conferences and is passionate about teaching and training. Michael is the owner of Ciere Consulting which provides software consulting and contracting services, C++ training, and Project... Read More →
avatar for Marc Eaddy

Marc Eaddy

Software Architect, Intel
avatar for Lenny Maiorani

Lenny Maiorani

After bouncing around from startup to startup, I am now at Quantlab. I am developing networking applications on the cutting edge of performance using C++17 to get the most out of compile-time programming. I love tools from continuous integration to static analysis, performance analysis... Read More →


Friday September 12, 2014 8:00am - 8:45am PDT
Pascal

8:00am PDT

The sqlpp11-connector experiment, Part 2

In order to let more people experience type safety and other compile time constraints when programming SQL in C++, more connectors for sqlpp11 are required. Currently there are connectors for MySQL/MariaDb, Postgresql and Sqlite3, as well as an experimental binding to std::vector.

I would like to use the opportunity of having so many capable people in one place to try to add a few more connector libraries. These libraries would not be finished by the end of the day, but there are pretty good chances to get the first few queries processed.

We will continue to develop the connectors we started in Part 1. Depending on how far we got, there are several options, for instance

  • Support for prepared statements
  • Add connection pools
  • Turn off unsupported features at compile time
  • Add vendor specific SQL extensions to the EDSL, like hierarchical queries for Oracle for instance

I will give short introductions to these topics and help you with the implementation. Some of those will be challenging!

Since the overlap between topics is relatively small, several people could work on the same connector in parallel.


Speakers
avatar for Roland Bock

Roland Bock

Principal Software Engineer, PPRO Financial Ltd
From my days at the university, I hold a PHD in physics (although that was in the previous century and seems like a different life by now). Ever since then I have been developing software and/or managing engineering teams. In 2008, I started to learn C++ because I could not believe... Read More →


Friday September 12, 2014 8:00am - 8:45am PDT
Descartes

9:00am PDT

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.

Speakers
avatar for Yuriy Solodkyy

Yuriy Solodkyy

Software Engineer, Microsoft
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... Read More →


Friday September 12, 2014 9:00am - 10:00am PDT
Newton

9:00am PDT

await 2.0: Stackless Resumable Functions

C++17 may bring most efficient, most scalable, most open/customizable coroutines of any programming language in existence. Stackless Resumable Functions are the proposed for standardization lightweight coroutines that scale to 100,000,000 of concurrent coroutines, allow to consume existing any asynchronous OS APIs / libraries with zero-overhead adapters and allow library designers go wild, invent new coroutine types and plug them into Resumable Stackless Functions machinery.

We will look at examples of tasks, goroutines, generators running on top of resumable functions. We will explore implementation details of how they actually work and look at the customization machinery that allows library designers and ordinary users to extend coroutines as needed.


Speakers
avatar for Gor Nishanov

Gor Nishanov

Software Engineer, Microsoft
Gor Nishanov is a Principal Software Design Engineer on the Microsoft C++ team. He works on design and standardization of C++ Coroutines, and on asynchronous programming models. Prior to joining C++ team, Gor was working on distributed systems in Windows Clustering team.


Friday September 12, 2014 9:00am - 10:00am PDT
Descartes

9:00am PDT

Boost: a Bridge from C++98 to C++11; An introduction to using Boost
This is a two-part tutorial.

Part one is for those who are stuck with a C++98/03 compiler, but are interested in using more advanced C++11-like strategies. We will discuss some of the differences between C++98 and C++11 while demonstrating how strategic use of Boost libraries can bridge the gap, allowing more modern programming paradigms in many cases.

Part two is a deeper dive into some interesting Boost libraries for those who may be new to Boost usage. We will explore how C++98 and C++11 can be enhanced and extended by the additional richness of Boost libraries.

We will use as example some of the boost libraries used in the F5 Networks code base. If there is time leftover, we will discuss our experience upgrading GCC. This will be co-presented by Michael VanLoon and Rachel Cheng.

Speakers
RC

Rachel Cheng

Software Engineer, F5 Networks
avatar for Michael VanLoon

Michael VanLoon

Principal Software Engineer, F5 Networks
I have been developing software for over 30 years. Yes, I started before I was born. I have been doing C++ for over 20 years, not very well at first, and slightly better now. I work at F5 Networks, and have worked at Disney, VMware, Yahoo!, and Microsoft, among many others... Read More →


Friday September 12, 2014 9:00am - 10:00am PDT
Euler

9:00am PDT

Hardening your code
Ok, you've written some code, and it seems to work. How can you be sure that it works? It's a busy, complicated, dangerous world out there, and software has to work in lots of different environments.

How can you gain confidence about your code? How can you make your code more reliable?

There are a lot of techniques available to developers today; I'll talk about several of them: Unit tests, static analysis, runtime analysis, fuzzing, decoding compiler warnings and probably others.

Speakers

Friday September 12, 2014 9:00am - 10:00am PDT
Pascal

9:00am PDT

What did C++ do for Transactional Memory?
SG5 is a Study Group within WG21 developing a promising new way to deal with mutable shared memory, that is expected to be more usable and scalable than current techniques based on atomics and mutexes. It promises to be as easy to use as coarse-grained locks, as scalable as fine-grained locks and yet remain composable.

Find out where on the Gartner hype cycle lives Transactional Memory.
Is it at the Peak of Inflated Expectations, Trough of Disillusionment, Slope of Enlightenment, or Plateau of Productivity?


For that matter, just how soon will I be able to use it with the new Intel Haswell, and IBM Power Hardware, or is it one of those mirages where the closer you get to your hardware, the further it moves away. 

And is it true that one of the lead author of this TM proposal also wrote "Is it just a Research Toy?"

This 60 minute advanced talk will cover the history of Transactional Memory, various lock elision and optimistic speculation techniques, the technical engine behind Transactional Memory, the recent research in its use cases, usability and performance data that supports its entry into the C++ Standard, and of course the latest details of the SG5 Technical Specification, including our effort at transactionalizing the C++ Standard Library.

Speakers
MW

Michael Wong

OpenMP CEO/Architect, IBM/OpenMP
You can talk to me about anything including C++ (even C and that language that shall remain nameless but starts with F), Transactional Memory, Parallel Programming, OpenMP, astrophysics (where my degree came from), tennis (still trying to see if I can play for a living), travel, and... Read More →


Friday September 12, 2014 9:00am - 10:00am PDT
Leibnitz

10:30am PDT

Back to the Basics! Essentials of Modern C++ Style
This talk revisits basic questions, such as how to declare and initialize a variable, how to pass a value to a function, how to write a simple loop, and how to use smart pointers, in the light of experience with C++11 and the latest C++14 refinements. This involves examining auto, rvalue references, range-for loops, uniform initialization, lambda expressions, unique_ptr and shared_ptr, and more.

Speakers
avatar for Herb Sutter

Herb Sutter

Software architect, Microsoft
Herb is an author, designer of several Standard C++ features, and chair of the ISO C++ committee and the Standard C++ Foundation. His current interest is simplifying C++.


Friday September 12, 2014 10:30am - 12:00pm PDT
Fermat

12:00pm PDT

Game Dev lunch / BoF

Since there are so few game devs I propose meeting at Rock Bottom for lunch 12-1:30 for an informal Bird of a Feather talk.


Speakers
RS

Remy Saville

programmer, Relic Entertainment


Friday September 12, 2014 12:00pm - 1:30pm PDT
Meydenbauer Center 11100 NE 6th St., Bellevue, WA 98004

2:00pm PDT

Paying for Lunch: C++ in the ManyCore Age
Concurrency is one of the major focuses of C++17 and one of the biggest challenges facing C++ programmers today. Hear what this panel of experts has to say about how to write concurrent C++ now and in the future.

Moderators
avatar for Herb Sutter

Herb Sutter

Software architect, Microsoft
Herb is an author, designer of several Standard C++ features, and chair of the ISO C++ committee and the Standard C++ Foundation. His current interest is simplifying C++.

Speakers
avatar for Pablo Halpern

Pablo Halpern

Software Engineer, Intel Corp.
Pablo Halpern has been programming in C++ since 1989 and has been a member of the C++ Standards Committee since 2007. He is currently an enginneer at Intel Corp., where he works on high-performance computing. As the former chairman of the Parallel Programming Models Working Group... Read More →
JH

Jared Hoberock

Research Scientist, NVIDIA
Jared Hoberock is a research scientist at NVIDIA where he develops the Thrust parallel algorithms library and edits the Technical Specification on Extensions for Parallelism for C++.Website: http://github.com/jaredhoberock... Read More →
avatar for Artur Laksberg

Artur Laksberg

Software Engineer, Microsoft
Artur Laksberg is a software design engineer at Microsoft. His interests include concurrency, programming language and library design, and modern C++. Artur is a regular participant in the work of the Concurrency Study Group in the ISO C++ Committee, serving as the editor of the Concurrency... Read More →
avatar for Ade Miller

Ade Miller

Technical Fellow, Conga
Ade Miller currently leads the Machine Learning Engineering Team at Conga, building the ML infrastructure behind their Contract Life-cycle Management products. Before joining Conga Ade led team responsible for CenturyLink Cloud's analytics platform. A highly distributed system providing... Read More →
avatar for Gor Nishanov

Gor Nishanov

Software Engineer, Microsoft
Gor Nishanov is a Principal Software Design Engineer on the Microsoft C++ team. He works on design and standardization of C++ Coroutines, and on asynchronous programming models. Prior to joining C++ team, Gor was working on distributed systems in Windows Clustering team.
MW

Michael Wong

OpenMP CEO/Architect, IBM/OpenMP
You can talk to me about anything including C++ (even C and that language that shall remain nameless but starts with F), Transactional Memory, Parallel Programming, OpenMP, astrophysics (where my degree came from), tennis (still trying to see if I can play for a living), travel, and... Read More →


Friday September 12, 2014 2:00pm - 3:15pm PDT
Fermat

3:15pm PDT

Closing
Wrapping up CppCon 2014!

Speakers
avatar for Jon Kalb

Jon Kalb

Conference Chair, Jon Kalb, Consulting
Jon Kalb is using his decades of software engineering experience and knowledge about C++ to make other people better software engineers. He trains experienced software engineers to be better programmers. He presents at and helps run technical conferences and local user groups.He is... Read More →


Friday September 12, 2014 3:15pm - 3:30pm PDT
Fermat
 
Filter sessions
Apply filters to sessions.