Igor Bubelov About Blog Notes Photos

May 2020

Notes · Jun 1, 2020

Table of Contents


I have a Nextcloud server in my house and it works great inside a home LAN but it also needs to be reachable from the Internet and that’s where it gets a bit tricky. My server has a local IP but it doesn’t have a globally reachable IP and I’m afraid there are no easy ways to get one from a regular home Internet provider.

The most convenient way to reach a website is by its domain name. Any browser can execute a DNS query to figure out the actual IP addresses behind a particular domain name you’re trying to access and once that address are found, your browser of choice can finally initiate a connection.

So, my Nextcloud server needs the following things to be globally reachable:

  1. A domain
  2. An unique IP address to point that domain to

I already had a domain and the only thing that missed was an unique IP address to put inside an A record. It turned out, Digital Ocean has a data center close enough (ping < 30 ms) to my house and I’ve decided to rent a cheap virtual machine there and use it’s globally reachable IP address for my local Nextcloud server.

It’s fair to stop there and ask yourself “why didn’t this guy just host his stupid Nextcloud on that droplet directly? What’s the point of hosting stuff from home?”. Those are good questions and the answer is: privacy and financial costs. I don’t want to hold my private data anywhere except my house and I also don’t want to pay a lot of money for storage space that I already have and can use for free. Even buying a new HDD or an SSD is much, much cheaper than renting the equivalent space in the cloud.

So, my domain’s A record can point all of the traffic to that DO droplet which has an unique and globally reachable IP address so the only extra thing I needed to do is to connect my home server with that VM somehow. I heard that setting up OpenVPN is not particularly easy and I wanted to find an easier solution. A few web searches later, I ended up reading about a tool called autossh.

This excellent post helped me to get it up an running in no time but, unfortunately, autossh is kind of cryptic and sometimes it just stops working without logging any reasons why. That’s why I had to get rid of autossh and find a way to set up a proper VPN.

It turned out, setting up VPN can be pretty easy, thanks to WireGuard. It’s also the fastest out there. I highly recommend using WireGuard if you need a fast and reliable connection between your home computer and some server in the Internet.


I was a passionate gamer during my teenage years and I still play some games from time to time. Sometimes I remember some random game from my childhood and I immediately want to play it but it can be pretty hard for the following reasons:

  1. It’s not always easy to find and install an emulator.
  2. Console games don’t work very well with keyboard and a mouse, and I don’t even have an always available mouse.

Game console manufacturers started to recognize all that nostalgic demand and now it’s possible to buy a retro console from a company such as Nintendo and it will arrive bundled with a few cool games from the past. The problem is: you have to buy a retro version of every console that you want to play and those consoles might be ancient but they aren’t cheap. Personally, I just don’t want more electronics nearby my TV and I don’t like the friction of switching between different game consoles.

It turns out, it’s easy to convert your Raspberry Pi into a meta-console that can emulate dozens of retro consoles, including NES, Sega Mega Drive, Sony PlayStation and Sega Dreamcast. You can grab an SD card, download an image from the RetroPie website and you’re good to go. It also understands many modern game controllers and I had no issues using it with my PS4 DualShock gear.

Game: Dark Stone

I spent hundreds of hours playing this game in my childhood. Some people say it’s a Diablo ripoff and this game has a crappy rating but I absolutely love this game. This was the first game that I tried on a RetroPie and I finished it in one evening (on an easy difficulty, of course). I’d say it aged well and it still feels great. Highly recommend.

Ubuntu 20.04 + Raspberry Pi

There are many things to like about Raspberry Pi but it’s official operating system in not one of those things. It uses an ancient kernel, it lacks many popular packages and its 32 bit, which is a shame. Personally, I also don’t like when hardware manufacturers try to mess with the software, it kind of breaks the division of labor, isn’t it?

That’s why I’m very excited about the fact that Ubuntu have decided to officially support Raspberry Pi in their new and cool 20.04 LTS distribution. I tried it with a couple of Raspberries and it works like a charm. It has a 5.4 kernel with some back-ported WireGuard code so it also makes it easier to set up a fast and modern VPN on a Raspberry Pi. In contrast, setting up WireGuard on Raspbian is a bit hacky, to say the least.

Computer Science of Crypto-Currency

I found an interesting set of links that has a lot of good content that I believe can be valuable to people who wants to understand some technicalities of Bitcoin (on a reasonably high level).


I learned to touch type pretty late but hey, better late than never. There are plenty of typing tutoring software online and most of it either full of ads or it will try to sell you a subscription. I mean, there is nothing wrong with asking users to open their wallets and that’s how I actually learned to touch type. I used a paid service for a few months and I though that it’s pretty decent.

A couple of weeks ago, I’ve decided to improve my typing speed so I started looking for some service again. Luckily, I first tried to search the apt repository before using a search engine and that’s how I found gtypist.

It turned out, that paid service that I used is crap. Well, at least compared to this free and beautiful tool. When I use gtypist I just feel that my skills improve a lot faster than when I use other tools. The fact that it doesn’t require an Internet connection is also pretty cool. I have a weird habit of practicing touch typing during my travel so the offline mode of operation is a very handy thing to have.

Khan Academy

Some people think that programmers are smart and good at math. Nothing can be further from the truth but it’s never late to learn. Honestly, I don’t think that an average front-end developer needs to know much about math or even algorithms or the networking protocols. It never hurts to know that but it isn’t what most programmers do. We do Stack Overflow, mostly, that’s our secret weapon and we use it to solve 99% of the issues (and introduce a few more).

Math is kind of irrelevant for programmers. If you want to excel at job interviews, you better spend your time trying to memorize a bunch of algorithms and a Big O notation. Chances are, it won’t make you a better programmer, but there is a huge difference between being good at getting programming jobs and being good at programming so if it’s the first thing that you’re after, it’s clear that you shouldn’t worry too much about math.

That said, I believe that math skills can be beneficial to anyone and if you want to learn math or refresh your knowledge, Khan Academy is absolutely the best place to do that. I try to use it daily but sometimes I forget about it for a few months and I’m glad I started to use it again during this month.

CLI: tcptrack

A really cool tool that shows currently active TCP connections. The typical usage is as is:

tcptrack -i eth0

Movie: Jeffrey Epstein: Filthy Rich

Netflix is exceptionally good at retaining subscribers. Every time I start thinking about canceling my subscription or about trying an another service, they release a bunch of great new movies that get me hooked and create a fear of missing out on something interesting if I stop using Netflix.

I’m a big fan of documentaries and an investigative journalism and I must say, this new movie about Jeffrey Epstein is really great. I didn’t follow his story closely, so I didn’t know what a terrible guy he actually was and how much power he had. I heard that some nasty people give Richard Stallman a hard time in relation to some of his words about Jeffrey Epstein’s case. Well, now I understand why those words may sound provocative and controversial but still, it’s not cool to assault people and try to destroy their lives and careers just because they have different opinions. There is a huge difference between words and actions.

Words aren’t illegal, but stuff that Jeffrey Epstein did certainly is and it’s good to know that he suffered the consequences. Interestingly, some victims that appeared in that movie seemed quite controversial and I wonder if it’s intentional. Trying to frame everyone as either angels or daemons can do more harm than good because it destroys trust and trust is extremely important if we want to make people care about the crimes that were presented in that movie.