At the time of writing this, I'm about to have my last day at the company that I've worked in for approximately the last 5 or so years, as I've submitted my resignation a little while ago. I figured I'd write a short post to reflect on what motivated me to quit my current job, as well as talk about life in general for a bit - some self reflection is nice every once in a while! But you know what else is nice? Fire safety!
The title of this post absolutely isn't clickbait, so let's get right into the interesting part...
Right now I'm living in the countryside with my parents. I moved here during the first stages of the pandemic, after finishing my Master's studies, as at the time it didn't really make all that much sense to look for an apartment in the city. I have to say that I rather enjoy the fresh air, or getting to spend some time playing with the two dogs we have as pets. However, there absolutely are downsides.
You see, our electricity provider had decided to fix something in the grid one day, which meant the house being without electricity for the majority of the day. My laptop battery only lasts so long, so after a while I was sitting in the kitchen, drinking some tea and reading Blade Runner, a book my Philip K. Dick. In the house, for heating we use a set of radiators, pipes carrying water among them, a circulation pump to make that happen and, of course, a wood burning stove.
What started out as a leisurely break of me waiting for the electricity to come back on, quickly turned into something a bit more stressful: I heard the furnace, or rather the pipes that go to the chimney, starting to rumble. I saw that the temperature was rising quickly inside of it, so I tried cutting off the air supply. That didn't work, the temperature kept increasing. By now, the pipes were starting to glow a red tone, meaning that the metal itself was getting way too hot. I tried pouring my tea on the firewood inside of the furnace to create smoke and put it out, that didn't work.
I eventually found a pot of water (and some clay inside of it, which was a mess to clean up later) and that helped me avert a disaster. I only have pictures of the aftermath, but you're free to have a look:
(note the water on the floor, after cooling the pipes, as well as the clay that hit everything else as well)
It wasn't pretty, but I didn't have other options. No electricity meant that the water pump in the basement wouldn't work, so I couldn't get more water. Your typical Latvian countryside home is actually unlikely to have fire extinguishers either and my parents were grocery shopping in the city at the time, with the car that had one. By then I could actually smell the wall tapestry closest to the pipes melting, a burnt plastic smell of sorts. Thankfully it mostly worked out, this time.
I later found out that the cause of this incident was creosote, the buildup of this tar-like substance that is created when the wood you put in the furnace doesn't combust fully:
With enough accumulation and high enough temperatures, it can cause a chimney fire. The consequences of this can range anywhere from slight negative effects towards the structural integrity to your chimney, to your entire house burning down.
The good news is, that since I've acquired a chimney fan to help with the draft of the air, typically chop the firewood into smaller pieces that burn better (even though the wood still isn't properly seasoned, can't do anything there at the moment). In addition, I've acquired both a manually operated water sprayer for cooling the pipes down a bit, as well as a fire extinguisher, even though it would have been nice for my father to show the slightest bit of interest in making the house safe as well.
The bad news is that the furnace was installed wrong, due to how the chimneys are laid out and where the kitchen is, with its pipes going horizontally for too long of a distance, which in practice means that we'll have situations like this again eventually, even if the main chimney is cleared (we actually cleaned the pipes less than a week before the chimney caught fire):
See the liquid dripping down the wall? That's a sign of how unseasoned the wood is and how badly it burns, since there just isn't enough draft with this setup. I hope that installing the fan will help with this setup, though first I need something to convert from a square chimney into a round pipe at the top, so I can actually put it on. And yet, there's nothing I can do with these pipes, because cleaning them fully is impossible, due to how hard reaching everything is:
However, this whole experience, no matter how negative it was at the moment and even in the longer term, still was a useful reminder. I wasn't entirely truthful about it being the sole thing that made me quit my job, but rather it reminded me that I'm overdue for getting to pay attention to other things more.
I generally try to live fairly responsibly and think of what decisions I should make now, to be in a better place a year from now. Or maybe 5 or even 10 years from now. So why is it, that in the past few years I've been feeling like this image sums up my life rather well, then:
I'm inclined to say that it's easy to focus on the things that capture our daily attention and forget about the things that don't seem that immediate... until suddenly they do. I'd say that each of us has a certain amount of energy, attention and willpower that we divide up among all of the things we want to do, prioritizing some more than others. For me, one of those things has been my career, perhaps at the expense other important things:
Don't get me the wrong way: I rather enjoyed learning about new technologies, writing software and improving the processes around doing that. I gained a sense of satisfaction from solving business problems, shipping new releases, even fixing outages and minimizing the changes that they'll happen again in the future. I will also do that in the future, there's no doubt about it, as I'm quite passionate about programming!
But right now, it is time for a little break. Some people took a leap year before enrolling into a university of their choice. I didn't do that. Some people took a break after finishing university, before continuing with their professional careers. I didn't do that, as I had already been working as a developer while studying. For some, the occasional week off is enough, yet I watch my own list of new technologies to learn, blog posts to write, videos about software development to make just grow, without actually getting those things done.
So that's one of the reasons why I chose to quit my job - to both do the things I should have been paying attention previously, as well as the things that I've been wanting to do for a while now, but never had the time, because another version needed to be shipped, another outage needed to be averted and at the end of the day I was a bit too tired.
Quitting one's job is actually a bit of a big deal: temporarily I'm trading my financial stability for a bit more freedom. I fully intend to get things done and make the best of that time.
For starters, I actually want to personally move to the city. It feels like the countryside life isn't for me - I want to socialize with others, attend various events and just enjoy the convenience of having shops and things like healthcare always being nearby. In addition, we have an old apartment in the city, which probably needs a bit of fixing up, once the things I can address in the countryside will be done. Dad used to stay there when going to work in the city occasionally, but it might as well become a residence of mine.
The moving will be a whole process in of itself, as I'll need to move over my homelab servers and some furniture, in addition to at least some of my personal belongings - I'll still visit my parents and dogs in the countryside, of course, but I'd like most of my stuff where I'll spend most of my time.
I'd also like to spend some time after pausing my constant output of code, to actually take a step back and more deeply learn some of the "sacred texts" about programming. Or, to be less dramatic, just read a bunch of cool books without being in a rush:
I've been aggregating a small list of titles to look at and while it may change in time, it's an okay starting point for now:
About programming in particular:
- Algorithms 4th Edition
- Building Secure & Reliable Systems
- Clean Code
- Code Complete
- Design Patterns Elements of Reusable Object-Oriented Software
- The Pragmatic Programmer
- Working Effectively With Legacy Code
About database related topics:
- Next-Level Database Techniques For Developers
- SQL Antipatterns
- (probably something about NoSQL, or key-value stores as well)
About the industry in general:
- Cracking the Coding Interview
- Peopleware
- Start small, Stay small
- The Clean Coder
- The Mythical Man Month
After that, in addition to being a better friend to my friends and spending more time with them, I'll also work on furthering my knowledge and skills more. Working on production projects and maintaining them, or even writing new modules within pre-existing projects is wildly different from exploring new technologies and architectures, while having the freedom to choose what solutions you want and to also delete everything once you're done, instead of having to support it. A fast and exciting learning process, if you will. Making blog posts about that, or even video series is even better!
I managed to make something along those lines already, but that was just a simple project to test the performance of PostgreSQL and other solutions: Pidgeot: a system for millions of documents
I want to do my own take on a microservice project, using both boring and proven technologies as well as modern approaches. In university, we had a course project, where me and a few other people tried building a microservice project - it failed, because it was largely unfinished, as there were more services than participants. And yet, I wonder whether I could make such a project manageable all by myself, now with more practical experience than I had back then, having seen both failures and successes professionally. And even if it fails, it's still going to be pretty interesting to explore it going down in flames.
Apart from that, I have an optimistic outlook on things: while the global economy is a mess, I feel like I'm on friendly terms with most people and there isn't anything preventing me from eating healthily, looking after my own health (both mental and physical) and just becoming a slightly better person, one day at a time. This break should be pretty good for that!
Now, it might seem like I'm running away and leaving the projects that I formerly worked on up to chance. Not quite so.
You see, over the past few years I've worked pretty hard to increase both the discoverability and the bus factor of the projects and systems that I work on - so that they'd be easier for anyone to pick up and use. Sometimes that means realizing that there isn't a proper README file in place and writing one, including onboarding instructions as well. Sometimes it means setting up proper CI so the steps you need to build and ship a version are formalized somewhere, or even automated. Sometimes it means containerizing the whole thing to make the services that are present be more consistent and isolated, while allowing shipping new services alongside those more easily.
And if you keep those automations, tools, architectures and everything else simple enough, there are very few downsides to putting in the effort, for either your own future self, or someone else. While sometimes I've definitely done it for my own benefit (making it easier to work from day to day), I'd still say that I've mostly been following The Boy Scout Rule in Coding, which can be summed up as follows:
Leave it better than you found it
It's such a cool way to describe what we should all strive for. Of course, I don't doubt that there's a bug or two somewhere in my code that someone will stumble upon in months to years, but that's life. I just hope that what I've done so far makes it easy for anyone later to understand what I was doing, make their own changes, or perhaps throw the old implementation out altogether and write something more up to date with little effort.
As for the company itself: it was okay. I didn't always agree on everything with other engineers, but we made it work. The colleagues in general were good people, the projects, technologies and clients weren't too bad either and overall I'll remember it as a useful learning experience that taught me a lot. Of course, nothing is perfect and I've also grown a bit tired of some of the older codebases there, no joke, especially when there's more complexity there than I'd like.
Then again, every successful codebase that survives for many years eventually starts looking more like legacy code, or at the very least will become a platform instead of a service that's smaller in scope. It was mostly manageable and I'm sure that my former colleagues will do just fine, they're smart people! For now, however, I will allow myself to chase after the occasional shiny framework or technology as well, at least for a bit.
I guess it's a bit early for a mid-life crisis, but I'll say that it's definitely a good idea to occasionally slow down and take a small break from responsibilities, if possible. I know that that's not the case for many, especially in this economy, or for those with families to raise, which is why I appreciate being in my current circumstances all the more! To me, it feels like how life should be, instead of just working for 40-50 years non-stop, without sorting out your life.
For anyone who knows Latvian, here's a song about how fast time seems to run by: MESA "Divas Pasaules"
On a more silly note, I'm currently getting ready to move to the city and ordered some boxes for it. It turns out that I underestimated their size and now have 8 boxes like this:
If nothing else, moving probably won't be too much of a problem, since I can most likely fit every single computer in my house in a single one of those. I probably need more computers, then.