Björn Fahller


Björn works for Net Insight, where he wears many hats, including mentor trainer, troubleshooter, networking protocol designer, software architect, and programmer, and he is continuously pushing the codebase to increasingly modern C++. Programming has been his full-time profession since graduating from University in 1994, mostly writing embedded software for networking equipment. Björn first experienced programming when home computers became popular in the early 80s, and it quickly became a permanent interest of his.

Occasionally Björn has been seen tinkering with unorthodox software constructs, pondering "what can be done with this?" He lives in Stockholm.



Modern techniques for keeping your code DRY (2019)

We have learned to avoid repeating ourselves in code, and yet we keep writing things like:

if (a > 0 && b > 0 && c > 0) ...

In this session, Björn will show techniques from modern C++ that help you construct abstractions for those micro repetitions. These will allow you to write:

if (all_of(a, b, c) > 0) ...

Code like this expresses intent more clearly and therefore makes it easier to follow the logic of the intended functionality instead of focussing on code details. This makes it easier to understand the functionality, and also makes it easier to spot mistakes. Better yet, these abstractions carry no run time cost.

After this session, you will be able to write your own zero-cost abstractions that help getting rid of the patterns that keep repeating in your code.


What do you mean by "cache friendly"? (2019)

Data structures, and sometimes the algorithms that operate on them, can be described as "cache friendly" or "cache hostile", but what is meant by that, and does it really matter?

Cache memory in modern CPUs can be a hundred times faster than main memory, but caches are very small and have some interesting properties, that some times can be counter-intuitive. Getting good performance requires thinking about how your data structures are laid out in memory, and how they are accessed.

This presentation will explain why some constructions are problematic and show better alternatives. I will show tools for analyzing cache efficiency, and things to think about when making changes to gain performance. You will develop an intuition for writing fast software by default, and learn techniques to improve it.