Video & On-Demand

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

SFINAE: Substitution Failure is not an Error | Top-Up C++ [C++ #02]--WolfSound

Are you familiar with it?

SFINAE: Substitution Failure is not an Error | Top-Up C++ [C++ #02]

by WolfSound

Summary of the video:

In this video, we are presenting SFINAE: Substitution Failure is not an Error, a feature or a characteristic of C++ related to templates. “Substitution failure is not an error” means that if the compiler fails to specialize a template with a given template argument list, it does not issue an error. It does when it cannot find any suitable function/class to be called/instantiated (either due to a lack of suitably declared functions/classes or an error during instantiation).

Embedded Programming with Raspberry Pi Pico -- Richard Thomson

Utah C++ Programmers has released a new video.

Embedded Programming with Raspberry Pi Pico

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 continue with an introduction to the Raspberry Pi Pico. The Pico is an inexpensive yet powerful single board microcontroller, costing only $4 It features more RAM than the Arduino Uno and considerably more processing power. The RP2040 CPU is a dual core 133 MHz Arm Cortex-M0+ with a selection of integrated peripherals. The CPU was custom designed by the Raspberry Pi foundation to address the specific needs of the maker community. The Arduino IDE can be used to program the Pico as with the Uno. With integrated USB controller, the Pico can implement a USB host or device.

https://www.youtube.com/watch?v=13HnS_cvlVs

CopperSpice: Auto is Not a Data Type

New video on the CopperSpice YouTube Channel:

Auto is Not a Data Type

by Barbara Geller and Ansel Sermersheim

About the video:

Did you think auto was added in C++11? Is auto always used in place of a data type? Watch our new video as we answer these questions and explain how auto interacts with overload resolution and concepts.

Please take a look and remember to subscribe!

Audio Programming with Cinder -- Richard Thomson

Utah C++ Programmers has released a new video.

Audio Programming with Cinder

by Richard Thomson

From the video description:

This Fall we will look into some audio libraries for C++ developers. A couple years ago we took a general look at Cinder. Cinder is a C++ library for programming with aesthetic intent - the sort of development often called creative coding. This includes domains like graphics, audio, video, and computational geometry. Cinder is cross-platform, with official support for macOS, Windows, Linux, iOS, and Windows UWP.

This month, Richard Thomson will give us a more in-depth look at audio programming with Cinder. We'll start with a look at the "voice API", which is suitable for simple audio playback. Next, we'll dive deeper by looking at the "modular API" for more advanced audio processing, including digital signal processing.

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

DigitalOcean: Ahead of the virtual server wave

Technical organizations today depend more and more heavily on their server infrastructure. In this environment it is critical to have a server infrastructure that not only is robust and reliable, but that is both flexible and secure.

The Standard C++ Foundation has relied on DigitalOcean cloud services for its server infrastructure since 2014. Standard C++ Foundation relies on its DigitalOcean servers to support its document repositories, file sharing, messaging systems, mailing lists, DNS, Firewalls, and websites.

DigitalOcean Droplets

The Standard C++ Foundation server infrastructure is made up of seven DigitalOcean Droplets, which are Linux-based virtual machines (VMs) that run on top of virtualized hardware. Each Droplet can be set up either as a standalone dedicated server, or as part of a larger cloud-based infrastructure.

Resizing a server, also known as vertical scaling, increases the amount of resources a server has. A key benefit of using DigitalOcean Droplets is their flexibility, as they can very easily be resized based on changing needs. Running a large event or expect a big bump in web traffic? Easily increase your Droplet’s CPU and RAM to get the speed and bandwidth you need, then dial it back down when your needs go back to normal. Or increase your Droplet size as your organization grows, increasing the RAM and CPU, and also permanently increase the size of a Droplet’s disk. Whichever type of increase you need, it’s all down with an easy change of settings in your dashboard.

Managing Droplets

Co-locating a server infrastructure does not mean giving up control. DigitalOcean Droplets can be controlled either through an API or through doctl, their command line interface client.

  • The DigitalOcean API: The DigitalOcean API lets you manage DigitalOcean resources programmatically using conventional HTTP requests. All the functionality available in the DigitalOcean Control Panel is also available through the API. You can use the API to create, destroy, and retrieve information about your Droplets. You can also use the API to enable backups, change kernels, or reboot your Droplets.
  • The DigitalOcean Command Line Client: doctl is a command-line interface for the DigitalOcean API and supports many of the same actions available through the API. doctl supports managing container registries from the command line. See the doctl documentation or use doctl compute --help for more information.

Key server features

In the seven years that Standard C++ Foundation has been a DigitalOcean customer, they have added most of their key functions onto its cloud-based DigitalOcean servers.

Following are the key areas in which the Standard C++ Foundation has come to rely on DigitalOcean:

  • Weekly Backups and Snapshots: Backups are automatically-created disk images of Droplets. Enabling backups for Droplets enables system-level backups at weekly intervals, which provides a way to revert to an older state or create new Droplets. Rather have those backups daily? You can do this using the API.
  • Track Droplet performance: Check how things are going at any time using Droplet Graphs, which are up-to-the-minute visualizations of how your server is performing over time that let you monitor Droplet performance metrics in the control panel.
  • DNS/Domains: Adding a domain you own to your DigitalOcean account lets you manage the domain’s DNS records with the control panel and API. Domains you manage on DigitalOcean also integrate with DigitalOcean Load Balancers and Spaces to streamline automatic SSL certificate management.
  • Cloud Firewalls: DigitalOcean Cloud Firewalls are a network-based, stateful firewall service for Droplets provided at no additional cost. Cloud firewalls block all traffic that isn’t expressly permitted by a rule.
  • Block Storage Volumes: Block storage volumes are network-based block devices that provide additional data storage for Droplets. You can move them between Droplets and resize them at any time.
  • Teams: Teams are useful for project leaders and business owners who want to share control of server infrastructure with developers, financial administrators, and other collaborators.