Tag: programming

C++ Package Manager – C++ Dependencies Don’t Have To Be Painful! – Augustin Popa – CppCon 2022

  • Lobby
  • Tag Archives: programming

https://cppcon.org/
---

C++ Dependencies Don’t Have To Be Painful - Why You Should Use a Package Manager - Augustin Popa - CppCon 2022
https://github.com/CppCon/CppCon2022

According to recent surveys from the Standard C++ Foundation, a majority of C++ developers are manually managing their library dependencies. Curiously, one of the top pain points cited in these surveys was also “managing libraries”. I believe these two points are correlated.

In this talk, I will discuss how different types of package managers address these pain points, from system package managers like apt and Homebrew to build system centric package managers like NuGet and language package managers like vcpkg and Conan. There are pros and cons to every solution, and some package managers are more effective in some workflows than others. Managing libraries doesn’t have to be painful. If you configure your workflow right, you will save time not having to maintain additional git submodules, source code, or reading build instructions on GitHub.

I’ll also talk about a few scenarios related to dependency management: acquiring open-source libraries vs. private libraries, automatically building libraries from source, using libraries locally and in CI, using libraries with different build systems and operating systems, and acquiring developer tools from a package manager. You will come out of this talk with an understanding of how a package manager can rid you of your dependency woes.
---

Augustin Popa

Augustin is a Product Manager on the C++ team at Microsoft, working on vcpkg and Visual Studio setup. In the past he has worked on the Visual Studio productivity and getting started experiences.
__

Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk

#cppcon #programming #dependencies

Filed under: UncategorizedTagged with: , , , , ,

Smarter Cpp Atomic Smart Pointers – Efficient Concurrent Memory Management – Daniel Anderson – CppCon 2022

  • Lobby
  • Tag Archives: programming

https://cppcon.org/
---

Smarter C++ Atomic Smart Pointers - Efficient Concurrent Memory Management for Everybody - Daniel Anderson - CppCon 2022
https://github.com/CppCon/CppCon2022

Memory management is hard, especially for concurrent code, even for concurrency experts. To make it more manageable, C++ programmers almost always rely on high-level abstractions such as smart pointers and deferred reclamation techniques such as hazard-pointers and RCU that offer to reduce the burden. These abstractions, however, come with many tradeoffs. In this talk, we will discuss recent library solutions that aim to combine the advantages of these techniques to produce a solution that is as easy to use as smart pointers but as fast and scalable as deferred reclamation techniques. We aim to convince the audience that scalable concurrent code with the performance of expert-written code can be written using abstractions as simple as smart pointers.

As a starting point, we will discuss existing techniques and their tradeoffs. Smart pointers, such as the recently standardized atomic shared pointer, drastically reduce programmer effort, but existing implementations do not scale and result in low-performance code. Advanced deferred reclamation techniques such as hazard-pointers and RCU, as included in the latest concurrency TS, are highly scalable but very subtle and difficult to use correctly. We will show that they are a common source of memory bugs even when used by concurrency experts.

The main part of the talk will then focus on several recent library interfaces that aim to combine the best of both worlds from atomic smart pointers and deferred reclamation techniques. We will also discuss some techniques that can be used to efficiently implement these interfaces and explore their performance.
---

Daniel Anderson

Daniel is a fifth-year PhD candidate in the Computer Science Department at Carnegie Mellon University. He is interested in the design of fast parallel algorithms and likes to write C++ libraries that make parallel computing easier and more accessible. He is a recipient of a best paper award from the ACM Symposium on Parallelism in Algorithms and Architectures conference.
__

Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk

#cppcon #programming #memorymanagement

Filed under: UncategorizedTagged with: , , , ,

The Observer Design Pattern in Cpp – Mike Shah – CppCon 2022

  • Lobby
  • Tag Archives: programming

https://cppcon.digital-medium.co.uk/tag/cppcon/">cppcon.org/
---

The Observer Design Pattern in Cpp - Mike Shah - CppCon 2022
https://github.com/CppCon/CppCon2022

Games, desktop software, phone apps, and almost every software that a user interacts with has some sort of event handling system. In order to handle events, a common behavior design pattern known as the 'observer pattern' allows one or more objects to monitor if a change of state takes place in another object. In this talk, we are going to do a deep dive into the behavioral design pattern known as the observer. The pattern utilizes a Subject and Observer (or publisher and subscriber) model to notify when state has changed from the subject to one or more observers in order to help make our software more maintainable, extensible, and flexible.

I will show some examples of the observer in modern C++ as well as real world use cases of where observers are used for further study. Finally, I'll discuss the tradeoffs of the observer pattern, and discuss which scenarios you may not actually want to use the observer pattern. Attendees will leave this talk with the knowledge to go forward and implement the observer pattern, as well as how to spot the observer design pattern in projects they may already be working on!
---

Mike Shah

Mike Shah is an Associate Teaching Professor at Northeastern University in the Khoury College of Computer Sciences. His primary teaching interests are in computer systems, computer graphics, and software engineering. His research interests are related to performance engineering (dynamic analysis), software visualization, and computer graphics. Along with teaching and research work, he have juggled occasional consulting work as a 3D Senior Graphics Engineer in C++.

Mike discovered computer science at the age of 13 when googling ”how do I make games”. From that google search, Mike has worked as a freelance game developer, worked in industry for Intel, Sony Playstation, Oblong Industries, and researched at The Ohio Supercomputer Center to name a few. Mike cares about building tools to help programmers monitor and improve the performance of realtime applications– especially games. In Michael’s spare time he is a long distance runner, weight lifter, and amateur pizza maker.
__

Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk

#cppcon.digital-medium.co.uk/tag/cppcon/">cppcon #cppcon.digital-medium.co.uk/tag/programming/">programming #cpp

Filed under: UncategorizedTagged with: , , , ,

How to Use C++ Dependency Injection to Write Maintainable Software – Francesco Zoffoli – CppCon 2022

  • Lobby
  • Tag Archives: programming

https://cppcon.org/
---

How to Use Dependency Injection to Write Maintainable Cpp Software - Francesco Zoffoli - CppCon 2022
https://github.com/CppCon/CppCon2022

Are you tired of needing 50 files open to be able to understand what a single component does?
Do you find yourself wanting to change a component, then to realise that you’ll have to touch half of the code base?
Do you want to write simple tests which easily allow to verify your implementation?

Join this talk to learn an effective way to manage the dependencies through dependency injection and never have to worry about those problems again!

In this talk we’ll explore an approach and several techniques to perform dependency injection in C++, with the goal of having decoupled components which can be easily refactored and tested.
We’ll see how to manage both dependencies on data and dependencies on behaviours. We'll explore in which situations each can be used, and we'll see which libraries offer functionality to make the developer's life easy.
The talk will cover how to write components to take dependencies in an effective way and how to propagate them.

It will additionally cover more complicated cases, where components depend on multiple other components, and also how to handle deferred instantiation of dependencies (factories yay!!).

This is a concrete, practical talk which we'll give you a strategy for managing dependencies.
Join along to see how the typical code from production can be changed, and simplified, following this approach!
---

Francesco Zoffoli

Francesco Zoffoli is a professional Software Engineer, public speaker and book author, with experience in C++ and backend systems.

Author of the book “C++ Fundamentals”, passionate about programming languages, maintainable software and distributed systems, he has been using C++ throughout his career and personal projects. Graduated in 2016 with a MSc in Computer Systems Engineering, he joined the industry working for Bloomberg LP.
In 2020, he joined Facebook building software monitoring systems.
He enjoys using C++ to build maintainable systems that work at scale.
---

Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk

#cppcon #programming #software

Filed under: UncategorizedTagged with: , , , ,

The Surprising Complexity of Formatting Ranges in Cpp – Barry Revzin – CppCon 2022

  • Lobby
  • Tag Archives: programming

https://cppcon.digital-medium.co.uk/tag/cppcon/">cppcon.org/
---

The Surprising Complexity of Formatting Ranges in Cpp - Barry Revzin - CppCon 2022
https://github.com/CppCon/CppCon2022

With the large popularity of {fmt} and the adoption of std::format for C++20, we want to add support for formatting ranges (and tuples) into the standard library. This seems easy enough. After all, how hard could it be to add support for formatting a range?

This talk will start by introducing the std::format API and how it meaningfully differs from the ostream API. Then, we will delve into the technical hurdles of implementing format's feature-rich API for ranges and, with even more difficulty, tuples. By way of this journey, the talk will introduce the library facility that will be standardized for C++23 as well as some ideas of what may still need to be done in the future.
---

Barry Revzin

Barry is a senior C++ developer at Jump Trading in Chicago, a research and technology driven trading firm. After cppcon.digital-medium.co.uk/tag/programming/">programming for many years, he got really into the nuances and intricacies of C++ by being unreasonably active on StackOverflow (where is he is the top contributor in C++14, C++17, C++20, and now C++23). A lot of his C++ knowledge comes from just answering questions that he doesn’t know the answers to, especially when he answers them incorrectly at first.

His C++ involvement escalated when he started attending standards committee meetings in 2016, having written dozens of papers for C++20 and C++23. You might know him from such features as <=>, pack expansion in lambda init-capture, explicit(bool), conditionally trivial special member functions, if consteval, and deducing this, as well as several constexpr and ranges papers.

Outside of the C++ world, Barry is an obsessive swimming fan. He writes fun data articles for SwimSwam and also does analysis for the DC Trident, a professional swim team with Olympic Gold Medalists Zach Apple and Anna Hopkin.
---

Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk

#cppcon.digital-medium.co.uk/tag/cppcon/">cppcon #cppcon.digital-medium.co.uk/tag/programming/">programming #cpp

Filed under: UncategorizedTagged with: , , , , ,

Reproducible Developer Environments in C++ – Michael Price – CppCon 2022

  • Lobby
  • Tag Archives: programming

https://cppcon.digital-medium.co.uk/tag/cppcon/">cppcon.org/
---

Reproducible Developer Environments in C++ - Michael Price - CppCon 2022
https://github.com/CppCon/CppCon2022

Getting a developer environment properly configured for your projects can be time-consuming and error-prone. Too often, the requirements are not clearly defined, are simply outdated, or make assumptions about the existing environment. Getting it slightly wrong can result in failures that are difficult to diagnose and could take days or weeks to discover. Working with multiple projects that have potentially conflicting requirements can make multi-tasking a chore. From getting the wrong version of GCC installed to requiring a specific version of an operating system, there are so many things that can stop a developer in their tracks.

This talk will describe the criteria we can use to determine the effectiveness of a solution to these problems, apply those to historical techniques, and will present a deeper look at two modern solutions, GitHub Codespaces and Microsoft Dev Box.
---

Michael Price

Michael Price (he/him) is an experienced software engineer, currently working as a Product Manager with the Microsoft C++ team. His experience working at major software companies for over 15 years informs his thinking about how to enable C++ developers around the world to achieve more. His current focus is on enhancing C++ tooling to take advantage of the PaaS (platform-as-a-service) and IaaS (infrastructure-as-a-service) offerings from organizations like GitHub and Microsoft Azure.

In his spare time, Michael enjoys playing recreational soccer and spending time with his wife, two sons, and several household pets. He particularly likes playing board/card games and video games with his children.
---

Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk

#cppcon.digital-medium.co.uk/tag/cppcon/">cppcon #cppcon.digital-medium.co.uk/tag/programming/">programming #cpp

Filed under: UncategorizedTagged with: , , , , ,

Simulating Low-Level Hardware Devices in Cpp – Ben Saks – CppCon 2022

  • Lobby
  • Tag Archives: programming

https://cppcon.digital-medium.co.uk/tag/cppcon/">cppcon.org/
---

Simulating Low-Level Hardware Devices in C++ - Ben Saks - CppCon 2022
https://github.com/CppCon/CppCon2022

When developing software that will interact directly with hardware, embedded developers often find it more convenient to use simulated hardware rather than real hardware. Early in the project, the real hardware may still be under development. Later, using simulated hardware lets us avoid potential overhead costs of cross-development (e.g., uploading the program to the real hardware). Moreover, it’s often difficult to test error-recovery code for errors that occur only rarely; using simulated hardware, we can sidestep this problem by cppcon.digital-medium.co.uk/tag/programming/">programming it to emit a failure signal consistently.

A simulator in C++ can mimic actual hardware remarkably well. In this session, we’ll show you how to use operator overloading, user-defined conversions, and other C++ features to simulate not just complete hardware devices, but individual hardware registers. With this approach, the code that interacts with simulated device registers can be nearly identical to the code that interacts with real hardware.
---

Ben Saks

Ben Saks is the chief engineer of Saks & Associates, which offers training and consulting in C and C++ and their use in developing embedded systems. Ben represents Saks & Associates on the ISO C++ Standards committee as well as two of the committee’s study groups: SG14 (low-latency) and SG20 (education). He has spoken at industry conferences, including the C++ and System Software Summit, the Embedded Systems Conference, NDC Techtown, and CppCon, where he’s also chair of the Embedded Track and a member of the program committee. Ben previously worked as a software engineer for Vorne Industries, where he used C++ and JavaScript to develop embedded systems that help improve manufacturing productivity in factories all over the world. He’s also a contributing author on multiple Vorne patents.
---

Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk

#cppcon.digital-medium.co.uk/tag/cppcon/">cppcon #cppcon.digital-medium.co.uk/tag/programming/">programming #cpp

Filed under: UncategorizedTagged with: , , , ,

Back to Basics: The C++ Core Guidelines – Rainer Grimm – CppCon 2022

  • Lobby
  • Tag Archives: programming

https://cppcon.digital-medium.co.uk/tag/cppcon/">cppcon.org/
---

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

#cppcon.digital-medium.co.uk/tag/cppcon/">cppcon #cppcon.digital-medium.co.uk/tag/programming/">programming #cpp

Filed under: UncategorizedTagged with: , , , ,

Pragmatic Simplicity – Actionable Guidelines To Tame Cpp Complexity – by Vittorio Romeo – CppCon 2022

  • Lobby
  • Tag Archives: programming

https://cppcon.digital-medium.co.uk/tag/cppcon/">cppcon.org/
---

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

#cppcon.digital-medium.co.uk/tag/cppcon/">cppcon #cppcon.digital-medium.co.uk/tag/programming/">programming #cpp

Filed under: UncategorizedTagged with: , , , ,

Architecting Multithreaded Robotics Applications in C++ – Arian Ajdari – CppCon 2022

  • Lobby
  • Tag Archives: programming

https://cppcon.org/
---

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

#cppcon #programming #robotics

Filed under: UncategorizedTagged with: , , , ,