offset \ˈȯf-ˌset\ noun

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

Genealogy and DNA Analysis

In short, genealogy is the study of family history. Aside from studying birth records, historical lists and articles and other available sources, relatively recently popular method of studying family history is DNA analysis, to see how related people within a DNA database are. There are two biggest consumer focused companies out there for humans: Ancestry, which is mostly focused on North America and MyHeritage, which is mostly focused on Europe.


My uncle started doing genealogy on MyHeritage and I was kinda fed up myself with not knowing all the cousins, their spouses, children. I also wanted to have my DNA sequenced. After all, I used to work in such a company, but eventually I opted to first enter the data in Ancestry because their DNA database of humans is the biggest there is at the moment, they offer traits display, as well as ancestry, and there's an option to export the data from them and import it into MyHeritage. It took some manual work to export the data from Ancestry, with usual disclaimers, of course, then import it to MyHeritage and wait for them to analyze it.

DNA is assembled by combining some parts in the DNA strain of the individual with the reference genome. Humans are mostly the same so there are no big differences between us regarding genetics.

All of the calculations are done by finding similarities of the submitted DNA with the rest of the DNA samples in the database.

The ancestry analysis is done by comparing the number of DNA subsequences of the individual with the sampled population grouped by their place of living. It is a static picture of things. People migrated and there's considerable room for getting it wrong, but there is truth to it, especially because ancestry can be distinguished way back throughout generations.

The traits display is there to see things like free vs attached earlobes, alcohol flush, sprinter gene and so on. Ancestry got almost all of my traits correct. Traits are usually determined by finding genetic similarities of a user within the DNA database that is marked up by user submitted answers.

More interesting is the PRS (Polygenic Risk Score) that can determine predisposition to various traits. Diseases being a very interesting part of it. Cancers and such. Of course, we're talking about statistical probability, which is definitely not the singular cause, but a possible contributing factor. For instance, just because one might be an alcoholic, genetically speaking, if they're not drinking, it can hardly be the case. PRS are also most viable in the populations with European ancestry, since they're the most researched group, but can fail in other groups. Take it with a grain of salt if you're checking things out for health. Ancestry does not give out PRS related to health. If one wants that, they should sequence their genome with 23andMe instead.

DNA analysis, as expected, depends largely on the sample size, as well as other factors, like epigenetics, additive genetic effects, etc. It is an interesting area of study.

It took about a month to get the results. The kit gets ordered, sent, then it's activated, sample is collected via saliva, stabilizing fluid is added to it and it's mailed back. It's a long wait then. They need to receive the sample, extract the DNA and run analysis on it. It depends on the lab and the amount of work they have. Import/export to another service (from Ancestry to MyHeritage in our case) was a matter of days and a bit of manual work.

As for my ancestry, I didn't get swapped at birth. The DNA matches it produced are correct, from both sides of the family (calculated by chromosomes because this is how inheritance works), but the ancestry is different from what I was expecting. My family is Slavic, to be precise: West and South Slavs. In instead of Czechia, it got a lot of Southern Poland. It also threw out some similarities in their model with Germanic Europe, Baltic, Sweden and Denmark, then a bit of Norway. MyHeritage used a different model because it has different groups and has different samples. They placed my ancestry correctly in Czechia, but also found some similarities with Greek and Italian groups, Scandinavian, Iberian and Finnish. Apparently the families migrated from the north towards the south of Europe. Can't really blame them. My path was going back and a bit west. I'm in Ireland now and I love the climate here. I even got the citizenship just a few days ago ☘ Something to mess up the static image of ancestry once again :)

Way Away

We picked up wanderlust some six years ago when we were traveling to Australia. There's no way we'll see all the countries in the world during our lifetime, but there's a strong chance we'll succeed in seeing all of Europe's. Humans often focus on wrong things. Our apartment could burn down, but we would move on. Material things are not that important. It's important that we have each other. But we are lucky enough that our fundamental needs have been met at this point in time so we have some space to pursue our desires.

I wasn't writing for a while since we were away from home for a month and a half. I was called to an off-site in Panama and an on-site in New York was planned to be soon after. We chose to take our holidays in between so we didn't have to do two transatlantic flights. Planes are leaving a substantial carbon footprint as is. We saw a fair chunk of Mexico and Caribbean as well. The trip was long and enjoyable, but I can say Aegean islands do beat the Caribbean in terms of what you can see. It's hard to pack a lot in limited time, and the cultural sites, which we prefer to visit, are more tightly packed in the former.

As for the nature, Yucatan peninsula is full of cenotes that are a sight to be seen. The time we spent in Mexico was the top experience of our journey. It had some nice natural and historical sites. From ancient Mayan ruins, to reefs and groundwater pools.

Our first flight was from Dublin to Madrid, for a long layover towards Panama City. We saw the Panama canal and the city itself. The work was exhausting, trying to get a new feature off the ground within a very tight deadline is always hard, but I got to see people I hadn't seen in a while. For Panama we also opted to get vaccinated. Our bodies are not really used to the conditions there. The vaccination went well and some protections we took (DTP, Hep A and Typhoid) will last a long time. This will be useful for us in the future.

After Panama, we went to Cancún. It was a mixture of nature and history. We saw the city itself because we had accommodation near the center. It's not a very walkable city, and we're not car people, but it does have good public transport. We jumped off to some guided tours towards Chichén Itzá and Tulum. We admired the Mayan architecture and took a dip in the sea and some sinkholes, which made me want to start a scuba course one day.


After Cancún, we went to Orlando as our jumping off point to the islands. We had some mean tostadas over there that we immediately tried to replicate back home. Those tostadas and the Colombian empanadas we had in Panama were two food items that we enjoyed the most. The rest of our culinary experience ranged from average to sadly subpar, and left us with the impression that vegan scene in North America is just not that developed yet. The highlight in Orlando was the Universal Studios amusement park. We managed to go to all the adrenaline rides that we wanted.

The Caribbean islands/territories/countries we visited from Orlando were the US Virgin Islands, Saint Martin (both French and Dutch parts), Antigua and Barbuda, Dominican Republic and Puerto Rico. The culture over there is diverse and influenced by the previous colonialism era and dramatic historical overturns. We enjoyed some historical sites and the cities themselves. It was a long round trip that took us back to Orlando again.

Back in Orlando, we decided to stay for a few days before traveling for the New York on-site. The US is still expensive as is, but Orlando is cheaper than New York. We went to see the Kennedy Space Center and all the US space program exhibitions. We got to fondle a moon rock sample. We did miss an actual rocket launch, because it got postponed so many times. Eventually we packed our bags (that were not many because we always travel light) and flew to New York.

In New York it was the usual on-site work, the combination of rooftop bars that the company usually goes for and an evening of personal time that we used to see the Edge skydeck and Manhattan from a higher vantage point. By then we were getting homesick and were looking forward to going back to Dublin.

Those first days at home were us just trying to catch up, wash all our clothes, get things in order. I had my hair cut a bit, installed a bug net on the balcony. We were getting ready to spend a summer at home. As luck would have it, less than two weeks after we came back, I got laid off together with around a third of the company. I really strive not to obsess over things I can't control. After all, the job market situation is very bad recently, especially in IT. Layoffs are happening all over the world.

Right now I'm out there on the job market, as well as doing some personal stuff. Losing a job really messes with one's head. Looking for a job is not helping it. Constant impostor syndrome, questioning self-worth, being worried all the time. I feel like this is not talked about enough. Life goes on, really. Time stops for nobody.

P.S. While I was writing this, my citizenship application got approved so I guess there's some more bureaucracy in that department. Time indeed does not stop for anybody and tends to be very turbulent. :)

Convert KML Placemarks to Zones for Home Assistant with Python

I have a habit of tracking the places we've been to in Google Earth Pro. I have a list of folders that are named after countries and, inside them, a list of places that we've been to. Sure, I can export to a KML/KMZ format but Google Maps refuses to load the file because of the size. I would also like to display the places in the Home Assistant, but there's no easy way and I really don't want to over-engineer this.

Home Assistant is self-hosted and I can control it, so I decided to whip up a quick script in Python to help me accomplish seeing the places in Home Assistant.

  1. I opened Google Earth and selected all the places, then exported them to a KML file that I called places.kml. I saved it to a location where I put the Python script.

  1. The script is in a file called and safely nested in a virtual environment on Python 3.10.x. I installed the requirements with pip (pykml and PyYAML) and ran the script python which in turn output the zones.yaml file in the same folder. Here are the contents:
from pykml import parser
from yaml import dump

# load kml into object
with open("places.kml") as f:
    root = parser.parse(f).getroot()

# iterate through the kml,
# extract what is needed in to a dict,
# then append that dict to to the list
data = []
for country in root.Folder.Folder:
    for placemark in getattr(country, "Placemark", []):
            coordinates = str(placemark.Point.coordinates).split(",")
        except Exception:
            coordinates = str(placemark.MultiGeometry.Point.coordinates).split(",")
            "name": str(,
            "latitude": float(coordinates[1]),
            "longitude": float(coordinates[0]),

# dump the list to a yaml format file
with open("zones.yaml", "w") as f:
    dump(data, f)
  1. I copied over the zones.yaml to the Home Assistant configuration folder and edited the configuration.yaml in it to have: zone: !include zones.yaml at the end, then I restarted the Home Assistant.
  2. I planned to load them in the Map card, but that card accepts only a list of entities which are generated from zones when the Home Assistant loads. I got the list of entities with Developer Tools in Home Assistant. Under Template, I put the following:
{% for item in states | map(attribute='entity_id') | list %}{% if item.startswith("zone") %}
  - entity: {{ item }}{% endif %}{% endfor %}


Good enough of that black magic, except the first result in the list which I had to indent manually. I copied the entities.

  1. I created a new tab on the dashboard with only one card so it expands, the type was Map, I added two zones in visual editor, as well as set the zoom to 3, then switched over to the code editor. This showed me how I wanted it to look like.

  1. I removed those two zones under entities and in their place put the clipboard content obtained from step 4. Then I searched for the ones that I had from before in that list that are not from the zones.yaml (like zone.home or the local stores that I previously had saved in the Home Assistant database) and removed them. I finished editing the card.


That's pretty much it. It really shows how it's easy to do things with Python.

As of this moment, I did a number of small stupid scripts for doing various things. Some of them grew into a full fledged service like Mellow. Mellow was more an opportunity to play with what AWS has to offer than anything else. The could maybe be converted into a service as well but I cannot be bothered and, what's more likely, people would not really use it, but it is there if someone wants to nibble on it and help themselves. Even executing it without a file, through REPL itself.

Some of the scripts I did end up as a snippet, some of them as a repository. Of the top of my head I made:

  1. Mellow - the conversion from Trello board to Coggle mind map
  2. - the conversion from KML file to zones.yaml for Home Assistant
  3. geotag-gallery - making a KML file with placemarks from photos and tagging them with convolution AI results
  4. led-morse - blinking LED light on Arduino in a Morse code
  5. Shamrock - getting plant data from a 3rd party service.

Probably more. Writing those things is easy and the possibilities are endless.

The script in this article is an example of how things can be done quick and dirty if one only wants to invest a bit of time. I remember seeing some videos of people using Python as a scripting language much like a macro in an operating system. It would open browser, start some pages, click through some of the options and so on. Generally automating a plethora of mundane tasks. I'm sure people could utilize it in their own life, too.

Room-Level Presence Tracking

While ordering PC components, I also ordered Raspberry PI Zero 2 W. Ideally I'd have one more so I can have three and a proper Paxos distribution, but they are notoriously difficult to obtain these days. In the end I used my original PI 4 and Zero 2 W to create a two-node system for room level presence detection. The third one will have to wait so I might go for it this year if it turns available.

I installed Raspbian on the PI Zero 2 W and connected it to the network. Then I made the IP static on the router so it's not changing anymore. The same is done for the Raspberry PI 4, but in reality, all the devices that are our own have a static IP in the network. It's easier to address them and the configuration is not always catering to the dynamic ones.

The project I used was room-assistant and I installed it to both devices via Docker. PI Zero 2 W only has room-assistant, and the PI 4 has Mosquitto, Home Assistant and Room Assistant. The Room Assistant describes that you should have local.yml configuration and mine is as follows on PI 4:

  instanceName: "Living Room"
    - homeAssistant
    - bluetoothLowEnergy
  autoDiscovery: false
  weight: 2
  port: 6425
    - <IP_v4 of the Raspberry PI Zero 2 W>:6425
  mqttUrl: "mqtt://<IP_v4 of the Raspberry PI 4>:1883"
    username: <mqtt username>
    password: <mqtt password>
  maxDistance: 20
    # bluetooth mac of the device you want to track,
    # for example, phone. There's a chance LE physical address
    # is rotated, if that's the case, you can go into
    # Home Assistant Android app, go under:
    # Settings -> Companion App -> Manage Sensors -> BLE Transmitter
    # and enable it, the format will be
    # UUID_WITHOUT_DASHES-major-minor
    - 112233445566

PI Zero 2 W has the same configuration file, but with a different instanceName (being in bedroom), weight of 1 so it's not picked as the leader if possible (the higher the number, the bigger the chance it will be the leader, and also that's why I'd like to have three devices at least - Paxos, remember), peerAddresses has the IP of the Raspberry PI 4, but the rest are the same as the configuration above. Be sure to change the values where they are required.

As for the Mosquitto, it's an MQTT broker that is coming recommended for Home Assistant use. Room Assistant detects a Bluetooth device, then sends a message to the queue. After that, the Home Assistant picks it up.

I am not very happy with the devices reporting their location. It would depend on the load of the device and the quality as well. I tried using bluetoothClassic integration at first, but switched to bluetoothLowEnergy because it was more accurate. Still, I think I might have to change the devices themselves since the signal drops, or investigate more into it to tweak the configuration. The walls will also affect this.

On the other side, once the Home Assistant picks up the integration, all that is left is to detect the presence. The integration makes sensors out of your devices, for example: sensor.fairphone_3_ble_room_presence. To get it into automations, it's the easiest to create the template automation trigger somewhat like this:

{{ is_state("sensor.fairphone_3_ble_room_presence", "Living Room") }}

When the above triggers the automation, the action can follow. For instance, turn off the lights in the other parts of the apartment, start home theater if it's evening, things like that... That said, I'll keep using it and see if I can improve on it.

2022 Recap

The year was filled with good things and the bad. Mostly good. It's hard to complain looking back. After all, we did more than expected.

I am keeping my publishing frequency of once a month, but like I said before, I lost some of the data when the SSD failed along with a plethora of components so the two consecutive articles were done late December. The restrictions were loosened up so we got to travel, but I miss just staying at home in a way. I also published Cuply in the Summer but need to come back to it to see it in action this year and iron out any kinks.

Moving on to the recap. A friend said that revenge traveling was trending. Being holed up during the pandemic meant that we saved enough money. Coupled with some additional planning meant that we didn't waste our days off. Usually our trips are self-organized and follow a bit of a template, we prefer to take accommodation near the city centre, and then rely on hop-on-hop-off buses and free walking tours to get a better sense of the space and history.


  • Poland (Krakow, Auschwitz, Wieliczka salt mine, a lot of it was focused on what happened during the WW2, but we definitely found time for vodka tasting)
  • Croatia (back home, Zagreb and Papuk nature park)
  • Hungary (Budapest, saw some friends from Ireland that were visiting their family)
  • Austria (Vienna, the capital of the old Austro-Hungarian empire that Croatia was a part of)
  • Slovakia (Bratislava, the last destination of our trifecta trip; in retrospect it would've been great if we had the time to visit the cities traveling via Danube, as all three are on it, but it was still great. The architecture is very familiar in the remnants of the empire)
  • Spain (Valencia, a futuristic looking city that reminds us of the Star Trek's San Francisco version, with a lot of green surfaces converted from the old dried up river bed)
  • Spain (Barcelona, visiting a work colleague)
  • Andorra (Andorra la Vella, while visiting Barcelona, it was an opportunity to visit this snowbound microstate)
  • France (Ax-les-Thermes, all part of the same day trip from Barcelona)
  • USA (Boston, Somerville, New York, visiting for work and an opportunity to see another continent. Saw four out of five boroughs in NYC, a neighborhood music festival in Somerville and took some lovely tours in Boston)
  • Switzerland (Zürich, long layover towards Greece, we plan to come back)
  • Greece (Athens, Volos, Rhodes, Santorini, Mykonos, Delos, visiting the islands)
  • Turkey (Istanbul, Kusadasi, and a bit of Turkey which is very European, well, at least the parts we were at, and Istanbul is magnificent)
  • France (Paris, Versailles, a trip with Vesna's parents)
  • Spain (Tarragona, to see this old Roman Empire city with all the accompanying ruins, then Barcelona, visiting for work, this time saw the inside of Sagrada Familia)
  • USA (New York, and work again, and some other vistas, the Wicked musical in Gershwin theater on Broadway and the last borough which was Bronx, where we visited the botanical gardens)
  • Romania (Brasov, Bucharest, Sibiu, Sinaia, visiting castles, all the gothic and vampire things. Carpathian mountains are beautiful, and Peles Castle is an amazing modern castle)
  • Croatia (back home and Zagreb again)

As for domestic travel, a couple of friends came over so we revisited the usual spots in Dublin and around our place, as well as finally went on a tour of the cemetery. My parents visited at one point so that was a blast, too. However, we did some domestic travel outside of Dublin, too, taking a road trip with friends:

  • Derry in Northern Ireland (a quick visit on a rainy day)
  • Malin Head (the northernmost point of the island)
  • Glenveagh (the national park)
  • Slieve League (beyond amazing vistas, we took a boat ride as well)
  • Ballyshannon (a small trip around the city)
  • Marble Arch Caves in Northern Ireland (going underground with all the stalactites and stalagmites)


Concerts and events:

List of things we bought:

  • Grow light for the plants which worked with a pump for the plants to survive in the tub while we were away on one occasion
  • ESP32 feather board for the automation of the standing desk
  • Aqara door and window sensors for turning of the heating if the room is ventilating
  • D&D things, books, papers, inks...
  • 3D printing safety equipment and miniature painting equipment
  • Cocktail making set and then some metal straws and picks
  • Bluetooth speaker for the bathroom. Unfortunately it's not that smart to be always on, but works
  • Soldering iron kit for working on the Cuply project
  • Life is Strange comic set, so I've read a bit this year
  • Logitech Z407 PC speakers because the old ones died and I couldn't repair them. I'm not on that level yet
  • New backpacks for Vesna and I, a picnic blanket and travel pillows
  • Zemismarat curtain motor because I got tired of waiting for the IKEA to release a fitting item... that and the old curtain nearly fell on my head because the old axis got worn down
  • External Samsung SSD for backing up things locally
  • Tefal deep fat fryer because our local fast food joint closed down and we were panicking
  • Kitchen utensils and replacing/repairing things in the apartment
  • This is Vegan Propaganda book I got from Vesna and I highly recommend it
  • New poster covers
  • Bathroom curtain
  • Raspberry PI Zero 2 W
  • Desktop PC components that died (CPU, PSU, Cooler, MoBo, RAM)

Other important events:

  • Got a confirmation that my citizenship application was being processed, but it will probably take another year and a half from the time of this writing
  • PC died, but managed to repair it
  • Contracted COVID-19 most likely while traveling from France
  • Started wall climbing, seems it will stick and we need to get fit
  • Finished hydroponics, i.e. the Cuply project
  • Didn't draw, but must do something this year
  • Played some games, but only finished Ori and the Will of the Wisps
  • Read some comic books and books: Life is Strange, Persepolis, This is Vegan Propaganda
  • Got into cocktail mixing
  • Reminded myself we're getting older
  • Got back to planning trips
  • Didn't ride the scooters, but need to do something about it this year
  • Started 3D printing

Right now it's back to planning out this year and making some resolutions yet again.