Adam Badura


Adam Badura is a software developer and an architect at Nokia. He has over 10 years of work experience, however, his passion for programming (with C++ mostly) is much older. Adam's interests are mostly the development of good software across all levels: from general design to technical details of specific implementation. His natural bent for formal things is complemented by the eagerness to share his own experience and learn from the experience of others.



Getting type name at compile time (2018)

C++ language contains standard __func__ variable which is a string naming the function where it is used. Major vendors offer even more expressive symbols in their compilers (__PRETTY_FUNCTION__ in GCC and clang, __FUNCSIG__ in VC). What is missing, however, is a similar solution to get a type name without using RTTI.

In this short presentation, I will show how to achieve this - how to get type name at compile time, without the support of RTTI.


Techniques for mocking in C++ (2017)

Proper mocking and stubbing are very useful, if not even required, to properly test software. However, many interesting cases relate to components difficult to mock – like external C-style APIs (POSIX, WinAPI or even library functions themselves) or dreaded singletons. In this presentation, I will share various techniques to deal with such cases and mock interfaces that otherwise seem difficult or even impossible to mock.


Critical Code Analysis With Observer Pattern (2016)

The Observer design pattern belongs perhaps to the most popular ones. Especially for those who work with user interfaces. It is very useful while appearing to be simple to implement. However that is wrong impression! Presentation shows typical pattern implementation errors (in C++) demonstrating at the same time the need to be suspicious about the code.


Code Review Process (2015)

Code review process is an important tool for raising code quality and team competences. However it has significant psychological consequences which are easy to forget in a strongly technical environment. So what to do? How to do it? What should be avoided? What to take into account when picking procedures and tools?