- Order and Covariance
This month we welcome Gašper Ažman back, to talk about identity ordering in C++, before and after C++20 (and why it matters) - and Stewart Becker, talking about Covariant Smart Pointers. As usual, please also register on the SkillsMatter site so they will let you in! https://skillsmatter.com/meetups/12101-c-plus-plus-london-may *************** Agenda: 19:00 Intro & News : Phil Nash 19:10 Covariant Smart Pointers : Stewart Becker C++ allows covariant types to be returned from derived classes' overrides of virtual functions. However, these have to be references or raw pointers. What if we wanted to use a type with a defined conversion, such as smart pointers? There is a way to solve this, and it's so easy that even I can implement it. 19:30 Break 19:50 Points of Order : Gašper Ažman With C++20, orderings are finally getting a first-class post in the language. What are orderings, though? What are the basic best practices around them? What are they useful for? Where do they come from? What kinds are there? What do they represent? How do they play together? What are the representations of orderings? Is the current implementation so broken we'll just throw it out? This talk will try to answer the above with a principled approach that explains both the mathematics of orderings and how we got where we currently are in the standard. It is the hope of the presenter to poke the audience enough to foster a discussion about missing features in the C++20 proposal, so that defects can hopefully be identified before C++20 ships. 20:xx Socialising --- Gašper is a co-author of quite a few committee papers on ordering, who has, in addition, worked with Alex Stepanov enough to have argued about ordering with him. This talk tries to illuminate the reasons for default ordering to be included in Regular in Elements of Programming, and the way the idea evolved to its current manifestation. This talk endeavors to be your definitive talk about the background of operator⇔.
- Undefined Behaviour is Not an Error
This month we welcome visiting speakers Ansel Sermersheim and Barbara Geller, authors of Copperspice, who will be talking to us about undefined behaviour. We're also pleased to say that this event is sponsored by YouView (https://www.youview.com/careers/), who will be providing free beer and pizzas. >>>>>>>>>>>>>>>>> Please also register on the SkillsMatter event page in order to gain entry - this is all done by codes on the door now: https://skillsmatter.com/meetups/12291-c-london-april-meetup <<<<<<<<<<<<<<<<< Note: We are also looking for a short talk (5-10 minutes). Please submit ideas to: http://cpplondon.org/speak. 19:00 Intro & News, Phil Nash 19:10 Surprise Lightning Talk 19:20 Pizza, courtesy of YouView. 19:40 A word from our sponsor 19:50 Undefined Behaviour is Not an Error - Ansel Sermersheim and Barbara Geller We will provide a introduction to the terminology connected with Undefined Behavior in C++ and explore the differences between run time errors and undefined behavior. The presentation will focus on Undefined Behavior from the perspective of a developer rather than a compiler designer. As developers we may need to assume that all Undefined Behavior is treated as if the code was not present. Whereas many talks focus on what current day compilers actually do, our presentation will explore what an "evil compiler" is permitted to do. --- About the speakers: Barbara and Ansel are the founders of the open source CopperSpice and Doxypress projects. They have also released several other BSD licensed C++ libraries. Both speakers have a plethora of years programming in C++ and various other computer languages. Barbara likes to write real programs and Ansel thinks daemons are cool.
- Pointers and Errors
This month, as well as local speaker Ervin Bosenbacher, we also welcome back visiting guest speaker, Arno Schödl, CTO at think-cell (who will also be sponsoring beer and pizza!) think-cell are looking for C++ Developers (https://www.think-cell.com/developers) >>>>>>>>>>>>>>>>> Please also register on the SkillsMatter event page in order to gain entry - this is all done by codes on the door now: https://skillsmatter.com/meetups/12100-c-plus-plus-london-march <<<<<<<<<<<<<<<<< Please note a slightly earlier start than usual: 18:00 Arrival, networking, getting a good seat. 18:30 Phil Nash: "Introduction and Community News" 18:40 Ervin Bosenbacher: "Modern C++ Smart Pointers in C++17, 20 and beyond." There are 13 rules in the C++ Core Guidelines for smart pointers! Half of them deal with owner semantics and the other half deal with how should you pass a shared pointer to a function. We'll talk about various caveats, traps and pitfalls and best practices. We'll also talk about the effort of deprecating raw pointers and even rumours of what might be to come. 19:20 Pizza break 19:45 Arno Schödl: "A Practical Approach to Error Handling" Every program may encounter errors, some originating from internal bugs in the program, others coming from the environment the program is operating in. Ignoring all errors will make the program utterly unreliable, while treating every conceivable one introduces lots of extra complexity with little benefit. At think-cell, we have been using and refining our own principled approach to error handling, which we have not seen elsewhere. This talk teaches our method, so that you in your next project, too, can write more reliable software with less effort. -- About the speakers: Ervin is a geek and an engineer with over 20 years of development experience. He also enjoys exploring new ideas, everything and anything that is computer science related and most of all enjoys modern C++. Right now he is working for Barclays Investment Bank as an infrastructure development engineer mainly using Python. Ervin enjoys his family and his dog Daisy, a Labrador full of life. Arno is CTO and co-founder of think-cell. He is responsible for the design, architecture and development of all their software products. He oversees think-cell's R&D team, Quality Assurance and Customer Care. Before founding think-cell, Arno worked at Microsoft Research and McKinsey. Arno studied computer science and management and holds a Ph.D. from the Georgia Institute of Technology with a specialization in Computer Graphics
- C++20 features and Live Coding Standards
This month we welcome back Oli Ddin and Valentin Galea. ***** Please also register on SkillsMatter's site in order to gain access: https://skillsmatter.com/meetups/11850-c-plus-plus-london-february ***** 18:30 Arriving & networking 19:00 Intro and news 19:15 Valentin Galea: Live Coding Standards Coding conventions, guides and standards are a perennial effort of software development. Lots of effort goes into preparing and advocating them but arguably less in following them. Part of this is caused because they are usually documents relegated outside the main dev work. We will show a novel model that we apply at Splash Damage whereby the coding standard is a 'live' source code file that is 1st class citizen in the main source code. We will quickly showcase the standards, how they are followed, maintained and evolved continuously by a full team of developers. 19:35 break 19:50 Oliver Ddin: C++ 20 (Tentative) Features C++20 is edging closer to standardisation. In this talk we will cover the upcoming language features, briefly touch upon their chances of making it in and explore the options we have available to us today for playing with (or at least gaining experience) in taking advantage of them. --- About the speakers: Valentin is a C++ low level video games programmer at Splash Damage in London Oliver has been a C++ hater since 2008 - fortunately, that all changed with C++11 and he's firmly an enthusiast now. He's spent his time doing everything from embedded devices to network engineering and now Internet security related endeavours. He's a big proponent of writing software in a style driven by some form of testing and its place in pushing you towards well-architected, maintainable code. In his spare time he also co-organises C++ London Uni which provides free lessons for people wanting to get into developing C++ and the wider ecosystem around it.
- Choose Your Own (C++) Adventure
(Please also sign up on the SkillsMatter site: https://skillsmatter.com/meetups/11849-c-plus-plus-london-january) To kick off the new year this will be a lighter evening with more ad-hoc content - ideally with some audience participation. If you think of it as more of social evening that just happens to start at SkillsMatter you shouldn't be disappointed. Possible topics include: * The Future of C++ A panel and/ or discussion about where the language is going, how it's getting there, and why. * Testing and TDD clinic Bring your problems, questions and concerns and we'll discuss the possible answers. * What is C++ used for? An panel and/ or discussion of different environments C++ is used in, and applications it is put to use for - whether it's a good fit or not - and why. What we actually get into will depend on what gets the most votes on the day! So come with an open mind and, ideally, a willingness to take part.
- Algorithms: parallel and merge
This month we welcome back Ervin Bosenbacher and Denis Yaroshevskiy. *************** Please sign up on the Skills Matter site, too: https://skillsmatter.com/meetups/11376-c-plus-plus-london-december *************** Agenda: "Parallel execution of STL algorithms in c++17 and beyond" - Ervin Bosenbacher (abstract TBA) "Merging big with small" - Denis Yaroshevskiy std::merge is designed to work well for the case when two input ranges have roughly the same size. This talk presents a merge algorithm that will also perform well when the first range is much bigger. --- About the speakers: Ervin is a freelancer and contractor who is doing research and development of an embedded distributed search and classification engine. Before starting research and development, Ervin has helped tier one banks, asset management companies and startups to design and develop various applications and systems related to cyber security, search engines, front end trading or big data related systems as well as feature extraction and object recognition in images and videos. Ervin enjoys his family, movies and music in his free time. During the day Denis is a senior software developer at Bloomberg. He is also an occasional contributor to libc++ and Chromium, in particular he is responsible for Chromium's implementation of flat_set.
- Books, float literals and constexpr
This month we welcome Frances Buontempo, Dominic Jones and Tristan Brindle. ******** Important ********* Please also register on the SkillsMatter website so we can use their facilities: https://skillsmatter.com/meetups/11373-c-plus-plus-london-november ****************************** "Float Literal - A Workaround" Dominic Jones C++ does not support float values as templates, however its equivalent can be achieved with user defined literals and a little bit of work. "Constexpr for fun and... well, just fun" Tristan Brindle "What's Your Favourite C++ Book, and Why?" Frances Buontempo This will be an audience participation session, so please think about what books have had the biggest impact on your career and/ or thinking. --- About the presenters Frances is the editor of ACCU’s Overload magazine. She has published articles and given talks centered on technology and machine learning. With a PhD in data mining, she has been programming professionally since the 1990s. During her career as a programmer, she has championed unit testing, mentored newer developers, deleted quite a bit of code and fixed a variety of bugs Dominic read Mechanical Engineering at UMIST, Manchester, in 2005 and stayed on to complete a doctorate on spray simulation using probability density functions. At Queen Mary, London, adjoint methods for fluid dynamics simulation was the focus of a three year post-doctoral project. Following this research, some of the ideas were carried forward into industry, applying the adjoint methodology to Star-CCM+ simulation software at Siemens. Presently the director of a university residential college in North West London, and due to start a Master's in Philosophy in September 2018. Tristan is a freelance developer, C++ trainer and BSI C++ panel member based in London. He’s the author of NanoRange, a C++14 Ranges TS implementation, and the lead tutor for C++ London Uni, offering free weekly C++ classes for students in London and around the world.
- Searching and Testing
This month we have talks from Ervin Bosenbacher and Phil Nash. Ervin Bosenbacher: "C++17 and the New Searchers" tba... Phil Nash: "Modern C++ Testing with Catch2" Catch has gained popularity over the last seven years as a modern, C++-native, test framework. Simple to use, easy to get started with, yet still powerful. With features like expression-template-based assertions, hierarchical sections (giving a more natural flow than set-up/ tear-down methods) and more, a lot of users say it makes testing easier and even fun! Until recently, though, it has been constrained by pre-C++11 compatibility. Catch2 rebases on C++11 and takes advantage of this to simplify further, as well as offer new capabilities. This talk takes a look at what's new in Catch and Catch2 and how to effectively test-drive modern C++ codebases. --- About the speakers: Ervin is a freelancer and contractor who is doing research and development of an embedded distributed search and classification engine. Before starting research and development, Ervin has helped tier one banks, asset management companies and startups to design and develop various applications and systems related to cyber security, search engines, front end trading or big data related systems as well as feature extraction and object recognition in images and videos. Ervin enjoys his family, movies and music in his free time. --- Phil is Developer Advocate at JetBrains and is the author of the test frameworks, Catch - for C++ and Objective-C, and Swordfish for Swift. As Developer Advocate at JetBrains he's involved with CLion, AppCode and ReSharper C++. More generally he's an advocate for good testing practices, TDD and using the type system and functional techniques to reduce complexity and increase correctness. He's previously worked in Finance and Mobile as well as an independent consultant and coach specialising in TDD on iOS.
- Searching and CUDA driving
This month we welcome Denis Yaroshevskiy, Sola Aina and Ervin Bosenbacher. ******** Important ********* Please also register on the SkillsMatter website so we can use their facilities: https://skillsmatter.com/meetups/11372-c-plus-plus-london-september ****************************** Denis Yaroshevskiy: "Between linear and binary search" There are a few algorithms (for example std::merge, std::unique) that could have used a binary search but do not since the results are close to the beginning most of the time. This talk goes through building a variation on the binary search that is well suited for these cases. Sola Aina: "A C++ template for decoupling the invocation of CUDA kernels from the nvcc compiler driver" In the most common use case, CUDA kernels are called using a triple chevron syntax <<<>>> that specifies the kernel launch configuration (i.e. number of threads, thread blocks, shared memory use and stream identifier), in addition to the arguments to the kernel. Because the triple chevron syntax is CUDA-specific, and therefore can only be handled by the NVIDIA compiler driver (nvcc), any translation unit that calls a CUDA kernel using this syntax must be saved as a CUDA file (*.cu). Thus, calling CUDA kernels 'pollutes' C/C++ translation units. This is at best a minor annoyance. The more serious problem is that, on some platforms, the nvcc compiler driver cannot invoke the latest C/C++ compiler in order to 'handle' non-CUDA code in a CUDA file. For example, on the Linux platform nvcc calls/requires the now-ancient gcc version 5. This means that the use of C++14 and C++17 is impossible in CUDA files. This talk is about a simple C++ template for invoking CUDA kernels in a way that solves the 'pollution' problem; so that C++ translation units that call CUDA kernels do not need to be saved as CUDA files, and can use C++14 and C++17 language features. Ervin Bosenbacher: "Pattern search improvements using Boyer-more algorithm in C++17" Abstract is coming --- About the speakers: Denis worked on Yandex browser for a few years, and was an active contributor to Chromium, including pushing through and implementing Chromium's version of flat_set container. Active C++ enthusiast and passive C++ content consumer. Denis currently works for Bloomberg in London and is quite pleased with that. Sola is a Senior Software Engineer at Ecrebo Limited Reading. The bulk of my day job involves developing and maintaining a code-generator that interprets XML documents into native instructions supported by point sale printers. My side interests revolve around performance optimization and Haskell. Ervin is a freelancer and contractor who is doing research and development of an embedded distributed search and classification engine. Before starting research and development, Ervin has helped tier one banks, asset management companies and startups to design and develop various applications and systems related to cyber security, search engines, front end trading or big data related systems as well as feature extraction and object recognition in images and videos. Ervin enjoys his family, movies and music in his free time.
- Shaders and Compile Time Functions
This month we welcome back Dominic Jones and Valentin Galea. ************************ Important! Please register at SkillsMatter, too: https://skillsmatter.com/meetups/11094-c-plus-plus-london-august ************************* Dominic Jones: "Delving into compile time functions" Following on from the talk "Expression Tree Transforms", one of its key compile time functions will be examined: the "dual of a list of numbers". Whilst conceptually straight forward, it offers significant implementation challenges, hopefully providing some insight into how to get started in this branch of programming. Valentin Galea: "Rapid Prototyping of Graphics Shaders in Modern C++" Traditionally it’s been hard or downright impossible to have C on a GPU: Graphics Shaders are mainly done in GLSL/HLSL (C-like languages) and Compute Shaders only recently run it via CUDA/LLVM complex toolchains. This is not always desirable or available - mobile phones for ex. Turns out code can compile both as valid C and shader language with a bit of library writing effort. All you mostly need is equivalent 2D/3D/4D vector and matrix types. What’s the catch then? Swizzling! The shader vector allows addressing of its components both as , ,  etc but also as .x, .y, .xyz, .zyx, .xxx and all possible combinations. The talk details how this can be achieved in modern C++, clean and in a generic way, without preprocessor tricks, and overcome language obstacles like template argument deduction with implicit conversions. After all the effort it’s possible to prototype complex procedural effects at an interactive rate with full CPU-side debugging. Of course, a dedicated GPU will very quickly outpace this but loses the debugging, and some devices might not always produce correct results due to driver bugs. As takeaway and showcase of what can be achieved with the C++ techniques presented I’ll introduce Signed Distance Field functions modeling and some shaders that use it: Procedural Generated Planet, Volumetric Clouds simulation and some fun experiments: a Vinyl Turntable and an Egg On Bicycle! --- About the speakers: Dominic Read Mechanical Engineering at UMIST, Manchester, in 2005 and stayed on to complete a doctorate on spray simulation using probability density functions. At Queen Mary, London, adjoint methods for fluid dynamics simulation was the focus of a three year post-doctoral project. Following this research, some of the ideas were carried forward into industry, applying the adjoint methodology to Star-CCM+ simulation software at Siemens. Presently the director of a university residential college in North West London, and due to start a Master's in Philosophy in September 2018. Valentin Galea is a professional video game developer based in London, UK. He currently works at Splash Damage for projects such as the award-winning "Gears of War" franchise on Windows 10 and Xbox One. C++ enthusiast and evangelist, focused on systems, graphics and engine programming. He has 10+ years worth of experience, with past work ranging from MMO projects to mobile and handheld games. When he's not geeking out on games, he collects vinyl records.