From the moment I wrote my first function at age eleven — a lottery number generator I found in a programming book — I knew software development would be my path. Those early days were shaped by time spent with my grandfather, talking about computers and electronics over tech magazines he'd get for me. That childhood interest has grown into a 10+-year professional journey.
My career started with PHP, where I spent a decade building web applications. As I grew as a developer, I found myself drawn to the solid structure and tools of .NET, which has been my main technology stack for several years now. Today, I build backend solutions using .NET and ASP.NET Core, from APIs to desktop applications, CLI tools, and internal systems in Blazor. I also handle cloud infrastructure and server deployments.
While my expertise is in backend development, I work with Angular for frontend projects when needed, though .NET remains my primary focus.
I enjoy solving complex problems and writing clean, maintainable code. When I'm not working on client projects, you can find me contributing to open-source or experimenting with new tools and approaches to make development work better.
I work with several long-term clients where I build their projects from scratch. My work includes both developing new systems and helping teams improve their development skills.
Among my projects, I help move services from cloud providers to VPSs to reduce monthly costs. The applications run in Docker Swarm with Traefik handling the routing between services. All deployments are automated with GitLab CI and run without any downtime.
For business systems and admin interfaces, I use Blazor which allows direct database integration without building separate APIs. I also build custom mapping solutions with Leaflet, using PostGIS for location data processing and SignalR for real-time updates.
In these years I learned:
Building my own programming languages (started with ANTLR, now writing custom lexer and parser)
Making interactive maps with Leaflet
Working with PostGIS
Deploying without downtime
Setting up Docker Swarm clusters
Creating admin systems in Blazor
Moving from cloud to VPS
and I used these languages/tools/...:
.NET and ASP.NET Core 9
Blazor
PostgreSQL with PostGIS
Docker with Docker Swarm
GitLab CI/CD
Hetzner VPS
Azure
Traefik
SignalR
Lead developer at HyperMedia a.s. (August 2018 - September 2019)
HyperMedia was the first company where I worked on code that wasn't written by me or my team. My job involved maintaining and improving legacy applications. What I'm most proud of is starting the development of new systems (mainly microservices), creating tools, containerizing legacy applications, and migrating to Google Cloud.
One of my biggest tasks was migrating user photos from HyperInzerce. Previously stored on ordinary spinning hard drives, all 7TB of data was migrated to Google Cloud Storage.
I also created the base for all microservices, Docker containers, deployments into Kubernetes (in Google Cloud), Cloud Run, Cloud Functions, logging, internal tools, and a few other things.
In HyperMedia I learned:
Maintaining legacy applications
Containerization of legacy applications
Electron
Vue.js
Google Cloud Run
Google Cloud Functions (node.js + golang)
Google Cloud Stackdriver (Debugger, Trace, Error Reporting, Monitoring, Logging)
Moving 7TB of production data to Google Cloud Storage
and I used these languages/tools/...:
GitLab with CI & CD
Git
PHP7 (main language)
PHP RoadRunner (used in all microservices)
PHP Slim (used in all microservices)
Google Cloud Storage, Vision, Kubernetes, Stackdriver, Functions, Run, SQL, ...
Golang for internal tools and in Google Cloud Functions
Node.js for internal tools
Electron for internal tools
Lead developer at WebACAD s.r.o (June 2017 - August 2019)
This is the company where I fully embraced cloud computing for the first time. To be more specific, I switched from using VPSs to Google Cloud and Kubernetes.
At WebACAD, we built a new education portal where I worked as a full-stack developer.
I developed the frontend in Angular and the backend in PHP Slim.
In WebACAD I learned:
Migrating dockerized application into Kubernetes
Migrating application from VPS into Google Cloud
Better logging (a side effect of moving to cloud)
Kubernetes
Google Cloud (Functions, Logging, PubSub, Storage, ...)
Microservices
Golang (using in Google Cloud Functions)
and I used these languages/tools/...:
Google Cloud
Kubernetes
Angular 7
PHP 7.3
Slim framework
Doctrine with PostgreSQL
Golang
Git
GitLab with CI & CD
Lead developer at Europa Workintense (September 2012 - May 2017)
My time at this company was the most memorable. This is because I made many friends here, learned a lot of new cool things, the environment was nice and, of course, because I spent almost 5 years here.
My main work consisted of developing a new job portal.
Main features were:
Publishing vacancies
Publishing resumes
Creating a company presentation page
Communication between companies and applicants
Notifications
At the same time, I was the only backend developer here so my job was also to find some new colleagues. The situation in the Czech Republic was not ideal, so we looked into other countries and hired people from many different parts of the globe.
When we grew further, we needed our own servers. We decided to use this opportunity to "fix" our local network too. I built our rack with two custom build servers, new gigabit switch, new router and UPS (it was a work of art :-)). The servers were based on Intel Xeon CPUs and Supermicro motherboards. I installed the awesome OpenStack system on these servers. We were able to easily host our GitLab, mail server, and many other things in OpenStack.
Just before I left, I started working on a new, simpler job portal - workmarket.eu. Also, two years after Docker was published (2015), I switched everything to Docker and started using it everywhere.
In Europa Workintense I learned:
Leading team of developers
English
Doing job interviews (locally and remotely via Skype)
Code reviews
Nginx
Angular.js
Node.js
Hosting GitLab on own servers
Docker with docker-compose
OpenStack
CI+CD
to love automation
and I used these languages/tools/...:
PHP with OOP
Nette 2
Angular.js
Doctrine with PostgreSQL
Git
GitLab with CI and own docker registry
Software developer at OSRAM Česká republika s.r.o. (June 2011 - August 2012)
My first job was the development of intranet applications for the OSRAM company.
The first application was for monitoring all the company's computers. It used reports from WinAudit CSV files which were processed and saved into the database.
Main features were:
See the current state of computers
See user information
See the history of computers' changes (HW and SW)
See the history of computers which each user used
Email notifications for harddisks running out of space
Find port in Cisco switch where the computers are connected
Start remote desktop connection
Wake on LAN for any PC
List all installed applications - useful for licensing purposes
The second application was intended to import wage data from an external system into SAP. Unfortunately, this was not finished.
These applications were integrated into the existing intranet website and integrated with LDAP.
In OSRAM I learned:
Doctrine ORM
Backbone.js
LDAP + AD
Nette 2 beta
and I used these languages/tools/...:
PHP 5.3 with OOP
Nette 2 beta
Doctrine + NotORM
MySQL
MSSQL
Backbone.js
Working style
I work as a freelancer from my office in Prague (CET/CEST time zone). I prefer long-term collaboration with clients where I can fully understand their business and deliver complete solutions from start to finish.
My work style emphasizes clear communication through regular updates on project progress. I'm available for both online meetings and in-person meetings in Prague during standard European business hours.
I bill hourly and am happy to provide initial consultations to discuss project requirements and approach.