Fedora Project Ambassador. Favorite piano key: C#

Read this first

Fedora 37 Release Party Novi Sad


Another great Fedora release and another great Fedora Release Party! :)

After a (sadly) long break, we are back. University of Novi Sad, Faculty of Sciences was once again home for a day for all Fedora, Linux and FOSS enthusiasts. Since our last Release Party for Fedora 31 in December 2019 a lot has changed, but our message and drive did not. We are still striving to build a strong community around Fedora!

In total, we had five awesome talks. After the welcome, I was first to present what is new about Fedora 37 and what has changed since our last meet. We had a lot of new faces so a short introduction to Fedora was also in order. :)

The second talk was given by our Faculty colleague Dusan Simic, and the talk was about Toolbox and how it can be used for isolated clean development environments. A very useful talk for our students, for sure.

For the third talk we discussed about...

Continue reading →

Single Node OKD (OpenShift)

Everytime I get to use Red Hat’s Open Shift I think to myself: “I should use OpenShift more”. It is a really great tool not just for high availability clusters but for general software development also. Its Web interface is super intuitive and nice to use, and you can provision all sorts of stuff in minutes. And everything is open source. Its really great.

So naturally I decided to run it locally, especially after the news that starting from version 4.8 you can use it on single node architecture also. I decided to run it virtualized in libvirt so I can destroy it if I no longer needed. Hooray!

Sadly my “Hooray” was short lived, since the installation proved difficult for me.

The official guide calls for either using the Assisted installer which is only available for OpenShift, not for OKD or using the manual way which is not that difficult, but I just couldn’t get it to work. The...

Continue reading →

Jupyter on Android phones and tablets

Writing Python on the go is not easy or something you should do often. But if you have a long commute, why not? :)

There are several cool options already, like PyDroid3 (among others) allowing you to have a Python interpreter wherever you go. But what if you want more capabilities, like testing Jupyter notebooks or full control over your installed packages (with pip or conda). Or… What if you just want to mess around with Jupyter on your phone/tablet? Well, the answer is that it is very easy to try it out and see if you like it. Here are the steps.

  1. We will need to install Termux, and you can also get it from the Play Store if you do not use F-Droid

  2. We will also need Termux-Fedora (which I am very proud of, with its 150+ stars on Github). The instructions are in the readme file there. It is very simple nowadays, it only takes a couple of minutes on a relatively modern phone.

  3. Once...

Continue reading →

Fedora 31 Release Party Novi Sad – Event Report


Here we go again! :)

After a short break we are back with another local event meant to celebrate Fedora and Free Open Source Software.

First let’s cover the usual:

  • Location was, as always before, Department of Mathematics and Informatics, Faculty of Sciences, University of Novi Sad. This time we opted for newly renovated and colorful amphitheater A7 :)
  • People: Momcilo (FedoraUser) and myself were “ambassadoring” the event while we welcomed local Linux and FOSS users, students and others who wanted to hear what is new in the Fedora universe


  1. The first talk was about what is new in F31 (and F30 because we missed that release event). We talked about changes in GNOME, Fedora Toolbox, name changes and other stuff happening at the moment.

  2. The second talk was presented by Ivan Pribela, and it was about (Un)Secure Boot, why it doesn’t work, how to make it work and why not to turn...

Continue reading →

Perfection. Today. – Running Fedora on Dell XPS 7590


The new Dell XPS 7590 is a great machine. Like every great machine it has some drawbacks, but since it is much greater than the sum of its features you bond with it and forgive it.

Take mine for example. Even though the keyboard is far from perfect (with backspace and enter keys making some really weird noises) and it arrived with some scratches on the beautiful aluminium chamfered edges,
everything else about it is just… well perfect.

The 4K OLED display – perfect. The six-core powerhouse 9750H – perfect. The fast NVIDIA GTX1650 – perfect. The carbon/aluminium chassis – perfect. And the best thing about it: It runs Linux almost 100% out of the box.


Chances are that your Dell XPS will ship with Windows. If you want to dual-boot (which I recommend for BIOS updates) you will need to go through some steps.

To avoid repeating everthing, there is a great post here...

Continue reading →

Testing PyTorch XLA with Google Colab TPUs

If you are not aware, PyTorch XLA project is an effort to run PyTorch on TPU (Tensor Processing Unit) architecture which offers even higher performance in training Deep Learning models compared to GPU’s.

In my previous post I showed you how to use serveo.net to SSH into your Google Colab provided container.

In this short post I will show you how to use the same principle to connect to provided free TPUs. Beware that PyTorch XLA is in its inception phase and you may run into bugs.

  1. Open a Colab notebook and set it up (Runtime -> Runtime Type -> Select Python 3 and TPU)

  2. Create a code cell and paste the following:

    import os
    tpu_addr = os.environ['COLAB_TPU_ADDR']
    print('Local TPU address', tpu_addr)
    import random, string, getpass
    password = ''.join(random.choice(string.ascii_letters + string.digits) for i in range(20))
    alias = ''.join(random.choice(string.ascii_letters +

Continue reading →

Compling ARM stuff without an ARM board / Build PyTorch for the Raspberry Pi


I am in the process of building a self-driving RC car. It’s a fun process full of discovery (I hate it already). Once it is finished I hope to write a longer article here about what I learned so stay tuned!

While the electronics stuff was difficult for me (fingers still burnt from soldering) I hoped that the computer vision stuff would be easier. Right? Right? Well no.

Neural network inference on small devices

To be clear I didn’t expect to train my CNN on the Raspberry Pi that I have (its revision 2, with added USB WiFi dongle and USB webcam) but I wanted to do some inference on a model that I can train on my other computers.

I love using PyTorch and I use it for all my projects/work/research. Simply put it’s fantastic software.

Problem 1 - PyTorch doesn’t have official ARMv7 or ARMv8 builds.

While you can get PyTorch if you have NVIDIA Jetson hardware, there are no builds for...

Continue reading →

SSH to Google Colaboratory with Serveo.net

I love Google Colab! It is perfect for running Deep Learning experiments on a budget. I like how nonrestrictive it is and how you can run whatever you want inside the container you are given.

Sometimes I like to connect via SSH and use a proper editor to edit my python scripts, and while Jupyter-like environment is great for visualizing etc. sometimes you just want a shell. Luckily you can SSH into your Colab runtime.

Now, full disclaimer, I do not know if Google allows this explicitly or they just didn’t consider it. If I am asked to remove this guide I will immediately do so.

To get SSH access you need a bridge of some sort. There are already some tutorials using ngrok but that requires you to make an account there. What I came up with is much simpler.

Here are the steps:

  1. Open a new Colab notebook (you can name it ssh for future use)

  2. Set your runtime to Python 3 and GPU...

Continue reading →

Installing Kivy and Buildozer and building Android apps with Python 3.7 on Fedora 29

Kivy is a great UI framework for Python. You can use it to write cross-platform rich UI/UX applications for almost all platforms.

Kivy’s documentation is great, but there are no instructions for newer Fedora releases so it can be tricky to install it with Wayland, Python 3.7, dependencies etc.

So here is how to do it, it’s very simple:

We will need to compile stuff so install development tools:

sudo dnf groupinstall "Development Tools"

Now let’s install all the Kivy dependencies (updated Nov 2021):

sudo dnf install gcc SDL2-devel zlibrary-devel mesa-libGL-devel "SDL2_*devel" ffmpeg gstreamer1-devel ccache ncurses-devel ncurses-devel.i686 libstdc++-devel.i686 gtk2-devel.i686 gtk2-devel  idn2 unzip zlib-devel.i686 patch autoconf automake libtool ncurses-compat-libs ncurses-compat-libs.i686 perl-FindBin lld-devel python3-pyjnius

sudo dnf install pangox-compat --releasever=32

Continue reading →

self.liberate() – Writing a game in Python for Android was a liberating experience

You write code every day.

Whether you are a student or it is for your job or just for fun, most of the time you find yourself writing some code. Even when you are not writing code, you are thinking about it.

On your commute you are on HN or Reddit reading about latest and greatest. You are subscribed to many mailing lists and you read them all. You use Github search and sort by star count.

At least I do.

But then it happens. You get tired. You do not want to do it anymore. You question yourself. Your tools annoy you. Even the simplest tasks become a burden. You think about the days when you built some fun stuff.

Well don’t give up.

This is what happened to me and I guess you could call it “Programmer Burnout”. Although I prefer different kinds of burnouts.

The feeling really sucks, because you like your job and enjoy making stuff. In the end, that is why you are doing it in...

Continue reading →