Embedded C++ Conference in Bochum

emBO++ will take place from 9th to the 11th of March 2018 in Bochum, ruhr-valley, Germany

Get your ticket

Big innovation on small devices

Worldwide there are more than one billion devices that could be thought of as embedded systems. All of them have been programmed at least once in their lives. While most systems still run plain old C-Code, a new generation of compilers, devices and language features encourage us to use more modern C++ in the world of embedded systems.

Efficiency - Coding Style - Safety

Modern C++ allows us to express ourselves better to the compiler and the hardware than ever before. It is our task, our responsibility and our passion to create better IT infrastructure. Out of this passion the emBO++ has been instantiated. A convention for developers, technologists and C++-enthusiasts. Come and join us, and let us influence more than a billion devices!

Meeting the experts on embedded systems

emBO++ is an annual meeting of experts working mainly, but not exclusively, with C++ on embedded devices. Every year in the beginning of spring, the meeting in Bochum should be a fixed event in every programmers or engineers calendar. Join us and help us build a better embedded world for everyone. emBO++ offers a free pre-event, a workshop-day for enthusiastic intermediate embedded programmer and engineers, a conference day for advanced programmers with a discussion-panel in the evening and after-party, as well as a study-group meeting for developing proposals to the C++ standards committee on sunday. Get your ticket for next emBO++ today!

Main-Location

Zentrum für IT-Sicherheit (ZITS)

Lise-Meitner-Allee 4, 44801 Bochum

Explore

Schedule

From:17:00

Pre-Event

Meeting at Das Labor(Location)

From:19:30 To:21:00

Lightning Talks

tba

From:21:30 To:00:00

Beer-Event

At GAME food & fun(Location)

...
From:07:45

Doors and Registration at ZITS

At:07:45

Picking up everyone that's interested from Tram

Pick-Up at Tram-Station Hustadt(TQ)

From:08:15 To:08:30

Room Horst Görtz Ost

Stephan Bökelmann

Welcome Message

From:08:30 To:10:00

Room Horst Görtz Ost

Rainer Grimm

What every professional C++ programmer
should know about templates!

Room von Neumann

Jörn Seger

Getting Started with Yocto

From:10:00 To:10:45

Breakfast-Snack

From:10:45 To:12:45

Room Horst Görtz Ost

Rainer Grimm

What every professional C++ programmer
should know about templates!

Room von Neumann

Jörn Seger

Getting Started with Yocto

From:12:45 To:14:15

Lunch

From:14:15 To:16:15

Room Horst Görtz Ost

Kris Jusiak

Embedding a Compile-Time-State-Machine

Room von Neumann

Wouter van Ooijen

Embedded programming with the hwcpp library

From:16:15 To:16:45

Coffee

From:16:45 To:18:15

Room Horst Görtz Ost

Kris Jusiak

Embedding a Compile-Time-State-Machine

Wouter van Ooijen

Embedded programming with the hwcpp library

From:20:00

Meeting at tba

...
From:07:45

Doors and Registration at ZITS

At:07:45

Picking up everyone that's interested from Tram

Pick-Up at Tram-Station Hustadt(TQ)

From:08:30 To:10:00

Room Horst Görtz Ost

Stephan Bökelmann

Welcome Message


Simon Brand

Embedded DSLs for embedded programming: A case study

From:10:00 To:10:30

Breakfast-Snack

From:10:35 To:11:35

Room Horst Görtz Ost

Klemens Morgenstern

Developing high-performance Coroutines for ARMs

Room von Neumann

Denis Bakhvalov

Dealing with performance analysis in C/C++

From:11:40 To:11:55

Room Horst Görtz Ost

tba

Lightning-Talk 1

From:12:00 To:13:00

Room Horst Görtz Ost

Marc Mutz

Views, Views everywhere

Room von Neumann

Emil Fresk

The compile-time, reactive scheduler: CRECT

From:13:00 To:14:10

Lunch

From:14:15 To:15:15

Room Horst Görtz Ost

Ben Craig

Standardizing an OS-less subset of C++

Room von Neumann

Cem Bassoy

Views, Algorithms and Iterators

From:15:20 To:15:35

Room Horst Görtz Ost

tba

Lightning-Talk 2

From:15:40 To:16:40

Room Horst Görtz Ost

Jacek Galowicz

Scalable test infrastructure for advanced bare-metal software development

Room von Neumann

Szymon Janc

nimBLE - Portable Bluetooth stack from Apache Mynewt

From:16:40 To:17:10

Coffee

From:17:15 To:18:15

Room Horst Görtz Ost

Odin Holmes

Bare-Metal-Roadmap

From:18:20 To:18:35

Room Horst Görtz Ost

tba

Lightning-Talk 3

From:18:45 To:20:00

Room Horst Görtz Ost

Q&A Speakerspanel

...
From:10:30 To:14:00

Session 1

Study-Group Meeting

From:14:00 To:14:45

Lunch

From:14:45 To:16:45

Session 2

Study-Group Meeting

...

Speakers

Simon Brand

Senior Software Engineer, GPGPU Toolchains

Codeplay

Talk

Embedded DSLs for embedded programming: A case study

ABOUT

Simon Brand

Simon is a GPGPU toolchain developer with particular interest in C++. He has an unhealthy love of template metaprogramming and the dark corners of the language and can usually be found on Stack Overflow, the C++ Slack channel, or the C++ Edinburgh Meetups which he co-organises. He welcomes all discussion of language lawyering, template hacks, beer, whisky, experimental cinema and Carly Rae Jepsen.

Talk: tba

C++ templates provide a powerful host language for embedded domain specific languages (EDSLs). They allow a declarative style of programming where the intent of the programmer is translated by the library into efficient code. This talk presents the Embarrassingly Templated Keyboard Framework as a case study for these EDSLs, examining the support which C++17 provides, and looking to how future language features could help.

Homepage: Simons Blog

Emil Fresk

CTO

WideFind AB

Talk

The compile-time, reactive scheduler: CRECT

ABOUT

Emil Fresk

Emil is a PhD student in Robotics, embedded C++ nerd, and machine vision hardware/software designer from Sweden. On his free time he likes to design and program open-source flight controllers for UAVs while also being a co-founder and CTO of the localization company WideFind AB with the motto "Localize Everything Everywhere".

Talk: The compile-time, reactive scheduler: CRECT

In this talk we will explore how create a compile-time schedule for the Cortex-M series of MCUs, currently named crect. The aim of this system is to be correct by design and guarantee dead-lock and data-race free execution, while still being extremely fast and very easy to use. This is done by creating a Stack Resource Policy based scheduler at compile time, which disappears after compilation and only leaves a few instructions in the user’s code. Finally we will see what limitations C++ gives towards this goal, by exploring what cannot be checked at compile-time.

Homepage: See his company

Rainer Grimm

Trainer and Coach

Modern C++

Training

What every professional C++ programmer should know about templates!

ABOUT

Rainer Grimm

Rainer has worked as a software architect, team lead and instructor for about 20 years. In his spare time he likes to write articles on the topics C++, Python and Haskell, but he also likes to speak at conferences. On his blog "Modern C++" he writes about his passion C++. Now he is on independent legs, giving seminars about modern C++ and Python. His books "C++ 11 für Programmierer ", "C++" and "C++ - Standardbiliothek" for the "kurz & gut" series were published by the publisher O'Reilly.

Talk: What every professional C++ programmer should know about templates!

Templates are one of the outstanding features of C++. But at first, there is a hurdle to overcome. Sometimes they are not so easy to use. I will provide you with the basic knowledge to overcome these hurdles and will give the on or other deeper insight. These deeper insight includes overloading of function templates, automatic template type deduction, specialisation of templates, type and non-type template parameters, variadic templates and fold expressions.

Homepage: Rainers Blog about modern C++

Odin Holmes

CEO/CTO

Auto-Intern GmbH

Talk

Bare-Metal-Roadmap

ABOUT

Odin Holmes

Odin Holmes has been programming bare metal embedded systems for 15+ years and as any honest nerd admits most of that time was spent debugging his stupid mistakes. With the advent of the 100x speed up of template metaprogramming provided by C++11 his current mission began: teach the compiler to find his stupid mistakes at compile time so he has more free time for even more template metaprogramming. Odin Holmes is the author of the Kvasir.io library, a DSL which wraps bare metal special function register interactions allowing full static checking and a considerable efficiency gain over common practice. He is also active in building and refining the tools need for this task such as the brigand MPL library, a replacement candidate for boost.parameter and a better public API for boost.MSM-lite.

Talk: Bare-Metal-Roadmap

Through the much-hyped advent of Industry 4.0 and IoT, billions of new bare metal devices will be connected to the internet or intranets and will be expected to talk to each other, even across company boundaries. This presents a plethora of new challenges, many of which share a common root; it is crucial that we build a foundation for code reuse and encapsulation of expertise in this domain. What does cross-platform code really mean when we are targeting thousands of 'platforms'? When encapsulating expertise, we implicitly make assumptions about user code and user code implicitly makes assumptions about library code. What are valid assumptions? What is the basic interface? In this talk I will present a possible future for bare metal development which attempts to answer these questions.

Homepage: Odins Blog on TMP

Szymon Janc

Embedded Software Engineer & Co-Founder

Codecoup

Talk

nimBLE - Portable Bluetooth stack from Apache Mynewt

ABOUT

Szymon Janc

Szymon is an embedded software engineer. Develops embedded Linux systems since 2007. Linux and FLOSS enthusiast and contributor. Since 2009 works on Android based mobile platforms development mostly focused on local connectivity area. Involved in Bluetooth stack development for The Zephyr Project and Apache Mynewt. In 2015 co-founded Codecoup, a company providing support in building IoT solutions, local connectivity, Linux, Open Source and embedded software.

Talk: nimBLE - Portable Bluetooth stack from Apache Mynewt

Bluetooth 5 and Bluetooth Mesh are the latest additions to Bluetooth technology. This talk will give overview of new features introduced in latest specification. nimBLE stack from Apache Mynewt project will be presented as an OpenSource implementation of both Bluetooth 5 and Mesh. nimBLE is portable BLE stack implementing both host and controller targeting memory and CPU constrained devices (eg ARM Cortex M0/M4).

Homepage: Business Page of Codecoup

Krzysztof Jusiak

Senior Software Engineer

Quantlab Financial

Training

Embedding a Meta-State-Machine

ABOUT

Kris Jusiak

Kris Jusiak is a Software Engineer focused on modern C++ development, especially during the compilation time where performance and quality matters. He has experience in industries such as telecommunications and games. Kris is an author of, proposed to boost, dependency injection and state machine libraries.

Training: Embedding a Meta-State-Machine

Homepage: https://krzysztof-jusiak.github.io/

Klemens Morgenstern

Electrical Engineer

Freelancer

Talk

Developing high-performance Coroutines for ARMs

ABOUT

Klemens Morgenstern

As an electrical engineer by trade and C++ developer by passion, Klemens is interested in low level applications for C++. He works on tools and libraries for embedded environment and system libraries, such as boost.process. He's making a living as a freelancer and entrepeneur.

Talk: Developing high-performance Coroutines for ARMs

As an alternative to threads, coroutines can provide concurrency. In this talk we will explore the challenges and advantages a specific low-level implementation one architecture brings. We will review the assembly, and look at possible applications of concurrency, such as replacing interrupt driven statemachines with coroutines.

Homepage: Klemens GitHub-Profile

Marc Mutz

Senior Software Engineer and Trainer

KDAB

Talk

Views, views everywhere

ABOUT

Marc Mutz

Marc is a Senior Software Engineer and Trainer with KDAB and author of the “Effective Qt” series of articles. He originated KDAB’s “In-depth Multithreading With Qt” and "Modern C++" courses, and runs “-Wmarc”, a blog about Qt, C++ and Boost. The third-most prolific contributor to QtBase and former maintainer of the QtWidgets module, he has actively used C++ and the Qt framework for close to two decades, first as a KDE contributor, and then on the job. His most recent contribution to Qt is QStringView, a revolutionary abstraction of string data from containers. Marc is a sought-after speaker at conferences on Qt and C++ topics and holds an MSc in Theoretical Physics.

Talk: Views, views everywhere

There's a revolution coming. Views are popping up everywhere these days and they are not at all like the V in MVC (Model-View-Controller): `string_view` from C++17, `span` from the Guideline Support Library and `array_view` (targeted at C++2a) are just the beginning. We have already seen `function_view`, `observer_ptr` and `zstring_view` mentioned, and there are bound to be other view types springing up everywhere, not the least in the Ranges TS. But C++ is not ready for them. Views appear to be value types, but have reference semantics, and this makes using views over temporary values brittle. This talk defines what a view is, in the modern sense, and what the craze is all about. We will explore how views help in modern API design, dig into how and why they clash with current C++ semantics, and will discuss options how to make use of views in C++ safer and less brittle.

Homepage: Marcs Blog on Qt, Boost and C++

Wouter van Ooijen

Teacher and C++ Expert

Hogeschule Utrecht

Training

Embedded programming with the hwcpp library

ABOUT

Wouter van Ooijen

Wouter is a software engineer by profession and a hardware tinkerer by passion. He got his degree in Informatics from the Delft University of Technology, the most practical-oriented of the Dutch universities, sometimes frowned upon by the more theoretical ones.

Talk: Embedded programming with the hwcpp library

Homepage: Wouters Profile Stackexchange-Profile

Jacek Galowicz

Software Engineer

Cyberus Technology

Talk

Scalable test infrastructure for advanced bare-metal software development

ABOUT

Jacek Galowicz

Jacek Galowicz engineers operating systems with C++ and software test infrastructure with Haskell. He previously worked at Intel and FireEye, before joining with colleagues to found Cyberus Technology -- the German cyber security entity which rocketed to fame in January 2018 with its discovery of the Meltdown x86 security flaw. Jacek is the author of the "C++17 STL Cookbook" and a blogger.

Talk: Scalable test infrastructure for advanced bare-metal software development

Cyberus Technology delivers secure micro-hypervisor platforms with virtual machine introspection for "defense-in-depth" of IT/industrial applications. These products are programmed in C++ and are subject to stringent security and code quality requirements. Together with extreme hardware compatibility requirements this poses unique challenges on the test environment. The talk demonstrates Cyberus’ automated test infrastructure which is so tightly coupled with the development cycle that no code commit can ever hit the master branch without passing every single integration test case on all supported HW platforms. The presentation demonstrates the value of fully automated test integration to development pace and code quality and provide perspectives on platform productization.

Homepage: Jaceks Blog

Jörn Seger

Senior Software Architect

Yorns

Training

Getting started with Yocto

ABOUT

Jörn Seger

Training: Getting started with Yocto

Denis Bakhvalov

C++ Compiler Developer

Intel

Talk

Dealing with performance analysis in C/C++

ABOUT

Denis Bakhvalov

Denis is C++ enthusiast with more than 8 years of experience. Denis started his C++ journey as a developer of desktop applications than moved to embedded and now he works at Intel, doing C/C++ compiler development. He enjoys writing the fastest-possible code and staring at the assembly. Denis is a farther of 2, and besides technical interests he likes to play football and chess.

Talk: Dealing with performance analysis in C/C++

At Intel on a daily basis I do a lot of profiling and benchmarking stuff, analyzing pieces of assembly and checking performance counters. In this talk I will present some interesting performance cases along with the techniques how to solve them. If you ever felt a pain of sorting out code alignment issues from a real performance regressions – unfortunately during this talk you will feel it again. If you just want to squeeze the last bit of performance from your code – take the first row.

Cem Bassoy

Research Associate

Fraunhofer Institute for Optronics

Talk

Views, Algorithms and Iterators

ABOUT

Cem Bassoy

Cem is a research associate at the Fraunhofer Institute for Optronics, System Technologies and Image Exploitation. His research interesents are compiler design and high-performance computing on CPUs and GPUs. He is a C++ enthusiast who enjoys to design and implement generic and data types for numerical applications.

Talk: Views, Algorithms and Iterators

In this talk I will present and discuss a possible design of algorithms and iterators for multidimensional views with runtime-variable number of dimensions and extents supporting any type of non-hierarchical storage format including the first- and last-order storage format. The interface of these algorithms and iterators are akin to the ones of the C++ standard library and will help you to implement algorithms with multidimensional views. I will present an implementation that is almost as efficient as the one-dimensional case and discuss parallelization opportunities.

Ben Craig

Principal Software Engineer

National Instruments

Talk

Standardizing an OS-less subset of C++

ABOUT

Ben Craig

Ben is a Principal Software Engineer, primarily developing device drivers for various operating systems, and occasionally tinkering with the firmware side of things. Ben is an occasional contributer to libc++ and Apache Thrift.

Talk: Standardizing an OS-less subset of C++

Is it reasonable to call std::sort on a system with no OS? What about <your function or class here>? Wouldn't it be great if someone figured out what was safe to call and standardized it? Well, someone is. Hear about my C++ standards paper http://wg21.link/P0829, and my vision for standardizing the existing embedded and kernel programming practices.

Thanks to all our supporters!

Auto-Intern GmbH Kvasir ISO Standard C++ Foundation pottcpp Usergroup Das Labor Hackerspace Widefind SE CppCon JetBrains PROLAB-Bochum Technische Hochschule Georg Agricola KDAB Bochumer Wirtschaftsförderung

emBO++ is brought to you by nerd_force1 UG, the TH Bochum and the BO-I-T. If you want to help us build the greatest conference for embedded C++ Design, don't hesitate to contact us via info@embo.io.

Herner Str. 299
Gebäude B29
D-44809 Bochum
Deutschland/Germany