Loading…
CppCon 2014 has ended
Newton [clear filter]
Monday, September 8
 

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

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

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

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

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
 
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

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

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

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

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
 

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

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

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

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: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
 
Thursday, September 11
 

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

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

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

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

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
 
Friday, September 12
 

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
 
Filter sessions
Apply filters to sessions.