About me
I am a software developer/architect, speaker, trainer, and team leader working primarily with .NET and JavaScript ecosystems. I love learning new things, especially new programming languages and techniques that allow us to build software in a simple way.
My professional career started in 2005, right after I graduated from computer science studies, with an internship and then employment as a .NET programmer. That was when a new .NET 2.0 and VS 2005 were released with the modernized C# 2.0 language. Up to 2012, I had been working with almost all crucial .NET technologies released back then, such as WPF, WCF, WF, EF, LINQ, TPL, Silverlight, Kinect, and XNA. My R&D team had been responsible for designing the architecture and implementing tools and infrastructure for building a new ERP system. After that, we started many smaller products, like applications for Kinect with Xbox, the original Microsoft Surface touch table, and even for Windows Phone. With the growing popularity of Silverlight, we decided to create a programming platform for building multi-tenant SaaS, and then a new lightweight ERP system based on it.
In 2012, we entered an entirely new healthcare domain. Our goal was clear: build modern, real-time web and mobile applications for the private and public healthcare sector. After Microsoft abandoned Silverlight technology, we bet on JavaScript. We started working with Node.js, MongoDB, ElasticSearch databases, and the Angular.js framework. That was refreshing after many years of working primarily with .NET technologies. With the JavaScript revolution, we also included other technologies like TypeScript, Angular.io, React, and React Native. Over the years, we have built a modular CMS platform and many different products based on it. One of the more challenging functionalities was a real-time video component working with web and mobile applications using WebRTC. It gained popularity once COVID hit. Of course, we also have been tracing changes in the .NET world. Our old friend, Microsoft, gave us not only the TypeScript language, but also a new cross-platform .NET Core. Thanks to microservice architecture, we could build solutions composed of services based on different technology stacks, choosing the best tool for the job.
In the meantime, I’ve started my technical blog and have traveled, giving technical talks at conferences and user groups. Since 2012, I have also been working as a trainer, conducting workshops for developers and architects. Sharing knowledge and interests, as well as teaching others, have always been fulfilling for me.
Learning new programming languages is my long-lasting hobby. I wrote my first line of code in college (2001-2006). It was Turbo Pascal. It wasn’t love at first sight. To be clear, it was not the fault of the programming language; I couldn’t get coding at first. I didn’t give up. Still, of all subjects from my first year of studies, programming was the most interesting for me. Next were C, C++, and then object-oriented programming with Java and C#. Of course, there was a lot of SQL, too. During the studies, I also had a quick episode with a more “exotic” language called OCaml. I used this adjective purposefully; I heard it when the intern from my company described his experience: “I used more exotic technologies, Microsoft Access and OCaml” :) I really liked this term describing a functional programming language and putting it next to Microsoft Access. But, yes, it’s true. OCaml was utterly different from the language I knew back then — minimalistic syntax, immutability, expression-based, recursion instead of loops, and strong support for interactive programming (REPL). No one has told me that functional programming is not only for theoretical academics. After graduating, I chose C# and .NET over Java and met my old friend OCaml, who was hidden inside the F# language. That was great, finally I could use a functional language to solve real problems. The JS revolution brought modern JS and TS. I try to learn a new programming language each year: Python, Haskell, Clojure, Scala, Kotlin, … . Lately, thanks to the Go language, I have appreciated the beauty and simplicity of imperative style. I am convinced that knowing different languages makes you a better programmer.
I am also interested in people. I love building well-trained, highly productive, respectful, and motivated teams. Repeating after Jocko Willink, leadership is a skill we can learn.