Video & On-Demand

Law of Demeter: A Practical Guide to Loose Coupling - Kris Jusiak - CppCon 2021

Registration is now open for CppCon 2022, which starts on September 11 and will again be held both in person and online. To whet your appetite for this year’s conference, we’re posting videos of some of the top-rated talks from last year’s conference. Here’s another CppCon talk video we hope you will enjoy – and why not register today for CppCon 2022 to attend in person, online, or both!

Law of Demeter: A Practical Guide to Loose Coupling

by Kris Jusiak

Summary of the video:

In this practical session, we will go through examples that follow and/or violate the Law of Demeter principle (LoD) [1].

We will take a deep dive into what kind of design issues that exposes and how to fix them.
Additionally, we will focus on the testing aspect of following the LoD principle together with Single Responsibility and Dependency Inversion principles.

At the end of this session, the audience will have a better understanding of how to write a loosely coupled code, how to easily test it and why the Law of Demeter principle is so important in Software Design.

Let's !"only talk to our immediate friends" at CppCon-2021!

Implementing C++ Modules: Lessons Learned... - Cameron DaCamara & Gabriel Dos Reis - Cppcon 2021

Registration is now open for CppCon 2022, which starts on September 11 and will again be held both in person and online. To whet your appetite for this year’s conference, we’re posting videos of some of the top-rated talks from last year’s conference. Here’s another CppCon talk video we hope you will enjoy – and why not register today for CppCon 2022 to attend in person, online, or both!

Implementing C++ Modules: Lessons Learned, Lessons Abandoned

by Cameron DaCamara & Gabriel Dos Reis

Summary of the video:

C++ Modules were designed to bring more safety to your programs, while dramatically reducing compile time, resulting in overall increased productivity. How can your C++ toolchain meet this challenge? What can you do to take advantage of these new functionalities available in your toolbox? In this talk, we share lessons learned from implementing Modules based on the singular idea of providing robust support through the entire toolchain (from the lexer through the linker, the IDE, the build system, etc.), debunking the misconception that C++ Modules are just some syntactic sugar that is compiled away by the front-end. The challenges that any C++ compiler implementer faces include: (1) how to satisfy the requirements of merging materialization of declarations -- needed for sound handling of the global module fragments, in particular, as found in header files and header units – with associated performance cost; (2) how to take advantage of the One Definition Rule guarantees provided by named modules. They must address those challenges without compromising efficiency and static semantics. These lessons are valuable not just to C++ tools developers, but to ordinary C++ programmers as well, shedding light on how speed and safety gains are achieved by staying close to the spirit of the original C++ Modules design (“take the ODR as foundational”), and how you can put them to good use in the architecture of your programs and libraries.

Faster, Easier, Simpler Vectors - David Stone - CppCon 2021

Registration is now open for CppCon 2022, which starts on September 11 and will again be held both in person and online. To whet your appetite for this year’s conference, we’re posting videos of some of the top-rated talks from last year’s conference. Here’s another CppCon talk video we hope you will enjoy – and why not register today for CppCon 2022 to attend in person, online, or both!

Faster, Easier, Simpler Vectors

by David Stone

Summary of the video:

The standard library has the type `std::vector`. It is used ubiquitously as a high-performance container. However, it was standardized in the mid 90s and C++ has seen many changes since then. It has been extended with allocators, move semantics, initializer_list, and much more. Can we do better?

We can. It is possible to write a container and a set of algorithms that are more efficient at run time, have simpler implementations, and have easier, more intuitive APIs. Not only that, but we can also make it easy for users to write their own vector-like containers that make slightly different trade-offs for when you need even more performance, and this presentation includes discussion of several such vectors.

We will go through specific examples of these vector-like types and the algorithms that operate on them, and then take from that general principles of software design. We'll look into how we're limited in what we can do by C++ as it exists today and what up-and-coming proposals can make things even better.

C++20: The Small Pearls - Rainer Grimm - CppCon 2021

Registration is now open for CppCon 2022, which starts on September 11 and will again be held both in person and online. To whet your appetite for this year’s conference, we’re posting videos of some of the top-rated talks from last year’s conference. Here’s another CppCon talk video we hope you will enjoy – and why not register today for CppCon 2022 to attend in person, online, or both!

C++20: The Small Pearls

by Rainer Grimm

Summary of the video:

C++20 has way more to offer than the big four concepts, ranges, modules, and coroutines.
Here are a few of the shining pearls.

The spaceship operation automatically creates the six comparison operators. Thanks to consteval, constinit, and improved templates, programming at compile time becomes more powerful. std::span supports safe access to contiguous memory blocks. An enhanced time library and a new type date. Comfortable formatting of data thanks to std::format. Easily synchronize or coordinate threats with semaphores or latches and barriers. An improved thread that maintains itself and supports interruption. Thanks to the synchronized output streams, write operations in the concurrent environment do not end in a mess.

Adding a REST API with Corvusoft's restbed -- Richard Thomson

Utah C++ Programmers has released a new video.

Adding a REST API with Corvusoft's restbed

by Richard Thomson

From the video description:

Many times you need to integrate your C++ infrastructure with services written in other languages on other machines from other teams. In the past, this might have been accomplished with custom RPC (remote procedure call) networking services that exposed resource data in your application to authorized clients.

HTTP REST (representational state transfer) APIs have become a common architectural pattern for exposing resource data across the network. With SSL/TLS (secure socket layer/transport layer security) connections and the HTTPS protocol, the client/server exchange can be secured. Authentication can be implemented with a session mechanism or the built-in authentication mechanisms in HTTP itself.

This month, Richard Thomson will give us an introduction to restbed, a C++14 framework for asynchronous RESTful processing. After an overview of the library, we'll look at what it takes to implement an HTTP server that responds to resource requests.

https://www.youtube.com/watch?v=qpDBXakSXk4

Writing a Network Client with POCO -- Richard Thomson

Utah C++ Programmers has released a new video:

Writing a Network Client with POCO

by Richard Thomson

From the video description:

Networking is often a core requirement for modern applications, but the standard C++ library doesn't yet include any networking support. The Boost libraries have had networking components in the ASIO library, but it looks complicated and filled with details. What if we aren't experts in networking but we need to have networking to support a feature in our application, what options are available to us?

POCO began as a library of POrtable COmponents, so it covers more than just networking. The networking portion of POCO includes:
- stream, datagram, multicast, server, Unix domain and raw sockets
- multithreaded TCP server framework
- reactor server framework
- HTTP(S) client and server framework
- HTTP Basic and Digest authentication
- NTLM authentication
- JSON Web Token support
- C++ server page compiler
- FTP client
- clients for the email protocols SMTP and POP3
- URI and UUID handling
- HTML forms processing
- HTML template compiler
- MIME multipart messages
- SSL/TLS support based on OpenSSL
- WebSocket client and server

This month, Richard Thomson will give us an introduction to POCO networking components centered around writing a network client to talk to an NNTP server. We'll look at the main abstractions provided by POCO and how those are used to build a network client to an NNTP server. NNTP (Network News Transfer Protocol) is a stateful network protocol for reading articles from newsgroups, generally referred to as "usenet". Unlike single hosted forums or mailing lists, usenet is a distributed system with no central authority, providing redundancy and resiliency from single point failures (like the host of your favorite forum suddenly deciding they don't want to pay server costs anymore and deleting the whole thing).

https://www.youtube.com/watch?v=rRR9RTUEn4k

Writing a Network Client with Facebook's Wangle is a Fail -- Richard Thomson

Utah C++ Programmers has released a new video.

Writing a Network Client with Facebook's Wangle is a Fail

by Richard Thomson

From the video description:

Networking is often a core requirement for modern applications, but the standard C++ library doesn't yet include any networking support. The Boost libraries have had networking components in the ASIO library, but it looks complicated and filled with details. What if we aren't experts in networking but we need to have networking to support a feature in our application, what options are available to us?

Wangle claims to be "a library that makes it easy to build protocols, application clients, and application servers." Wangle is an open source library created at Facebook and depends on the folly and fizz libraries, also from Facebook. Folly is what you might call a "support library" containing various utility components that fill gaps in the standard C++ library, or provide components similar to those in the standard library that are optimized for particular use cases. Fizz is a TLS 1.2 (transport layer security) implementation from Facebook.

This month, Richard Thomson will give us an introduction to Wangle centered around writing a network client to talk to an NNTP server. We'll look at the main abstractions provided by Wangle and how those are used to build a network client to an NNTP server. NNTP (Network News Transfer Protocol) is a stateful network protocol for reading articles from newsgroups, generally referred to as "usenet". Unlike single hosted forums or mailing lists, usenet is a distributed system with no central authority, providing redundancy and resiliency from single point failures (like the host of your favorite forum suddenly deciding they don't want to pay server costs anymore and deleting the whole thing).

https://www.youtube.com/watch?v=3_M9rV0EuZ8

Embedded Winter: Raspberry Pi 4B -- Richard Thomson

Utah C++ Programmers has released a new video.

Embedded Winter: Raspberry Pi 4B

by Richard Thomson

From the video description:

This Winter, we'll be hunkered down with embedded programming with C/C++ and some popular single board computer platforms popular in the 'maker' community.

This month, Richard Thomson will conclude with an introduction to the Raspberry Pi 4. Unlike the microcontrollers we've looked at so far, the Raspberry Pi is a complete linux computer system, with a local filesystem on an SD card, ample RAM, ethernet networking, USB ports for a keyboard and mouse and HDMI video. The Raspberry Pi foundation maintains a linux distribution tailored for the Raspberry Pi hardware.

In this presentation, we'll look at:

What are the on-board resources of the Raspberry Pi?
How do we access hardware resources under linux?

https://www.youtube.com/watch?v=VUD00BMrwDU