your skills

Let's Play

Speakers 2021

Erik Valkering

Software Engineer @ Mindesk

Erik Valkering has always been very interested in programming. Already at the age of 11, he was introduced to QuickBasic via a friend of his.


During high school, he tried various languages, like Visual Basic, Pascal, and Assembly, but eventually fell in love with C++.

After high school, he did a Bachelor in Computer Science at the Hogeschool van Amsterdam, while working as a part-time software developer at TNR Software. After graduating cum laude, he obtained an MSc in Computer Science from the Delft University of Technology. After working for 8 years at TNR Software, he decided it was time to move on and was hired as a software engineer at Plaxis BV, where he was a software engineer and the product owner within his team.

Yet another 8 years later, he decided to leave Plaxis to join Mindesk, a young startup that provides a real-time solution to enhance CAD systems with capabilities for presenting, reviewing, and modeling in Virtual and Augmented Reality, directly using the CAD system's native data model, avoiding any necessary conversion.

At his work and during his free time, he's always been interested in using the state-of-the-art in software engineering, and especially Modern C++. For several (hobby) projects, he already managed to crash the compiler, resulting in those uninformative 'Internal compiler error' messages. If you get those, you know you're doing bleeding-edge stuff.

Pigro - Lazy Evaluation on Steroids




The Pigro project is a C++20 library with which developers can easily define lazily-evaluated functions, which might be useful if you have functions that are generally expensive to compute. Instead, lazily-evaluated functions, after having been called, will cache their result, such that the next time calling them will return the previously stored value. Additionally, the library allows you to declare additional inputs for those functions, such that when they have changed, only then the function is re-evaluated. Those inputs in turn can also be lazily-evaluated functions themselves.
This way, you can declaratively define some sort of pull-based reactive function objects, that will require a minimal amount of recomputation when being called.
This is generally useful in user interfaces. Some UI components may depend on the state of others and should only update when the state that they depend on has changed, resulting in a responsive U I.

This presentation will start by giving a short introduction on how to use the library, together with some convincing examples, followed by a detailed explanation of the design and evolution of the library.

One of my goals while creating this library is to keep the core algorithm as simple and readable as possible. A side effect of this goal was that I had to invent/discover quite some other utilities that turn out to be generally useful outside of this project.

TALK (Programming)

22/09/2021 from 10:30 am to 11:30 am CEST
Track 1