Programming languages and technologies
The list below shows the most common technologies, languages and tools that I have used during development of various systems.
Some of them has references to projects described on this site.
Click any item to see more details
Native programming
Desktop and server-side applications
C, C++, ASM...
Languages
C
I use C mainly for applications that run on low-end devices like microcontrollers. Knowledge of C is useful during analyzing Linux and various tools source codes.
15 years of experience
Project references:
- KDhome - Low-level embedded software for microcontrollers
- KDcopter v2 - Low level software for microcontrollers
- KDcopter v3 - Low level software for microcontrollers
- Smart home - Low level software for microcontrollers
- LED driver - Low level software for STM32
- Quad BLDC driver - Low level software for STM32
C++
I use C++ where speed, determinism or low footprint is really needed. Moreover, since I switched to Linux, I write cross-platform GUI applications in Qt framework.
15 years of experience
Project references:
- Sales management system - Server and admin applications
- MySendFile - Desktop and server applications
- KDhome - Low-level embedded software for microcontrollers
- GKShow - Main application for displaying effects and native effects
- KDcopter v2 - Desktop application for calibrating and flight controlling
- KDcopter v3 - Desktop application for calibrating and flight controlling
- Smart home - Applications for accessing serial ports and logging data
- LED driver - Desktop library for accessing the device
C#
The best language I have ever used. I have written tens of applications using this framework (.NET).
13 years of experience
Project references:
- Notes manager - Main applications
- Artifical jewelery sales manager - Main applications
- CAD software - Main applications
- Pacman3D - Game application
Java
I use this language mainly during development for Android platform.
12 years of experience
Project references:
- Sales management system - Mobile client
- Debtors
Assembler
Since nowadays writing in assembly languages makes little sense (except very specific problems), knowledge of assembly languages is very useful during debugging and optimization.
11 years of experience
Libraries
Qt
Framework for GUI applications.
11 years of experience
Project references:
- Sales management system - GUI framework for admin and terminal applications
- MySendFile - GUI framework for desktop application
- KDcopter v2 - GUI framework for control panel
- KDcopter v3 - GUI framework for control panel
ZeroMQ
I use ZeroMQ when specific communication patterns are required (like Pub-Sub or asynchronous server with multiple workers).
7 years of experience
Project references:
- KDhome - Communication between server and automation scripts
OpenGL
DirectX
Project references:
- Pacman3D - .NET version of the DirectX
iTextSharp
Project references:
- Artifical jewelery sales manager - PDF generation
DevExpress
Project references:
- CAD software - PDF import/export
Mobile programming
Android and cross-platform mobile development
Android, iOS, Swift, Kotlin...
Android - Kotlin, Java
I write Android applications that are often part of the bigger system.
9 years of experience
Project references:
- Sales management system - Framework for mobile client
- Debtors
iOS - Switft, Obj-C
I write iOS applications that are often part of the bigger system. Mostly low-level native libraries that wrap some core components.
4 years of experience
Ionic / Cordova
I use Ionic / Cordova frameworks when cross-platform mobile application is required.
6 years of experience
React Native
I use React Native where both development speed and runtime speed are required.
2 years of experience
Scripting languages and web development
Webpages and complex services.
HTML, CSS, JavaScript, Python...
Languages
Python
My main language for writing almost every kind of utility scripts. Hundreds of automation scripts. I also use Python to write webpages.
10 years of experience
Project references:
- KDhome - Server and automation scripts
- GKShow - Python effects
- KDcopter v2 - Various utility scripts
- KDcopter v3 - Various utility scripts
VBA
I used to create lot of automation scripts in Visual Basic for Applications before I switched to Linux.
13 years of experience
PHP
Long time ago, that was my primary language for writing webpages (I used Symfony and Zend MVC frameworks).
12 years of experience
Project references:
- MySendFile - Main web page
- Smart home - Web control panel
CSS/SCSS/Less
Languages for advanced webpages styling. However, I'm not a graphic designer.
13 years of experience
HTML
I use HTML for writing webpages.
13 years of experience
Dart
Great replacement for JavaScript. I use Dart where application would be bigger that a few lines of code. "Strong" typing, predictable behaviour and coolness of IDEs make the decision quicker.
6 years of experience
JavaScript
Language for writing dynamic small webpages. For more complex ones, I use Dart. If I use JavaScript, I often use jQuery as well.
13 years of experience
Lua
I made use of it in various embedded scenarios, including software for programmable Satellite Modems.
13 years of experience
Libraries and frameworks
Angular
I use Angular for large and long-term projects.
4 years of experience
React
I use React for specialized/advanced projects.
4 years of experience
Django
MVC framework for writing complex webpages and online services.
6 years of experience
Flask
Nice framework for writing simple webpages.
6 years of experience
Jinja2
Great template engine for Python.
6 years of experience
Symfony
Project references:
- Smart home - MVC framework for the web control panel
Embedded development
Hardware and software for embedded systems
AVR, FreeRTOS, STM32, Raspberry Pi...
Languages and libraries
Embedded C/C++
For embedded applications, I mainly use C++ and C languages.
11 years of experience
FreeRTOS
Real-Time Operating Systems for embedded systems. I used it in some projects where OS-like program flow was neccessary or just easier to write (and understand).
6 years of experience
Microcontrollers and boards
AVR
I use this family of microcontrollers for very small electronic projects.
STM32
Very good microcontrollers. Suitable for almost all kinds of applications.
ESP8266
Interesting microcontroller for Internet of Things applications.
Project references:
- KDhome - Newest expander board
RaspberryPI
I have some experience with this single-board computer and I wrote some applications for it. Since it's just Linux, there's no more to say about this.
Skills
Circuit design
I made lot of hardware projects and prototypes. I design (and etch) PCBs myself.
11 years of experience
Project references:
- KDhome - Expander boards
Databases
Storage and cache related technologies
PostgreSQL, Redis, SQLite, MongoDB...
PostgreSQL
I use this database for bigger and more demanding projects.
6 years of experience
MySQL
That was my primary database since I started using PostgreSQL, I used MySQL in lot of applications.
14 years of experience
Project references:
- Sales management system - Server-side database
- MySendFile - Storage engine for user data and files info
- Artifical jewelery sales manager - Database
- Smart home - Storage enging for temperature and other data
SQLite
Simple, but handy database. I use this when simple text-based storage would be too inefficient.
11 years of experience
Redis
I use this cache where performance, availability and scalability is the must.
6 years of experience
MongoDB
I use MongoDB where relational databases are not suitable.
5 years of experience
Servers administration
Configuring and maintaining Linux-servers, writing utility tools
Linux, Ansible, Shell...
Languages
Python
When shell scripts become bigger and complex, I often rewrite it to Python as it is much more powerful.
10 years of experience
Shell scripts
Inherent when using, configuring and maintaining Linux, especially via command line and SSH.
12 years of experience
Tools
Ansible
I use ansible for managing some of my servers.
6 years of experience
Graphite
I use this tool for collecting various stats. I use it with Grafana (nice viewer).
Git
I use version control for every bigger project.
10 years of experience
Vim
My primary console text editor.
9 years of experience
Linux
Debian, Ubuntu
I use this distributions for servers or desktops where stability is important.
12 years of experience
Arch Linux
I use this distribution on my personal computer.
10 years of experience
Virtualization
libvirt/KVM
6 years of experience
VirtualBox
9 years of experience