What do death and a customer bug have in common? Many will say nothing, but actually, we can find similarities between grief and the process of dealing with a tricky and prioritized issue.
---
Thamara Andrade
---
Videos Streamed & Edited by Digital Medium: http://online.digital-medium.co.uk
Lightning Talk: Finding Whether a Number is a Power of 2 and C++20 - Ankur Satle - CppCon 2022
https://github.com/CppCon/CppCon2022
I asked this question on social media and got many diverse responses. I will present the various approaches and compare them. I will finish with the options C++20 provides with the bit header. https://en.cppreference.com/w/cpp/numeric/has_single_bit
---
Ankur Satle
---
Videos Streamed & Edited by Digital Medium: http://online.digital-medium.co.uk
Lightning Talk: C++ on Fly - C++ on Jupyter Notebook - Nipun Jindal - CppCon 2022
https://github.com/CppCon/CppCon2022
"Enabling fellow mates to develop a scratch environment using Jupyter Notebook for C++. This is quite useful for self exploration and while teaching.
Each to setup guide and how-to for Jupyter notebook will be shared with mates. Also, additional tips of using jupytext for github for easier diff and versioning."
---
Nipun Jindal
---
Videos Streamed & Edited by Digital Medium: http://online.digital-medium.co.uk
Cute C++ Tricks, Part 2.5 of N - More Code You Should Learn From and Never Write - Daisy Hollman - CppCon 2022
https://github.com/CppCon/CppCon2022
During the COVID-19 global pandemic, as we all searched for ways to stay connected to the C++ community, these 25-line or less C++ snippets of counterintuitive C++ code called the "Cute C++ trick of the day" started to appear on Twitter. The amount of attention these tricks got was surprising, and as more were posted, it became clear that these counterintuitive snippets of C++ code offer pithy and memorable ways to teach people some intermediate or advanced aspects of C++ (that often come up in real code!).
This talk builds on part 1 (of N), presented last year at CppCon 2021. In this presentation, I will dissect a few more of the most popular "Cute C++ tricks" to a level of detail not possible on social media platforms like Twitter. I'll talk about how and why these tricks work the way they do, talk about the dark corners of C++ they touch upon, and talk about what you should actually do if you need to produce the same effect in production code. While not targeted at beginners, these tricks span the gauntlet from features that most intermediate programmers are aware of (but never thought to use in a particular way) to dark corners of the language that many of my C++ committee colleagues were surprised to learn about. Throughout it all runs a common thread: learning how to exploit your own curiosity to expand your toolbox, gain a better grasp of the fundamentals of C++, and ultimately, become a better programmer.
---
Daisy Hollman
Dr. Daisy S. Hollman began working with the C++ standards committee in 2016, where she has made contributions to a wide range of library and language features, including proposals related to executors, atomics, generic cppcon.digital-medium.co.uk/tag/programming/">programming, futures, and multidimensional arrays. Since receiving her Ph.D. in Quantum Chemistry in 2013, her research has focussed primarily on parallel and concurrent cppcon.digital-medium.co.uk/tag/programming/">programming models, though a broader focus on general accessibility of complex abstractions has become her focus in more recent years. She currently works on C++ language and library design at Google, where she continues to focus on providing broad accessibility of cppcon.digital-medium.co.uk/tag/programming/">programming models and abstractions, with a particular focus on design for diversity and inclusivity.
---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk
Cross-Building Strategies in the Age of Cpp Package Managers - Luis Caro Campos - CppCon 2022
https://github.com/CppCon/CppCon2022
Embedded devices like the Raspberry Pi and NVIDIA Jetson are becoming increasingly popular for both enthusiasts and enterprise-grade applications, in particular for Machine Learning workloads that require a low-power profile. On devices that provide a native build toolchain, developers will typically face two choices: build their applications and their dependencies on the target device, which can take considerably longer than the equivalent workload on a typical PC, or carefully set-up a cross-compilation environment on a more powerful PC where using the correct dependencies (and their versions!) can become more of a challenge.
On the other hand, with macOS and Windows now officially supported on ARM processors, end users will typically expect applications to run natively for the best performance possible, rather than rely on emulation where the performance hit may negatively impact the user experience. The first step before shipping an application is building it, and cross-building existing applications can help vendors get over that first hurdle without having to wait for native hardware, especially given the current supply chain constraints.
But setting up a cross-compilation environment can be challenging and often confusing, and the build scripts for some libraries may not have considered supporting cross-building workflows. C++ package managers have gained a lot of traction in recent years. If we are already using them for our local build workflows, why not leverage their power to support cross-compiling?
This talk focuses on exploring how we leverage the concepts introduced by modern C++ package managers like Conan and vcpkg and apply them to the cross-building workflow, and the technical challenges faced by these tools to enable this. A practical example will be demonstrated where we can cross-build an existing application using familiar tooling, simplifying the workflow and saving considerable time.
---
Luis Caro Campos
Luis is a Electronics and Computer Engineer based in the UK, with previous experience as a C++ engineer in the field of Computer Vision and Robotics. Currently, he is concerned with the problem of enabling Software Development at scale: focused on the tooling and processes to support large teams of engineers in writing code. He is currently part of the Conan team at JFrog, focused on the problems of the C++ community at large.
---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk
Back to Basics: The C++ Core Guidelines - Rainer Grimm - CppCon 2022
https://github.com/CppCon/CppCon2022
Why do we need guidelines for modern C++? My answer boils down to three points:
1. C++ is complex for the novices
2. C++ is challenging for the professionals
3. C++ is used in safety-critical software
The C++ Core Guidelines are a C++ community-driven project by the editors Bjarne Stroustrup and Herb Sutter. They provide best practices for modern C++, including all important aspects of software development such as, for example, interfaces, functions, classes, concurrency, and templates. Applying the C++ Core Guidelines means writing correct software by design.
In my talk, I present the most important rules of the C++ Core Guidelines. My talk should not be your endpoint but your starting point for a more profound studying of their invaluable rules.
---
Rainer Grimm
Rainer has worked as a software architect, team lead, and instructor since 1999. In 2002, Rainer created a company-intern meeting for further education and had given training courses since 2002. Rainer's first tutorials were about proprietary management software, but he began teaching Python and C++ soon after. In his spare time, he likes to write articles about C++, Python, and Haskell and speak at conferences. Rainer publishes weekly on his English blog Modernes C++. Since 2016, Rainer has been an independent instructor, giving seminars about modern C++ and Python. Due to his profession, he constantly searches for the best way to teach modern C++. He published several books in various languages about modern C++ in the last ten years, including the last one "C++ Core Guidelines Explained: Best Practices for Modern C++".
---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk
Pragmatic Simplicity - Actionable Guidelines To Tame C++ Complexity - Vittorio Romeo - CppCon 2022
https://github.com/CppCon/CppCon2022
Minimizing complexity in a codebase provides invaluable benefits, especially at scale, including but not limited to: maintainability, ease of understanding, malleability, debuggability, and testability. Such benefits translate not only into real economical advantages, but also increase the mental well-being of any developer.
So, how can "simplicity" be achieved?
Rather than focusing on philosophical concepts, this interactive presentation will give developers pragmatic and actionable guidelines that can be readily applied to reduce complexity in any codebase. Starting from a wide variety of examples (e.g. casting, containers, looping, attributes) a set of precepts will be derived together with the audience. After that, a deep analysis of where those precepts fall short will be given, honing them until the reaching the final goal: obtaining actionable guidelines useful in the real world.
If any of the following questions sound interesting to you, then you will definitely find this talk helpful and enjoyable:
- Should `emplace_back` always be used instead of `push_back`?
- Does `[[nodiscard]]` belong on every pure function returning non-`void`?
- How can one decide between using open-set and closed-set polymorphism?
- Are regular `for` loops the best way of iterating over a range of numbers?
- Do C-style casts still have a place in Modern C++?
- Is `T*` really a valid replacement for `std::optional<T&>`?
- Does simple code imply concise code?
- Can using templates reduce the complexity of a code base?
- When does it make most sense to use type deduction?
---
Vittorio Romeo
Vittorio Romeo (B.Sc. Computer Science, 6+ YoE at Bloomberg) works on mission-critical C++ infrastructure and provides Modern C++ training to hundreds of fellow employees.
He began cppcon.digital-medium.co.uk/tag/programming/">programming around the age of 8 and became a C++ enthusiast shortly after discovering the language. Vittorio created several open-source C++ libraries and games, published many video courses and tutorials, actively participates in the ISO C++ standardization process, and maintains the popular SFML library.
He co-authored the acclaimed "Embracing Modern C++ Safely" book (published in January 2022) with J. Lakos, R. Khlebnikov, and A. Meredith.
Vittorio is an active member of the C++ community with an ardent desire to share his knowledge and learn from others: he presented and offered workshops over 20 times at international C++ conferences (including CppCon, C++Now, ++it, ACCU, C++ On Sea, C++ Russia, and Meeting C++), covering topics of various nature.
He also maintains a website with advanced C++ articles and a YouTube channel featuring well-received modern C++11/14 tutorials. Lastly, he's active on StackOverflow, taking great care in answering interesting C++ question (90k reputation).
When he's not writing code, Vittorio enjoys weightlifting, playing volleyball, scuba diving, canyoning, gaming, and enjoying sci-fi content.
---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk
Architecting Multithreaded Robotics Applications in C++ - Arian Ajdari - CppCon 2022
https://github.com/CppCon/CppCon2022
Many tasks in robotics are natural candidates for parallelization and concurrent execution, and could potentially benefit greatly from multicore processors. However, non-functional quality requirements in robotics are different than those in information systems, and closely revolve around ensuring proper reaction time and acceptable worst-case
execution time. These quality properties can only be properly addressed on the system level because of the high coupling between concurrent threads (interrupts, limited number of computing cores, preemption, shared cache, synchronization, and communication).
Architecting these types of software presents a significant challenge. It requires robotics engineers to understand multicore processors in low-level detail and requires significant programming skills. As a result, programming multicore processors is a cumbersome process and is error-prone. Therefore, software architects, who understand the needs of robotics engineers and understand the software stack develop solutions, which make it possible for robotics engineers to produce correct multi-threaded code easily and allow them to concentrate more on their specific needs regarding robotics engineering.
For this reason, the problem of utilizing multicores in robotics engineering is identified and a suitable solution targeted to robotics engineers is provided. This process is explained step by step and supported with numerous examples. The attendant gets the chance to experience how a software engineer understands the problem and how a solution is devised. It includes all steps of identifying the requirements, architectural drivers, architectural solution, implementation, and a comprehensive evaluation of the solution. All of this is specifically targeted at the C++ programming language.
---
Arian Ajdari
I am Arian Ajdari and I was born in Pristina, Kosovo. I was lucky enough to be raised surrounded by different languages. Therefore, learning new languages has always been a joy for me. I felt very passionate when I discovered programming languages and immediately knew, that programming languages is something I will learn for the rest of my life.
This lead me to study Computer Science, where I got the chance to learn about different aspects of programming. I grasped as many programming concepts as possible and applied them in real-life. This led me to develop a toy application in form of a Bachelor Thesis titled "Melanoma Cancer Detector" where users could upload a picture and Machine Learning Classification Algorithm would give a score whether in a particular spot cancer could develop. Furthermore, I decided to go for a specialization in domain in Software Engineering and did 2 years of Master, graduating on topic "Framework to facilitate development of multithreaded applications in ROS2"
Experience that I got through education and my full-time employment, lead me to realize that developing software is not just a matter of technical skills. It is a combination of many hard- and soft-skills. Therefore, I developed a talk on topic "Architecting Multithreaded Robotics Applications in C++", where you get to see the complete thinking process of developing a C++ application (and many of my failures as well), implementation, evaluation and finally handing the API to the client. I invite YOU, the attender, to embark on this journey together.
With kind regards,
Arian Ajdari
__
Videos Streamed & Edited by Digital Medium: http://online.digital-medium.co.uk