Loading…
This event has ended. Visit the official site or create your own event on Sched.
View analytic

Log in to bookmark your favorites and sync them to your phone or calendar.

•Embedded and Systems Programming [clear filter]
Monday, September 25
 

11:00am

The Quiet Little Gem in Modern C++: <system_error>
Amongst the loud fanfare of C++11 arrived this quiet little gem of <system_error>, with std::error_code and std::error_condition born from the heart of boost::asio. With Committee input they evolved for inclusion into the C++11 Standard, providing consistent and extensible ways for applications to expose platform-specific error-codes, platform-independent error-conditions, and rely upon an open-ended design that permits future extensibility for message reporting; and even internationalization of logs and user-facing events and conditions.

More than half a decade later, we most unhappily find that the motivation and intended use model for std::error_code and std::error_condition are still not well understood; even in circles eagerly embracing features and idioms encouraged by the latest C++ Standard revisions. This may be somewhat expected, as all things “error” tend to permeate system-wide design-decisions and influence the processing metaphor; how algorithms compose conditional success-or-failure branching; and create consistency challenges across APIs (both internally, and for interoperation with third-party libraries).

We discuss the features and design of <system_error> and its intended use; make recommendations regarding API design; and propose possible extension mechanisms for module-specific concerns, instance-specific messages (with embedded value-reporting), and internationalization.

Speakers
avatar for Charles Bay

Charles Bay

F5 Networks Inc.
Software developer with 25+ years experience in large-scale and distributed systems in performance-sensitive environments including real-time processing, performance visualization, embedded systems, time-sensitive processing of large data sets, hardware status-and-control, an... Read More →


Monday September 25, 2017 11:00am - 12:00pm
Manchester (407) Meydenbauer Center

2:00pm

Almost Unlimited Modern C++ in Kernel-Mode Applications
Rian Quinn's "Making C++ and the STL Work in the Linux/Windows Kernels" from CppCon 2016 showed the difficulty of making C++ code work correctly in kernel mode. For some real-time systems, though, developing C++ applications that run in kernel mode "just works" as most of the necessary runtime support for Modern C++ is already available. Platform limitations, though, can offset the development gains that come with easy access to hardware.

This talk will present a variety of issues — such as limited filesystem functionality, missing memory protection, limited debugging and performance monitoring tools, and constrained resources — that impact usage of standard C++ functionality and require additional due diligence on the part of the developer. Topics will include testing in user mode; kernel-mode exceptions; and programming the Intel performance monitoring hardware.

Speakers
avatar for Billy Baker

Billy Baker

Senior Staff Software Engineer, FlightSafety International
Billy Baker has developed deterministic real-time flight simulation software using C++ for FlightSafety International, Evans and Sutherland and Boeing since 1997. At C++ committee meetings, he can most likely be found in LWG. He received his B.S. and M.S in Applied Mathematics from the University of Tulsa and is currently working on a Ph.D. in Computer Science. If asked, he will tell stories from his research semester at NCSA when web browsers did not yet have forms support.Website... Read More →


Monday September 25, 2017 2:00pm - 3:00pm
ENIAC (404) Meydenbauer Center

3:15pm

Deconstructing the OS: the Devil’s In the Side Effects
IncludeOS is a library operating system, where your C++ application pulls in exactly what it needs and turns it into a bootable binary. But once you have your standalone program with standard libraries, what do you really need from an operating system? In this talk we’ll show you some exciting developments in unikernel OS- and hypervisor design, ranging from a single-function do-it-all hardware interface for everything needed to run a web server, to a full on object-oriented ecosystem giving your C++ application total control over everything from devices, drivers and plugins, to every protocol in an internet enabled host. We’re running a full IP stack on platforms ranging from full blown server hardware to inside a single unit test in userspace and we still want more. We’ll discuss how minimal can be combined with maximal - giving you lots of modern abstractions while keeping the final binary as lean and mean as possible.

Speakers
avatar for Alfred Bratterud

Alfred Bratterud

CTO, IncludeOS
Alfred Bratterud is the creator of IncludeOS, the C++ unikernel. The work on IncludeOS started as a PhD research project but has since evolved into a full time venture for the IncludeOS developer team. Alfred holds BSc and MSc in computer science from the University of Oslo, wi... Read More →


Monday September 25, 2017 3:15pm - 4:15pm
Harvard (406) Meydenbauer Center

5:20pm

Just Enough x86 Assembly to Be Dangerous
This tutorial is an introduction to x86 assembly language aimed at C++ programmers of all levels who are interested in what the compiler does with their source code.

C++ is a programming language that cares about performance. As with any technology, a deep understanding of C++ is helped by knowledge of the layer below, and this means knowledge of assembly language. Knowing what the compiler does with your source code and the limitations under which it operates can inform how you design and write your C++.

We learn how to generate, inspect and interpret the assembly language for your C++ functions and programs. We take a short tour of common assembly instructions and constructs, and discover why extreme caution should be exercised if we are trying to infer performance characteristics from a simple inspection of assembly code.

Starting with a simple `operator+` for a user-defined class, we take a look at how interface and implementation choices affect the generated assembly code and observe the effect of copy elisions and related optimizations that compilers commonly perform.

Speakers
avatar for Charles Bailey

Charles Bailey

Software Engineer, Bloomberg LP
Charles Bailey is a software developer at Bloomberg LP. He works in Developer Experience Engineering London, where he consults and advises on all aspects of software development. His previous experience in software development has included roles in many areas, including business... Read More →


Monday September 25, 2017 5:20pm - 5:50pm
Ferranti (403) Meydenbauer Center
 
Wednesday, September 27
 

8:00am

Emulating a BBC Micro in Javascript
Total fun talk! No C++ at all: but my story on how I implemented a cycle-perfect 6502 emulator for the BBC Micro (a British home computer from the 1980s)...in Javascript! And how - amazingly - it's fast enough to run in a browser, even on a cell-phone!

Includes some fun tales of how old games protection systems work, and more information than any sane human would ever want to know about how the innards of the venerable 6502 work.

Talk is an updated version of https://www.youtube.com/watch?v=37jyHQT7fXQ.

Speakers
avatar for Matt Godbolt

Matt Godbolt

Senior Software Engineer, DRW
Matt Godbolt is a software engineer with trading firm DRW, and the creator of the Compiler Explorer website. He is passionate about writing efficient code. He has previously worked at on mobile apps at Google, run his own C++ tools company and spent more than a decade making cons... Read More →


Wednesday September 27, 2017 8:00am - 8:45am
ENIAC (404) Meydenbauer Center
 
Thursday, September 28
 

3:15pm

C++ and Persistent Memory Technologies, Like Intel's 3D-XPoint
With the advent of a new, persistent-memory-enabled world, the current software industry must prepare for changes. Looking forward to meet the new requirements set by this new type of hardware, a new standard API should be introduced to ease the adoption of this new and exciting technology. During the development of the NVM (Non Volatile Memory) Library, it became apparent that the C API is complex and hard to use. To remove some of the pain points, a proposal of a new C++ API was made.

This lecture will introduce the API and explain some of the intricacies behind it. This entails both the basic concepts of persistent memory programming, like pointers and transactions, and a prototype integration with the standard library's containers. Hopefully this will spark a discussion and will help validate the proposed changes. Deciding on an API this early on will help developers in the early adoption of this potentially game-changing technology.

Speakers
avatar for Tomasz Kapela

Tomasz Kapela

Software Engineer, Intel
Tomasz Kapela is a software engineer with 6 years of experience in the industry. He majored in radio communication systems from the Gdansk University of Technology in 2010. Since then he worked as a software developer and systems designer in Radmor, where he designed and implemen... Read More →


Thursday September 28, 2017 3:15pm - 4:15pm
Ferranti (403) Meydenbauer Center

3:15pm

Microcontrollers in Micro-increments : A Test-driven C++ Workflow for Embedded Systems
Baby steps are safe steps. Making small moves in code, driven by tests, and continuously refactoring helps to keep embedded development on the right track. With test-driven development we can move more quickly, cleanly, and safely.

With increased device capability comes increased expectations, and to meet these expectations we find that real-time operating systems, vendor-supplied drivers and third-party libraries are becoming the new normal for embedded projects. Debugging this complex embedded firmware directly on the target hardware, though, is a slow and painful process, and often with an uncertain outcome.

In this talk I’ll demonstrate on a realistic hardware design how different test-driven idioms for C++ on embedded can help us to both build the code right, and build the right code. I’ll show how continuous integration builds, sanitizers and other tools can leverage this investment in tests, give us a high level of confidence in our code changes, and reduce the amount of time spent on debug-on-hardware activity.

We’ll look at patterns of implementation in C++ that help to build testable embedded systems, as well as the trade-offs and compromises to a “pure” design ideal that we often have to make on these highly constrained devices.

Speakers
avatar for Mike Ritchie

Mike Ritchie

Developer and Technical Coach, 13coders
Mike is an independent developer and trainer, working with C++ since the mid -90s, with a couple of detours into engineering management. He works mainly on embedded systems, and his focus is on making test-driven development and continuous integration work well for small devices... Read More →


Thursday September 28, 2017 3:15pm - 4:15pm
ENIAC (404) Meydenbauer Center

8:30pm

C++ in the Internet of Things
C++ has not always been the first language choice to use in embedded environments, but with the advent of modern C++, its use has been on the rise. Developing for embedded environments generally and the Internet of Things (IoT) specifically, presents challenges for which modern C++ offers a unique tool set. Come ask the experts on how they view C++ in this space and how to use modern C++ to get the best performance possible to meet the demands of IoT.

This panel is presented by the Northwest C++ Users’ Group: http://nwcpp.org/

Moderators
avatar for Brett Searles

Brett Searles

Principal Architect, Attobotics
Work in hardware, embedded, graphics and web-based software space. Currently working on a Holographic Surgical Center to allow surgeons to perform simulated surgeries on real patient data. Also working with a major electronics distributor on a SAAS tool for their customers to eas... Read More →

Speakers
JB

Jelani Brandon

Software Engineer, Microsoft Azure IoT Team
Jelani has been working in the software industry for 20 years and in IoT industry for the past 9.  Along with working in the Azure IoT Team since its inception he also has worked on Microsoft Windows CE and Compact OS.  Previously he worked in Las Vegas for International Game Tec... Read More →
avatar for Sara Chipps

Sara Chipps

CEO, Jewelbots
Sara Chipps is a JavaScript developer based in NYC. She has been working on Software and the Open Source Community since 2001. She’s been obsessed with hardware and part of Nodebots since 2012.  She is the CEO of Jewelbots, a company dedicated towards drastically changing the number of girls entering STEM fields using... Read More →
avatar for Lloyd Moore

Lloyd Moore

President, CyberData Corporation
Lloyd Moore is the founder and owner of CyberData Corporation, which provides consulting services in the robotics, machine vision and industrial automation fields. Lloyd has worked in software industry for 25 years. His formal training in biological-based artificial intelligence, electronics, and psychology. Lloyd is also currently the president of... Read More →
avatar for Patrice Roy

Patrice Roy

Professor, Université de Sherbrooke / Collège Lionel-Groulx
Patrice Roy has been playing with C++, either professionally, for pleasure or (most of the time) both for over 20 years. After a few years doing R&D and working on military flight simulators, he moved on to academics and has been teaching computer science since 1998. Since 2005... Read More →
avatar for Dan Saks

Dan Saks

President, Saks & Associates
Dan Saks is the president of Saks & Associates, which offers training and consulting in C and C++ and their use in developing embedded systems. Dan used to write the “Programming Pointers” column for embedded.com online. He has also written columns for numerous print publications... Read More →
avatar for Ewerton Scaboro da Silva

Ewerton Scaboro da Silva

Software Engineer, Microsoft
Ewerton has been working with software development for 10+ years in many languages, platforms and protocols. He graduated from the Federal University of Itajubá/Brazil, and worked previously with data security (Hewlett Packard) and real-time communication systems (Microsoft Comm... Read More →


Thursday September 28, 2017 8:30pm - 10:00pm
Manchester (407) Meydenbauer Center
 
Friday, September 29
 

4:45pm

Building for the Best of Us: Design and Development with Kids in Mind

Building an API easy enough for kids to understand (in C++) is a challenge. Every design decision, from the circuit board to the plastic can effect the results. We'll talk about product design, manufacturing, firmware, software, and the Arduino API as we cover the Jewelbots timeline from Kickstarter to shipping to distribution. Additionally, hear from the two girls who are the top Jewelbots from the Bellevue area! You'll learn what they have built and how they view the future of C++.


Speakers
avatar for Sara Chipps

Sara Chipps

CEO, Jewelbots
Sara Chipps is a JavaScript developer based in NYC. She has been working on Software and the Open Source Community since 2001. She’s been obsessed with hardware and part of Nodebots since 2012.  She is the CEO of Jewelbots, a company dedicated towards drastically changing the number of girls entering STEM fields using... Read More →


Friday September 29, 2017 4:45pm - 5:45pm
ENIAC (404) Meydenbauer Center

6:30pm

Jewelbots Build Workshop (1 of 2)
Looking for a fun way to spark your child's interest in coding? Consider Jewelbots.
Join us for:
  • An entry-level coding workshop geared towards kids (also fun for grownups)
  • Facepainting
  • Coding for Arduino!
  • A Craft Table
  • Learning and fun for all ages!

A hands-on event for kids and adults ages 8 and up to dig in and learn to code in C++ via the Jewelbots API. The goal of the event is to introduce adults and kids alike to the fun and magic of coding while learning about connected hardware and making new friends!

This a fun, inclusive family-friendly event for experienced coders and newbies alike.

This event is free and open to anyone that wants to attend and watch, but if you wish to rent a Jewelbot for the workshop, you'll need to reserve one in advance here:
    https://cppcon2017.eventbrite.com/
You'll also need a laptop with Linux, MacOS, or Windows (Chromebooks without Linux do not work). Save time and pre-download the Arduino IDE.

You can also purchase your own Jewelbot to bring to the workshop.

Note to participants that need to leave early: If you wish to attend the workshop please attend the first part starting at 6:30. The second part (from 7:30 to 8:30) is optional, providing additional time for further exploration.

Speakers
avatar for Sara Chipps

Sara Chipps

CEO, Jewelbots
Sara Chipps is a JavaScript developer based in NYC. She has been working on Software and the Open Source Community since 2001. She’s been obsessed with hardware and part of Nodebots since 2012.  She is the CEO of Jewelbots, a company dedicated towards drastically changing the number of girls entering STEM fields using... Read More →



Friday September 29, 2017 6:30pm - 7:30pm
UNIVAC (409) Meydenbauer Center

7:30pm

Jewelbots Build Workshop (2 of 2)
Looking for a fun way to spark your child's interest in coding? Consider Jewelbots.
Join us for:
  • An entry-level coding workshop geared towards kids (also fun for grownups)
  • Facepainting
  • Coding for Arduino!
  • A Craft Table
  • Learning and fun for all ages!

A hands-on event for kids and adults ages 8 and up to dig in and learn to code in C++ via the Jewelbots API. The goal of the event is to introduce adults and kids alike to the fun and magic of coding while learning about connected hardware and making new friends!

This a fun, inclusive family-friendly event for experienced coders and newbies alike.

This event is free and open to anyone that wants to attend and watch, but if you wish to rent a Jewelbot for the workshop, you'll need to reserve one in advance here:
    https://cppcon2017.eventbrite.com/
You'll also need a laptop with Linux, MacOS, or Windows (Chromebooks without Linux do not work). Save time and pre-download the Arduino IDE.

You can also purchase your own Jewelbot to bring to the workshop.

Note to participants that need to leave early: If you wish to attend the workshop please attend the first part starting at 6:30. The second part (from 7:30 to 8:30) is optional, providing additional time for further exploration.

Speakers
avatar for Sara Chipps

Sara Chipps

CEO, Jewelbots
Sara Chipps is a JavaScript developer based in NYC. She has been working on Software and the Open Source Community since 2001. She’s been obsessed with hardware and part of Nodebots since 2012.  She is the CEO of Jewelbots, a company dedicated towards drastically changing the number of girls entering STEM fields using... Read More →


Friday September 29, 2017 7:30pm - 8:30pm
UNIVAC (409) Meydenbauer Center