- JetBrains Event Haifa
TechAssembly & Haifa::C++ are excited to host JetBrain's Anastasia Kazakova & Andrey Akinshin in a special event, featuring talks on C++ and Kotlin. Agenda ======== 17:30 - gathering 17:45 - Debug C++ Without Running by Anastasia Kazakova 18:45 - Pizza break, courtesy of JetBrains 19:15 - Idiomatic Kotlin by Andrey Akinshin 20:15 - Wrap-up and raffle you can RSVP in any group just don't double book Abstracts ========= Debug C++ Without Running: In this talk we'll see interesting approaches to solving cases like macro and typedef 'debug', understanding types when auto/decltype hide them, dealing with different code branches depending on the preprocessor's pass-through, and other ideas. The aim of this talk is to share the workflows supported by the tools that can help C++ developers create better modern C++ code. Idiomatic Kotlin: Kotlin has many useful features that can help you to express your ideas in a short and well-understandable form. In this talk, we are going to discuss some of the Kotlin best practices, how to use IntelliJ IDEA features to simplify your code, and how to write own Kotlin-based domain-specific languages. Bios ==== Anastasia Kazakova, Product Marketing Manager, C++ Tools, JetBrains github.com/anastasiak2512 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 C++ tools team. Besides, Anastasia runs a C++ user group in Saint-Petersburg, Russia. Andrey Akinshin, Software Developer in Rider, JetBrains aakinshin.net/about Andrey Akinshin is a senior developer at JetBrains, where he works on Rider (a cross-platform .NET IDE based on the IntelliJ platform and ReSharper). His favorite topics are performance and micro-optimizations, and he is the maintainer of BenchmarkDotNet (a powerful .NET library for benchmarking supported by the .NET Foundation). Andrey is a frequent speaker at various events for developers, and he is the program director of the DotNext conference. Andrey is also a PhD in computer science, a Microsoft .NET MVP, a silver medalist of ACM ICPC. In his free time, he likes to study science (his primary research interests are mathematical biology and bifurcation theory). Previously, he worked as a postdoctoral research fellow in the Weizmann Institute of Science and as a research scientist in the Sobolev Institute of Mathematics SB RAS. The event is sponsored by JetBrains , a technology-leading software development firm specializing in the creation of intelligent, productivity-enhancing software. The company is widely known for its innovative, award-winning Java integrated development environment, IntelliJ IDEA, ReSharper developer productivity extension and dotTrace profiler for .NET developers, TeamCity -- a continuous integration and build management environment, RubyMine -- a Ruby and Rails IDE and others.
- Core C++ 2019 conference
Core C++ 2019, the first Israeli conference for C++ developers, by C++ developers, will take place on May 14-17 in Tel Aviv. The conference will feature whole-day training sessions, 16 conference talks, keynotes, a Teaching C++ workshop and more. All details are available at the conference site: https://corecpp.org To participate in the conference, you must register via the conference site. However, feel free to RSVR here if you'll be attending, so we can coordinate rides from the north etc.
- CUDA GPU Development
On our April meeting, we are happy to host Tomer Gal for a talk about CUDA GPU development. With CUDA, C and C++ programmers can make use of the powerful GPU, making their code run even faster. Agenda ======== 17:00 - Gather and refreshments, courtesy of OpTeamizer 17:30 - CUDA GPU Development, Tomer Gal 18:30 - Wrap-up and raffle Abstract ========= The CUDA computing platform enables the acceleration of CPU-only applications to run on the world's fastest massively parallel GPUs. Experience C/C++ application acceleration by: * Accelerating CPU-only applications to run their latent parallelism on GPUs * Utilizing essential CUDA memory management techniques to optimize accelerated applications * Exposing accelerated application potential for concurrency and exploiting it with CUDA streams Bio ==== Tomer Gal is the founder and CTO of OpTeamizer. OpTeamizer is an NVIDIA preferred partner and Tomer is NVIDIA's DLI instructor in Israel for the courses of CUDA(C++), CUDA(Python) and Deep Learning for Computer Vision. Tomer lectures both in the industry and in Ort Braude college of engineering where he teaches/taught the courses of: Deep Learning, Parallel programming (CUDA / OpenCL), Theory of compilation, Android development and other courses. In the past, while completing his Masters degree related to Software optimizations, Tomer has taught: Introduction to hardware, Computer organization and design (Assembly), Introduction to operating systems. Prior to founding OpTeamizer, Tomer has worked at the Intel CPU Architecture team for 4 years and then at GE Healthcare Ultrasound team as a team leader, leading the performance and reliability team. About OpTeamizer: OpTeamizer is an NVIDIA preferred partner, forming the DLI branch in Israel for teaching NVIDIA courses. The company currently employs 16 software engineers and provides software development services for companies in segments such as: Healthcare, Semiconductors, Automotive, Fintech and Defense systems. For more, see OpTeamizer introduction video: https://www.youtube.com/watch?v=mlZtZWRrPB4
- The C++ Memory Model
Elbit Beers & Peers and Haifa::C++ are like peanut butter and jelly - good apart, even better together! On March 25, the two groups will have a shared meetup, featuring talks that are of interest to both communities. Agenda: 12:00 - Gathering and Pizza, courtesy of Elbit 12:30 - Of Islands, Monsters & InnerSource | Shelly Nizri 12:40 - The C++ Memory Model | Alex Dathskovsky 13:40 - Wrap-up and raffle, courtesy of JetBrains Note: either register here or on Elbit's event page - no need to register on both. Talks abstracts: Of Islands, Monsters & InnerSource ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Software world is changing rapidly, and software developers in organizations are finding it difficult to keep up, and have no time to learn new technologies, although they are probably used by other groups in the organization. In the long run, this can affect developers’ satisfaction and their employability. Adopting Inner Source (the act of leveraging Open Source Software development practices within the confines of a corporate environment) seems like the answer. Elbit's Inner Source program relies on the Software Guild (an innovative gamification approach) and the Skill-POOL - a market place encouraging developers to experiment with new technologies as a meaningful on the job training. The talk offers an overview of the journey of the Inner Source program. The C++ Memory Model ~~~~~~~~~~~~~~~~~~~~~~~~~ In multi-threaded programs, different threads exchange data (namely, communicate) via the memory system. The amount of parallelism such programs can reach depends on the efficiency of memory operations, hence optimizing them is crucial for the program's performance. However, care must be taken not to break the correctness of the program by allowing operations to execute in a wrong order. C++ strives to allow programmers to make the most out of any supported platform. For that, the language defines a low-level memory model, which is a set of interfaces, rules and guarantees. The model includes both data layout and the order in which operations, possibly done by multiple processors, take place. Defined at the language level, the model hides the details of the compiler, processor and memory system. However, when misusing the model, any of the underling platform components can break the program by performing unsafe optimizations. In this talk, we'll first go over the fundamentals of the C++ memory model. Next, we'll discuss compiler and processor potentially unsafe optimizations, and understand how to make the most out of those optimizations without breaking the program. Expect an interesting and useful talk in the near std::future - that's a std::promise! Speakers bios: Selly Nizry is a software enthusiastic, InnerSource evangelist and the founder of the Software Guild at Elbit. Alex Dathskovsky has over 14 years of software development experience, working on systems, low-level generic tools and high-level applications. Alex has worked as an integration/software developer at Elbit, senior software developer at Rafael, technical leader at Axxana and is now a team leader and technical leader at Abbot. On his current job, Alex is working in the field of image processing, constructing a map of the heart based on ultrasound images. His job includes working with tools such as CUDA and IPP for vector optimization.
- A few tales on tricky STL details
On our February meetup, we're happy to host Shahar Mike for a talk about non-trivial STL implementations, and which C++ techniques can be used to solve these challenges. Agenda: 12:00 to 12:30 - Gathering and refreshments. Thank you Infinity Labs! 12:30 to 13:30 - A few tales on tricky STL details 13:30 to 13:40 - Wrap-up and raffle Abstract: STL is great. We use it all the time. In some (most?) cases it's trivial to use, which in itself is not trivial as STL is generally extremely performant and needs minimal resources. This means that the implementers of STL have to go through great lengths in order to be compliant, fast and compact. In this talk we'll look at a very few cases (nits, really) where STL implementations aren't trivial, and which C++ techniques can be used to solve these challenges. ** Note: This meetup has limited capacity. Please RSVP only if you plan to arrive, and update your RSVP if you can't ** Bio: Shahar is a C++ software engineer at Google, using and loving C++ for 15 years, and the owner of the C++ blog shaharmike.com. Shahar gave technical talks, mostly about C++, for most of his career. He is also a husband, father of 2, and lives under the (false?) assumption that Vim is the only editor worth learning. Last but not least, we wish to thank our sponsor and host, Infinity Labs! Infinity Labs R&D has created the revolutionary all new Open Lab designed to transform University graduates with zero experience into experienced top-tier software developers who are capable, if not better, than developers with 2+ years experience. Participants in the Open Lab acquire the understanding and skills which are typically found only among the most technically advanced professionals. Designed around a simulated real-world open-space work environment, with production quality deliverables and highly technical R&D challenges, the 28 week Open Lab provides its participants with in-depth real-world applicable knowledge combined with the real experience of developing a multi-platform, multi-language distributed system encompassing network connectivity, cloud computing, mobile, embedded devices, cyber-security, server-based systems, and more.
- Future direction of C++ and C++20: on the road towards heterogeneous programming
Lectures Auditorium - entry floor
On our December meetup, we're excited to host Michael Wong, a senior member of the C++ standard committee! Michael will talk about what is expected in C++20 and beyond, and in particular how C++ moves towards supporting heterogeneous execution environments. Agenda: 17:00 to 17:30 - Gathering and refreshments. Thank you Daynix! 17:30 to 19:00+ - The future direction of C++ and C++20: on the road towards heterogeneous programming ~19:00 to ~19:15 - Wrap-up and raffle Abstract: C++ 20 is sure to be a major release but have you ever wondered if there is a direction to C++? The C++ Direction Group has set a future direction for C++ and includes recommendation for C++ in the short and medium term. It will have immediate impact on what will enter C++20, and beyond. The first half of this talk will devote to the Directions Groups' description of where future C++ is heading as a member of the DG and show some of the features that have already landed towards C++20. Next, I will present the current status of parallel programming support in C++ as well as an outline of the upcoming features related to parallelism in C++20 and its accompanying technical specifications. C++11 became a parallel and concurrent language with support for mutable shared state, asynchronous capabilities, and concurrent collections. C++14 added a few minor fixes. C++17 took that further by standardizing parallel algorithms. C++20 will include additions from Parallel TS2 containing SIMD and Task blocks. But the most significant change is actually below the surface as C++ moves towards heterogeneous support with changes that started in C++11 with lambda, pushed forward with C++17 with Thread of Execution, and then soon to enter C++20 with executors. These form a subtle but definite direction towards heterogeneous programming support. Note: The Core C++ group will host a similar talk by Michael on 20/12, at Mevasseret - https://www.meetup.com/CoreCpp/events/257065101/ Bio: Michael Wong is the VP of R&D at Codeplay Software, a Scottish company that produces compilers, debuggers, runtimes, testing systems, and other specialized tools to aid software development for heterogeneous systems, accelerators and special purpose processor architectures, including GPUs and DSPs. He is now a member of the open consortium group known as Khronos and is Chair of the C++ Heterogeneous Programming language SYCL, used for GPU dispatch in native modern C++ (14/17) and OpenCL. For 20 years, he was the Senior Technical Strategy Architect for IBM compilers. He is the Canadian Head of Delegation to the ISO C++ Standard and a past CEO of OpenMP. He is also a Director and VP of ISOCPP.org, and Chair of all Programming Languages for Canada’s Standard Council. He chairs WG21 SG14 Games Development/Low Latency/Financial/Embedded Devices and WG21 SG5 Transactional Memory. For more, visit https://wongmichael.com/about Last but not least, a word from our sponsor: Daynix - The knowledge centre for cloud technologies. We provide "full stack" virtualization and cloud infrastructure SW development and consulting services. Our services range from hypervisors and paravirtualized devices to cloud infrastructure development. The company was founded by virtualization veterans closely working with open source communities on the technological edge of virtualization and cloud development. For more - http://daynix.com We are hiring!
- Getting Started with Open-Source Cross-Platform C++
Who's in for a C++ luncheon? On our November meeting, Sergey Dorodnic will explain and demonstrate how to get started with open-source cross-platform C++. CMake, Catch2, GitHub, CI etc. - they're in. Are you? Agenda: 12:00 to 12:30 - Pizza courtesy of Intel RealSense. Thank you Intel! 12:30 to 13:30 - Getting Started with Open-Source Cross-Platform C++ 13:30 to 13:45 - Wrap-up and raffle Abstract: This talk will offer a set of simple tools you may find useful when starting a C++ project. C++ is "no batteries included" language, so build-systems, libraries and frameworks do not receive much attention while being critical to real-life projects. We are going to build from scratch a cross-platform C++ library with unit-tests, GUI and possibly some python bindings, all using nothing but free and open-source tools. You will learn how to use CMake to build your code for Windows, Linux and Mac, how to set-up Continuous Integration environment in the cloud and more. Bio: Sergey Dorodnic is a software team-lead at Intel RealSense and the maintainer of https://github.com/IntelRealSense/librealsense . Sergey blogs about all things programming at http://dorodnic.com but has a special soft-spot for C++.
- Using C++ to build IoT devices and control them via Azure
Our October meeting is going to be the most hands-on to date: Alon Fliess will show how C++ can be used to progam IoT devices, Azure IoT hub and a Xamarin app. The talk will include a live demo - don't forget your hard hat! Agenda: 17:00 to 17:30 - Gathering 17:30 to 18:45 - Using C++ to build IoT devices and control them via Azure 18:45 to 19:00 - Wrap-up and raffle Abstract: Monitoring water temperature, opening a yard gate and detecting water flood are just few samples of the many scenarios that simple IoT system can answer. Azure IoT Hub can be used to connect many different types of devices. At the lowest end, you can use it to connect a less than 3$ WiFi capable system on a chip microcontroller, such as the WeMos D1 Pro and NodeMCU. In this lecture we will dive into the details of the Azure IoT hub. We will understand the service and its SDKs. We will see how we can build a WiFI capable, Modern C++ Arduino based, cloud controlled IoT smart switch. We will then use a cross platform Xamarin based application to activate the smart switch. You will learn - 1. An Internet of Thing system overview 2. How to create and use the Azure IoT Hub 3. Implementing an Azure IoT client SDK based solution using modern C++ 4. Provisioning IoT devices, sending information to the cloud and receiving commands 5. Arduino C++ development using Visual Studio with Visual Micro Bio: Alon Fliess is a chief architect and founder of CodeValue, as well as a Microsoft Regional Director and Azure MVP. His full bio can be found here - http://alonfliess.me
- Introduction to Qt
On our August meetup, Diego Iastrubni will present Qt, which is an extremely popular C++ framework. Agenda: 17:00 - gathering and refreshments *courtesy of Yahoo research* 17:30 - Intro to Qt 18:30 - wrap-up and raffle Abstract: Qt is a cross-platform framework based on C++. Qt provides a wide set of features such as GUI, networking, database access, JSON and XML parsing and much more. Qt is a mature and widespread project, used by leading companies to develop products running on desktop, mobile and embedded devices. In this lecture we will try to understand what problems is Qt trying to fix, and which developers tool it brought to the world. We will also examine some applications written in Qt. Bio: Diego Iastrubni is a free software user. In the past, Diego coordinated the Mandrake and KDE Hebrew translations team. A hobby programmer using Qt since 2.0. Part of the 2007 developer contest winning team (in developer tools category). Today Diego is not using enough free software in his life, and thinking how to improve it.
- New and exciting C++17 features (and some notes on perfect forwarding)
On our (regular) July meetup, we continue to explore the new C++17 standard, taking a deeper dive into a few useful features. Agenda: 17:00 - gathering 17:30 - New and exciting C++17 features (and some notes on perfect forwarding), by Alex Dathskovsky 18:50 - Wrap-up and raffle Abstract: The new c++17 standard has introduced many language improvements and new STL features. In this meetup, we will discuss some of those changes: First, we will talk about the File System library, which provides a rich set of file management operations, using one cross-platform interface. Second, we will review some new template rules and understand how they ease and enrich template meta-programming. As an example, we will see how those rules allow the implementation of combined lambdas, which can do multiple types of tasks but look like one function. Much of combined lambdas' strength comes from compile-time work; we will examine some disassembly to fully understand this features. Lastly, we will revisit an important C++11 feature, which seems to not be understood well enough: Perfect Forwarding. Bio: Alex Dathskovsk has over 14 years of software development experience, working on systems, low-level generic tools and high-level applications. Alex has worked as an integration/software developer at Elbit, senior software developer at Rafael, technical leader at Axxana and is now a team leader and technical leader at Abbot. On his current job, Alex is working in the field of image processing, constructing a map of the heart based on ultrasound images (without intrusive examinations). His job includes working with tools such as CUDA and IPP for vector optimization. Alex is a C++ expert with a strong experience in template meta-programming. Alex also teaches a course about the new features of modern C++, trying to motivate companies to move to the latest standard.