My name is Ivica Bogosavljević and I am a senior software developer active in domain of embedded systems. I have been working on embedded projects based on bare metal and Linux for the last ten years based on MIPS and x86 chips.
My professional interests lie in the domain of system performance improvements and debuggability. This means particularly:
Related to increasing the speed of your program or your system:
- Performance bottleneck analysis, both for own code and code provided by third parties
- HW caching subsystem: how to design your algorithm so they use the underlying cache subsystem optimally? How to detect problems with inappropriate use of caching subsystem? How to configure your running system so the caching subsystem is used optimally?
- HW pipelining: how to design your algorithm so pipeline is used optimally? How to detect problems in the CPU pipeline that cause program slow-down?
- HW branch-prediction: how to optimize branch prediction in your program?
- Architecture specifics
- Compiler configuration: how to use the compiler to generate the fastest possible code?
- Kernel configuration
- Memory subsystem configuration: optimal memory allocation, memory fragmentation, page fault avoidance
- Standard library configuration
- Development strategies for writing fast code in C and C++
- Techniques for writing fast code applicable to all programming languages
- Library tuning
- Speed optimizations in multi-threaded environment
- Speed optimizations in multi-processor environment
- Optimizations for work with external devices
- Optimizations for NUMA systems
- Leverage of parallelism
Related to making debugging easier or making your program easier to debug:
- Debugging tools
- Debugging specific problems: stack corruption, heap corruption, memory corruption both on Linux and bare-metal devices
- Configuring useful logging infrastructure
- Continuous integration for early error detection
- Tools for making debugging easier on the field
- Debugging memory consumption
- Debugging problems in multithreaded environment
- Debugging in presence of optimizations
- Tools to understand what your program is doing
If you have any questions or problems in these domains, feel free to contact me.