I am a highly productive and versatile programmer.
My main programming skills and interests lie in high-performance computing using both CPUs and GPUs, as well as cross-platform application development and user interface design. I strongly believe in using the right tool for the right job, which is why I like to have many tools at my disposal. I am well-versed in multiple programming languages, both compiled and interpreted, and I am never afraid to use other languages where they prove more suitable. I have a great amount of experience with writing cross-platform graphical or command-line applications, as well as static or dynamic websites and mobile apps.
I am a very fast learner and a good problem solver. I am ready to approach new and difficult tasks, and will quickly adapt to your existing technology. I always deliver quality code that is easy to read and maintain.
PhD in Physics
University of Ljubljana, Slovenia, 2017
MSc in Computational Physics
University of Ljubljana, Slovenia, 2013
Full-featured client for VNC and RDP protocols, embedded into a QML scene with graphical effects and UI overlays
Network-enabled reimplementation of OpenCL and CUDA libraries, allowing a single program to make use of GPU resources on multiple machines
Development and efficient GPU-enabled implementation of a novel numerical method for modelling the mutual interaction between light and liquid crystals
Simple yet elegant websites for scientific conferences
Integration of a VR-enabled scene into QML with post-processing
A rich Python interface to the Broccoli fMRI analysis software
A Slashdot reader and an automatic in-call volume adjuster
Paid contributions to open-source projects
I like writing QML, and now I am going to explain why. First, let me just introduce what it is. QML a new(-ish) language from the Qt project for building cross-platform user interfaces. Technically, QML is the language, QtQuick is the standard library with the visible components, and there are other official and non-official add-ons and libraries as well. However, but I will just lump them together because their basic advantage is not the set of components, but rather how the code is written.
There is now a large selection of Continuous Integration services, both in the cloud and self-hosted. The idea is simple and powerful: whenever new code is pushed to a repository, a series of predefined tasks is run to check whether the code works correctly. This allows the developers to get notified immediately if their changes broke something. However, while this functionality is extremely useful, it is limited by the fact that code hosting and continuous integration are separate services.