Welcome on my personal blog.
The reason why I started to write a blog was mainly to systemize my knowledge, and improve writing skils You can find here materials mainly related to System Engineering: Computer Architecture, Low Level Programming, Networking, Storage, Security, Virtualization, Operating Systems as well lots of other random topics out of my head.
I always wanted to describe myself as an engineer. Well, maybe not always but definitely since the college. When you try to define what ‘engineer’ actually means, you will probably evoke this definition from Wikipedia:
An engineer is a professional practitioner of engineering, concerned with applying scientific knowledge, mathematics, and ingenuity to develop solutions for technical, societal and commercial problems. Engineers design materials, structures, and systems while considering the limitations imposed by practicality, regulation, safety, and cost. The word engineer is derived from the Latin words ingeniare (“to contrive, devise”) and ingenium (“cleverness”).
In my opinion the best part of this definition is about using knowledge to develop solutions to particular technical problems.
I started my engineering career as an embedded software responsible for developing medical devices. Using Real-Time OS, small microcontrollers with a lot of peripherals, sometimes embedded Linux. Doing everything from soldering and fixing broken wires to writing perfect UI (I always prefered to burn myself with the soldering iron over the creating UI, it is just much less painful for me). Sometime after I finally mastered the art of wire wraps, I got an opportunity from my university to join the scientific project. The project was about modelling hydrodynamics processes using code written in NVIDIA CUDA. That was an impressive experience as it required from me to invariably operate on 4D matrixes, which changed my spatial imagination forever. But as unfortunately, as often happens with scientific projects they can silently die. So I came back to embedded systems for a while, until my curiosity pushed me to application development. Application development is one of the certain subjects: some people love it, others hate it. To be accurate, I learned a lot during the application development. Things related to design patterns, different programming paradigms or server site architecture. However, after some time, I understood that I don’t want to do feature development for the rest of my life. I started exploring other areas as a security and system programming, cool stuff essentially. After some time, I was lucky enough to get an opportunity in system development. I quit my backend developer job and merrily switched. Something remarkable appeared after a few months. I believe that was a point in my life when I realized that I am in the proper place. Over the time I got some brilliant opportunities to work on Networking Stacks, Crypto Libraries, System Performance and File Systems, for which I am very thankful to my former employers.
Topics I’m mainly interested in: Operating Systems, Calculations and Parallel Computing, Low Level Software, Security/Vulnerabilities, Networking (not only Internet), Cryptography, Artificial Intelligence (Mainly Neural Networks) and everything else that gets my brain to think and attracts my attention :) I mainly write code in C, C++, Python and Rust I know couple more but good enough to list them here.
Goal of this blog
At the end of this first introductory post, I want to evoke two statements from really good post that I came across a few years ago:
My 3 Things that I Wish I Would Have Known When I Started My Software Development
There is no “right way” in software development Always have a side project Putting everything learned together
So I simply treat my blog as a side project, where I am trying to put and order things that I learned together.
If you are interested in collaboration or simply you would like to know the guy who is writing all of these nonsenses you can find my resume here.