Here I will write down my journey how I got to the state where I currently am. Maybe you find in inspiring. It only contains relevant parts and not my entire cv as text.
Early Years
AAll began with the game Pong and later my Super Nintendo, where I invested an incredible amount of time. I made good progress in Mario Kart and wanted to beat the hardest mode. However, I failed many times and I remember throwing the module on the ground several times. When I started the game again, it was so buggy that playing it became impossible. Every collision with an object in the game had the potential to send me flying to somewhere on the map, which would take minutes to get back to the correct spot. I am sure that I damaged the memory of the game, resulting in changes to bits and producing this behavior.
I also got an Atari ST, which I played a lot, but everything took forever.
I got a book about QBasic, but I cannot remember the actual source. I really liked the book and since I did not have a computer, I wrote down the source code with a typewriter to learn it.
The first PC I saw in real life was my uncle's. He was a machine construction engineer and had started using CAD software for his work. However, he also let us play games on it via MS-DOS.
Years later, I got my first personal computer, which of course had no internet access. It had an ATI Xpert graphics card (which was really bad) and a Pentium 3 with 500 MHz and 128 MB of RAM. This got me into playing Roller Coaster Tycoon a lot.
After some time, I returned to QBasic, as it was part of the Windows 98 SE installation I had. I wrote my first small applications with if-else statements, and it was mind-blowing for me that it was that easy.
Teaching Teachers
As I finally got internet access, my knowledge increased even more. During a lesson with my teacher on the topic of computers, I had a conversation with my teacher about computers. Despite being older than 60 and nearing retirement, my teacher was interested in this topic and other teachers might be interested as well. Based on his feedback, I created a survey where teachers could tell me what they wanted to learn and how proficient they were with computers. The demand was their.
After some time, we ended up in the new computer room with several teachers, where I became the teacher. I remember that my own teacher was talking to someone else, but it was not related to my course, so I asked him to please stop. He never again talked about off-topic content during my course. We started by booting the computers, explaining the different hardware components and opening MS Paint. Then we trained mouse movements using lines and circles. We continued with Word and finally moved on to Excel. After one year as a teacher, I received a certificate (written in Word and signed by them).
Open Office
At that time, we also received our first PC in our classroom, but it had no internet access and had software installed that prevented any custom installations.
With the permission of our IT teacher, we temporarily removed the hardware card that was causing the PC to reset every time and installed Knoppix, a Linux distribution, on it. This allowed us to install OpenOffice and use it for word processing.
During my final presentation on the demographic changes in Germany for my German class, I used the PC to show a dynamic graph of population and retirement changes per year. I had tested it beforehand, and although it was slow, it worked.
My classmates also prepared presentations, but they created them on Windows devices using Word. Unfortunately, Knoppix's OpenOffice was not able to load their documents, and they received lower grades as a result. After their presentations, they blamed me, but I simply responded by telling them to make sure everything was working beforehand.
Internet Radio
Time passed, and I had my first "hobby" - streaming on internet radio. I tried to be a DJ/Moderator. Unfortunately, my hardware was crap - especially my mic. I started to help in the background with the configuration of the servers. This was my first experience with 'vim.'
The internet radio used software called "phpkit," but we were not able to do many custom things with it as nobody was experienced in programming.
Starting with no prior knowledge in programming, I began the hard way: downloading a XAMPP stack that contained MySQL, Apache web server, and PHP 3. I got it up and running quickly and continued my journey with lots of testing locally and writing code. The owner of the radio had a quite long list of requirements: quiz function with answers by the user, show current streamer, timetables of streams, admin interface, merchandise/gift organization, and many more. Years later, I uploaded the code to GitHub where it still exists. You can find it here: https://github.com/dariusgm/PHPFee. Somebody wanted 'create table' statements to get the content management system up and running - please don't do it...
In addition to the technical part, I learned a lot about gathering requirements and translating them into something that can be used. It was my first time as a product owner.
High School
I remember doing a presentation on "What happens when you type google.com into your browser". It covered topics from DNS to the TCP/IP layers and finally HTML (without rendering).
The presentation was quite long, lasting over an hour, which I would now consider fast compared to the amount of content.
After changing high schools, I was able to take a computer science course. There, we programmed in Delphi, which is based on Pascal. I recall lessons on cryptography, during which I wrote an application that counted the characters in an encrypted text, delivered their total distribution, and allowed you to change the char map via a user interface.
The second application I remember was a battleship game. My task was to implement a computer enemy. I ended up reading the current positions from the player, and with an 80% probability, the computer would fire at a position where the player had placed their ships. Nobody could beat this computer, so I reduced the probability, but it was still very challenging to win.
During the final exam of this IT course, which lasted four hours, I needed to take a bathroom break. As I had never been in the restroom before, I accidentally locked myself in and was unable to open the doors. It felt like ages before I could escape and continue my exam. As a result, I performed poorly on the exam, but with a bit of luck, I passed. The teacher suggested that I take an additional oral exam to improve my grade, but I declined and focused on my German exam, which I knew would be difficult. Fortunately, I passed it.
University
I applied to two universities in Hamburg: the University of Hamburg and the College for Applied Sciences. I chose the Applied Science college because I felt it would be more hands-on and aligned with my interests.
Our first programming exercise in college was in Ruby, which later became my primary language for a long time. In the second semester, we were introduced to Java, followed by C# (which I preferred over Java), C and Assembler (where I practiced bubble sorting memory until it crashed), Oberon (which I didn't enjoy), and Erlang (which was very different from the other languages we studied).
In one project, we had the opportunity to write applications for a small robot called "nao". Our task was to allow users to send commands to the robot via voice, which it would then execute. We had to try several times with Gstreamer to get an audio stream from the robot's microphone. We then sent this stream to an "unofficial" Google API that could extract the text for us. We matched this text against a list of commands and executed them. The project was a lot of fun, but unfortunately, the robot's microphone was too poor for the API, so we had to switch to an external mic and send the extracted commands to the robot, which worked well despite a small delay.
Akra
After some time at university, I decided to start working as a student in the IT industry. I was lucky to receive a ticket from one of my professors to attend a talk where I met Akra for the first time. I signed my first contract there and on my first day, I received an Ubuntu Linux laptop since Macs were only for full-time employees. They asked me to generate an SSH key so I could get access to the repositories, which I didn't know how to do at first, but I was able to search for the answer online. This task was something I rarely needed to do, so I tended to forget it.
Later on, I was given the responsibility to migrate and improve their candidate search system in Ruby on Rails. This was my second time acting as a product owner, but I also received help with organizing the project from within Akra.
Wer liefert was
This company I got to know from a game jam. They wrote JavaScript-based games. As I had a really low amount of knowledge in JS, I brought my mic and recorded some sounds. Nobody used them, but I really liked the people there and signed my first full-time contract.
I got even deeper into Ruby on Rails, but also Elasticsearch and REST APIs were huge topics.
Then Apache Spark was announced in the Heise News. I read a small example about it and was really impressed by the possibilities for the company. I pitched a PoC where the log files of the search endpoint were aggregated to display the most common search terms and other metrics. Even though the PoC was a success, the company did not continue with Apache Spark and Apache Hadoop. This was my first time as a data engineer.
I got into a temporary product owner role due to parental leave for an internal application. We visited our clients, asked them how they worked with our software, collected feedback, and improved it every time to increase their output and simplify their tasks.
Later, I had the luck to participate in the first data science project with a freelance data scientist at this company. Before he arrived, I prepared a Docker image, credentials, and everything he needed (for example, Jupyter Notebook on the on-premise servers) so he could start from day one. Just after 3 months, the freelancer left and I had the responsibility to build the pipeline in production, which I did. The predictions were integrated into an existing Ruby on Rails application.
He was familiar with the Google stack (GCP), so I learned about the cloud for the first time.
At that time, I did my first nanodegree "Machine Learning Engineer" at Udacity.
I did my final exam on the nanodegree program about the prediction of hard drive failures based on the data of Backblaze. You can find the project on GitHub here: https://github.com/dariusgm/nanodegree_capstone - Long story short: Do backups!"
Emetriq
About a year later, I got a job at emetriq with my (limited) experience in Spark (via the POC) and data science (via the nanodegree). During my time there, I learned a lot about Apache Spark and the Hadoop ecosystem.
One of my tasks was to migrate the old scheduling software to something more modern, and we decided on Apache Airflow. The migration was completed in several steps without any downtime for our customers.
In addition to the migration, I wrote many ETL jobs using Apache Spark for data integration and transformation, some of which ran on AWS. Automation and documentation were also important aspects of my work.
After a while at emetriq, I had trouble with the touchpad on my company MacBook. The battery had started to expand, which was a clear sign that it needed to be replaced. However, because my model was already old, they proposed me a new model instead.
A few weeks before the battery expanded, our internal IT department did a survey, which included the question, "What other operating system would you like to try?" I wrote down "Ubuntu," and as a result, I became one of the only people in the entire company running my work laptop on Ubuntu (not on a Mac).
Since no other developer had done this before, I had to work closely with our sysadmin to get everything set up. We had many conversations, but after a few days, I was fully up and running again. It was really nice working with this device, and I enjoyed it so much that I installed Ubuntu on all my personal devices as well. While I still have Windows because I need software that only runs on it, the general case is to run everything on Ubuntu. This forced me to learn a lot more about Linux and Ubuntu internals.
Blog and Youtube
As part of my self learning, I started this blog. I wanted a static html generator that converts reStructuredText (rst) and markdown (md) to html. After evaluating a lot of options, I ended up using pelican (on GitHub).
I also tried video creation, but it is really timeconsuming - maybe I don't find a good workflow yet. My first videos you can find on my second channel damugas (on YouTube) - than I started to use my name as primary channel that I had a long time before Darius Murawski (on YouTube)
For recording I use Open Broadcaster Software (OBS). Before I switched to Ubuntu, I used Core Video Studio for editing. As they have no support for Ubuntu, I switched to the Open Source Alternative kdelive - that you can also use on windows if you like. It have enough features that I need.
Generali
My current company is Generali Insurance (Generali Deutschland AG). I recently finished my internship and learned about OpenShift and more on AWS Cloud. I made a mistake that broke part of the production environment, but that was not the first time it happened in my overall career. Even though you can test your changes, the production environment can still behave differently than expected.