Loading…
CppCon 2018 has ended

Sign up or log in to bookmark your favorites and sync them to your phone or calendar.

• Design and Best Practices [clear filter]
Monday, September 24
 

11:00

How to Teach C++ and Influence a Generation
At some point in your career, you will need to teach someone something about C++. You might not be a lecturer or a trainer, but you could be helping a colleague with a problem that they're solving, presenting at a lunch-time session, or even at a conference! Perhaps you're someone who is helping to write your company's style guide or "Intro to Our Repo" manual. Correctly teaching C++ is a tough endeavour. C++ is often taught incorrectly at the university level, via online resources, and in books. Many resources are still outdated or refuse to change with the paradigm shift that the C++ community has been undergoing over the past two decades.

We should seek to convey correct information and provide resources that are factual. We should make learning C++ an enjoyable experience, and that stems from the way in which we teach it.

This talk digs into how we can achieve some of this, but it by no means provides all the answers, and may lead to more questions.

Speakers
avatar for Christopher Di Bella

Christopher Di Bella

Staff Software Engineer, Codeplay Software
Christopher Di Bella is a Staff Software Engineer for Codeplay’s ComputeCpp Runtime Technology. He is a strong proponent for generic programming in C++ and C++ education. Chris was previously a software developer for Nasdaq, and a tutor for UNSW Australia’s COMP6771 Advanced C... Read More →


Monday September 24, 2018 11:00 - 12:00
Steamboat (403)

14:00

Modern C++ Design (part 1 of 2)
The old rules for C++API design are due for an update - we have made ad hoc changes to design principles in the standard library, but haven’t really written down the new ideas. Parameter passing and API design for free functions/member functions is due for a general update, particularly as a result of rvalue-references and reference qualification. How do we pass non-owning references? How do we sink a T? How do we express “maybe move” APIs? When do we want reference-qualified overload sets? What does an rvalue-reference qualified non-overloaded method mean? How do we express call once semantics?

For types, our consistency in producing Regular types has weakened in recent C++ releases with types like unique_ptr (move-only) and string_view (reference semantics). These classes of design that have shown themselves to be valuable, but certainly surprising at first. As we should not continue to extend the set of type designs arbitrarily, this is a good time to look at type design in the modern C++ era and narrow down the set of designs that are generally favored. This talk will focus on modern C++ design from small (choice of passing by value or reference) to large (Regular types, reference types, move-only types, etc). We will also introduce a taxonomy of type properties as a means to discuss known-good type design families.

We will also dive into the discussion of whether Regular design covers all good design, or whether there is more to the story.

Speakers
avatar for Titus Winters

Titus Winters

C++ Codebase Cultivator, 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 →


Monday September 24, 2018 14:00 - 15:00
Breckenridge Hall (1st Floor)

15:15

Modern C++ Design (part 2 of 2)
The old rules for C++API design are due for an update - we have made ad hoc changes to design principles in the standard library, but haven’t really written down the new ideas. Parameter passing and API design for free functions/member functions is due for a general update, particularly as a result of rvalue-references and reference qualification. How do we pass non-owning references? How do we sink a T? How do we express “maybe move” APIs? When do we want reference-qualified overload sets? What does an rvalue-reference qualified non-overloaded method mean? How do we express call once semantics?

For types, our consistency in producing Regular types has weakened in recent C++ releases with types like unique_ptr (move-only) and string_view (reference semantics). These classes of design that have shown themselves to be valuable, but certainly surprising at first. As we should not continue to extend the set of type designs arbitrarily, this is a good time to look at type design in the modern C++ era and narrow down the set of designs that are generally favored. This talk will focus on modern C++ design from small (choice of passing by value or reference) to large (Regular types, reference types, move-only types, etc). We will also introduce a taxonomy of type properties as a means to discuss known-good type design families.

We will also dive into the discussion of whether Regular design covers all good design, or whether there is more to the story.

Speakers
avatar for Titus Winters

Titus Winters

C++ Codebase Cultivator, 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 →


Monday September 24, 2018 15:15 - 16:15
Breckenridge Hall (1st Floor)
 
Tuesday, September 25
 

09:00

What Do We Mean When We Say Nothing At All?
They say silence can speak volumes. In a C++ application there are many places where not using a keyword or a piece of punctuation is a deliberate decision that carries a lot of information. Consider not marking a member function const, or virtual, or consider not indicating that a parameter is passed by reference. While in some cases this may be an oversight, a reliance on defaults that might or might not be appropriate, in others its a deliberate decision based on careful thought and design. How is a reader to know which is the case?

In this talk I will show some of the many places where nothingness carries meaning, and talk about approaches to increase the information others can get from your nothingness.

Speakers
avatar for Kate Gregory

Kate Gregory

Partner, Gregory Consulting
Kate Gregory has been using C++ since before Microsoft had a C++ compiler. She writes, mentors, codes, and leads projects, in both C++ and .NET, especially for Windows. Kate is a Microsoft Regional Director, a Visual C++ MVP, has written over a dozen books, and speaks at conferences... Read More →


Tuesday September 25, 2018 09:00 - 10:00
Breckenridge Hall (1st Floor)

15:15

Touring the "C++ Tip of the Week" Series
Since 2012, Google's C++ Library Team has published an essay/guidance series called the "C++ Tip of the Week." Internally, this is used as a sort of secondary to the C++ Style Guide - while the style guide is roughly treated with the force of law, the TotW series is only "very strong guidance." With the release of Abseil at last year's CppCon, we've begun re-publishing the relevant TotW entries on http://abseil.io/tips/.

We think this can serve a good purpose in the public C++ ecosystem. The Core Guidelines cover basically everything, and do a good job, but are often only a shallow summary of the topic at hand. Any given TotW, on the other hand, covers a relatively narrow topic in greater detail.

This talk will give a general overview of the series: it's major themes and most commonly cited entries. As such, this talk will hit on things like: understanding copy vs. move, how to use `emplace`, enums and producing readable APIs, how to construct a unique_ptr clearly, and how to structure your unittests.

Speakers
avatar for Jon Cohen

Jon Cohen

Software Engineer, Google
Jon Cohen is an engineer at Google, maintaining our core common C++ libraries. He spends most of his days directing Google's robot army to rewrite its own source code to be more readable and efficient, and has so far managed to do so without accidentally creating Skynet.
avatar for Matt Kulukundis

Matt Kulukundis

Staff Software Engineer, Google
Matt is a senior software engineer on the C++ libraries team at Google.  Prior to Google he has worked on compilers, machine learning, and underwater robotics.  In his free time, he scuba dives in warm places.


Tuesday September 25, 2018 15:15 - 15:45
Aspen Highlands Hall (1st Floor)
 
Wednesday, September 26
 

08:00

Big Infrastructure at a Small Scale
This session will be focusing on my work specifically over the past two years rebuilding the software development infrastructure at my current company.  The session will explain my journey to, and detail on our current systems which leverage many understood best practices and up-to-date technologies to streamline our development processes.

This work is interesting and applicable to any developer not working with an already established, well maintained infrastructure.  This effectively covers many small and medium size companies whose developers may be following the progress of C++ but feel stuck, unsure how to deploy modern tooling into their development cycles.  There is a real need especially outside of the direct software industries for developers and teams to understand that they can, and should use modern best practices.

Throughout the session attendees will be presented with what has been my approach to solving infrastructure problems.  The session will be primarily highlighting my use, and integration of five specific tools available to our industry.  I will be discussing my journey chronologically in deploying Jenkins, Git (GitLab), updating our CMake infrastructure, and ultimately using Docker to help synchronize our builds across multiple platforms.  As part of the discussion I will also be highlighting my use of more standard industry tools such as Clang-Tidy, Clang-Format, compiling with both Clang and GCC, exercising sanitizers from each compiler, recording code coverage with KCov, and how it all ties together with the build, revision control, and bug reporting services.

Speakers
avatar for Matthew von Arx

Matthew von Arx

Senior Mechanical Controls Systems Engineer, AvL Technologies
I have been working in Satellite Communications for 9 years, and have always had a focus on Software Engineering. This has grown into a passion for C++ and I am very interested in Software Engineering opportunities on the East Coast.


Wednesday September 26, 2018 08:00 - 08:45
Winter Park (406)

10:30

Simplicity: not just for beginners
Many people say that simple code is better code, but fewer put it into practice. In this talk I’ll spend a little time on why simpler is better, and why we resist simplicity. Then I’ll provide some specific approaches that are likely to make your code simpler, and discuss what you need to know and do in order to consistently write simpler code and reap the benefits of that simplicity.

Speakers
avatar for Kate Gregory

Kate Gregory

Partner, Gregory Consulting
Kate Gregory has been using C++ since before Microsoft had a C++ compiler. She writes, mentors, codes, and leads projects, in both C++ and .NET, especially for Windows. Kate is a Microsoft Regional Director, a Visual C++ MVP, has written over a dozen books, and speaks at conferences... Read More →


Wednesday September 26, 2018 10:30 - 12:00
Breckenridge Hall (1st Floor)

12:30

Mixing Managed and Unmanaged Code and Targeting Cross Platform Distributions
Even though we love C++, we don’t live in a C++-only world. In this session, you will be given the opportunity to ask questions about the best way to build applications in C++, yet also make them accessible to clients who use managed code. There will also be experts to answer questions about best practices for building C++ so it may be utilized efficiently in a cross-platform environment.

Speakers
avatar for Kate Gregory

Kate Gregory

Partner, Gregory Consulting
Kate Gregory has been using C++ since before Microsoft had a C++ compiler. She writes, mentors, codes, and leads projects, in both C++ and .NET, especially for Windows. Kate is a Microsoft Regional Director, a Visual C++ MVP, has written over a dozen books, and speaks at conferences... Read More →
avatar for Lloyd Moore

Lloyd Moore

President, CyberData Corporation
Lloyd Moore is the founder and owner of CyberData Corporation, which provides consulting services in the robotics, machine vision and industrial automation fields. Lloyd has worked in software industry for 25 years. His formal training in biological-based artificial intelligence... Read More →
avatar for Aaron R Robinson

Aaron R Robinson

Principal Software Engineer, Microsoft
Aaron Robinson currently works at Microsoft on the .NET Interop team. He previously worked at The MathWorks helping developers interop their C/C++, Fortran, C#, Java, and Ada code via MEX functions. Aaron took an unusual path to software and graduated with a degree in Social Work... Read More →
avatar for Brett Searles

Brett Searles

Principal Architect, 1968
Work in hardware, embedded, graphics and web-based software space. Currently working on a Holographic Surgical Center to allow surgeons to perform simulated surgeries on real patient data. Also working with a major electronics distributor on a SAAS tool for their customers to easily... Read More →


Wednesday September 26, 2018 12:30 - 13:30
Breckenridge Hall (1st Floor)
 
Thursday, September 27
 

12:30

Machine Learning with C++ BoF
This BoF is intended to be an informal gathering and exchange of members of the C++ community that use, are interested in, or implement machine learning libraries, primitives or applications targeting pure C++ or mixed language use cases.

Concretely, the session will loosely follow this format:
  • Each attendee gives a short summary of their work, project or potential use case involving machine learning with C++;
  • We identify common themes and pain points in these use cases and discuss how these can be addressed. Since authors of C++ ML libraries will be present, feasibility can be assessed instantly;
  • Authors of ML-related libraries may give a short (lightning talk style) presentation of their work;
While active participation from every attendee will benefit the session, participants who are enthusiastic about machine learning and simply want to listen are welcome too.

Moderator
avatar for Peter Goldsborough

Peter Goldsborough

Software Engineer, Facebook
I enjoy the intersection of blue-skies machine learning research and low-level infra engineering.

Thursday September 27, 2018 12:30 - 13:30
Telluride (407)

15:15

C++ Cryptozoology - A Compendium of Cryptic Characters
C++ is blessed with a plethora of gotchas, traps, caveats, pitfalls and footguns.
From Abominable Types to Zombies, many shady characters lurk within the C++ dungeons.
Will you dare to join me on an adventure of close encounters with some of these decrepit denizens?

In this fun and lighthearted talk, we'll encounter various interesting and esoteric aspects, concepts and pragmatisms of the C++ language.

Speakers
avatar for Adi Shavit

Adi Shavit

Visioneer, Mr
Adi Shavit is an entrepreneur, speaker, independent consultant, experienced software architect and a computer vision, image processing, and machine learning expert with an emphasis on real-time applications. He specializes in building cross-platform, high-performance software combined... Read More →


Thursday September 27, 2018 15:15 - 15:45
Telluride (407)

15:50

Scaling Financial Transaction using 0MQ and JSON
Rebuilding legacy apps with open source libraries and tools is the most fun I have had yet. For over a year, I have been updating legacy 4GL/Windows applications to Linux and C++. A primary hang-up of the old system is its lack of scalability. In order to design the replacements with more breadth we implemented 0MQ (zeromq.org) for our communications protocol. When the messages you send are in XML you can easily save another 30% in message size just by switching to JSON (nlohmann/json). The JSON works well with 0MQ as its primary message input is char*. Here using scaled down version of our production code, we will demonstrate how we use it and what we learned so far.
Here is the repository for source and slides:https://github.com/kevinbcarpenter/jz18sub/
Thanks to all who attended!

Speakers
avatar for Kevin Carpenter

Kevin Carpenter

Project Engineer, Lead, EPX / NABANCARD
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 →



Thursday September 27, 2018 15:50 - 16:20
Telluride (407)

16:45

Development strategies: You've written a library - now what?
When you write a library, you want people to use it. (Otherwise, why write it as a library?). But to attract and keep users, you need to provide more than "a bunch of code". In this talk, I'll discuss some of those things.

I'll talk about:
* Code quality and portability
* Testing
* Documentation
* Static and dynamic analysis
* Fuzzing
* Managing change in your library

as well as tools that you can use for providing these things. Examples will be taken from Boost and libc++, the C++ standard library implementation for LLVM.

Speakers
avatar for Marshall Clow

Marshall Clow

Engineer, C++ Alliance
Marshall has been programming professionally for 35 yearsHe is the author of Boost.Algorithm, and has been a contributor to Boost for more than 15 years. He is the chairman of the Library working group of the C++ standard committee. He is the lead developer for libc++, the C++ standard... Read More →


Thursday September 27, 2018 16:45 - 17:45
Telluride (407)
 
Friday, September 28
 

09:00

Applied Best Practices
What happens when we start a project from scratch and try to apply all of the best practices? How well do constexpr, noexcept, [[nodiscard]] and other features interact with each other? Is it possible to apply all of the best practices at once, or will they conflict with each other? We will explore current best practices and examine their impact on compile time, runtime and testing. We'll also see some of the unexpected effects that result when best practices are applied to a new project.

Speakers
avatar for Jason Turner

Jason Turner

Developer, Trainer, Speaker
Host of C++Weekly https://www.youtube.com/c/JasonTurner-lefticus, Co-host of CppCast http://cppcast.com, Co-creator and maintainer of the embedded scripting language for C++, ChaiScript http://chaiscript.com, and author and curator of the forkable coding standards document http://cppbestpractices.com.I'm... Read More →


Friday September 28, 2018 09:00 - 10:00
Breckenridge Hall (1st Floor)