• 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.

    Skills Matter | Code Node

    10 South Place EC2M 2RB · London

    10 comments
  • 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.

    WeWork Paddington

    2 Eastbourne Terrace, London W2 6LG · London

    15 comments
  • 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.

    Skills Matter | Code Node

    10 South Place EC2M 2RB · London

    8 comments
  • 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 [0], [1], [2] 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.

    Skills Matter | Code Node

    10 South Place EC2M 2RB · London

    1 comment
  • Ranges and Failures
    This month we welcome Tristan Brindle, talking to us about ranges, and Phil Nash will talk about error handling. Note a slightly earlier start time. ************************ Important! Please register at SkillsMatter, too: https://skillsmatter.com/meetups/11093-c-plus-plus-london-july ************************* 18:30 Phil Nash: "Intro" 18:35 Tristan Brindle: "A Brief Introduction to Ranges" Ranges are coming! All being well, C++20 will include concept-enabled, range-based versions of all the standard algorithms you know and love, as well as new “views” with lazy evaluation, offering functional-style composition which can transform the way you write code. In this talk we’ll present an introduction to the ranges features currently making their way into C++20, demonstrating how you can use them to reduce verbosity, avoid bugs and improve the correctness of your code, and in some cases get better performance. We’ll also cover the currently-available ranges implementations that you can use today, without having to wait for the new version of the standard. 19:30 Break 19:40 Phil Nash: "Option(al) Is Not a Failure" Why do 52% of developers (as surveyed by isocpp) disable exceptions from all or part of their codebases? Why are so many returning to error codes, or looking at more modern alternatives, such as ADT-based error handling (optional, expected etc)? Can we do better? Will we ever re-unify those who eschew std C++ by banning exceptions? We'll take a tour of the past, present and future of error handling in C++ - including a number of proposals currently in-flight, and the thinking behind them. Along the way will attempt to put a score on all the trade-offs of the different approaches we encounter along the way to see how they stack up. 21:00 Finish -- About the speakers 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. Phil 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. Of course he's also the host of C++ London.

    Skills Matter | Code Node

    10 South Place EC2M 2RB · London

    1 comment
  • C++17 Features - with Bryce Adelstein Lelbach
    This month we'll be joining, again, with ACCU London, who have invited Bryce Adelstein Lelbach (a.k.a. @wash), visiting from the US, to talk about C++17 features. --- Note that for this event we'll be meeting at Credit Suisse, on Canary Wharf, and an attendee list must be provided ahead of time. Therefore the RSVP will close two days before the event and full names must be provided. ---- C++17 has been officially published for about a year and the major C++ implementations have nearly completed their implementations. So, what did we end up getting? In this session, we'll discuss all the new C++ features in C++17 and how they'll change the way we write C++ software. We'll explore the new standard in breath: Language Changes (part 1): Structured bindings Selection statements with initializers Compile-time conditional statements Fold expressions Class template argument deduction auto non-type template parameters inline variables Unary static_assert Nested namespace definitions Library Changes (part 2): string_view optional variant any Parallel algorithms Filesystem support --- Bryce Adelstein Lelbach is a senior software engineer at NVIDIA, where he works on the CUDA C++ programming framework. Bryce is passionate about parallel programming. He maintains Thrust, a C++ parallel algorithms library, and he is one of the developers of the HPX C++ runtime system. He spent five years working on HPX while he was at Louisiana State University's Center for Computation and Technology, and three years at Lawrence Berkeley National Laboratory (a US Department of Energy research facility) developing and analyzing new parallel programming models for exascale and post-Moore architectures. He also helped start the LLVMLinux initiative, and has occasionally contributed to the Boost C++ libraries. Bryce is an organizer for the C++Now and CppCon conferences as well as the Bay Area C++ user group, and he is passionate about C++ community development. He is a member of the ISO C++ standard committee, and worked on the C++17 parallel algorithms.

    This Meetup is past

    Credit Suisse (Bistro Room, 5th Floor)

    5, Canada Square Canary Wharf · London

    9 comments
  • Sanitizers, Type-Erasure and Enums - Oh My!
    This month we welcome Oli Ddin and Gašper Ažman. The titles given below are placeholders and will be updated with full titles shortly. ************************ Important! Please register at SkillsMatter, too https://skillsmatter.com/meetups/10932-c-plus-plus-london-may ************************* Agenda: Tom Breza: Intro and kick-off Gašper Ažman - "Using Enum" A shameless plug for the Using Enum paper ( https://atomgalaxy.github.io/using-enum/using-enum.html ) which finally makes class enums nice to use. With testimonials! Oli Ddin - "Compiler Sanitizers: Improve Your Code Quality and Your Personal Sanity" The state of the art in compiler tooling has given us a tremendous amount of power in terms of detecting and preventing runtime errors which typically constitute Undefined Behaviour. We will explore exactly what kinds of errors can be detected and prevented as well as explore the best practice for leveraging sanitizers in such a way that we can catch as much aberrant behaviour as possible inside our development process Gašper Ažman (again) - "Type Erasure + SBO" How to make regular polymorphic types on the stack, in code you can actually put into production and don't have to explain to colleagues, with only the standard library. We'll cover the basics of Sean Parent-style type erasure and see what is needed for implementing the Small Buffer Optimization for it correctly. Also a great introduction to placement new. --- About the speakers: Gašper has been trying to have the compiler prove his code since 2008, and it's been going better of late. He has written code for the web, backends, and research tools, for UC Berkeley, A9.com (http://a9.com/), and currently Citadel. He has corrected proofs in "From Mathematics to Generic Programming", and frequently attends C++ conferences. 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.

    Skills Matter | Code Node

    10 South Place EC2M 2RB · London

    4 comments
  • Tuppence more on standard algorithms
    This month we welcome Iakov Sergeev who will be talking to us about standard algorithms - with something for everyone, from beginners to more experienced devs. The event will be hosted at Splash Damage (https://www.splashdamage.com/), who will also provide canapés and soft drinks. Main Talk, "Tuppence more on standard algorithms": Though it is widely accepted that the header defines a collection of very powerful instruments which often should be preferred over reinventing the wheel, still they appear to be widely ignored in practice. Apart from developers' desire for creativity, there are seemed to be historical reasons for such ignorance in the way standard algorithms organized and implemented in C++ library. We aim to present a systematic view on standard algorithms available in C++. With some concrete examples we hope to demonstrate why standard algorithms should be preferred in practice over a home-made code, and when it really makes sense to pave your own path. The presentation is aimed to be useful for those who is just starting with C++, but we hope that experienced C++ developers can get some practically useful insights into the C++ standard algorithms. We hope for lively, interactive discussion on the subject that could possibly bring up much more than intended. We also have some lightning talks lined up, but could still do with one or two more. If you have anything you'd like to speak about - anything from 5-15 minutes - on any subject (at least tangentially related to C++, of course) - at any level then please let me know your ideas here: http://cpplondon.org/speak (even if you only have a rough idea for a title at this stage). --- Contrary to what I suggested might happen, there is no NDA to sign - woo-hoo! Please do be aware of the location. Splash Damage is in Bromley, which is about 20-30 minutes out of central London (and maybe a bit more to walk from the station) so please allow enough time. As the RSVPs are limited please be sure to change yours if you signed up previously but can now no longer come. --- Iakov is a software craftsman with about 20 years of experience in C++ programming for bioinformatics, web advertising, telecommunications, and trading

    Splash Damage

    Roay Court 81 Tweedy Road · Bromley

    15 comments
  • The Distributed C++ Meet-up 0x02 { Berlin, London, Stockholm } - hosted by King
    This might just be the worlds second distributed C++ meet-up! This time we'll be joining two other European cities: Stockholm, again, and now Berlin too. As before we'll be connected via a live video stream. Thanks to King (https://discover.king.com/) for sponsoring and hosting this event - as well as doing all the hard work to make the video sync happen! ****** Attention! For access to King's offices we'll need access cards produced. Therefore we'll require your full name - meetup.com nicknames will not be sufficient. You'll be asked for this when you register here. ****** So here's the schedule - note the earlier start, to accommodate our European counterparts: 17:30 Pre-session networking and getting that good seat at the front 18:00 Stockholm: Harald Achitz : "Less is more, let's build a spaceship!" A tutorial covering some theory, concepts and implementation details about ordering and comparison of custom types in C++. We will discuss today's situation and what we can probably expect in the near future. Arvid Norberg : "Type Safe Flags" A lightning talk 18:40 Berlin: Richard Spindler : "GPU Computing and Image Processing with boost::compute" The "compute" library is part of boost since release[masked], and it provides a convenient interface to access GPU computing resources from C++. This Talk will give a short intro to the API, and how to compile programs with OpenCL support. Classic Image Processing algorithms will serve as an example use case for the introduction. 19:20 London: Dominic Jones : "Expression tree transforms" A methodology to implement compile time adjoint automatic differentiation. The differentiation merely sets the context; the vast majority of the talk would be about efficient tree manipulation using TMP algorithms 20:00 Socialising with pizza and drinks, c/o King Timings are approximate but include time for Q&A Stockholm's event page can be found here: https://www.meetup.com/swedencpp/events/248092613/ And Berlin's: https://www.meetup.com/berlincplusplus/events/248093069

    This Meetup is past

    King

    The Ampersand Building 178, Wardour Street, WC1B 3AA · London

    20 comments
  • From Bitcoin to Generative Programming
    It's that time again! This month we have talks from Tony Wasserka and Valentin Galea. PLEASE REMEMBER TO ALSO REGISTER ON THE SKILLSMATTER WEBSITE! https://skillsmatter.com/meetups/10615-c-plus-plus-london-february 18:30 Doors open, networking, drinks etc 19:00 Phil Nash: Intro 19:15 Valentin Galea: "Bitcoin Code Review: How C++ Powers The Biggest Cryptocurrency" By now everyone has heard of bitcoin, blockchain and the meteoric rise of cryptocurrencies. While the economic aspects of them are up to debate, the technology employed is intriguing and holds a lot of potential. C++ powers the majority of this tech, with most of the crypto coin software written in it. We will concentrate on the oldest coin and the one that started it all: Bitcoin. Originally written in 2009 by the mysterious Satoshi Nakamoto, the source code of the official Bitcoin Core client has evolved and it's being actively maintained. We will take a look at how it's structured, some of the design choices, bespoke data structures and its idiomatic use of C++. With such a long history of dev, we are bound to find some interesting details, and observe as well how it reflects C++'s own trajectory over time. We will also quickly contrast Bitcoin source code with other relatively newer currencies like Ripple and Ethereum. 19:50 break 20:00 Tony Wasserka: "Generative Programming in Action: Emulating the 3DS" Console emulation needs to stem the difficult balance between optimizing code for stable frame rates and maintaining the complex logic required to emulate the given hardware - any subtle bug in this system easily manifests in a user-visible glitch. How can modern C++ help? Using the toolbox of generative programming, we take a look at the system call interface of the 3DS and see how far variadic templates, function reflection, and some metaprogramming will get us in terms of bridging the gap between performance, maintainability, and correctness. This is a beginner-friendly talk - prior knowledge of metaprogramming is not required! --- About the speakers: 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. Low-level anything: Tony is a long-term C++ enthusiast who has worked extensively on the console emulator projects Dolphin (GameCube/Wii), PPSSPP (PSP), and Citra (3DS). At his day job, he's working on the Vulkan graphics driver for PowerVR GPUs. Tony's main interest is exploring C++'s zero-cost abstraction capabilities and applying them to create software for resource-constrained and performance-critical environments without compromising on correctness and expressiveness.

    Skills Matter | Code Node

    10 South Place EC2M 2RB · London

    6 comments