Microblog

I've been quiet lately as I am now at the end of my (well... very first... yeah, I know ) Asia trip. As this trip has covered the week of Easter and I've been postponing taking some longer time off from work I was able to do some sightseeing in Singapore, and other SEA countries. During other weeks I managed to work remotely for my clients back in Europe. I am happy that my work allows me to travel with my better half, and provide services to my clients even from another continent. That level of freedom (quite literally) means the world to me.

While in Singapore I participated in my first ever Drupal event in Asia - Drupal Singapore Meetup. I met a great bunch of Drupal enthusiasts with different backgrounds - from developers to managers - and I felt welcome from the moment I arrived at the venue. I was amazed by the organizational efforts put into organizing this event, especially by Solihin Jinata (SJ) and Joseph Chin from the local community. The meetup was organized in the lean coffee format so that everyone could add some subjects to the agenda and participate in the discussion later. We had a bunch of topics ranging from headless frameworks, through AI, caching strategies, and penetration testing, to Gander, the automated performance testing framework (brought to you by Tag1 Consulting, Inc.). The discussion was lively with all the participants sharing their thoughts on all the subjects we covered. Unfortunately, due to time constraints, we didn't cover all of them this time but this local group meets every month, and next month's meeting was already announced. Sadly my time here in Singapore is ending very soon, and I won't be able to participate in next month's meeting. But if you are in Singapore, please follow their Facebook Group page (https://lnkd.in/dvBjn5Cs) and Meetup group (https://lnkd.in/dx-MTJMs), and join their next events. I will keep monitoring Drupal events happening in Singapore, and I'll join again whenever I can, hopefully very soon.

Thank you, Drupal Singapore, for the warm welcome, and until next time!"

Pączki

Yesterday was the first day of a Great Lent. In Polish culture, this means that we traditionally start fasting until Easter. Times change and not everyone follows that tradition anymore (I am also guilty of that) but, for some reason, there are parts of the end of Carnival season and the beginning of Great Lent that survived until now. One of the major events in Poland is Fat Thursday (this year it happened a week ago) when everyone is eating an enormous amount of the nation's beloved Pączki (aka Donuts).

What makes Polish Pączki special? First and foremost they are fresh. And I mean fresh - still warm from the oil bath. Then they are stuffed, traditionally with a Rose Petal Jam—so no hole in the middle but a sugary substance for added sweetness. Finally Pączek is topped with icing sugar or royal icing. Which means sugar, inside of sugar, covered with sugar. This is the day when people eat as many of them as they can, in the ultimate-cheat-day style.

Pączki are made out of yeasty dough but, if you know me a little you know I could not resist substituting baker yeast with sourdough (wild yeast) which is what I've been doing for several years now. Here is my recipe for Pączki (12 pieces) which I adapted from Maks @ https://upieczsobiechleb.pl/paczki-na-zakwasie/ These are the best Pączki I ever had.

Ingredients:

  • Bread flour 330g (in my case Caputo Manitoba)
  • Oat Milk 150g
  • Yolks 85g (between 4-6 depending on the size)
  • Butter 85g
  • Sugar 85g
  • Levain 130g (I used my freshly fed and size-doubled wheat stiff starter)
  • Salt 7g
  • Rum 10g (this year I substituted it with Maple Whiskey with great result)

I mixed everything (except Salt and Rum) with a stand mixer until smooth, well-developed dough, rested for 15 minutes, and added salt and alcohol for another 4-5 minutes to mix until well incorporated and the dough had a silky-smooth texture.

Then coil-folded 4 times, 45 minutes apart, and finally, after a few hours of fermentation, shaped into 70-75g balls (12 balls). The entire procedure, including feeding the starter, took the entire day - first thing in the morning - feeding the starter, in the afternoon (around 3 pm) - mixing the dough, in the late evening (probably around 10 pm) - shaping it into balls and let it rise covered with plastic film so it won't dry,

Next day in the morning fry on a deep oil (I used sunflower oil) heated to 170C - 3-4 minutes on each side. Let it rest on a kitchen towel for a few minutes and add a feeling to your tasting. For me, it was rose petal jam or pistachio cream.

I hope you'll give it a try if you're a keen sourdough care-taker like myself 😉

Image
Pączki are resting on the rice flower-covered baking sheet, waiting to be fried next day in the morning.

I have been working in the software industry for almost two decades. Software products are never perfect - some mistakes, or maybe just minor annoyances, are and always will be part of software products. Nothing will change that, not even AI. 😉

It doesn't mean we, the people responsible for software products, do nothing to prevent issues from happening. Certain development processes, such as Test Driven Development, can limit the number of bugs in the software by adding test coverage or establishing common criteria for how the software must behave, like in Behavior Driven Development. However, none of these methods are perfect to the point where problems cannot be detected or reported.

There are three main personas when it comes to issue reporting:

  1. Those who accept things the way they are.
    You can meet them everywhere - maybe they are part of the product team, maybe they are potential clients evaluating your software product, or maybe they are already your clients - either voluntarily or involuntarily (e.g., through their affiliation with a certain company that uses your product). Often, these people suffer in silence and just accept things the way they are ("Well, it is what it is", "Could be worse", "Oh... it never worked. I just do this and that", "Let's take a coffee break and wait until it works again").

  2. Those who report their frustration.
    The second group of people are those who give feedback not on the product itself but on what it makes them feel. This group focuses on their experience with using the software product and compares it with their (often undisclosed) expectations. With these reporters, you will hear phrases like "Your product is a piece of garbage", "Nothing works", "Everything is broken", "I can't do anything", "It drives me nuts", etc. This group will usually be very vocal, but the information they provide doesn't help much in making the product better. This attitude is often boosted by the fact that no product on the market is unique; i.e., each product has a multitude of competitors, and it's often easier to replace the vendor than to help the current vendor fix known issues. Often, they can't verbalize what it is that annoys them.

  3. Those who report their issues.
    The final group consists of those who report specific issues they encounter with their software product, adhering to your reporting guidelines and providing necessary debug information. They may be frustrated and occasionally express frustration, but they focus on the particular problem and often provide the necessary debug info.

Let's now think about the interaction between your product team and each user group. With the first group, there is none - as simple as that. That makes it potentially the worst group of users as, while they don't complain, they also don't push you to make your product any better. The second group, the complainers, pose a nightmare for support teams. They can break team spirit and increase team turnover. However, they leave a footprint of their time with the product, and, with some curiosity and the right attitude, one can often pull some more information from them, which, in my humble opinion, makes them better for the product than the first group. The third group is your external QA team - they leave you all the information needed so you can make informed improvements to your software product. Be kind to them and reward them. You probably want to keep these users with you as long as possible, or at least I know I do.

As a product company, which group would you prefer as your user base?
As a software user, which group do you identify with?

Right to repair.

A little bit over a year ago I had an issue with electrical wiring in our place which almost led to a major incident. Thankfully a technician responsible for maintaining the grid network caught it in time and, with the help of my friend, he made a fix while I was away (I am blessed to be living in a place where I have friends and can occasionally trust strangers). During the repair, one of the picture frames we had on the wall fell and broke. Nothing big, just a simple frame from Ikea that costs less than 7 EUR. I took all of it apart and kept stored safe for the undefined future.

The future came yesterday as my wife and I purchased a poster from an exhibition we attended last weekend. I felt a rush to hang it on a wall and the only frame I had was the one I mentioned earlier. Thankfully we are both good with our hands so when the time finally came I used some wood glue, tape, and a hammer and with the help of my wife, we put it back to its original shape. I had plenty of occasions to replace the broken frame with a new one as neither the cost nor the availability was an issue, yet I decided to keep the 7 EUR frame in parts for over a year. Why?

The most obvious reason is - I was taught to do so. The older generation of Poles, people directly responsible for my education like my parents or teachers, had severe issues in getting what they wanted back in the 70s and 80s. That's due to a shortage of food and goods related to the economic crisis and increasing foreign debt of the People's Republic of Poland (RIP). Since they couldn't simply buy things they had to be creative and resourceful. So instead of replacing broken items, they would fix them. As a person born in the 80s, I did experience some of it on my skin, however, that's nothing compared to what the older generation has experienced and developed into a skill. And, either consciously or not, passed over to the next generation.

Now, two generations later, this mindset faded away. I am glad for the reasons why it did as we're blessed to live in prosperity with lots of goods and services available at our fingertips. On the other hand, we are living unsustainable lives, generating tons of waste, polluting the world around us, and jumping head-first into the climate crisis.

Fixing a 7 EUR frame rather than replacing it with a new one is just one small step. The frame is just 4 pieces of wood. But the same should be possible with more complex items we own. iFixit is a company that monitors the consumer electronics market and provides spare parts kits together with instructions on how to perform required maintenance on the items we own. They also rate devices such as laptops and phones, to indicate how fixable and upgradeable they are. Read more about the company's mission in its Right-to-repair manifesto https://www.ifixit.com/Manifesto

Of course, not everyone is manually capable of fixing everything. Just last week I felt too intimidated to replace a battery in my phone on my own so I delegated this task to someone much better at doing so. I wish I could do it myself but most of the manufacturers make it very hard. Suddenly you need specialty tools and parts you'll use only once if you do it by yourself. This is why companies such as iFixit are needed to open our eyes to the problems we are (potentially) facing and influence the change among manufacturers. Luckily we have now more options than ever to buy more sustainable phones (Fairphone - https://fairphone.com) or laptops (Framework - https://frame.work) that will last 2 or 3 times as long as the devices we currently own.

This is just the tip of the iceberg - we still have TVs, washing machines, cars, etc. As long as we want to buy new rather than fix what we already own, we are maintaining the status quo. Let's join those who speak loudly about this problem, companies like iFixit, and start fixing rather than replacing. If I can do it, most of you can as well.

Image
The once-broken frame with a poster from Abakanowicz exhibition

Recently I upgraded this website to Drupal 10.2. This couldn't be easier with a Composer and I am grateful for all the hard work that went into this dependency manager.

While Composer allows for more granular updates, I often prefer doing composer update which updates all dependencies at once. This is a good strategy especially when working on a smaller project (like this one) AND doing updates regularly.

On some occasions, you may find out that a particular dependency, be a Drupal Core (drupal/core-recommended), is not upgraded to its most recent MINOR version, despite the version constraint allowing for such an update. In such case, I use one of two options:

  1. composer why-not drupal/core-recommended 10.2.2 - use the following to learn why the expected version can't be installed. Then resolve all issues one by one as suggested by the output.

  2. Manually bump version constraint in composer.json file, ie. "drupal/core-recommended": "^10.2.2" and run composer update again. If Composer detects conflicts it will tell you about it.

Hint: If you only want to upgrade the specific dependency with the method 2 try adding the dependency name into the command, ie. composer update drupal/core-recommended

Amidst ups and downs, one thing that never fails to bring me joy is bread. Whether I'm crafting it, savoring its taste, or simply admiring its artistry, bread holds a special place in my heart. Like many, the sourdough became a part of my life during the COVID times. I cherish every loaf, every experiment with the recipe, every bread-making book I've delved into, and the warm feedback from those who've shared my bread.

Bread truly brings me happiness.

Image
Artisan loaf of bread hold in a hand

As we step into the new year, I want to wish you all a Happy New Year.

I'm delighted to have made progress on this website throughout 2023. While balancing work and family remains a priority, I'm grateful for the opportunity to occasionally share my thoughts. In 2024, I aspire to establish a regular habit of dedicating an hour every Sunday to express my discoveries and thoughts on matters dear to me.

Here's to a year filled with meaningful sharing and growth.

If you occasionally read my blog, you know I'm a ProtonMail user. While that's true, and I use ProtonMail services daily, I also research alternatives to see if the grass is greener elsewhere or to recommend something to clients (or family 😉) when they ask for a mail service I could recommend.

That's how I came across Migadu (https://migadu.com/), a Swiss-based email hosting provider. Unlike many other providers that limit the number of accounts, domains, and aliases per tier, Migadu approaches billing (and limits) slightly differently. Even with the lowest tier, you can add as many accounts/domains/aliases as you want, and what you pay for is the number of incoming and outgoing emails per day. In my current tier, I can receive 1000 emails and send 100 emails (more details here: https://migadu.com/pricing/).

It's important to mention that while the limit is already quite low, it is shared across all accounts within your subscription. So if you have 2 users as a company, their accumulated usage is counted against the limit. There are no unlimited options, so be aware of this limit and consider choosing a tier with some room to spare.

This Christmas, I encountered an issue with one of the new accounts I had created - emails were ending up in SPAM despite having DKIM and other DNS records correctly configured. I submitted a support request on Boxing Day, and the issue was resolved within an hour, which is quite impressive. The support agent was very transparent and admitted that the issue was related to the sending domain configuration on their end, as the sending domain was carrying outdated information about registered DNS records, particularly DKIM. The issue was fixed manually, and an internal ticket was created to prevent similar issues in the future. I was very pleased with the resolution of this issue and the experience I had with their support, even though it was my first (and only) time using it.

In summary, I believe Migadu is an intriguing email hosting provider for those who want to use their domain for sending and receiving emails. One should be aware of the limitations the service imposes, but Migadu does a great and honest job of explaining all these limitations in plain text on their pricing page: https://migadu.com/pricing/#are-the-prices-and-limits-per-mailbox-or-ac….

This year has brought numerous changes into my life, some filled with joy, others marked by challenges, yet all were necessary. I want to express my gratitude to everyone I had the privilege of collaborating with during this year. I look forward to the possibility of our paths crossing again, whether on a Drupal project or another exciting web venture. In the meantime, I wish you all the best for this Holiday season.

Image
Company logo dressed as a christmas gift.

Earlier this month, I renewed my Proton (https://proton.me) account for another 2 years. It's the largest invoice I've paid this year for something I used to get "for free." However, here's why I still feel good about it.

About 4 years ago, I made the switch from Gmail to ProtonMail as my primary email inbox. Admittedly, it took a bit of time to adapt to a new email address, apps, and interface. ProtonMail isn't, and probably never will be, a direct replacement for Gmail. So, I had to adjust to a different way of working and accept the absence of some features and services.

Why did I switch? Well, for several reasons. Firstly, I no longer wanted an email address with a *@gmail.com domain. Secondly, I had concerns about depending on a single company for services, especially given the history of companies discontinuing their services (see https://killedbygoogle.com/). Lastly, privacy was a significant concern.

Sure, I could have signed up for the G Suite to have a custom domain, but that would have addressed just one of my concerns. I was aware that Proton didn't offer everything I needed at the time. The Calendar was in its Alpha stage, and there was no cloud storage product. Nevertheless, I signed up and went all in because I believed in their mission of providing "privacy and freedom first" services.

Going all-in meant subscribing to their (no longer available) Visionary plan, which covers 6 accounts in total. I only use 3 of those accounts, leaving me with 3 spare ones I pay for.

Considering everything I've mentioned so far, why am I still happy about it?

First and foremost, I believe Proton still upholds its mission. They could have taken shortcuts, compromised on security, and expanded rapidly to make more money. Instead, they are ready to defend their customers' privacy in court if needed (ref. https://www.theguardian.com/australia-news/2023/dec/15/proton-mail-foun…).

Additionally, Proton keeps expanding its service portfolio and provides me with (early) access to all these services as part of the Suite, without additional charges. So, even though I pay substantial invoices every 2 years, I see the value of the service increasing every month. Don't get me wrong – it's still a significant amount, and I may not use all the services, but (a) the price hasn't gone up in 6 years, and (b) the value has more than doubled since I first signed up. The recent launch of their Password Manager ProtonPass was a fantastic addition to the suite, and now I can't imagine living without it.

Every service is also improving at a faster pace than ever. Lately, it feels like so much is happening that I can't keep up with all the progress the team is making. They are also communicating these improvements better to a broader audience. As of now, I don't feel that the overall product quality is compromised for the sake of enhancements, and I hope it stays that way.

At the same time, I feel confident that I can switch vendors if the need ever arises. Maybe Proton doesn't live up to its promises, or I can't afford it anymore, or a better tool emerges on the market. Ironically, the ability to switch vendors and take my data with me is one of the primary reasons I plan to stick with them in the foreseeable future.

With the holiday season here, if I were to make a wish to Proton Santa, here's the list of features I'd love to see implemented next:

In conclusion, renewing my Proton subscription for another two years was an easy decision for me. Not only does ProtonMail align with my privacy and freedom values, but the company continues to deliver on its mission. With a growing portfolio of services, frequent improvements, and a commitment to user privacy, Proton has proven to be a reliable and forward-thinking choice. As I eagerly anticipate the features on my Proton Santa wishlist, I'm confident that Proton will continue to exceed my expectations in the years to come.

If you're considering giving Proton a try, you can use this referral link https://pr.tn/ref/TWAD0XXF7DM0 to get started.

Image
Man sitting in a chair and looking on screens full of shields and padlocks - symbols of security and privacy