CppCon 2015 Program Highlights, 8 of N

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

 

C++ is not composed of only a language. It is also powerful librairies, helping us to get the best fonctionnalities.

The following interrelated CppCon 2015 talks tackle these issues and more (part 1).

In this post:

  • Case study: Evolving legacy code
  • Lessons in Sustainability: How to Maintain a C++ Codebase for Decades
  • CopperSpice: A Pure C++ GUI Library
  • Writing Great Libraries in 89 Easy Steps
  • Qt: modern user interfaces for C++

 

Case study: Evolving legacy code by Rachel Cheng (Software Engineer, F5 Networks) and Michael VanLoon (Principal Software Engineer, F5 Networks)

We will be presenting on the evolution of a legacy monitoring subsystem modernized to C++11 with enhanced interfaces and better programming techniques. The presentation will cover some abstracted example problem areas, the solutions, and talk about the strategy employed to modernize the code.


Lessons in Sustainability: How to Maintain a C++ Codebase for Decades by Titus Winters, Software Engineer, Google

Google maintains (we believe) the largest monolithic C++ codebase in the world with over 100M lines of C++ code. Early commits to this repository date back to the late 1990s. About 4000 engineers submit at least one change in C++ every week. We’ve learned a few things about what it takes to maintain a codebase at this scale.

In this talk I’ll present some of the lessons we’ve learned over the years with respect to policies, technology, education, design, and maintenance of a long-lived monolithic codebase.


CopperSpice: A Pure C++ GUI Library by Barbara Geller and Ansel Sermersheim, Co-Founders, CopperSpice

CopperSpice is a collection of cross platform GUI libraries derived from Qt 4.8. Our libraries use current C++11 technology to implement Reflection, without requiring moc (a code generator) or any preprocessing. We will discuss what Reflection is, how this technology can be used, and why it can be difficult to implement.

The focus of this presentation is to show the core implementation of CopperSpice. Source code from CopperSpice will be shown to explain how we implemented Reflection using pure C++11. We will also demonstrate small samples of code which use the CopperSpice libraries.

Technologies covered in this presentation will include templates, variadic templates, and template specialization.

No prior knowledge of CopperSpice or Qt is required. A working knowledge of templates in C++11 would be helpful.


Writing Great Libraries in 89 Easy Steps by Zach Laine, Sr. Programmer, Nvidia

Writing code that does what you want it to do, correctly and efficiently, is hard. Doing so when you don't even know yet what you want the code to do yet is quite a bit harder. Yet this is the job of a library writer -- the users of a library may have a very different use case from that of the original author.

How do library writers develop correct and efficient APIs that are also:

- easy to use correctly - hard to use incorrectly - highly reusable - gracefully interoperable with other code

This talk gives lots of practical advice and techniques for accomplishing those goals and more.


Qt: modern user interfaces for C++ by Milian Wolff, Software Engineer, KDAB (Deutschland) GmbH&Co KG

The C++ language evolved significantly in the recent past, and so did many frameworks and libraries in the big ecosystem surrounding it.

For twenty years now, Qt is being used on a multitude of platforms to create native looking, compelling graphical user interfaces.

It offers C++ libraries and tools for building desktop, mobile and embedded applications. Qt gives engineers APIs for developing using two dimensional controls, integrating 3D using OpenGL, embedding web content, as well as a new declarative domain-specific language called QML, which is extensible using C++. Qt is also much more than a UI toolkit and provides a multitude of helper libraries for various use-cases, such as localization, database access, XML and JSON parsing and much more.

During this talk, I will give an introduction to Qt and present its capabilities in how it can be utilized to write modern UIs using C++, both in 2D as well as 3D. Additionally, I will show how some of its features, like the integrated web engine or QML, can be leveraged to go beyond C++. While at it, I hope to clear up some outdated misconceptions about Qt and its relationship to standard C++ and the STL as well as Boost and other libraries.

Finally, I will present the KDE Frameworks, an open source collection of high quality, cross platform Qt libraries that are being used by the KDE Software Collection. KDE frameworks are to Qt as Boost is to the STL. Recent development makes it simpler than ever to use these libraries in external applications.

CppCon 2015 Call for Volunteers

cppcon-019.PNGCppCon is just 19 days away! The event has nearly 50 volunteers so far but there are still spots open. It's a great (and free) way to be part of the festival and take in the sessions.

Call for Volunteers

From the announcement:

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

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

Handling files in C++ - using boost::filesystem

The 9th installment of my series on writing applications in C++ using Qt and boost:

Handling files - using boost::filesystem

by Jens Weller

From the article:

As part of my data is actual files (images, css, js, files...), I realized that the best way to handle those, would be to just store and load them from the file system. In the UI Qt even offers good support for displaying a folder in an Application with QFileSystemModel. But in the application...

Announcing the Meeting C++ Workshop Day!

I finally can announce the Meeting C++ Workshop day on Dec. 3rd in front of the Meeting C++ Conference:

Announcing the Meeting C++ Workshop Day!

by Jens Weller

From the article:

For the first time ever, I do organize a Workshop Day in front of Meeting C++! This is going to be a fun day giving you the knowledge of either C++ in embedded or parallelism.

While some details are still in the making, I already can announce that the speakers of the parallelism workshop are Thomas Heller, Boris Schäling and Michael Wong! The embedded workshop will feature a hands on session from KDAB "Creating HMI for embedded devices with C++ and Qt/QML" by Tobias Koenig.

...

CppCast Episode 24: Real World Template Metaprogramming with Edouard Alligand

Episode 24 of CppCast the only podcast for C++ developers by C++ developers. In this episode Rob and Jason are joined by Edouard Alligand to discuss the use of C++ template metaprogramming in real world projects.

CppCast Episode 24: Real World Template Metaprogramming with Edouard Alligand

by Rob Irving and Jason Turner

About the interviewee:

Edouard is an experienced kernel programmer, but has spent the last several years working on the hot topic of next-generation databases at software publisher quasardb. He has a strong background in low level programming, beginning with his first programming language: Z80 assembly. Edouard is a C++ enthusiast with a strong taste for template metaprogramming, generic programming, and you're not doing it right if the compiler doesn't crash programming.

Bitesize Modern C++ : Range-for loops--Glennan Carnie

Today is a description of a C++11 new feature:

Bitesize Modern C++ : Range-for loops

by Glennan Carnie

From the article:

If you’re using container classes in your C++ code (and you probably should be, even if it’s just std::array) then one of the things you’re going to want to do (a lot) is iterate through the container accessing each member in turn.

Without resorting to STL algorithms we could use a for-loop to iterate through the container...

CppCon 2015 Call for Lightning Talks

cppcon-024.PNGCppCon 2015 is the largest community gathering for the breadth and depth of modern C++. If you haven't registered yet, now's a great time.

It's not just about listening to the over 100 talks by speakers who are world experts in their fields -- it's also about the interaction between attendees. Here's another part of that, in today's news:

CppCon 2015 Call for Lightning Talks

From the announcement:

The response to last year’s Call for Lightning Talks was so strong that this year we are adding a second evening session, so plan on joining us for the fun on Tuesday and Wednesday evenings.

Lightning talks are 5 or 15 minutes talks on any topic that will be interesting to C++ programmers. Expect fast paced fun with talks that are funny or intriguing from speakers at all experience levels.

If you’ve never seen a lightning talk before checkout some of last year’s on our YouTube channel. They cover a single topic and they start with the good stuff and make a point. Anyone can do one, but be sure to practice because 5 minutes goes by incredibly fast and 15 minutes isn’t much easier. If there’s one technique you wish everyone knew, one little known fact that should be well known, one tool that makes your life easier every day, or a collection of little things that you can fit into 5 or 15 minutes, you can propose a lighting talk, and you should.

Anyone can submit a talk, you don’t need to be a conference speaker (or even a registered attendee). We are looking for talks from experienced speakers, but also new speakers and students. To submit a talk, just email [email protected] and tell us what you want to talk about, what length you need (5 or 15 minutes), and a little bit about yourself (one sentence is fine). Even if you don’t plan to submit, plan to attend, it’s sure to be fun!

CppCon 2015 Program Highlights, 7 of N

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

 

One of C++ selling point is the performance it allows, while still offering a good hardware abstraction. It enables not only fast programs, it enables efficient ones.

The following interrelated CppCon 2015 talks tackle these issues and more.

In this post:

  • Faster Complex Numbers
  • C++ Coroutines - a negative overhead abstractions
  • High-performance, async-only and monadic future<T>
  • constexpr: Introduction and Applications
  • The Birth of SG14: better C++ support for Games Developers with Low latency needs

 

Faster Complex Numbers by André Bergner, Lead Developer Traktor, Native Instruments

Complex numbers are an important tool from mathematics enabling many problems to be written in a more generic form. The C++ standard library comes with an implementation to work with complex numbers in a natural way.

Motivated by useful real world examples from theoretical physics and audio dsp I will discuss benchmarks of std::complex and demonstrate how alternative implementations, naïve or advanced ones based on expression templates, outperform std::complex and can compete with hand-crafted C code (depending on compiler and std lib). A quick introduction to expression templates will be provided.


C++ Coroutines - a negative overhead abstractions by Gor Nishanov, Principal Software Design Engineer, Microsoft

C++ coroutines are one of the few major features that may land in C++17. We will look at the current standardization status, available experimental implementations and develop a small coroutine adapter over raw C networking APIs that will beat hand-crafted state machine in performance.


High-performance, async-only and monadic future<T> by Travis Gockel, Senior C++ Pirate, SolidFire

std::future provides us a mechanism for asynchronous communication between a provider and receiver. However, the C++14 standard does not allow for actual asynchronous programming, as the only ways to interact with an std::future are blocking calls. The proposed then helps, but the interface is awkward and can be extremely slow when handling exceptions. Here, I will talk about completion a high-performance, async-only and monadic alternative to std::future and how it is used at SolidFire.


constexpr: Introduction and Applications by Scott Schurr, C++ Developer, Ripple Labs

I'm excited about constexpr. It's probably my favorite C++11 feature and it's gotten even better with C++14. This talk will introduce constexpr to the uninitiated. We'll start with C++11 and continue into the improvements introduced with C++14. We'll look into useful ways to think about constexpr code. We'll also cover some tips and tricks with writing constexpr code.

But when I talk to other developers about constexpr they seem puzzled. What sorts of useful computations can the compiler possibly do before runtime?

I'd like to take this session to explore some of the capabilities that constexpr brings to the table. We'll look at compile-time parsing, floating-point computations, and containers. We'll also talk about motivations for computing these at compile time.


The Birth of SG14: better C++ support for Games Developers with Low latency needs by Nicolas Guillemot (Graphics Software Engineer, Intel), Sean Middleditch (Lead Server Engineer, Wargaming Seattle, Inc.) and Michael Wong

C++ is paramount for games development, and low-latency real-time applications everywhere. But has it recall improved since C++98/03? What features in C++ 11/14 has helped, and what else do we still need from C++ 17/22? In last year's CPPCon, there was clearly demand for even better support for this community as evidenced by the large number of games submission and an impromptu BoF.

But this industry has a demanding schedule and cannot freely attend ISO C++ standard meetings. So when the prophet cannot go to the mountain, the mountain has decided to come to the prophet!

This year, we like to announce the formation of an official SG14 that will go where the community is, at CppCon 2015 will be an official SG14 meeting followed by an SG14 meeting at GDC 2015 hosted by Sony.

This talk will describe the initial findings of the unofficial real time google group https://groups.google.com/forum/#!forum/unofficial-real-time-cxx as described in: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4526.pdf where we considered improvements such as flat map, intrusive container, and other suggestions for better support for games development and low latency in ISO C++.