- Zoltan Juhasz - User-Space Network Stacks on Linux
Abstract: Historically we've been relying on the Kernel to take care of our networking needs. It is well tested, supports all kinds of protocols and hardware, yet we are looking to re-implement - part of - it in user-space. Why would we want to do that? That sounds crazy! 10 Gigabit Ethernet (10GbE) technology is more than 15 years old, there is a good chance that we skip 40GbE and jump straight to 100GbE. Out-of-the-box you can only expect a fraction of the 10GbE throughput on a general purpose Linux. Luckily there are plenty of parameters to tune, so you can easily double the baseline performance, but even with those, you will not be able to sustain 10Gbit throughput (unless the packets are large enough)... and we have not even looked at 40GbE or 100GbE yet! And this should answer the previous question: the reason we want to build a network stack in userland is performance. We will see that moving the data-plane portion of the network stack to user-space, offloading certain work to the network card (NIC), tuning OS parameters, we can achieve 10Gbit throughput with all packet sizes, while maintaining single digit microsecond latency - without sacrificing security. In this talk I'll briefly introduce the Linux network subsystem, standard network stack tuning options, then show a few user-space network stack implementation - both proprietary and open-source. By the end of the talk you'll have a much better understanding where to look when you experience packet loss and what direction to take when you reached the tipping point and want to make use of a user-space networking stack. Keywords: linux networking, napi, kernel-bypass, zero copy, pf_ring, dpdk, tldk, vma, openonload, ef_vi Bio: Zoltan Juhasz has been a software engineer in the finance industry for the past decade. Currently he works at a hedge fund where he contributes to all aspects of the technology stack, including development of their internal C++ libraries, marketdata platform, trading stack, build infrastructure and compute/simulation grid. He has been connected to the C++ community in many ways, but most noteworthy is his contribution to the logo design of Boost Libraries, conference identity of C++Now! and CppCon. He also loves scuba diving, riding his motorcycle, playing computer games, tennis, swimming and reading.
- C++Now Post-Conference Panel Discussion
Some of our members will be in Aspen, Colorado, the week of May 6–10 to attend the C++Now conference (http://cppnow.org). C++Now is a relatively small conference focused on helping to define what the next version of C++ will look like. On the first Wednesday after the conference, we'll host a Q&A session featuring a panel of people who attended C++Now. This is your chance to hear about the cutting edge of C++ development — and get recommendations for some good talks to watch on YouTube in the next couple of months. This meetup description will be updated as we recruit panelists. So far, the panel will include at least Elias Kosunen and Arthur O'Dwyer. If you'd like to be on the panel, please leave a comment on the event or in the Slack channel, and we'll be in touch! Questions for panelists to think about: What was your favorite C++Now session? What was the most controversial or thought-provoking? Which session's video recording are you most anxiously awaiting? What did you think of the keynotes? What was the most interesting lunchtime discussion you had? What topics or sessions interested or excited you personally? What are your thoughts on concepts, coroutines, Ranges, modules, contracts, "operator spaceship," constexpr memory allocation, and the other big features slated for C++2a?
- Online Hackathon: MongoDB World
The MongoDB World Hackathon is an online competition for the world's hackers, designers, and makers. If you've built an app with MongoDB, you can submit it online for a chance to win $42K+ in prizes! The top 3 teams will be flown out to New York City for MongoDB's annual conference, MongoDB World. They will present their projects during the keynote presentation. The 1st place team will be chosen and will win the grand prize of $10K. How to enter: 1. Register for the MongoDB World Hackathon: https://www.mongodb.com/world/hackathon. 2. Build a project using any MongoDB technology. 3. Submit your projects before 5pm EST on April 30, 2019. We look forward to seeing your projects! Learn more & register: https://www.mongodb.com/world/hackathon
- JeanHeyd Meneide - The Plan for the Future: Extension Points in C++ Applications
Abstract: For years, the callback paradigm with a function pointer and sometimes a void pointer to some user data has dominated synchronous (and sometimes asynchronous) programming extension models in C. Yet later still, C++ code virtual classes, override-able (pure) functions have been used (and abused) with varying degrees of success in projects that seek to extend their functionality beyond what was originally programmed. Unfortunately, virtual classes are still too heavy for many cases where external-to-application extension was not really necessary, leaving developers to add various sorts of hooks and serialization which are increasingly being milled through templates and other extension points. Is there something better than the typical callback paradigm or virtual class methods for allowing a user to hook a library or middleware's inner workings? This case study will review several libraries and discuss the merits of their non-dynamic extension points, including virtual serialization in game engines, iostream higher order function mechanisms, sol3 and nlohmann::json. We will discuss the pros and cons of each, how extensible they end up being, and what limitations come from choices such as ADL extension (with and without priority tags) or struct template specialization. Come join us for a deep dive in what it means to allow a developer to extend your application with their types and routines at compile-time Bio: JeanHeyd "ThePhD" is a student at Columbia University in New York. Most of his programming is for fun and as a hobby, even if his largest open-source contribution -- sol2 -- is used across many industries. He is currently working towards earning his own nickname, climbing the academic ladder while spending as much time as possible contributing to C++ standardization and development.
- Arthur O'Dwyer - Generic Lambdas from Scratch
Abstract: Lambdas (even those mysterious C++14 generic lambdas) are just syntactic sugar atop constructs that are perfectly understandable when approached from the right direction. We’ll start with the implementation of C-style functions, then move to overloading, function templates, non-static member functions, and C++11 lambdas. We'll demystify C++14 generic lambdas (the kind with "auto") and cover some minor improvements to lambdas in C++17 and C++2a. Finally, we’ll detour into the implementations of std::function and std::bind to show how they’re different from lambdas. Bio: Arthur O'Dwyer started his career writing pre-C++11 compilers for Green Hills Software; he currently writes C++14 for Akamai Technologies. Arthur is the author of "Colossal Cave: The Board Game," "Mastering the C++17 STL" (the book), and "The STL From Scratch" (the training course). He is occasionally active on the C++ Standards Committee and has a blog mostly about C++.
- Post Kona Panel Discussion
We are excited to announce our next meetup: a panel discussion featuring Titus Winters, Mathias Stearn, and Nathan Myers, moderated by Arthur O'Dwyer. We look forward to seeing you here at MongoDB next week! Abstract: A fair number of our meetup's members are going to Kona, Hawaii, to attend a meeting of the ISO C++ Committee. The ISO Committee meets about two or three times a year. Whereas C++Now and CppCon are conferences where the point is to hear speakers present new (and old) ideas in an entertaining setting, the ISO C++ Committee meetings (https://isocpp.org/std/meetings-and-participation/upcoming-meetings) are working meetings where the point is for the top experts in C++ to reach consensus on what should go into the next International Standard — and then write the wording, and take official polls to vote that wording into the Standard. The agenda for Kona is here (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/n4795.html). On this first Wednesday after the end of the Kona meeting, we'll get a few meeting attendees on stage and have them tell us all about the experience. Panelists: What did you do at Kona? If you did several different things over the course of the week, how did they compare? Would you do it over again the same way? What was the most controversial or thought-provoking issue you participated in? What was the most interesting lunchtime discussion you had? What new features in the working draft for "C++2a" interest or excite you personally? What about the bits that aren't in C++2a yet but might conceivably be, such as Modules and Coroutines — what do you predict as the fate of those features? Everyone else: This is your chance to hear about the cutting edge of C++2a standards development! Bios: - Titus Winters is a Senior Staff Software Engineer at Google, where he has worked since 2010. He leads Abseil, Google’s open-source C++ library that underpins more than 250M lines of Google code with 12K+ active internal users. He is one of the four arbiters for Google’s official C++ style guidelines. For the last 8 years, Titus has been organizing, maintaining, and evolving the foundational components of Google’s C++ codebase using modern automation and tooling. Titus chairs the Library Evolution Working Group (LEWG) for the C++ Standard - the group responsible for API design proposals to the standard library. - Nathan Myers has used C++ in production since 1988. He worked on most parts of the Standard Library for C++98, and proposed the core-language feature that became "explicit". He is credited with inventing the "traits" technique, and the longest naughty English sentence using only non-repeated C++ keywords. Lately, he has worked on Contract support for C++20, and has plans for a native tuple type -- "pack" -- unifying function argument lists, parameter packs, and aggregates, for C++23. - Mathias Stearn is an engineer on the MongoDB core server team. At the C++ committee he sits on the parallelism/concurrency and language evolution subgroups. At this meeting he is focusing on modules, coroutines, and executors. - Arthur O'Dwyer started his career writing pre-C++11 compilers for Green Hills Software; he currently writes C++14 for Akamai Technologies. Arthur is the author of "Colossal Cave: The Board Game," "Mastering the C++17 STL" (the book), and "The STL From Scratch" (the training course). He is occasionally active on the C++ Standards Committee and has a blog mostly about C++.
- "Concepts As She Is Spoke" (Arthur O'Dwyer)
Hi NYC C++ Meetup - It has been a long time! I am excited to announce a new NYC C++ Meetup, coming soon in early January. Arthur O'Dwyer will be presenting; please see below for details on his talk. Also, please note our NEW LOCATION at 1633 Broadway. Details are below under the "How to Find Us" section. We look forward to seeing all of you soon. Talk Abstract: Arthur presented a version of this talk at CppCon in September 2018. The last time the keyword `concept` appeared in the C++ Standard's working draft was July 2009, two years before the release of C++11. Now, in January 2019, two years before the expected release of C++2a, the working draft once again contains something called "Concepts" — something very different from what was there before, and — so far — more conservative than the Concepts TS (formerly known as "Concepts Lite"). What should the forward-looking C++ programmer do and know about Concepts in C++2a? Arthur will attempt to puzzle it all out. What is a "Concept" and why should we care? What is the current syntax for defining and using concepts? What compilers support C++2a concepts syntax today, and how do I enable it? How does it affect name-mangling? What are "atomic constraints," "disjunctive clauses," and "subsumption"? What good are value concepts and template concepts? What is the difference between a "requires clause" and a "Requires element"? What is this "terse syntax" we've been hearing about, and why is it controversial? Can I use the "requires" keyword without Concepts? This material will be presented from an outsider's perspective, which means you can expect Arthur to say at least a few wrong things. The shelf life of this material will be short, as C++2a Concepts are very much in flux right now. In fact, a novel terse syntax (different from the Concepts TS) was merged into the working draft in November 2018, which means this material has already changed since Arthur presented it at CppCon! Anyway, if you want to get caught up on (or in) the Concepts discussion, this might be the place for you. Speaker Bio: Arthur O'Dwyer started his career writing pre-C++11 compilers for Green Hills Software; he currently writes C++14 for Akamai Technologies. Arthur is the author of "Colossal Cave: The Board Game," "Mastering the C++17 STL" (the book), and "The STL From Scratch" (the training course). He is occasionally active on the C++ Standards Committee and has a blog mostly about C++.
- C++ API Design, Post C++11
Titus Winters will present. Abstract: "Everyone" knows the guiding principle for type design in C++: aim for Regular types (aka "Do what ints do"). As it turns out, with the addition of rvalue-references, reference-qualification, and move-semantics in C++11, there are a host of new considerations. There are also non-Regular type designs showing in the standard (std::string_view), and other classes of design that have shown themselves to be valuable. This talk will cover rvalue-reference idioms and API design, as well as a brief taxonomy of type properties and good type design." About Titus: Titus is a Senior Staff Software Engineer at Google, where he has worked since 2010. He leads Abseil, Google’s open-source C++ library that underpins more than 250M lines of Google code with 12K+ active internal users. He is one of the four arbiters for Google’s official C++ style guidelines. For the last 7 years, Titus has been organizing, maintaining, and evolving the foundational components of Google’s C++ codebase using modern automation and tooling. Titus chairs the Library Evolution Working Group (LEWG) for the C++ Standard - the group responsible for API design proposals to the standard library. He is also chairing the newly-formed SD15 for discussions of Tooling in the C++ ecosystem. Please be sure that your RSVP includes your full name so that we can register you with building security, and please have ID to show at the front desk. We cannot ensure your ability to attend otherwise. There will be pizza.
- Multicore Synchronization, by Samy Al Bahra
Speaker: Samy Al Bahra Co-founder of Backtrace, building a modern debugging platform for natively compiled software A pragmatic tour of advancements in concurrent and parallel synchronization over the past 27 years
- Tools from the C++ eco-system to save a leg
Anastasia Kazakova will present "Tools from the C++ eco-system to save a leg" Abstract: C++ gives you enough rope to shoot your leg off. Readable (and thus easy to maintain, easy to support) and error-free code in C++ is often hard to achieve. And while modern C++ standards bring lots of fantastic opportunities and improvements to the language, sometimes they make the task of writing high quality code even harder. Or can’t we just cook them right? Can the tools help? In this talk I’ll highlight the main trickiness of C++, including readability problems, some real-world issues, problems that grow out of C++ context-dependent parsing. I’ll then try to guide you in how to eliminate them using tools from the C++ eco-system. This will cover code styles and supportive tools, code generation snippets, code analysis (including CLion’s inspections and Data Flow Analysis, C++ Code Guidelines and clang-tidy checks), refactorings. I will also pay some attention to unit testing frameworks and dependency managers as tools that are essential for the high quality code development. Bio: As a C and C++ software developer, Anastasia Kazakova created real-time *nix-based systems and pushed them to production for 8 years. She has a passion for networking algorithms and embedded programming and believes in good tooling. With all her love for C++, she is now the Product Marketing Manager on the JetBrains CLion team. Besides, Anastasia runs a C++ user group in Saint-Petersburg, Russia ( https://www.meetup.com/St-Petersburg-CPP-User-Group/ ).