offset \ˈȯf-ˌset\ noun

a force or influence that makes an opposing force ineffective or less effective

We Don't Have a Rudder But We Have a Sail

There's still some momentum. In relation to the previous post, I'm continuing the foray into the apartment becoming a proper livable/workable place. I had fun again although we're still at the mercy of the great context we're in. That context has improved somewhat, though. Now the country allows us to move around it, but nothing's working and we still haven't gotten our jabs. Nevertheless, we're biding our time and doing things at home.

The curtain annoyed me for a time. It's a vertical blind that you have to pull two strings to get open. One is changing the angle of the vertical strips that make it up, the other is moving the strips to the side. I think it's a fairly standard one when it comes to vertical blinds. The blinds reach all the way to the floor.


I spent some time researching the options to make it automated so I didn't need to pull the strings. Unfortunately, there's no one device for automating it. The most frequent is Aqara curtain controller usually coming from Xiaomi, but that one doesn't fit my use-case. The only option I could find that would do it was two devices, one for each string, coming from Zemismart. I opted for only one at this time to see if it would work. It took some weeks to arrive.

The problem is that during some of the weekday mornings, the robotic vacuum goes around the apartment and it needs to have the space cleared so it can do its thing. We do a little dance. The apartment comes to life and while the vacuum is going around the rooms, we're opening the curtains and moving chairs around. I thought that it would be great if the curtain could unroll in the morning before the robotic vacuum started its routine. I cannot do anything about the chairs except leave them as they are, but at least some of the manual work would be eliminated.

So on to the Zemismart. Assembling it was not a pain, but setting it up to join the Zigbee mesh was. Especially since the instructions are weird. Fortunately, it can (and does) work with an unbeaded cord and is strong enough to pull the curtains we have. The only trick is the tension of the string so I played with it a bit to get it right. I used double sided tape to stick it to the window frame, but it kept falling off as the tension of the string needed to be adjusted. Nevertheless, it enabled me to figure out where I needed to screw in the device's plate to maintain the right tension. Picking the right cog, charging and installing it in place turned out to be the easy part.

Getting the motor to turn on, to have it spin in the right direction, to set the limits for where the start, middle and end are, as well as connect it to the Zigbee mesh can bring about some trouble. It took some research to figure out what each thing was supposed to do. Motor off and on is mostly for safety reasons. Direction is for which way you want the mechanism to spin and it should work at the default, but you can override it. Think what up and down buttons mean to set the direction right. Limits are self-explanatory, but they're both using the same button to set (except the middle). Having it in pair mode is not difficult to engage, but the software support is patchy at best.

I have a Conbee 2 gateway for Zigbee coming from Phoscon. It usually comes with the computer app, but the app couldn't find the motor. What furter complicates things, over there everything is treated like a light instead of a device. In the end I didn't need the app and decided to remove it. After all, Conbee 2 is a Zigbee radio and can work with any library that is willing to support it. This proved great because Home Assistant has an integration with the Conbee 2 stick via zigpy library which is more up to date than the official app. I needed to expose the device path on Linux to the Docker instance of the Home Assistant.

This enabled me to have the device join the mesh with the controls and all, but the way this thing was made, there are hacks set up in place just to make it work. Luckily, they're setting it up in the library so I will avail of the new functionality. For now I can say that the device is at least connected to the mesh and it can be triggered by remote controller buttons, but rudimentary controls from the Home Assistant also work, like calling the services directly instead of using the controls in the card and instead of "close" or "open", it goes to the next limit. That's why my automation is doing "set_cover_position" instead.

I am tempted to get another one to control the angles of the blinds. I know it will be a pain to control two motors to get the natural light, but it's better than running to the living room to open the curtains.

Now, if only I could figure out what to do with the one in the bedroom...

Idle Hands are the Devil's Workshop

It's already April, we're still at home and still not traveling so in the past few months we've been ordering stuff online to get the apartment fully equipped. We've been procrastinating with finalizing some things and we're still missing some functional items in the apartment before we start decorating, or at least put in some effort to amend the current naked-wall aesthetic. We deliberately went for a smaller loan, but that didn't leave us with a lot of spending money so we've been catching up. In our minds, every little bit matters.

By the end of April the restrictions did loosen up a bit so we managed to move around the city. The outskirts can be beautiful in the right places.


This month I was busy assembling flatpack furniture, screwing things in place, moving things and bringing everything together. Hopefully, in a few months' time, it will all be done. I keep saying that and we keep ordering new things, but progress can really be seen as the time passes. Our makeshift workroom (and the rest of the apartment) is starting to look like something.

This time we ordered some shelves and a motorized desk from Ikea (and it took them a month and a half to get the delivery ready because of the pandemic) and then some trinkets from various places online. We still had to do a quick run in the nearby hardware store to get whatever we missed.

We installed shelves in the storeroom and the workroom, which was long overdue. The new shelves let us use more vertical space to store the things that have just been lying about. We put several on top of our wall bed and it looks great. We're still missing some of the inserts for them, but they didn't have them available online so we'll have to wait again. One of them was also slightly bumped, but it's not noticeable. It's not really ideal when new purchases already have signs of wear and tear, but we really didn't want to go through the hassle of exchanging things.

Working from home is becoming a new normal and organizing the space can be challenging. We used the opportunity to move things about to economize the space, got a new extension cord and some fixings to deal with the cable chaos. My powered USB hub finally got a free dedicated outlet so I can use it for plugging in even more things.

The desk is from Ikea's Idåsen line, a motorized standing workdesk that is quite heavy as I soon found out. We managed to get it inside and assemble it and for three days everything hurt, but it was worth it. When it goes up, my posture changes so I can feel the effects almost immediately. My spine will reap the benefits and my future self will thank me later. The desk also has the bluetooth connection. I saw it the first time in one of Armin's tweets about automating his desk. I figured that it wouldn't hurt for me to automate it with the Home Assistant as well so I'm working on it. For now it only works while holding down the physical switch or the virtual one in the Android app.

The desk I had before was really a kids' desk and it would be an understatement to say that it wasn't really suitable for someone of my height. I had some 15 cm to move the mouse around and barely the space to place the keyboard. My desktop computer languished in this state for years. But now, with a bigger desk depth and no back on the desk it meant that I could install the monitor arm I had bought a year ago. This freed so much surface so I am looking forward into finally getting back to drawing again. My drawing equipment and the hardware now fits properly and the mouse sensitivity was adjusted accordingly.

Regarding the other trinkets that got delivered, one of them is a Broadlink RM4 pro S universal remote. It can replace all the remotes we have in the apartment so there's less space and batteries used. It also tracks temperature and humidity (although I don't need the temperature tracked because the thermostat takes care of that) and it can be connected to the local network. This means that I can also add it to the Home Assistant and write up some scripts to turn on multiple devices at the same time or automate the dehumidifier that we have in the apartment to turn on only when it needs to. It's useful because there are some devices that are not smart, but get smart when this is in play.

We also got some gardening equipment so I fully expect to write about it some time in the future when I get all the hardware assembled for it.

After well deserved rest and recovery, and getting into the daily routine with the new setup, I tackled the software side, which was easier, at least physically speaking, but there are still kinks to be ironed out.

I was playing a bit with Home Assistant, concretely the Spotify integration detailed in the previous post. I expanded that one with Spotify turning off after a few minutes just before the morning exercise. I've also supercharged the morning routine with four more things:

  1. a notification to do the exercise via Telegram, 15 minutes before
  2. sending Wake on LAN signal to the PC so I don't need to press the button in the morning
  3. a browser shortcut in the start-up folder to start the browser with the computer
  4. opening the tab in the browser with the YouTube video (with autoplay enabled for it) on doing the exercise

First two things are done with Home Assistant, the third is a straight-forward thing to do and the last one uses Push2Run which receives a command through Google Assistant routine functionality. It all works perfectly. If you want your Windows PC to do things on the Google Assistant voice command, I recommend that you explore Push2Run.

I also did the script in the Home Assistant for turning on all the hardware for when we want to watch our streaming services. For some reason, CEC is not working for me. I need to investigate it further. I had to go through Home Assistant for that because Broadlink cannot cover all of it. Namely, the gaming console had to be triggered separately with another service call where the console is set up as a media player device in the Home Assistant.

I mentioned the extension cord and the powered USB hub. This is connected to the brain of the whole thing, the Raspberry PI. I cannot thank my friend enough for giving it to me. It is an amazing moving in gift that I have so much fun with. There's Docker on it and I install services through it. Home Assistant is one of them. Others, well, for the next time.

Home Assistant Spotify Radio Alarm

I have a Home Assistant instance running in a Docker container on the Raspberry PI. The configuration is exposed on the Docker volume so I can access the file and change it. I followed the instructions to get the Spotify integration running in the Assistant and quickly turn this into an alarm radio.

Since I already own a Spotify account, it was not difficult to set this up:

  1. follow the links in the instructions and create an app on the developer side of Spotify
  2. edit the settings for the application and add a redirect URI and save
  3. copy the credentials for the configuration.yml of the Home Assistant
  4. edit the configuration.yml per the instructions and restart the Home Assistant server
  5. go to Home Assistant integrations section and add Spotify integration

Make a note of the integration name. You'll need it later. It's "Spotify MyUsername" on my end.

It pretty much gets added to the Home Assistant dashboard automatically. I went a step further and added an automation for this. My speaker system is connected to the Home Assistant from before so this turned out to be a perfect opportunity to go down this route. I wanted to have the "Liked Songs" as a playlist to run, but Spotify is not making it a playlist. Here's the entrance to the rabbit hole if you want to see how the "Liked Songs" was requested to be a playlist. For now, I opened it in a dedicated application on the computer, selected all songs with Ctrl+A and added them to a new custom playlist that I can work with.

In the automations section of the Home Assistant I did the following:

  1. added an automation and started with an empty automation
  2. added the name for the automation (I used "Spotify Alarm") and left the other options as they were
  3. for the trigger I used "Time" type and a fixed time, which can be whenever you want the automation to run (08:00 for example)
  4. conditions I didn't touch
  5. the next was the action subsection where I added several, starting with turning on the speakers, which means I set this action's type to "Call service", the service to "media_player.turn_on" and my speaker-set and the Spotify player as the targets
  6. there's an "add action" button bellow that lets you add more actions and my next one was "Delay" of 10 seconds as a quick and dirty way to give the speakers some time to turn on
  7. added new action: "Call service", "media_player.volume_set" as the service, with my speakers as the target and the volume percentage at 0.2 (this is 20% of the maximum volume of the speaker set)
  8. added new action: "Call service", "media_player.play_media" under service, but this time the target is the Spotify player, "Content type" is set to "playlist" and "Content ID" is the URL to the custom playlist
  9. added new action: "Call service", "media_player.shuffle_set" under service, the Spotify player as the target, and shuffling toggled
  10. added new action: "Call service", "media_player.media_next_track" under service, the Spotify player as the target
  11. added new action: "Call service", "media_player.select_source" under service, the speakers as the target and as the source I put the name of the device ("Spotify MyUsername")


Save and exit the automation. Run it to try if it works. There might be some tweaking involved from your end for the action "Delay" if it takes a long time to power on the system. I'm wondering if "Wait" would be appropriate. There's also a question of the Spotify integration with the speaker system. I didn't figure out where the source will end up, but I'm not complaining. It works.

I perceive home automation as a hobby at best. I'm still poking around that. The results of tinkering can be seen here. I'll probably need to publish the automation scripts in some public repo eventually.

Vaccine Hesitancy

To start off, I understand some communities have historically had bad experiences with being subject to institutionally approved medicine that proved harmful and that this can lead to skepticism that is justifiably hard to root out. However, I don't understand why people would doubt science, let alone vaccines, in societies where people have reliably been protected by vaccines for decades. Even more, when our elders can still remember the deaths that had occurred before those vaccines were widely available.

Sure, corruption is a widespread phenomenon, but there's still peer review and, among the huge number of people involved, the information can no longer remain hidden for a long time. It's very trendy to debate about COVID-19 vaccines at the moment, and I'll say a few about them as well. I've no qualms about getting the COVID-19 vaccine when it's available to my cohort, even though I had received a flu jab recently and it was not an ideal experience. The form asked to give my consensus to a general statement that I was not allergic to the vaccine's ingredients without disclosing those ingredients. And then it specifically asked: "Are you allergic to eggs?". The entire process lacked transparency and did not instill much confidence.

To make matters more complicated, there's a synthetic vs natural aspect to the debate in vaccine production. While I'd prefer a vegan friendly vaccine, it's on everybody to make a choice for themselves between the very limited options there are. I opt to protect lives and if that means getting vaccinated and improving the herd immunity, that's what I'm doing. After all, I'd still go for another one. Why? Because I trust the vaccination process and that the vaccine has been tested and allowed to be produced, no matter how clumsy the disclosure of information at the individual level can be. Being vegan is trying to do the least harm and it would be irresponsible of me to cause more damage in the long run.


Vaccines prevent serious disease consequences including premature death and they could save more lives if vaccination efforts had more penetration than they currently have. A vaccine tells the body how to fight a disease without the process of contracting and surviving it (or being inconvenienced by it). When enough individuals are immune to a disease, this triggers herd immunity, meaning that, if enough people among the population are immune, the risk of spreading the disease to other individuals (who cannot get the vaccine due to various reasons, e.g. allergies) becomes unlikely.

Historically, vaccines saved a lot of lives since their introduction. There's a nice infographic about how they helped in the US.

The perceived reasons why vaccines are unnecessary are various. From simple fear of needles to discounting the dangers of a disease or having safety concerns about the vaccine in question. It turns out vaccines remain pretty safe and efficient, and overall, most side-effects are due to the immune system being agitated into a response to become fight-ready against possible oncoming exposure.

The disruption of herd immunity usually stems from the sociological phenomenon called free-riding. People can benefit from overall herd immunity even though they're not vaccinated, which is built-in by design - to protect those who cannot take the vaccine. Some of those who are eligible, but refuse and still free-ride the herd immunity promote the idea that there is no need to take vaccines as nobody is getting ill in the first place. If such influence spreads in the community and people start refusing to vaccinate, herd immunity weakens, which may in turn lead to disease resurgence and stifle the ability of the community to keep healthy in total as more individuals take sick than before.

This is a very dangerous and anti-scientific behavior. A disease is usually not eradicated and its effects can still be observed in individuals who contract it. It is still among us, it's just that we have reduced its access to viable hosts.

We can see examples of free-riding everywhere around us in people who use the resources available to a community, but refuse to uphold them, and we are often much more sensitive and disapproving of those examples. For instance, people at work who cruise on other people's efforts, people not paying for public transport tickets, people who litter counting on it being cleaned up by somebody else. You'll definitely see tempers melt when the topic of social benefits comes up in the context of people receiving them while dodging legal employment and contributing to the same system that has come to their aid. My pet peeve are people who are disinclined to sacrifice anything to offset climate change, but will enjoy the benefits if the problem is solved by others. The examples are numerous.

This type of behavior can lead to serious consequences when it comes to opting out of vaccination. Disease recurrences have happened in recent years, for example, with measles just some years ago in Croatia and Ukraine and even here in Dublin, in 2000. People need to learn from history. Not ignore it. People need to learn in general.

The lack of personal experience makes people insensitive. Out of sight, out of mind. It also brings about other conspiratorial ideas because of the trap of solipsism. The scientific method counters this with peer review. Of course, the experiment can be replicated. Very often people are not equipped to replicate it or can't be bothered to do it and see for themselves so instead of trusting the method, sometimes they opt to spread false (and debunked) claims. It's easier.

I want to point out that the vaccines are held to a higher degree of safety, especially COVID-19 because they are primarily to be applied to healthy individuals and the imperative goal is to keep them out of the health system and avoid stressing it further. True, side-effects are possible, but very rare and the consequences of the disease that the vaccination is against are much more severe and frequent, and might overwhelm the heath system altogether.

Growing up as a kid, there was mandatory vaccination that was usually done in schools. Aside from a few tears and fear of the needle, nobody I know had a related issue later in life, and it was commonly understood that it was for our benefit. Vesna, however, remembers having a nasty case of chickenpox for which we weren't vaccinated. This vaccine is today available and it would've spared her some misery at the time. Vaccination runs were a regular occurrence. It's how it was for the whole country and it was considered perfectly normal. No outbreaks of diseases and everyone healthy and alive. I believe they still are regular, but I notice the push-back in the general public has become more vocal.

So back to COVID-19 vaccines, which are mostly focused on dealing with the Sars-CoV-2 spike protein. There is a hesitancy stemming from the safety issues. No longitudinal study has been done and it couldn't have been. The disease is about a year old, it has turned the society upside-down and its dangers are not abating. The solutions were bound to be on the radical side.

There are several approaches to the vaccine and a lot of them are authorized and proven to be very effective. One of the approaches to the COVID-19 vaccine is the mRNA technology. Even though it was not licensed for use in humans until now, the research on it is nearly 30 years old.

There are some hurdles with mRNA vaccines, though. The delivery mechanism is coating it in lipid particles because it's very unstable and has to be kept very, very cold making it difficult for logistics of the vaccination programs. However, quick adaption of the vaccine for the variants makes this a technology that we'll rely on in the long run. Not just for the present pandemic.

For the explanation on how the mRNA vaccines work, a good one was done by Bert Hubert on a BioNTech/Pfizer example of the vaccine mechanism.

It's time for the civilization to step up. A truckload of money has been thrown at the issue greatly accelerating the results, and the mRNA vaccines have became a second coming in the fight against the disease. While the process was expedited, no corners were cut. They must not be, otherwise we face more problems than we currently have. We're in the pandemic together and in the unexplored waters. Humanity has never faced a challenge like this before and vaccine research is doing the best it can with the amount of time at disposal.

2020 Recap

Last post was a bit depressing because I detailed some of the bad things that happened in the last year. This one is focusing on good things. Don't get me wrong, 2020 was horrible, both personally and overall with the events in the world, but there were some good things.

Like always, we had ambitions to travel last year, but we did not realize those plans, considering. The year did include some foreign travel, though:

  • Croatia, customary beginning of the year that we took to see families
  • Morocco, Fes, Rabat and Marrakesh, where we went in March, but the trip was abruptly interrupted due to the COVID-19 pandemic. We ended up on a grand adventure to return from Africa to Europe because Morocco closed the borders so we had to be repatriated to
  • Austria, Vienna, that we didn't see at all since we slept in an airport hotel to wait for the Dublin flight

Back home, the first in the series of lock-downs went in effect so we didn't really have much freedom to travel, but we did meet with friends, another couple, for outside hangouts. When restrictions were lifted we used the break to escape the city with them on a few occasions. In that time we saw:

  • Kildare (St. Brigid's well, National Stud and Japanese Gardens), Monasterevin, Emo Court House, Athy, Kilmacurragh Botanic Gardens, Wicklow Lighthouse, Rock of Dunamase
  • Ticknock forest and Fairy castle nearby


The rest of the time we explored the parks around our place. At their most strict, the restrictions prohibited travel beyond 2 km from people's homes so we didn't have much choice, however the weather had served us well and there were a lot of interesting nooks and crannies we got to see. I don't regret it one bit.

Regarding entertainment events, we didn't attend any in 2020. Early before the pandemic we booked a stand-up comedy show that was promptly canceled and is now waiting to be rescheduled. If it does, I'll mention it.

We shifted most of our shopping online (hello, craft beer). This saved us valuable time. One side effect of restrictions is saving money instead of burning through it (while traveling). Coupled with a better paying job our loan repayment has accelerated a bit, but it's still a long way to go. The other side effect is spending that extra cash on buying things we wouldn't have afforded ourselves otherwise (because we spent it on traveling). We got a really good blender that allowed us to make things like fake cheese and homemade nut butters. Cocktails, too. Like a lot of people stuck at home these days, I tried my hand at jam making and the carrot one I made turned out great. During summer I also resumed making cold brew and recently I've really gotten into Japanese cuisine.

In the department of apartment automation, we also bought a robotic vacuum and programmed it to do its job a few times a week. We just need to make sure the path is clear for it the evening before. Since we're both long haired, it really helps keep the place in order. Room corners are the difficult bits, but they can be handled separately with a normal vacuum. Every now or then we still need to use a normal one to get underneath some of the places our new pet cannot reach.

Regarding software projects, the only thing I did this time was upgrade Shamrock to a new version so it can pick up the new API set by Trefle.

Drawing efforts were low-key. Vesna got me one of those gloves not to sweat on the graphics tablet and I was drawing digitally just to get a hang of it. Nothing to show yet. It was a learning experience so I would stay in shape.

As for the courses and personal development, Vesna used this time to finish one about the front-end and I watched some videos on DevOps before my new job started. We're in the loop still. No conferences happened even though EuroPython was supposed to be during the summer in Dublin. COVID-19 threw a wrench in the cogs, but they held it online.

We didn't manage to fix up everything we wanted in the apartment, like getting proper desks. IKEA is not receiving its shipment of desks so we are not able to order. Some of the shelving we're planning will require more than just simple assembly, so I'll get my hands dirty this year, rather than 2020. This will most likely include the balcony vertical garden. It was put on hold since I was missing some components and it was too late to start planting things last year. I'll sort it out this year.

We bought some other stuff as well, some more useful than others, we got a trampoline so we can jump up and down indoors. I got a Fairphone 3 and a new GoPro so I can geotag the photos automatically now and take 360 photos. We're still waiting for the place to be complete before I make a 360 tour for the parents. We were considering investing more in the photo equipment, but it didn't happen since all the trips were off.

The citizenship application also got sidelined because of the pandemic. It's much harder to gather all the paperwork and witnesses, and they require submission of original travel documents, which could leave me stranded. In addition, the processing of applications has ground to a halt.

Fingers crossed that this year won't be as bad as the last one so we can all resume our lives and figure out what to do next.