<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Lukáš Kubánek</title><link>https://lukaskubanek.com/blog/</link><description>The personal website of Lukáš Kubánek</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 27 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://lukaskubanek.com/blog/feed.xml" rel="self" type="application/rss+xml"/><item><title>Stuck in Low Power Mode</title><link>https://lukaskubanek.com/blog/stuck-in-low-power-mode/</link><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid>https://lukaskubanek.com/blog/stuck-in-low-power-mode/</guid><description>&lt;p&gt;It’s been quiet on my blog lately. I used to publish yearly reviews about how life was going and how everything was sunshine and rainbows. So what happened to the one for 2025? Things had actually started off really well that year. Monika and I spent the whole winter season in Bansko, Bulgaria, skiing almost every day and enjoying the snow. I finally proposed to her at the top of the mountain and, after returning home, we started planning our wedding. Unfortunately, what happened next turned my whole life upside down. And I needed some time to understand what was happening before I could tell this story, my story about &lt;strong&gt;Long Covid&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;Back in May 2025, I visited a tech conference in Berlin and caught what seemed to be Covid. I had to skip the last day of the conference and head home early. It felt like a normal cold with a sore throat and it cleared up in a few days. But over the following weeks, I started to realize that something wasn’t right. I was extremely tired, my head hurt, and my brain felt like it was covered in fog. I had never experienced anything like that before. It became nearly impossible to focus for an extended period of time. It knocked me out for a while, but I still thought it was some post-viral state that would go away soon. Little did I know.&lt;/p&gt;&#10;&lt;p&gt;I went to my doctor, who worked through the standard checklist. He did some routine checks and sent me to a few specialists. But everything stayed fairly high-level and all the results came back normal. Yet I clearly still felt sick. This was when I started to suspect that I had Long Covid and that the virus might have done much more damage to my body.&lt;/p&gt;&#10;&lt;p&gt;I had to slow down big time and sports were the first thing to go. I used to run every two or three days, but suddenly that was no longer possible. I made a couple of attempts to get back into it, but they all ended horribly wrong. I also had to drop out of the local badminton group I had just helped to start. Still, I tried to carry on as normally as possible. I kept working, but I wasn’t getting nearly as much done as before and even a few hours of focused work sucked up all my energy.&lt;/p&gt;&#10;&lt;p&gt;Symptoms kept coming and going. We had a three-month &lt;strong&gt;trip to Southeast Asia&lt;/strong&gt; planned for the end of the year and, after some hesitation, I went ahead with it, still thinking it’d eventually go away. What a dumb move in hindsight. Changing the environment and having new places and cultures to explore was great, but the trip was really tough. I got through it in &lt;strong&gt;low power mode&lt;/strong&gt;, joining tours aimed at elderly people or skipping some of them entirely.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://lukaskubanek.com/blog/stuck-in-low-power-mode/images/asia.jpeg" alt="Walking along the beach at sunset in Koh Lanta, Thailand"&gt;&lt;/p&gt;&#10;&lt;p&gt;Somehow I managed to survive and even enjoy parts of it. However, it definitely didn’t help me get better, especially as I had to deal with GI issues and another infection along the way. I remember coming back exhausted as f*ck. Literally the most drained I’ve ever been. I decided to make recovery my top priority, but I was slowly realizing how serious this condition is and that it could take a very long time, if full recovery was even possible. We made the difficult decision to postpone our planned wedding and I started adapting to this new phase of my life. A big part of that meant learning how to manage a much smaller and less predictable energy budget.&lt;/p&gt;&#10;&lt;p&gt;The headaches hadn’t gone away, and I was also dealing with muscle pain, chest pain, and shortness of breath. The exact symptoms might vary from person to person, but one common pattern is that you have a good day, push yourself too much, crash later, your symptoms get worse, and you need some time to get back to your baseline. This is known as &lt;strong&gt;PEM&lt;/strong&gt;, or post-exertional malaise.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; The tricky part is finding that invisible threshold and trying not to cross it, a technique called &lt;strong&gt;pacing&lt;/strong&gt;. The particularly nasty part is the delay. You can feel completely fine while doing something, only to get hit hours later or the next day and spend several days recovering. That makes it incredibly easy to get trapped in a push-crash cycle.&lt;/p&gt;&#10;&lt;p&gt;If you’re not affected yourself, the closest comparison I can think of is delayed-onset muscle soreness. You do a hard workout, your body starts hurting the next day, and it takes some time for the pain to wear off. PEM is somewhat similar, except that it can be triggered by things that normally wouldn’t count as exertion at all, like doing chores at home, running errands, spending a couple of hours focused on work, or simply talking or socializing for too long. And instead of just sore muscles, it can make all your symptoms flare up and leave you suffering for days afterward.&lt;/p&gt;&#10;&lt;p&gt;So, what’s causing this, you might ask? What does the virus do to the body? Nobody really knows the definitive answer yet. Researchers are still digging into it&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; and there are plenty of hypotheses: viral persistence, mitochondrial dysfunction, immune dysfunction, gut barrier and microbiome disruption, nervous system dysregulation, blood vessel dysfunction, and possibly other mechanisms. The thing is, there probably isn’t a single cause. It’s more likely a combination of these mechanisms and we’re dealing with &lt;strong&gt;multiple subtypes&lt;/strong&gt; of the disease.&lt;/p&gt;&#10;&lt;p&gt;This is what makes Long Covid so difficult to navigate in the healthcare system. There is no single test that tells you what’s wrong and no clear treatment path to follow. Most doctors can rule out the obvious things, but once those tests come back normal, there isn’t much left for them to do. I at least managed to secure an official Long Covid diagnosis&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;, but beyond that, I was mostly on my own and had to take matters into my own hands.&lt;/p&gt;&#10;&lt;p&gt;As absurd as it sounds, I became my own case manager, piecing together information, working with functional medicine practitioners and coaches, getting specialized lab tests, figuring out the logistics of arranging blood draws and getting samples delivered to the right labs, making sense of the results, and paying for much of it out of my own pocket. I’ve basically been doing a self-taught pre-med course for the past year, and it has taken up a ridiculous amount of my already limited energy.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://lukaskubanek.com/blog/stuck-in-low-power-mode/images/blood-sample.jpg" alt="Preparing blood samples for shipping to a lab"&gt;&lt;/p&gt;&#10;&lt;p&gt;Once I looked beyond the standard tests, things didn’t look quite so normal anymore. I had low levels of several vitamins and minerals, signs of increased oxidative stress, and abnormalities in my gut that could affect nutrient absorption. Most interestingly, though, I found out that the &lt;strong&gt;ATP levels&lt;/strong&gt;&lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt; in my cells were low. In simple terms, my mitochondria don’t seem able to produce enough energy to meet demand. Push the body too hard and the energy supply starts falling behind, leaving the system in an energy deficit, which is the most likely explanation for the delayed crashes.&lt;/p&gt;&#10;&lt;p&gt;So, what could I do about it? Unfortunately, there’s no magic pill for Long Covid. Treatment is mostly about managing symptoms, avoiding crashes, and trying to support whatever systems seem to be struggling. For me, pacing has made the biggest difference. I’ve also been doing physiotherapy for my stiff chest muscles and taking a crazy amount of &lt;strong&gt;supplements&lt;/strong&gt; to address the deficiencies and support energy production. Some of it seems to help, but since I can’t exactly A/B test my own body, there’s a lot of guesswork involved. So far, I haven’t felt the need to resort to more invasive experimental treatments like blood filtering or various off-label medications. For now, the idea is to give the body the best possible chance to fix itself. Or wait for research to come up with something better to work with.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://lukaskubanek.com/blog/stuck-in-low-power-mode/images/supplements.jpg" alt="My daily arsenal of supplements"&gt;&lt;/p&gt;&#10;&lt;p&gt;That said, my case is far from the worst. Some people recover in a few months, while others get hit much harder and become housebound or even bedbound, unable to manage everyday life without help and remaining severely affected for years.&lt;sup id="fnref:5"&gt;&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref"&gt;5&lt;/a&gt;&lt;/sup&gt; I’m somewhere in between, &lt;strong&gt;16 months in&lt;/strong&gt;. I can get through the day and function to some degree, but with limited capacity and without being able to handle physically and cognitively demanding tasks. It means giving up a big part of normal life, but I’m still hanging in there.&lt;/p&gt;&#10;&lt;p&gt;All this has been a huge slap in the face. It felt like some higher power reminding me that I’m not immortal. It also changed my perspective on illness. I used to think of it in two categories. Either it was something you get over after a while, or something serious like cancer that changes your life and comes with the possibility that you might not make it. I never really considered the third option, getting &lt;strong&gt;chronically sick&lt;/strong&gt; in a way that affects you both physically and cognitively, and simply staying that way.&lt;/p&gt;&#10;&lt;p&gt;I still sometimes struggle to wrap my head around what is happening. The whole thing feels surreal. I’m getting better, but recovery is anything but linear. And the finish line is still far ahead. What helps a lot is the support from my fiancée, finding joy in the little moments, and holding on to the hope that better days are ahead. I still have more questions than answers, the healthcare system isn’t really helping much, and research isn’t moving fast enough, but I’m hopeful that I’ll eventually get out of this. Wish me luck!&lt;/p&gt;&#10;&lt;p&gt;So why am I writing all this up? Well, it’s mostly to document this for myself, but also to give you a peek into a condition most people probably know very little about. Despite what you might have heard, Covid isn’t just another cold. It can mess up your life through symptoms that linger long after the infection itself has passed. Unfortunately, I think we’re all going to hear a lot more about Long Covid in the coming years. The virus is still circulating and your chances of developing these symptoms go up with each new infection.&lt;sup id="fnref:6"&gt;&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref"&gt;6&lt;/a&gt;&lt;/sup&gt; The pandemic isn’t over!&lt;/p&gt;&#10;&lt;div class="footnotes" role="doc-endnotes"&gt;&#10;&lt;hr&gt;&#10;&lt;ol&gt;&#10;&lt;li id="fn:1"&gt;&#10;&lt;p&gt;&lt;a href="https://www.cdc.gov/long-covid/hcp/clinical-guidance/index.html"&gt;Clinical guidance on Long Covid&lt;/a&gt; describes PEM as worsening symptoms after even minor physical or mental exertion, typically with a delay of 12–48 hours and lasting for days or even weeks.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:2"&gt;&#10;&lt;p&gt;Post-viral chronic illnesses with similar symptoms existed long before the pandemic, but Long Covid brought the problem to a completely different scale, with a growing economic impact. In Germany, the government has responded with a planned &lt;a href="https://www.bmftr.bund.de/SharedDocs/Kurzmeldungen/DE/2025/11/nationale-dekade-postinfekti%C3%B6se-erkrankungen.html"&gt;€500 million investment&lt;/a&gt; in research into post-infectious diseases.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:3"&gt;&#10;&lt;p&gt;My official diagnoses are Post-COVID-19 condition and a mild form of chronic fatigue syndrome (CFS).&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:4"&gt;&#10;&lt;p&gt;By ATP, I mean the &lt;a href="https://en.wikipedia.org/wiki/Adenosine_triphosphate"&gt;energy molecule&lt;/a&gt;, not the &lt;a href="https://atp.fm"&gt;podcast&lt;/a&gt;… 😉&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:5"&gt;&#10;&lt;p&gt;One well-known example is Dianna Cowern from &lt;a href="https://www.youtube.com/@physicsgirl"&gt;Physics Girl&lt;/a&gt;, who became severely affected by Long Covid and has spent much of the last few years largely confined to bed.&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:6"&gt;&#10;&lt;p&gt;A &lt;a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC12887416/"&gt;recent study&lt;/a&gt; found that repeated infections increased the overall risk of developing Long Covid compared with a single infection.&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/div&gt;&#10;</description></item><item><title>The Year 2024 in Review</title><link>https://lukaskubanek.com/blog/review-of-2024/</link><pubDate>Sun, 16 Feb 2025 00:00:00 +0000</pubDate><guid>https://lukaskubanek.com/blog/review-of-2024/</guid><description>&lt;p&gt;This one took me longer than I’d have liked! We’re already well into 2025 and only now have I found the time to reflect on the past year. The reason? We’re on a nomad trip, once again spending the entire winter season in Bansko, Bulgaria. This time, we arrived before Christmas, and since then, we’ve been splitting our time between work, skiing and social activities, leaving little room for much else.&lt;/p&gt;&#10;&lt;p&gt;But let’s talk about this trip another time and see what I can still remember about 2024. Feel free to jump straight to the section about &lt;a href="#home"&gt;our home&lt;/a&gt;, &lt;a href="#travel"&gt;travel&lt;/a&gt;, &lt;a href="#work"&gt;work&lt;/a&gt;, &lt;a href="#wardrobe"&gt;the upgrade of my wardrobe&lt;/a&gt;, &lt;a href="#sports"&gt;sports&lt;/a&gt;, or &lt;a href="#health"&gt;health&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="home"&gt;Home&lt;/h2&gt;&#10;&lt;p&gt;At the start of the year, I focused on making our new apartment in Dresden feel more like home, as there were still plenty of finishing touches to take care of. I tweaked our basic IKEA nightstands with wooden plates, properly attached the glass whiteboard and set up more bookshelves in the home office, and finally installed a back plate and lighting on the kitchen countertops. The last one was particularly fun, since it gave me an excuse to play around with LED strips and put my soldering kit to use again. There are still minor things left to do, but overall, I’m happy with how the place turned out—it really feels cozy now.&lt;/p&gt;&#10;&lt;h2 id="travel"&gt;Travel&lt;/h2&gt;&#10;&lt;p&gt;To make time for all these home improvements, we decided to skip our usual winter nomad trip. And boy, was that a bad idea! After spending the last few years escaping winter, I had completely forgotten just how long and depressing the winter can be in Germany. I managed to survive by going jogging regularly, no matter the weather. And while working from the newly set-up home office felt great, I soon realized I desperately needed to change the environment.&lt;/p&gt;&#10;&lt;p&gt;And so, in April, we spontaneously decided to go on another workation. Romania was high on our list, but the &lt;a href="https://www.transylvaniancoliving.com"&gt;coliving space&lt;/a&gt; we had planned to visit had just closed. That left us looking for a new destination, and we landed on &lt;strong&gt;Albania&lt;/strong&gt;—a country we knew next to nothing about, not even the name of its capital, where we ended up spending more than one month. I was familiar with the horrors of communist regimes in countries like Czechoslovakia and East Germany, but learning about Albania’s history marked with dictatorship was really eye-opening. What stood out most was how long it took the country to recover after the fall of the Iron Curtain.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://lukaskubanek.com/blog/review-of-2024/images/tirana.jpg" alt="Main square in Tirana"&gt;&lt;/p&gt;&#10;&lt;p&gt;We settled in Tirana and immediately noticed how welcoming the people were. It didn’t take long for us to get into a routine. In the mornings, I’d go for a run around the large lake in the Grand Park, then we’d head to a &lt;a href="https://socialhub.al"&gt;coworking space&lt;/a&gt; to work, and in the evenings, we’d often join events by the local expat community.&lt;/p&gt;&#10;&lt;p&gt;We did have one random case of food poisoning, but overall, the food was amazing! If you ever visit Tirana, definitely check out &lt;a href="https://era.al/en/era-bllok/"&gt;Era restaurant&lt;/a&gt; and try the stuffed eggplant. I also liked how people sold fruits and veggies on the streets. One thing that stuck with me was how eggs were sold loose in plastic bags, making the walk home a bit stressful.&lt;/p&gt;&#10;&lt;p&gt;We didn’t just stay in Tirana the whole time. We also went on hikes in the mountains, visited the coast in Vlore, and went hunting for the countless abandoned bunkers scattered all over the country&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;. The landscapes were beautiful, but the lack of care for the environment was hard to ignore. The chaotic traffic also took some getting used to. Still, it was an adventure and an exciting place to experience.&lt;/p&gt;&#10;&lt;p&gt;After getting back, we spent a few days in &lt;strong&gt;Berlin&lt;/strong&gt;—our first time there since we moved away. We met up with friends and I visited the first-ever &lt;a href="https://www.localfirstconf.com"&gt;Local-First Conf&lt;/a&gt;. It was a nice change from the Apple-focused conferences I usually go to. Since I’ve been diving into CRDTs for an iOS app I have in the works, I was keen to learn more and be part of this movement around the &lt;a href="https://www.inkandswitch.com/local-first/"&gt;local-first software&lt;/a&gt;. I missed the early days of iOS when the iPhone got introduced, so this kind of felt like being there at the start of something new. And as always, Berlin just had that special vibe!&lt;/p&gt;&#10;&lt;p style="white-space: nowrap;"&gt;&lt;img style="display: inline-block; width: calc(50% - 5px);" src="https://lukaskubanek.com/blog/review-of-2024/images/dog1.jpg" alt="On a walk with Maki"&gt;&lt;img style="display: inline-block; width: calc(50% - 5px); margin-left: 10px;" src="https://lukaskubanek.com/blog/review-of-2024/images/dog2.jpg" alt="Going for a walk with Buddy"&gt;&lt;/p&gt;&#10;&lt;p&gt;In the summer, we spent time with friends and family, attended a wedding, and did some dog-sitting. We took care of Maki, our sweetheart we’ve looked after many times before. Monika was then looking after Buddy at his home in &lt;strong&gt;Barcelona&lt;/strong&gt; and I joined her for a few days. Crazy how different the two dogs are—Buddy loved playing with his toys but was incredibly stubborn about which paths to take on walks. He also refused to drink water, even in the brutal heat!&lt;/p&gt;&#10;&lt;p&gt;Yeah, we arrived in August, when many locals escape the city to avoid the deadly temperatures, leaving behind streets that felt like a desert. Despite not being a fan of the heat, I kept up my jogging routine, running through the grid and up the Montjuïc hill for a bit of greenery. At least I discovered gazpacho, which turned out to be the perfect way to cool down. Over the years, I’ve picked up a few Spanish words, but they were pretty much useless since people there use Catalan&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://lukaskubanek.com/blog/review-of-2024/images/barcelona.jpg" alt="View from Montjuïc hill in Barcelona"&gt;&lt;/p&gt;&#10;&lt;p&gt;To stick with the travels in Spain, I finally decided to check out &lt;a href="https://2024.nsspain.com"&gt;NSSpain&lt;/a&gt; after hearing so many great things about it. I originally wanted to combine it with Barcelona, but the dates didn’t line up, so I ended up making a separate trip to &lt;strong&gt;Logroño&lt;/strong&gt;. It’s not the easiest destination to reach, so I got creative and flew via Mallorca, where I had a stopover and managed to fit in some runs near the airport. That was nice but the beaches packed with German party tourists… not so much. The conference itself was a blast—great people, interesting conversations, and a strong wine theme, including a visit to a vineyard and nights out on Calle del Laurel, a lively street filled with pinchos&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt; bars. Exhausting but absolutely worth it!&lt;/p&gt;&#10;&lt;p&gt;In the fall, we visited my brother in &lt;strong&gt;Denmark&lt;/strong&gt;, where he was doing his Erasmus semester. It was my first time in Copenhagen, so we did a typical round of sightseeing—exploring the city, taking a ride on the autonomous metro, visiting Tivoli Park, a chair design museum, and the LEGO store. We also went to Roskilde to see his campus and the Viking Ship Museum. While there, I made sure to go for a few runs and met up with a dev friend. Lastly, we celebrated my brother’s birthday by going out for a dinner and got the table decorated with Danish flags—because apparently, that’s what you do in Denmark.&lt;/p&gt;&#10;&lt;p&gt;Before heading off on our big winter nomad trip, we made one more visit to Czechia to celebrate my father’s 60th birthday and catch up with friends. We also stopped in &lt;strong&gt;Prague&lt;/strong&gt;, where I attended a meetup of the Czech freelance community &lt;a href="https://navolnenoze.cz/novinky/momentky-prazskeho-srazu/"&gt;Na volné noze&lt;/a&gt; and a ChatGPT workshop by &lt;a href="https://davidgrudl.com"&gt;David Grudl&lt;/a&gt;. Both events were very insightful, but the highlight for me was meeting David over a beer and talking about the early days of PHP development, the first WebExpo conferences, and the meetups around his PHP framework, &lt;a href="https://nette.org/en/"&gt;Nette&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="work"&gt;Work&lt;/h2&gt;&#10;&lt;p&gt;This year was all about &lt;strong&gt;freelancing&lt;/strong&gt;. I took on two projects side by side, and to my surprise, I really enjoyed it. I always thought I’d only have fun working on my own apps, but client projects allow me to focus purely on engineering and product design—without having to wear all hats or worry about whether the business model will work out, like with my own apps.&lt;/p&gt;&#10;&lt;p&gt;In one freelance project, I’m building a suite of &lt;strong&gt;Mac apps&lt;/strong&gt; that extend Serato DJ Pro, one of the most widely used DJ software. While I tried to use SwiftUI where possible, most of the UI had to be built with good ol’ AppKit—both to support older macOS versions and for the greater control it provides over SwiftUI. Another key task in this project was developing a generic library for accessing the storage of the DJ software. It felt great to be back in the macOS world, and both of these tasks really sparked joy!&lt;/p&gt;&#10;&lt;p&gt;The other project is an &lt;strong&gt;iPad app&lt;/strong&gt; built from scratch for in-house use at a retrofitting company. At its core, it’s a sophisticated form for surveying properties, but the real challenge was optimizing it for entering loads of data as efficiently as possible. To make that work, I had to come up with some interesting design solutions and build custom UI controls tailored to this use case. Tech-wise, I’m using &lt;a href="https://github.com/pointfreeco/swift-composable-architecture"&gt;TCA&lt;/a&gt; and the latest SwiftUI features, with some components still being UIKit-based.&lt;/p&gt;&#10;&lt;p&gt;While juggling two projects with different tech stacks was mentally challenging at times, I really enjoyed the variety and the chance to expand my horizons and learn about new domains. I also kept maintaining &lt;strong&gt;Diagrams&lt;/strong&gt;, though it had already been on the back burner, and with freelancing taking priority, that didn’t change. The same went for the &lt;strong&gt;iPhone app&lt;/strong&gt; &lt;a href="https://lukaskubanek.com/blog/review-of-2023#new-ios-app"&gt;I started back in 2023&lt;/a&gt;—I simply couldn’t give it the focus it deserved, so I decided to put it on hold, but I hope to get back to it soon.&lt;/p&gt;&#10;&lt;p&gt;Before starting this year’s freelancing projects, I had just recently gotten rid of my iPad and had to get a new iPad Pro for development work. Since I’ve always preferred pen and paper for concept and design work, I started wondering if I could switch to a &lt;strong&gt;paperless workflow&lt;/strong&gt;, so I decided to give it a try and got an Apple Pencil. Turns out, it works well for me—I now use Freeform for all sorts of sketches&lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt;. The only downside is that organizing and exporting in the app is still a bit cumbersome. That said, it’s definitely more travel-friendly and a lot cleaner than carrying around notebooks with a loaded pencil case.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://lukaskubanek.com/blog/review-of-2024/images/ipad-freeform.jpg" alt="A sketch of a UI flow in Freeform on my iPad"&gt;&lt;/p&gt;&#10;&lt;p&gt;I’ve always documented my work to capture and share knowledge with team members, mostly through text and sketches. This year, I introduced &lt;strong&gt;a video format&lt;/strong&gt; into my workflow, and it’s been a great improvement. After finishing work on a feature, component, or design proposal, I’d record a &lt;a href="https://www.loom.com"&gt;Loom&lt;/a&gt; video and share it with stakeholders and team members. It’s been well received by clients—they can quickly grasp what I’m working on, and the videos also serve as a handy future reference. I had never done any video production before, so it took some getting used to, but now it’s an essential part of my collaborative workflow.&lt;/p&gt;&#10;&lt;h2 id="wardrobe"&gt;Wardrobe&lt;/h2&gt;&#10;&lt;p&gt;I guess you wouldn’t expect me to write about clothing here, but here we are. I have to admit that I’ve been &lt;strong&gt;neglecting my wardrobe&lt;/strong&gt; for ages&lt;sup id="fnref:5"&gt;&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref"&gt;5&lt;/a&gt;&lt;/sup&gt;, mainly because I find shopping to be super frustrating. I was kinda fine with sports and outdoor clothes from specialized stores, but when it came to everyday wear, I was clueless. Regular stores follow the concept of seasonal collections, which I find terribly flawed. I mean, you have the environmental aspect of a huge part of production ending up in landfills, but on a practical level, you can never just reorder the same piece. You have to start from scratch every single time. And I’m not even talking about how ugly some of the pieces are with the branding slapped on them.&lt;/p&gt;&#10;&lt;p&gt;This year, I finally bit the bullet and decided to do something about it. I learned about the concept of a &lt;a href="https://en.wikipedia.org/wiki/Capsule_wardrobe"&gt;capsule wardrobe&lt;/a&gt;, and the minimalist in me got super excited. I was after simple, timeless pieces in neutral colors, without any patterns or logos, that I could reorder anytime. And, most importantly, they had to fit well on my lean body.&lt;/p&gt;&#10;&lt;p&gt;That all sounded great in theory, but I had no idea where to start—regular stores definitely weren’t the answer. Along the way, I discovered the concept of &lt;a href="https://en.wikipedia.org/wiki/Slow_fashion"&gt;slow fashion&lt;/a&gt; and realized there was a huge overlap between its offerings and what I was looking for. I visited a few shops with sustainable clothing in Berlin to get a feel for the brands and their collections. And while I wasn’t specifically looking for organic or sustainably produced clothes, it turned out to be a nice bonus. That said, shopping in outlets wouldn’t really work for me—I want the convenience of ordering online with a simple click, without being limited to whatever happens to be in stock.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://lukaskubanek.com/blog/review-of-2024/images/asket.jpg" alt="T-Shirts from ASKET"&gt;&lt;/p&gt;&#10;&lt;p&gt;After a bit of research, I came across &lt;a href="https://www.asket.com/"&gt;ASKET&lt;/a&gt;, and it quickly became my discovery of the year. When I saw their website using the term &lt;strong&gt;permanent collection&lt;/strong&gt; and naming their pieces The T-Shirt or The Shorts, I was immediately sold! Their philosophy revolves around The Pursuit of Less, which is all about producing high-quality, long-lasting essentials—the exact opposite of common fast-fashion brands. On top of that, they offer flexible sizing, like choosing the cut size and length separately for T-shirts, and a seamless online ordering and return process. Where has this been all my life?&lt;/p&gt;&#10;&lt;p&gt;Over the course of a few months, I figured out the most overdue pieces: T-shirts, sweatshirts, underwear, and shoes. Of course there were plenty of missteps along the way&lt;sup id="fnref:6"&gt;&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref"&gt;6&lt;/a&gt;&lt;/sup&gt;. I’m still in the process of building my minimalist wardrobe, but I have a clear direction now. It took a lot of time and effort, but if it means I won’t have to deal with this again for years, it’s absolutely worth it!&lt;/p&gt;&#10;&lt;h2 id="sports"&gt;Sports&lt;/h2&gt;&#10;&lt;p&gt;If you’ve made it this far, you’ve probably noticed that I’ve been taking my running more seriously—so much so that I took my gear with me everywhere I traveled, making sure to fit in a run even on conference or wedding days.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://lukaskubanek.com/blog/review-of-2024/images/running.jpg" alt="Running out in the fields"&gt;&lt;/p&gt;&#10;&lt;p&gt;At the start of the year, I set a &lt;strong&gt;1,000 km challenge&lt;/strong&gt;, aiming to run almost twice as much as in 2023. With 133 runs, I hit the goal in early December, just in time before leaving for the ski workation. Further, I improved my 5km PR at the only race I ran this year—the REWE Team Challenge in Dresden. Looking back, I’m really proud of these achievements, as running has become a core part of my routine. Now in Bansko, I’m already getting itchy—it’s the longest I’ve gone without running so far.&lt;/p&gt;&#10;&lt;p&gt;Oh, and after settling in Dresden, I also started looking for &lt;strong&gt;badminton&lt;/strong&gt; groups to join. It’s still a work in progress and not particularly easy to combine with long travels, but I plan to keep at it in 2025.&lt;/p&gt;&#10;&lt;h2 id="health"&gt;Health&lt;/h2&gt;&#10;&lt;p&gt;I’ve been using the &lt;strong&gt;Oura ring&lt;/strong&gt; for almost three years now, and I’m still very satisfied with it. The data on my sleep, readiness, and activity levels gives me a sense of calmness. This year, I wanted to take things a step further and focus more on my overall health. I started supplementing magnesium, got a blood pressure monitor for occasional measurements, and scheduled a full check-up with my doctor, including blood tests and an ECG. Everything came back fine, which was great to hear.&lt;/p&gt;&#10;&lt;p&gt;While I’ve always been interested in self-measurement, this interest really took off after joining the &lt;a href="https://www.lifehacky.cz"&gt;Czech life hacker community&lt;/a&gt; a while ago. I finally got around to running an &lt;strong&gt;experiment with a CGM&lt;/strong&gt; (continuous glucose monitor) to see how my body handles glucose, given there is pre-diabetes in my family.&lt;/p&gt;&#10;&lt;p&gt;So, I ordered the &lt;a href="https://www.freestylelibre.de/produkte/freestyle-libre-3-sensor.html"&gt;FreeStyle Libre 3&lt;/a&gt;, a CGM device designed for diabetics that can be freely purchased in Germany. Applying the sensor was straightforward and the device calibrated itself automatically after a few hours. While it wasn’t super comfortable to wear a piece of plastic stuck to my arm for 14 days, it was manageable. A few days in, I noticed that my glucose levels were in the pre-diabetic range, which was concerning at first. However, after cross-checking with lab tests taken at the same time, I realized that the absolute values were ridiculously off by +30%, making the recorded data pretty useless.&lt;/p&gt;&#10;&lt;p style="white-space: nowrap;"&gt;&lt;img style="display: inline-block; width: calc(50% - 5px);" src="https://lukaskubanek.com/blog/review-of-2024/images/cgm1.png" alt="FreeStyle Libre app showing stable glucose"&gt;&lt;img style="display: inline-block; width: calc(50% - 5px); margin-left: 10px;" src="https://lukaskubanek.com/blog/review-of-2024/images/cgm2.png" alt="FreeStyle Libre app showing glucose spike"&gt;&lt;/p&gt;&#10;&lt;p&gt;Nevertheless, the trends were still interesting to observe, especially how different foods affected my glucose levels. Fruits on an empty stomach, white rice, and refined pasta led to noticeable spikes, while eating veggies before a meal helped keep things stable. In contrast, wholegrain rice and whole wheat pasta had a much milder impact. Exercise, on the other hand, had little effect—jogging and badminton barely moved the needle, whereas an intense 5 km run caused a noticeable drop. Given the sensor’s inaccuracy, though, everything still remained within a safe range. Tracking all of this in the first-party app was frustrating, as the UX was terrible compared to Oura or Apple Health. Still, I’m glad I ran this experiment, even if the insights weren’t as actionable as I had hoped, apart from tweaking some food choices.&lt;/p&gt;&#10;&lt;p&gt;There’s still one health issue that’s been bothering me—I occasionally experience &lt;strong&gt;symptoms after certain foods&lt;/strong&gt;, but so far, I haven’t been able to pinpoint the cause. It’s been a frustrating process of trial and error, but no clear pattern has emerged. I plan to keep investigating next year.&lt;/p&gt;&#10;&lt;h2 id="outro"&gt;Outro&lt;/h2&gt;&#10;&lt;p&gt;There’s probably more I could write about. Like how I stuck to journaling and, for the first time, read through some of my old entries while preparing this review (which gave me a good laugh at times). Or how I didn’t manage to read many books, since these days, I tend to prefer working on projects, and when I do consume content, I go for lighter formats like podcasts. (Got really hooked on &lt;a href="https://atp.fm"&gt;ATP&lt;/a&gt;, btw.) But let’s wrap it up here!&lt;/p&gt;&#10;&lt;p&gt;One big takeaway from this year is just how essential running has become for me. And after making the mistake of staying home last winter, I now see how much I need the right balance between traveling (new environments) and staying home (focus and stability). Not too much, not too little. That’s why we made up for it with this trip. Hi from the slopes! 👋&lt;/p&gt;&#10;&lt;p&gt;Thanks for following along! Let’s see what 2025 brings, for sure it will be a ride!&lt;/p&gt;&#10;&lt;div class="footnotes" role="doc-endnotes"&gt;&#10;&lt;hr&gt;&#10;&lt;ol&gt;&#10;&lt;li id="fn:1"&gt;&#10;&lt;p&gt;I first learned about the bunkers in &lt;a href="https://www.youtube.com/watch?v=ROozLTYm_OQ"&gt;this episode&lt;/a&gt; on &lt;a href="https://www.youtube.com/@baldandbankrupt"&gt;bald and bankrupt&lt;/a&gt;’s YouTube channel. Big fan here!&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:2"&gt;&#10;&lt;p&gt;Side note: I didn’t know that &lt;em&gt;i&lt;/em&gt; and &lt;em&gt;e&lt;/em&gt; could take umlauts—Catalan has &lt;em&gt;ï&lt;/em&gt;, and Albanian has &lt;em&gt;ë&lt;/em&gt;.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:3"&gt;&#10;&lt;p&gt;That’s what they call tapas in La Rioja.&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:4"&gt;&#10;&lt;p&gt;When I’m in my home office, I still begin by jotting things down on a whiteboard, though.&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:5"&gt;&#10;&lt;p&gt;The cost per wear for some of my most worn-out items is close to zero. 😉&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:6"&gt;&#10;&lt;p&gt;Anyone interested in some &lt;a href="https://www.vinted.de/items/4931432434"&gt;The Lightweight T-Shirts in XS/Regular size&lt;/a&gt;? I ended up going with XS/Long instead.&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/div&gt;&#10;</description></item><item><title>The Year 2023 in Review</title><link>https://lukaskubanek.com/blog/review-of-2023/</link><pubDate>Sun, 31 Dec 2023 00:00:00 +0000</pubDate><guid>https://lukaskubanek.com/blog/review-of-2023/</guid><description>&lt;p&gt;The year is slowly coming to a close, and so, just &lt;a href="https://lukaskubanek.com/blog/review-of-2022"&gt;like last year&lt;/a&gt;, I’m pausing to put together a blog post to reflect on it. Join me as I dive into the highlights and lessons from 2023 from both a personal and business perspective. If you’re here only for particular topics, you can directly navigate to sections about my &lt;a href="#winter-nomad-trip"&gt;nomad trip&lt;/a&gt;, &lt;a href="#freelancing"&gt;freelancing&lt;/a&gt;, &lt;a href="#new-ios-app"&gt;new iOS app&lt;/a&gt;, &lt;a href="#relocation-to-dresden"&gt;relocation from Berlin to Dresden&lt;/a&gt;, &lt;a href="#more-travels"&gt;more travels later in the year&lt;/a&gt;, insights on my &lt;a href="#health-and-habits"&gt;health and habits&lt;/a&gt;, or &lt;a href="#mastodon"&gt;my switch from Twitter to Mastodon&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="winter-nomad-trip"&gt;Winter Nomad Trip&lt;/h2&gt;&#10;&lt;p&gt;Right at the beginning of the year, my partner and I set out on yet another three-month nomad adventure. First up was a month in the &lt;strong&gt;capital of the Canary Islands&lt;/strong&gt;, a destination that’s becoming more and more familiar to us.&lt;/p&gt;&#10;&lt;p&gt;We joined the Czech and international nomad communities and worked from our &lt;a href="https://www.soppadeazul.com"&gt;favorite coworking space&lt;/a&gt;. The funny thing was that we kept bumping into people we knew from last year’s travels. I didn’t bring my running shoes, so I started running barefoot on the beach in the mornings, which felt great. Further, my brother and his friends came to visit for one week, and we had a good time hiking and enjoying tapas and wine together.&lt;/p&gt;&#10;&lt;p&gt;After a brief stop in Berlin to swap our summer clothes for winter ones, we returned to &lt;strong&gt;Bansko in Bulgaria&lt;/strong&gt;. This time for the winter season and the whole two months! The Canaries had been colder and rainier than usual, but Bansko was a whole different kind of cold.&lt;/p&gt;&#10;&lt;p&gt;I got the flu, which kept coming back, but once I got better, I was excited to jump into &lt;strong&gt;skiing&lt;/strong&gt;. It had been six years since I last skied! Every morning, we’d check out the weather conditions to decide whether we’d &lt;a href="https://www.banskoski.com/en"&gt;go skiing&lt;/a&gt; or work from one of the &lt;a href="https://altspacecoworking.com"&gt;coworking&lt;/a&gt; &lt;a href="https://coworkingbansko.com"&gt;spaces&lt;/a&gt;. We often met other nomads on the slopes, so we’d ride or go for a hot drink together. And for one week, my partner’s parents came to visit and spend one week skiing with us.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://lukaskubanek.com/blog/review-of-2023/images/bansko-ski.jpg" alt="Skiing in Bansko"&gt;&lt;/p&gt;&#10;&lt;p&gt;As we were staying near the ski lift, we could be among the first people on the slopes. The best part was taking the first lift up on a clear day and having the groomed slopes to ourselves, even if it lasted just for a little while!&lt;/p&gt;&#10;&lt;p&gt;At the end of the season, right before spring came and we were supposed to hang up our Martenitsa bracelets on a blossoming tree&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;, we took a sample snowboarding lesson with an instructor. We looked like pros until we actually got on the boards—we were so clumsy! It was a funny way to end our winter adventures. 😀&lt;/p&gt;&#10;&lt;h2 id="freelancing"&gt;Freelancing&lt;/h2&gt;&#10;&lt;p&gt;Last year, I faced the tough decision to pause the active development of Diagrams&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;. I took on my first significant &lt;strong&gt;freelance project&lt;/strong&gt; and joined the team behind a well-known Mac-native Git client. It was an honor to be able to contribute to a tool that I’ve been using daily for several years.&lt;/p&gt;&#10;&lt;p&gt;The project involved integrating SwiftUI into an established AppKit-based codebase and developing several views using this shiny framework. Despite its limitations (especially on macOS when supporting older OS versions), it proved to be a game-changer in simplifying the process of implementing UIs. It’s also great that you can still resort to AppKit when SwiftUI doesn’t cover your needs and build SwiftUI-compatible wrappers.&lt;/p&gt;&#10;&lt;p&gt;I really enjoyed the collaboration with a skilled, distributed team. Being able to focus solely on the development part was also very refreshing—such a stark contrast to my time on Diagrams, where I juggled multiple roles! This project further taught me the value of a pragmatic approach, a lesson I’ve since applied to other areas, particularly to the development of my new app.&lt;/p&gt;&#10;&lt;h2 id="new-ios-app"&gt;New iOS App&lt;/h2&gt;&#10;&lt;p&gt;Another major decision I made last year was to start building a new app, this time for iOS. Although I had been elaborating on the concept and working on UI prototypes for quite some time, it was only after wrapping up the freelance project that I fully got into it. It has been incredibly exciting, and it reminded me of the early days of Diagrams. The difference is that now I have a lot more experience, which makes things smoother.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://lukaskubanek.com/blog/review-of-2023/images/new-app-concept.jpg" alt="Initial concept work on my new iOS app"&gt;&lt;/p&gt;&#10;&lt;p&gt;I’m not yet ready to reveal all the details about the app, but I can say that it’s about shared lists. The main challenge of this year was to come up with a &lt;strong&gt;reliable way to sync data&lt;/strong&gt; across devices based on CloudKit, which is the most obvious choice for the backend when talking Apple platforms. While CloudKit takes care of the transportation and storage layers, it’s still pretty hard to design a sync system that &lt;a href="https://www.inkandswitch.com/local-first/"&gt;works well in offline settings&lt;/a&gt; and handles conflicts in the most appropriate way.&lt;/p&gt;&#10;&lt;p&gt;I briefly looked into Core Data, Apple’s framework for managing object graphs and persistence. Especially the &lt;code&gt;NSPersistentCloudKitContainer&lt;/code&gt; API looked promising. However, I quickly realized it wasn’t going to work for my needs. The black box nature of this framework and its overwhelming complexity stemming from all the legacy it contains were major drawbacks. The final show-stopper, though, was the inability to use custom merge policies&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;. I shifted my focus to learning about all the sharp edges of the CloudKit APIs and decided to build my own lightweight, local-first persistence and sync engine. While I was able to draw inspiration from open-source projects, it still looked like an immense task. Luckily, just around that time, Apple introduced the &lt;a href="https://developer.apple.com/documentation/cloudkit/cksyncengine"&gt;&lt;code&gt;CKSyncEngine&lt;/code&gt;&lt;/a&gt; API, and that made all the difference. I couldn’t wish for a better timing. Thanks, Apple!&lt;/p&gt;&#10;&lt;p&gt;There was one particular challenge I really struggled with, namely how to handle the merging of conflicted versions of a shared &lt;em&gt;ordered&lt;/em&gt; list while trying to preserve the intentions behind changes made by different parties. I dove deep into the topic of sync technologies and found myself going down the rabbit hole of &lt;a href="https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type"&gt;CRDTs&lt;/a&gt; (conflict-free replicated data types). Yet, I still couldn’t find a fitting solution for this scenario, one which would ensure that parties couldn’t get out of sync while also preventing metadata from growing indefinitely.&lt;/p&gt;&#10;&lt;p&gt;I then stumbled upon &lt;a href="https://kcsrk.info/papers/oopsla19-mrdt.pdf"&gt;MRDTs&lt;/a&gt; (mergeable replicated data types), a concept similar to the branching workflow in Git, where the lowest common ancestor is maintained and used for resolving conflicts using a three-way merge function. After seeing the &lt;a href="https://www.youtube.com/watch?v=XPO2a2pksls"&gt;introductory talk&lt;/a&gt;, I was instantly blown away by how elegantly this seemingly simple approach solved the scenario described above. This was my technical discovery of the year! I was also happy to hear that the solution I ended up with got validated by &lt;a href="https://mastodon.cloud/@drewmccormack"&gt;Drew McCormack&lt;/a&gt; from &lt;a href="https://agenda.com"&gt;Agenda&lt;/a&gt;, who knows a thing or two about sync on Apple platforms.&lt;/p&gt;&#10;&lt;p&gt;With the sync being taken care of, there was another technical question to cope with, namely, how to architect the app. Using SwiftUI was a pretty clear choice. As for the general architectural pattern, I initially considered MVVM before settling on the Redux-like &lt;a href="https://github.com/pointfreeco/swift-composable-architecture/"&gt;The Composable Architecture&lt;/a&gt; by &lt;a href="https://www.pointfree.co"&gt;Point-Free&lt;/a&gt;. This library resonated with my way of thinking about software architecture, and it’s of such a high quality! Their accompanying video series proved to be by far the best source of input when it comes to modern Swift development. I mean, it’s pretty incredible how much Brandon and Stephen &lt;a href="https://www.pointfree.co/blog/posts/126-2023-year-in-review"&gt;were able to achieve in 2023 alone&lt;/a&gt;. If you’re not following this project, I can’t recommend it enough!&lt;/p&gt;&#10;&lt;p&gt;My new iOS app is currently undergoing a private beta test, and there’s still a lot to do. My plan is to launch it on the App Store sometime in 2024. Wish me luck! 🤞&lt;/p&gt;&#10;&lt;h2 id="relocation-to-dresden"&gt;Relocation to Dresden&lt;/h2&gt;&#10;&lt;p&gt;After a good five years in Berlin, we moved back to Dresden, where we had lived before. Finding a fitting apartment took us a while, and the whole process of moving and setting up our new place filled up much of the second half of the year. But it was worth the effort!&lt;/p&gt;&#10;&lt;p&gt;For the first time in my life, we’re experiencing a large apartment with room to breathe, and I now have a dedicated office, which is such a positive change. I’m generally not into material stuff, but I’ve always dreamt about having a large wooden dining table, and so we turned it into reality.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://lukaskubanek.com/blog/review-of-2023/images/home-office.jpg" alt="Setting up my home office"&gt;&lt;/p&gt;&#10;&lt;p&gt;We’re still adjusting to life back in Dresden, which contrasts quite a bit with Berlin. It’s great catching up with old friends and being closer to our families. The only thing I’m missing here is the forests and moor fields we were surrounded by in Berlin&lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt;. There’s still the &lt;a href="https://de.wikipedia.org/wiki/Gro%C3%9Fer_Garten_(Dresden)"&gt;Großer Garten&lt;/a&gt;, where one can go jogging, but it’s just not the same. You can’t have it all, I guess.&lt;/p&gt;&#10;&lt;p&gt;As we got settled in our new home, I delved into the topic of &lt;strong&gt;home automation&lt;/strong&gt;. Beyond installing the usual accessories for lighting, heating, and weather monitoring, I also decided to build a DIY doorbell forwarder from scratch. This project required me to refresh some basic knowledge of electronics and get my hands dirty with soldering. Ultimately, it took several iterations to get it right. If you’re interested, I’ll be sharing more about it in a detailed blog post later in the year. All in all, setting up smart devices has been a fun part of the whole relocation process, and I’ve got even more ideas for where to take it further.&lt;/p&gt;&#10;&lt;h2 id="more-travels"&gt;More Travels&lt;/h2&gt;&#10;&lt;p&gt;As I was busy with the move to Dresden and working on my new app, there wasn’t room for any more nomad trips this year. However, I still managed to fit in a few shorter events in Saxony and the Czech Republic. Alongside these, there were a couple of trips that really stood out.&lt;/p&gt;&#10;&lt;p&gt;Firstly, after the pandemic break, I got back into attending &lt;strong&gt;developer conferences&lt;/strong&gt;. I visited the &lt;a href="https://macoun.de"&gt;Macoun&lt;/a&gt; conference in Frankfurt, which always feels like a class reunion. But the real highlight for me was the &lt;a href="https://do-ios.com"&gt;Do iOS&lt;/a&gt; conference in Amsterdam. I almost forgot how wonderful it is to meet people from the international community in person and how much I’ve missed that. I enjoyed it so much that I’m already making plans for similar events next year.&lt;/p&gt;&#10;&lt;p&gt;Additionally, I had a fantastic &lt;strong&gt;trip to Huelva in Spain&lt;/strong&gt;, where my brother is spending his Erasmus semester. We managed to bring my mom and grandma along, which was quite an achievement, as they’re not used to traveling. Our week there was full of fun moments. Like watching my mom trying to handle the seafood, we’ve been getting from the local market and cooking every day. Or when we took my grandma to a student party hosted by my brother and his friends.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://lukaskubanek.com/blog/review-of-2023/images/octopus.jpg" alt="Cooked fresh octopus from the local market"&gt;&lt;/p&gt;&#10;&lt;h2 id="health-and-habits"&gt;Health &amp;amp; Habits&lt;/h2&gt;&#10;&lt;p&gt;At the beginning of the year, I read the book &lt;a href="https://www.geniusfoodsbook.com"&gt;Genius Foods&lt;/a&gt; by Max Lugavere and &lt;a href="https://www.amazon.com/This-Book-Could-Save-Your/dp/1529311306"&gt;This Book Could Save Your Life&lt;/a&gt; by Graham Lawton. We’ve been preparing meals from fresh ingredients every day for some time now&lt;sup id="fnref:5"&gt;&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref"&gt;5&lt;/a&gt;&lt;/sup&gt;, but these books pushed me to tweak my &lt;strong&gt;diet&lt;/strong&gt;, especially when it comes to breakfasts, usage of oils, and consuming some basic foods like eggs, nuts, olive oil, veggies, oily fish, or high-quality chocolate more often.&lt;/p&gt;&#10;&lt;p&gt;It also led me to try &lt;strong&gt;intermittent fasting&lt;/strong&gt;. It was quite an interesting experience, particularly noticing the increased energy levels in the mornings. However, I chose to stop because I was worried about losing weight, something I couldn’t risk since I’m already at the lower end of the BMI scale and actively participate in sports. Despite this, I’ve maintained the habit of not eating immediately after waking up and avoiding late meals.&lt;/p&gt;&#10;&lt;p&gt;Last year, I found out that I’m sensitive to &lt;strong&gt;caffeine&lt;/strong&gt;. After completely cutting it out of my diet at first, I began experimenting to find a smaller dose that wouldn’t make me feel uneasy but would still give me a bit of an energy boost. I’ve settled on having a small cup of low caf in the mornings, sometimes switching it up with decaf. And just so you know, I’m a big fan of my AeroPress!&lt;/p&gt;&#10;&lt;p&gt;Another gadget I stayed true to is the Oura ring, a key tool in tracking my &lt;strong&gt;sleep and activity levels&lt;/strong&gt;. It even has the ability to predict illnesses, and it showed me how I shifted from being a night owl to an early bird throughout the year. Yep, I completely changed my daily routine! Now, I get up early, typically between 5:30 and 7:00 am, and head to bed early as well, around 8:00 to 10:00 pm. And as for sleep, I was able to improve it by installing black curtains in the bedroom. I’m also looking into how light influences sleep, especially reducing exposure to blue light before sleeping using &lt;a href="https://www.vitaelight.com/en/vitaelight-en/"&gt;Vitae&lt;/a&gt; bulbs, but this is still a work in progress.&lt;/p&gt;&#10;&lt;p&gt;We’ve always had the Netatmo weather station at home, but with the new take on home automation, we’ve equipped all the rooms with a module and set up notifications for &lt;strong&gt;high levels of CO₂&lt;/strong&gt;. It’s been quite a revelation how quickly the rooms fill up and how often it’s necessary to bring in fresh air.&lt;/p&gt;&#10;&lt;p&gt;I’ve also continued with my daily &lt;strong&gt;exercise&lt;/strong&gt; routine, sticking to activities like push-ups, skiing, badminton, and jogging. Speaking of jogging, this year, I ran a total of 575 kilometers, got the kilometer in under 5 minutes, and set PRs in both 5k and 10k. One of my favorite aspects was going for runs during my travels, including my nomad trip and conferences.&lt;/p&gt;&#10;&lt;p&gt;After missing a few months, I’ve reintroduced the habit of &lt;strong&gt;journaling&lt;/strong&gt; into my daily routine. This time, I’ve given myself the freedom to pick whatever format and length fit the day best—even if it’s only a few noteworthy sentences. Reflecting on my days has been beneficial, but I haven’t yet gone back to look at my past entries. This is something I have to figure out.&lt;/p&gt;&#10;&lt;p&gt;While I managed to get through a few books in the first half of the year, the habit of &lt;strong&gt;reading&lt;/strong&gt; has been on the back burner since. Time is limited, and I had to make the decision to cut back on it. I’ve found that I can fit in some reading when traveling, but at home, I tend to prefer creating over consuming.&lt;/p&gt;&#10;&lt;h2 id="mastodon"&gt;Mastodon&lt;/h2&gt;&#10;&lt;p&gt;Twitter has been declining for several years, but this year, things got moving even quicker with Elon’s takeover. I’ve been hanging in limbo for a while, not knowing how to react. I then finally decided to set up my &lt;a href="https://mastodon.social/@lukaskubanek"&gt;Mastodon account&lt;/a&gt;, and it has quickly become my go-to social network. I’m enjoying the narrowly focused community and the ability to use it with 3rd-party clients&lt;sup id="fnref:6"&gt;&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref"&gt;6&lt;/a&gt;&lt;/sup&gt;. It very much reminds me of the early days of Twitter, ehm X, as they call it now. Sadly, there’s still a lot of valuable content on X, which is why I’m keeping &lt;a href="https://x.com/lukaskubanek"&gt;my account&lt;/a&gt; over there, even if I check it only sporadically.&lt;/p&gt;&#10;&lt;p&gt;Uff… And that’s a wrap!&lt;/p&gt;&#10;&lt;p&gt;I picked up the habit of writing these yearly reviews to share a peek behind the scenes of my life and work with my peers, but the biggest benefit it provides to me is that I take the time to reflect on the past in a structured way. It ended up longer than I thought. So sorry, not sorry. 🙈&lt;/p&gt;&#10;&lt;div class="footnotes" role="doc-endnotes"&gt;&#10;&lt;hr&gt;&#10;&lt;ol&gt;&#10;&lt;li id="fn:1"&gt;&#10;&lt;p&gt;In Bulgaria, there’s a tradition where friends gift each other a &lt;a href="https://en.wikipedia.org/wiki/Martenitsa"&gt;Martenitsa bracelet&lt;/a&gt; on March 1. The recipient is meant to wear this bracelet until they spot a blossoming tree, signaling the end of winter. Upon seeing such a tree, the custom is to then hang the bracelet on its branches, symbolizing a welcome to the spring season.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:2"&gt;&#10;&lt;p&gt;This affects only new features or significant updates. I’m still very much committed to maintaining the app and updating it for upcoming macOS versions. &lt;a href="https://lukaskubanek.com/blog/review-of-2022#business"&gt;Here&lt;/a&gt; you can find more details on what led to this decision.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:3"&gt;&#10;&lt;p&gt;You might be asking if SwiftData was worth looking into. But since it’s just a wrapper around Core Data, it wasn’t really an option either.&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:4"&gt;&#10;&lt;p&gt;We actually lived in &lt;a href="https://de.wikipedia.org/wiki/Berlin-Waidmannslust"&gt;Waidmannslust&lt;/a&gt;, at the outer edge of the city.&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:5"&gt;&#10;&lt;p&gt;We’re happy subscribers of HelloFresh. To be completely honest, my partner used to work for the company, but regardless of that fact, I can’t imagine going back!&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:6"&gt;&#10;&lt;p&gt;I’m using &lt;a href="https://tapbots.com/ivory/"&gt;Ivory&lt;/a&gt;, the successor to &lt;a href="https://tapbots.com/tweetbot"&gt;Tweetbot&lt;/a&gt;, by the way.&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/div&gt;&#10;</description></item><item><title>The Year 2022 in Review</title><link>https://lukaskubanek.com/blog/review-of-2022/</link><pubDate>Sat, 31 Dec 2022 00:00:00 +0000</pubDate><guid>https://lukaskubanek.com/blog/review-of-2022/</guid><description>&lt;p&gt;At the end of each year, I usually take some time to reflect on all that has happened. In the past, these thoughts were mainly focused on my work. I would write up a summary of the year’s events at &lt;a href="https://diagrams.app"&gt;Diagrams&lt;/a&gt;, post it to our internal Basecamp, and share it with the team on New Year’s Eve.&lt;/p&gt;&#10;&lt;p&gt;Starting with this year, I’m completely changing that format as I’m beginning to post my reflections publicly on my website and share it with a wider audience. Also, I’ll be mixing in some bits from my personal life. The inspiration for this move comes from &lt;a href="https://lukaspetr.com"&gt;Lukáš Petr&lt;/a&gt;’s blog, where he regularly publishes his yearly reviews. Props for sparking that idea!&lt;/p&gt;&#10;&lt;h2 id="business"&gt;Business&lt;/h2&gt;&#10;&lt;p&gt;People who follow me on the internet probably know me as the creator of Diagrams, a diagramming app for Mac. It’s a project I started during my studies and went all in on something like five years ago. And honestly, it’s been a hell of a ride, as I wrote about &lt;a href="https://lukaskubanek.com/blog/diagrams-story"&gt;in this post&lt;/a&gt;. The launch was pretty successful, and so were the months that followed. At some point, however, the indie struggles slowly started kicking in and sales started to decline. This led to a period of tough decision-making about where to take the company next. And gosh, 2022 was a major turning point in this regard!&lt;/p&gt;&#10;&lt;p&gt;Early this year, &lt;a href="https://alexkaessner.de"&gt;Alex&lt;/a&gt; decided to part ways with the company and pursue a new career. While it was a sad moment, which significantly shifted the dynamics of the company, I’m so grateful for the three years we collaborated on this project. Alex formed the foundation of Diagrams’ UI design and delivered a truly beautiful visual appearance that received high praise from our customers. Without his help, Diagrams wouldn’t be what it is today.&lt;/p&gt;&#10;&lt;p&gt;Another major change was the switch of Diagrams’ pricing model. We wanted to understand how the price tag in the Mac App Store affected sales and how it would change when people could try the app for free&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;. So, we decided to switch from upfront purchases to regular in-app purchases. Building the purchase flow, the underlying infrastructure that picks up previous purchases, as well as a time-limited trial within the constraints of the App Store was a significant undertaking. One doesn’t appreciate how technically easy paid upfront really is!&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://lukaskubanek.com/blog/review-of-2022/images/diagrams-iap.png" alt="Diagrams’ Purchase Screen"&gt;&lt;/p&gt;&#10;&lt;p&gt;In hindsight, I can tell that this effort wasn’t really worth it. After an expected drop in the initial phase, sales settled down at the exact same baseline as before the switch. But hey, at least we can make use of the infrastructure for a potential switch to subscriptions in the future. Usually, such a move helps reach sustainability, but we don’t think Diagrams is ready for it just yet. Not only would it be hard to justify, considering the current limitations of the app, but it would also be a massive commitment and a very risky investment. And so, for the first time, I admitted that I needed to start thinking beyond Diagrams and diversify my work.&lt;/p&gt;&#10;&lt;p&gt;I started exploring the idea of building a new app, experimenting with different UI concepts and creating technical prototypes. While I’d like to get this project off the ground at some point, I decided to better go with a safer bet and began freelancing as a macOS developer.&lt;/p&gt;&#10;&lt;p&gt;It’s been quite a new territory for me and, so far, an exciting experience, especially when it comes to the team and responsibilities. I have never had the opportunity to collaborate closely with other skilled developers before, so I’ve really been appreciating the chance to have technical discussions about solving concrete problems we work on. Moreover, it makes a huge difference when you’re only responsible for the development, and there is a team of individuals who take care of other disciplines like support, marketing, and business. This obviously hasn’t been the case with Diagrams, as I have to wear all of these hats myself, which can be quite challenging.&lt;/p&gt;&#10;&lt;p&gt;While I still see a lot of potential in Diagrams, and I want to keep expanding its feature set, I understand that it won’t be my main focus in 2023. Instead, I will continue freelancing and working on my new app. Of course, plans can always change, so we’ll see what the upcoming year has in store for the business.&lt;/p&gt;&#10;&lt;h2 id="nomad-trips"&gt;Nomad Trips&lt;/h2&gt;&#10;&lt;p&gt;Ever since I visited &lt;a href="https://adammarcan.cz"&gt;Adam Marčan&lt;/a&gt;’s &lt;a href="https://www.naucmese.cz/kurz/digitalni-nomadstvi"&gt;course on digital nomadism&lt;/a&gt;, I have been introducing workations&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; into my life. In the past, my partner Monika and I visited Las Palmas in the Canary Islands during the winter seasons for workations, but this year, we doubled down on it. We went to Las Palmas again this winter but combined it with some time on Lanzarote. We then took our longest nomad trip in late summer, spending two months in Bansko, Bulgaria, where we joined the community at &lt;a href="https://coworkingbansko.com/"&gt;Coworking Bansko&lt;/a&gt; and explored the beautiful nature of the Pirin Mountains. We concluded the trip by spending another month in Brno, Czech Republic, with brief stops in Bratislava, Vienna, Ostrava, and Pardubice.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://lukaskubanek.com/blog/review-of-2022/images/cowork.jpeg" alt="Cowoking in Impact Hub Brno"&gt;&lt;/p&gt;&#10;&lt;p&gt;We had a great time, and thanks to staying in one location for longer periods, we could fully immerse ourselves in the culture and get true and authentic experiences. I also greatly appreciate the freedom that comes with it, especially not having to follow any artificial schedules and being able to work and take time off as I feel it, based on my needs, current priorities, and surrounding factors.&lt;/p&gt;&#10;&lt;p&gt;This nomad lifestyle is becoming increasingly addictive, and we are already planning another trip that starts in just a few days. I can’t tell you how grateful I’m for the pandemic restrictions being lifted and for being able to travel again.&lt;/p&gt;&#10;&lt;h2 id="exercise-and-health"&gt;Exercise &amp;amp; Health&lt;/h2&gt;&#10;&lt;p&gt;I began prioritizing physical activity in the previous year and am happy to have continued the habit of exercising daily throughout the current year, such as doing push-ups and simple exercises with a stretching band or going out for a run or hike. I have also started playing badminton once a week, which I’ve really enjoyed getting back into.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://lukaskubanek.com/blog/review-of-2022/images/pirin.jpeg" alt="Hiking in the Pirin Mountains"&gt;&lt;/p&gt;&#10;&lt;p&gt;After hearing great things about the &lt;a href="https://ouraring.com"&gt;Oura&lt;/a&gt; ring, I decided to give it a try and incorporate it into my routine this year. It has proven to be a valuable tool in helping me to monitor and improve my daily practices. In particular, it’s been interesting to see how my sleep and activity are impacted by various factors like stress, exercise, and alcohol consumption. Having access to data recorded by the ring (and their trends) brought desired calmness to my life.&lt;/p&gt;&#10;&lt;p&gt;And as for alcohol, I drastically reduced its consumption and limited it to special social events. While I usually drank only beer or wine, I now calculate in that I won’t get enough rest and won’t be able to focus the day after. And that’s becoming an increasingly important factor for me.&lt;/p&gt;&#10;&lt;p&gt;I made another interesting discovery about my health this year. I used to frequently experience dizziness or unease in the evenings, and I couldn’t figure out what was causing it. I explored a few potential causes, such as a food allergy or gluten intolerance, but ultimately determined that my symptoms were likely related to my caffeine intake. I decided to cut back on my coffee and switch to decaf or low caf options, and since making these changes, I’ve noticed a significant improvement in my symptoms. It’s been a relief to finally identify the root cause of my discomfort and take steps to address it.&lt;/p&gt;&#10;&lt;h2 id="stoicism"&gt;Stoicism&lt;/h2&gt;&#10;&lt;p&gt;I coped with a personal problem that manifested in the following ways: I’ve always tried to stick to plans at all costs and got anxious when that wasn’t the case. Further, I attempted to change other people and got upset when that wasn’t going anywhere. In general, I got easily triggered and took certain things people said to me too personally. To realize that this wasn’t about them but more about me, I needed a lot of time.&lt;/p&gt;&#10;&lt;p&gt;Fortunately, thanks to a recommendation by &lt;a href="https://sive.rs"&gt;Derek Sivers&lt;/a&gt;, I stumbled upon &lt;a href="https://www.goodreads.com/book/show/5617966-a-guide-to-the-good-life"&gt;a book about Stoicism by William Irvine&lt;/a&gt;, which helped me to name and untangle my issue. The key idea to me was to divide things into those that are under my control and those that aren’t and to focus my energy on the former category.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://lukaskubanek.com/blog/review-of-2022/images/book-stoicism.jpeg" alt="Book “A Guide to the Good Life: The Ancient Art of Stoic Joy”"&gt;&lt;/p&gt;&#10;&lt;p&gt;As simple as it sounds, this mindset helped me get my priorities straight and correct my behavior when interacting with others. I now give my best to accept everyone as they are and rather focus on surrounding myself with people who I enjoy spending time with and who add value to my life. Moreover, I doubled down on putting creation over consumption by consuming less on Twitter and YouTube and completely stopping caring about news and politics. Further, this year I watched a total of three movies and no TV show&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;. All of this helped me regain so much valuable time and focus on what really matters most to me.&lt;/p&gt;&#10;&lt;p&gt;I’ve never been into spirituality, so I wasn’t quite sure if Stoicism (and the modern take on it) would resonate with me. But it did! It gives relevant advice about what to do in your life, right here and right now. The book offers many more interesting ideas and principles, like having a philosophy of life, enjoying the little things, living in a minimalistic way, not taking everything for granted, and being aware that nothing is eternal.&lt;/p&gt;&#10;&lt;h2 id="reading-and-journaling"&gt;Reading &amp;amp; Journaling&lt;/h2&gt;&#10;&lt;p&gt;At the beginning of the year, I read the book &lt;a href="https://jamesclear.com/atomic-habits"&gt;Atomic Habits by James Clear&lt;/a&gt; and picked up two new daily habits, journaling and reading. While this combo helped me get through the above-mentioned issue, I noticed that this doesn’t quite work for me long-term. I usually tend to work on a single larger task at a time. Especially when it comes to software development and other cognitively difficult tasks, it’s not efficient for me to switch back and forth on a daily basis, unlike with the habit of exercising.&lt;/p&gt;&#10;&lt;p&gt;I still managed to read a few books about personal development, Stoicism, investments, and freelancing. And I got a Kindle for this, as traveling with physical books was getting very impractical. For the next year, I have a few books about healthy nutrition and business on my list I’d like to get into.&lt;/p&gt;&#10;&lt;h2 id="dog-sitting"&gt;Dog Sitting&lt;/h2&gt;&#10;&lt;p&gt;This year, I had the opportunity to dog sit for the first time, and it was a very fun experience. Maki, the dog we cared for, quickly became a part of our daily routine, waking us up early in the morning and insisting on going for walks. It was great to have a furry coworker in the home office, as I enjoyed cuddling and playing with him so much. Though, the key was the temporary nature of it, as it allowed us to experience the joys of having a four-legged buddy without a long-term commitment.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://lukaskubanek.com/blog/review-of-2022/images/maki.jpeg" alt="Maki"&gt;&lt;/p&gt;&#10;&lt;p&gt;Overall, 2022 has been a year of change and growth for me, both personally and professionally. On the business level, I made the switch to in-app purchases and started exploring new ventures, including the development of a new app and freelancing. And on a personal level, I learned to better work with my emotions and reactions to external events and where to focus my energy. All in all, it’s been a wild ride, and I’m grateful for the experiences and lessons learned along the way. Thank you for following along and supporting me throughout the year. Here’s to a fantastic start to 2023!&lt;/p&gt;&#10;&lt;div class="footnotes" role="doc-endnotes"&gt;&#10;&lt;hr&gt;&#10;&lt;ol&gt;&#10;&lt;li id="fn:1"&gt;&#10;&lt;p&gt;We’ve always had a trial version of Diagrams available on our website, but it’s not always easy to find for users who stumble upon the app on the Mac App Store.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:2"&gt;&#10;&lt;p&gt;A workation is a vacation where you combine work and leisure by working remotely from a new location.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:3"&gt;&#10;&lt;p&gt;Since people tend to ask me about it, this year I watched &lt;a href="https://www.theminimalists.com/lessisnow/"&gt;The Minimalists: Less Is Now&lt;/a&gt;, &lt;a href="https://www.imdb.com/title/tt11286314/"&gt;Don’t Look Up&lt;/a&gt;, and &lt;a href="https://easterneuropeanmovies.com/comedy/cosy-dens"&gt;Pelíšky&lt;/a&gt;.&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/div&gt;&#10;</description></item><item><title>The Diagrams Story</title><link>https://lukaskubanek.com/blog/diagrams-story/</link><pubDate>Fri, 23 Sep 2022 00:00:00 +0000</pubDate><guid>https://lukaskubanek.com/blog/diagrams-story/</guid><description>&lt;p&gt;During my computer science studies, I switched from Windows to Mac and was amazed by all the high-quality native apps from independent developers. Their gorgeous designs and well-crafted user experiences attracted me to the point where I started thinking of building one myself. At that time, I lacked a proper tool for sketching software architecture diagrams. And so the idea for building a native diagram editor for the Mac was born.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://lukaskubanek.com/blog/diagrams-story/images/icon.jpg" alt="Diagrams’ App Icon"&gt;&lt;/p&gt;&#10;&lt;p&gt;Since then, I’ve been pouring all of my energy into what eventually became &lt;a href="https://diagrams.app"&gt;Diagrams&lt;/a&gt;. The app was successfully launched on the &lt;a href="https://apps.apple.com/app/id1276248849"&gt;Mac App Store&lt;/a&gt; and &lt;a href="https://go.setapp.com/stp292?refAppID=408"&gt;Setapp&lt;/a&gt; in early 2020. It’s been continuously receiving positive feedback from users, who appreciate its ease of use and visual appearance. I’m also proud of the fact that Apple featured Diagrams on the Mac App Store several times. Two and half years in, and a few updates later, the app is used by around 1,300 unique users every week.&lt;/p&gt;&#10;&lt;p&gt;Getting Diagrams off the ground was a challenging undertaking for a solo developer. When I got started, the macOS development landscape looked very different. Frameworks were harder to use, the tooling was far less capable, and Swift was still in its infancy. However, the greatest difficulty was posed by the implementation of the app’s central piece, the interactive canvas. Unfortunately, there wasn’t any first-party framework to build upon, so I set out to design and develop a custom one from scratch, and I called it CanvasKit. Inspired by the React and Redux frameworks from JavaScript land, I decided to make use of advanced concepts like declarative UI composition and unidirectional data flow. Nowadays, this is a widespread approach found even in Apple’s frameworks, but this wasn’t the case when I got started.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://lukaskubanek.com/blog/diagrams-story/images/xcode.png" alt="Diagrams’ Xcode Project"&gt;&lt;/p&gt;&#10;&lt;p&gt;In addition to designing the app’s concept and the technical work, I’ve taken on all the necessary roles of an early-stage entrepreneur. I’ve been involved in marketing, press, support, hiring, collaborating with freelancers, getting funding, and analyzing business indicators. My range of tasks has spanned from the day-to-day logistics of running a company to high-level strategic matters. And while, at the end of the day, I love programming the most, I truly enjoy the variety of tasks involved in running a business.&lt;/p&gt;&#10;&lt;p&gt;Diagrams remains the most important project in my portfolio that I’d like to keep improving. I also have a few ideas for new projects, which I’d like to pick up at some point. However, I’ve decided to venture into freelancing next. So, if you’re looking for a Swift developer to join your iOS or macOS projects, feel free to &lt;a class="mailto-link" href="mailto:lukas[dot]kubanek[at]me[dot]com" data-user="lukas.kubanek" data-domain="me.com"&gt;let me know&lt;/a&gt;.&lt;/p&gt;&#10;</description></item></channel></rss>