I've started writing JavaScript even before ES6 and React become popular, writing a whole client-side application entirely with jQuery and XHR. This taught me a lot about technologies that build up the web, but it wasn't very clean, with many intermingling parts.
After joining DONE., I began working on interactive frontends in React, which taught me a lot about organization of code and state-driven applications. Even after having a little experience with Vue.js, I am still most comfortable while writing JSX. I try to keep up with the ever-changing landscape of JavaScript, as well as coding up my own libraries.
After working with PHP for a long time, writing my first Node.js backend really blew my mind. The speed and the simplicity of writing simple callback functions as routes made Express instantly my favourite backend library.
Even after multiple years passed, Express is still my go-to tool for the backend. I learnt how to organize my code to work on any scale, adding TypeScript for typing, OpenAPI for documentation and Jest for testing. These tools made me as productive as ever to quickly and reliably build APIs.
I worked with HTML and CSS for more than I could remember. I started in middle-school, creating my best 90's website impression. Soon I became familiar with CSS and have been fascinated by the shadows, gradients, and animations. I started building websites out of my own basic designs in university.
When I started working at DONE., the company's main profile was custom-designed WordPress, and it really kicked my sitebuilding experience into overdrive. I learnt to build massive websites from Figma very quickly, keeping it compatible with Wordpress's modifiable building blocks. Speeding through websites made me learn a lot about both building and design.
I even had a chance to go back to my 90's website roots building marketing emails (EDMs) trying to achieve compatibility with Outlook email clients.
Like many people in backend development, I started my path with putting some PHP files on a shared hosting server via FTP. Unaware of frameworks and packages, I hacked together a whole application with my own authentication and session management.
Since then, I learnt how to write PHP the easy way, developing custom Wordpress themes and WooCommerce webshops at DONE., as well as trying my hand at Laravel at my dormitory's websites. While I recognize the great ecosystem of PHP, it probably still wouldn't be my most comfortable choice for a new project.
In most of my jobs, I worked with relational databases, mostly MySQL/MariaDB (the most convenient coming from a PHP background) and PostgreSQL (great extensibility, e.g. PostGIS). I also have experience with NoSQL databases, mainly with Redis and ElasticSearch. For development I started with writing raw queries, but I worked with query builders (Knex) and ORMs as well (Hibernate, Eloquent, Sequelize, TypeORM).
I also have experience with operating MariaDB databases: not only bare-metal, but also on Docker and Kubernetes. In our dormitory I rewrote our bare-metal MariaDB into a replicated Docker container, complete with a highly available MaxScale load balancer and Prometheus monitoring.
For a systems programming language, I studied C for multiple years in the university. However I only started to really appreciate it when I took up a course on Linux programming. I enjoy the simple but powerful abstractions the language provides, which is great for small and fast CLI programs.
Since then, I discovered Rust and its functional-inspired type system clicked for me instantly. As a good Rustacean, I've been pushing to rewrite all my side-project in Rust. I've been trying to build everything: open-source libraries, web servers and most of all, CLIs. With the help of the powerful Rust ecosystem, I am able to create safe and expressive command-line interfaces.
I always preferred self-hosting to the cloud. However when I was first exposed to the global cybersecurity scanning in Tenable.ASM at DONE., I realized that some things are not possible without the power of the cloud. I was tasked with the cleaning up and management of a service building up from more than 50 microservices, including EKS, Elastic Beanstalk and terabytes of ElasticSearch data.
My job was figuring out ways to make our deployments more reproducible. I migrated our scanning infrastructure into EKS, deploying it automatically with ArgoCD. I Terraformed many parts of our cloud operations, including EKS clusters, ElasticSearch domains, IAM permissions and VPCs. The work of our team improved ease-of-use, monitoring and compliance of the whole operation.
I started my DevOps career at the dormitory by managing web servers scattered around shared hosting and VMs. This was a cumbersome and insecure way, so naturally we searched for solutions and found containerization.
I turned dozens of services into minimal Alpine-based Docker images: WordPress, Laravel, OpenLDAP, Bind DNS, and replicated MariaDB. In a few years we turned our infrastructure from undocumented VMs to mostly containerized single-node workloads.
As the number of services increased, they started to outgrow the specialized Docker VMs, and we put together a self-hosted Kubernetes cluster. We manage the networking (MetalLB, Traefik), storage (Ceph) and monitoring (Prometheus), while everything is deployed with Helm charts, and automatically rolled out by ArgoCD.
When I first got into Linux, I wanted to handle our LAMP stack more efficiently. At first I just used scp to copy files, then I started using vim over ssh, and got more and more used to the terminal. Now Linux is the operating system on all my computers, and I fell in love with open source.
The thing I really liked about the Linux shell, is the simplicity and the power it enables. I enjoy writing my quick-and-dirty one-liners and shell scripts, and I learnt to automate every part of my workflow. Now I use Ansible to install and set up my desktop and servers, and use GitHub Actions or GitLab CICD to automate my deployments.
I am very thankful for Linux because it started me on the way of open source and taught me to always look behind the curtain, and understand things as deeply as I can.
Click on the image for more details
Swipe left or right for more, click for details