REEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE

After another rejection for a job application at a big multinational company a good friend of mine suggested that based on my CV, I might not have enough experience with the technologies listed there. Now I don't think my CV is shit, but I intend to fit everything on one page, so I don't have the luxury to list every project I've worked on. The purpose of this rant is to demonstrate that my perceived incompetency and lack of experience is as far from the truth as it is physically possible. I only include technologies and languages in my CV I regularly use. I'm going to show my works from different fields, feel free to skip those you're not interested in.

Dzsekszon the hobby web developer and DevOps guy

Let's start with this one. The very website you're reading right now - aside from some minor miscellaneous components - was written from scratch by me. This includes:

  • The whole backend code and most of the frontend code as well. The frontend uses Bootstrap for basic layout and TinyMCE as a WYSIWYG editor. The whole site is designed to run with Javascript turned off, at least for visitors. Admin features do require Javascript though.
  • The PHP MVC framework, Yuugen, inspired by Ruby on Rails. It was developed in 2017 for my Informatics 2 class. A year later when I decided to make a permanent website I was looking for a good framework to build upon, but I was disgusted by other frameworks, so I continued to use and develop Yuugen. I consider it complete since it serves me well, but continues to receive ocassional bugfixes.
  • A set of reusable backend and frontend modules, simply called Modules. The collection contains a file browser, a simple (but unfinished) captcha system, a file browser, an RSS generator, some custom JS libraries and many other. The most notable element in this repository is Aya, a task runner daemon written in C++. I've spent considerable amount of time on this subproject and I'm especially proud of it, knowing it works reliably and exactly as I envisioned it. Aya is free software, see the source code here.
  • The CI/CD scripts. Whenever I want to deploy the latest commits I just have to press some buttons in my self-hosted Jenkins instance and the code is deployed to the whole cluster. There is also a verification pipeline that performs static code analysis, runs unit and functional tests. There are also testcases that are performed across the whole cluster. Aside from backend unit tests everything is written in bash. Since late 2022 I have a dedicated Ryzen 5 5600G-based CI machine that hosts a Jenkins and a Gitlab instance. Before that I had no Gitlab and used to host Jenkins from a Raspberry Pi 2, which was painfully slow.

My websites are self-hosted from my living room. I use two Thinkcentre M710q Tinys and an Odroid N2 SBC to run my sites. I currently host two publicly available websites. Japanese Dream is clustered, it runs on three instances, all containerized using LXC. The database contents are seamlessly replicated across cluster members, so is part of the filesystem. Dzsekszon.net is a single-container deployment mainly used as a Googlel drive replacement and sort of a music repository. I share links of files uploaded there with my friends, mostly videos of our dance teachers showing us what we learned at the end of the class. There is an nginx reverse proxy running in a separate container that routes traffic to the respective backend.

 

Container listing for one of the servers, showing the reverse proxy container and two others running web projects

 

Screenshot of my Jenkins instance. There are three CD pipelines that are regularly executed. The verification pipeline is not working at the moment, because since the Jenkins migration I had no time to set it up.

 

List of my web projects - proof that I'm not talking shit.

 

As for networking, I use a Dell Powerconnect 5324 switch picked from Ebay for $50. I had to replace its proprietary fans because they sounded like a jet engine, but apart from that it works well. I have two routers: an Edgerouter and an Archer C7v5 flashed to OpenWRT. Everything is firewalled and the internet-facing computers are isolated from the rest of the home network.

My very own server corner sitting under the desk. You can see the 1U rack switch, the router and two stacked Thinkcentres. The SBC is hidden on a shelf behind the desk.

 

A little bit of history:

I suggest reading the About page here and on dzsekszon.net to get a better understanding how I started. What isn't mentioned there is that I already had my own website (albeit not public) between 2014 and 2016. It was right after I started messing with PHP in January 2014. The whole site was basically me trying to hack my shitty PHP code into a free web template called Obscura. I liked the mysterious sound of that word so I named my site after it. I used the site as sort of a diary, writing about random thoughts and shit that happened to me. I genuinely enjoyed working on Obscura and learned much about PHP and Javascript the hard way during those years. In 2016 when I attended a Ruby on Rails class I realized Obscura is nothing but a pile of unmaintainable spaghetti code, so I abandoned it and didn't bother with PHP for half a year. By the time I had to take the Informatics 2 class I already knew the right way how webdev should be done.

 

Dzsekszon the C++ developer

I learned C++ during my second semester at the university. They were teaching us ancient shit (C++03, to be exact), so it was shocking to see how much the language has evolved and how I know nothing when I started my first ever original project, a Japanese grammar lookup tool. That was the point I realized C++ is awesome and I want to work with it. What started as a summer internship with Ericsson turned into a three year journey of writing C++, Python and bash for a huge and complex telco analytics software. During the first months I actually learned how to write structured and maintainable enterprise code. I got to work with Boost, Apache Kafka, Redis, Docker, among others. This was also the time I properly learned how to use git and saw the importance of CI. What I learned at the company I applied in my hobby projects.

My MSc thesis included writing a userspace network driver for an UWB transceiver using TUN/TAP interfaces. The software was written in C++; it's multithreaded and deals with IP packets. It sends fragmented IP packets through the UWB channel and reassembles them at the far side. For testing I've extensively used iperf3. I also had to take a deep dive into the realm of TCP congestion protocols.

Other than Aya, as of now I only have one major software project that builds on C++. It's actually a series of graphical applications (dashboards) meant to run on a SBC that will be placed on the top of my desk, with a tiny LCD screen. There are total four dashboards with the following roles:

  • Information dashboard: shows weather information, aggregates news and blog posts from several sources, lists newly uploaded videos from configured sources.
  • Media dashboard: Controls my AV receiver as well as several music sources, including Deadbeef, mpv and any MPRIS-capable media source.
  • Phone dashboard: Shows information about a docked Android smartphone. It also provides ethernet reverse tethering and screen copying features. This dashboard is written in Python, because I could not find an ADB library for C++.
  • Hosts dashboard: Shows information about configured hosts. The hosts have to run Glances in web-mode, detailed information is retrieved through its REST API.

This project skillfully demonstrates that I can include and use various third-party libraries. It's free software, you can take a look at the source code here. The dashboards rely on FLTK, Nlohmann JSON, libcpr, lexbor, tinyxml2 and libssh2. It also demonstrates I can write multithreaded and threadsafe code, although it's still a bit messy. As for the graphical library, FLTK was chosen because it has low resource utilization, mainly low memory footprint. Previously I've been experimenting with QT: it's actually a very nice framework and I enjoyed working with it, however a simple Hello World application uses more RAM than my four dashboards combined!

I will include some screenshots of the dashboards SoonTM.

 

Dzsekszon the electrical engineer

Even though I graduated as an electrical engineer I have little experience with electronics. One summer I enjoyed fiddling with my Atmel Atmega8 MCU: I read through its whole documentation and built experimental circuits on a breadboard to test its peripherals and features. I did the same with my MSP430, but less thoroughly. Aside from these MCUs I also own a chink Arduino clone and a TI Cortex-M4f development board, but I had no time yet to put those to work. I bought the TI devboard because I have big plans for it, something regarding the dashboard introduced in the C++ section. I'm currently learning how to do proper PCB design.

Aside from MCUs I can operate various electronic measurement equipment, including multimeters, oscilloscopes, spectrum analysers and VNAs. My BSc thesis work involved doing a lot of antenna measurements in an anechoic chambers, so I happen to know a thing or two about high frequency electronics, radio propagation and antennas.

 

Dzsekszon the tech enthusiast

I own 19 computers in total: 6 desktops, 5 laptops, 2 USFF PCs, 5 SBCs and a netbook. One of my laptops (an Asus X556U) is currently at my grandma's place, streaming Russian propaganda, because the EU fags have shut down Russian satellite broadcast over the continent. The netbook is collecting dust in my closet because it has an unreliable/faulty(?) PSU. The rest of the computers are spread across my own flat and my parents' place and nearly all of them has its purpose. They serve as main desktops, NASes, servers, or laptops to browse the chans while lying on the bed. About seven of these can be considered modern, the rest is either ancient (pre-2013) or underpowered (armhf or aarch64, typ. SBCs). I can strip the desktops and laptops to barebones and reassemble them. I actually do so every 2-3 years to replace the thermal solution and clear the dust from them. More recently, I dropped my X230 and had to disassemble it to see if something broke. Aside from minor plastic breakdowns the laptop was intact. Thinkpads are truly built like tanks!

My desk at my parents' place. Three desktops, two laptops and a hidden SBC above the desktops. It's a bit messy, but I don't care.

 

As for operating systems, one desktop from 2001 still runs Win XP. One NAS runs FreeBSD. The remaining 17 computers ALL run some Linux distribution. I started using Linux distros in 2014 for my web server and made it my daily driver in 2017. After a brief distrohopping period I've found the perfect distros for my every use case, the recipe is as follows: Manjaro for desktops with a DE, Debian for ancient/underpowered shit (i386, armhf) and Ubuntu Server for, well, servers. I also used to use Fedora on my main desktop between 2017 and 2019, but switched to Manjaro because I grew tired of manually compiling a patched kernel. Meanwhile AUR has a package that does exactly this (linux-vfio-lts). Running a patched kernel at that time was necessary for splitting IOMMU groups - which is required for a GPU passthrough to a QEMU virtual machine so I can run Windows 7 at near-native performance.

I very much enjoy listening to music, so I've dedicated quite a few bucks to audio equipment. I've owned an AV receiver and a set of 5.1 speakers hooked to my desktop since I was 16. I own an ATH-M40x and some not-so-cheap chink IEMs. More than half of my music is stored in FLAC. I know how to rip CDs using EAC, I've actually uploaded some rare doujin CDs to dzsekszon.net.

I tend to care about privacy. I use Waterfox as my main browser, with personal config tweaks and uBlock Origin and uMatrix installed. I use temporary e-mail accounts wherever possible. I avoid Apple, Google, Microsoft and any other companies offering "free" services, and instead rely on self-hosted open source projects.

A list of self-hosted projects, running in separate Docker containers. Kaede is the name of the internal CI machine that also hosts this little landing site.

 

Dzsekszon the human being

Up until 2022 I used to be an introverted loser who would spend the weekends alone, watching movies and anime, reading and working on hobby projects. It wasn't that bad after all, the majority of this site was written in that period. I also attended a Japanese study group from 2014 until January 2022 - I got fed up with my groupmates not wanting to abandon online lessons even after the chink flu calmed down. I passed the JLPT N2 in December 2022, so I'm pretty advanced, but still far from being fluent. However, as I don't use the language on a daily basis I began to forget stuff. Kanjis, most notably.

Things changed during the summer of 2022 when I decided I need to exercise regularly and lose weight. Things took an unexpected turn when I got the urge to pick up ballroom dancing once again, after ragequitting in 2016. It quickly became my favorite hobby, I gradually began attending more and more classes. Ballroom dancing was followed by salsa in January and bachata in August 2023. Through the classes and dance parties I got introduced to a whole lot of people, and I gradually became more sociable. I made new friends, got three four ballroom dance partners and regularly have the chance to dance with cute chicks and hot MILFs. And finally, I met an exceptional and beautiful girl whom I love with all my heart.

Dancing IS the reason why I spend less time in front of my computer working on hobby projects and such. It's so much entertaining and fulfilling that I no longer miss sitting for hours in my chair and grinding GDB. If you're a red blooded heterosexual white male you'd do the same in my situation.

 

Final thoughts

I can only wish some HR fag would read through this rambling and think, "hey this guy actually knows a bunch of shit, why not give him a chance?". I've been programming as a hobby since 2012, that equals to 11 years of experience. Okay, the first 3 to 4 years were mostly about experimenting, but I learned some valuable lessons from those. I think most junior devs learned programming at university, bootcamp or whatever. Show me someone my age who has demonstrated a similar skillset to mine, while still trying to live a fulfilling life.

The problem with most positions is that companies expect you to have N years of experience with a given framework, language or technology. Said companies will dismiss anyone who has less than, or no experience with these technologies, even though they can and are willing to learn them. The purpose of this rant is not to brag about my projects and toys, but rather to demonstrate that I've acquired a shitload of skills without little to no external help. So what if I have no experience with your fancy snowflake framework or dev environment? I'm Dzsekszon, I'm a fucking engineer, I can learn it in two weeks.

Edit 2024: I got hired literally two weeks after posting this.