COVID-19 from a Network Science perspective

Starting on December 31st 2019, in the Chinese city of Wuhan, an outbreak of a novel coronavirus (COVID-19) made its appearance and in less than two months it became a global health crisis. At the time of writing this article, 181,562 cases have been confirmed worldwide, out of which 7,138 deaths were caused by the virus. The World Health Organization (WHO) has already described the outbreak as a pandemic.

At the moment, the virus seems to be unstoppable because of its rapid spread and the fact that we still haven’t found a cure or vaccine for it. The exponential growth of infected people in several countries has raised many concerns and requires strict measures to be taken in order to slow the spread of Covid-19 outbreak.

Let’s see the math behind that rapid spread…

Branching Process

Epidemics act in a branching process.

First wave

Assume one infected person meeting people and contaminating them with probability p. That concludes in having the first k people to become infected.

Second wave

As the k infected people go on infecting others, we get the second k*k to become infected.

Subsequent waves

Each person in the current wave meet k new people, passing the disease to each independently with probability p. So the n-th wave will get k^n more people infected.

That’s how we get to what we call exponential growth.

As for the probability of contagion, it appears that due to the virus characteristics, it is contagious enough to worry about. And high contagion probability means that the infection spreads widely.

Node Infection Model

Now let’s take a look at the node states of an epidemic.. And by nodes we actually refer to humans.

Node state: one of possible conditions a legitimate node lies in.

The possible states of a node are the following:

  • Susceptible, S(t): prone to receive a disease
  • Infected, I(t): node that already received a disease
  • Removed, R(t): infected and totally recovered
  • Dead, D(t): removed from a network

Given the fact that there is no cure or vaccination yet to lead infected to full recovery or immunity and also, that it is not unlikely for patients who have recovered to receive the disease again (or at least, that scenario hasn’t been denied yet), we have the following model:


Although most infected people return to susceptible state, there are unfortunately deaths, and that’s why science desperately needs to get us to the following model:


The SISRD model is different from SISD because of a vaccination that could get us from susceptible state to full recovery without even being infected and a cure, that would lead infected people to fully recovered. Of course, whoever doesn’t receive treatment or vaccination would be led again to S or D state.

Keep calm and stick to some rules

Until we get to SISRD, let’s see what measures could be taken to make SISD viable and most importantly, minimize D node states!

Rule 1: Social Distancing

The most important rule is the one of social distancing. Remember the branching process explained before? Since Covid-19 is quite contagious, the more people an infected person meets, the more “branches” are created. Thus, infected people should stay home until they get to state S again and avoid meeting other people. Seems legit. But what about the non infected? Should they stick to the rule of social distancing, too?

The answer is yes, because that way they’re fighting the probability of contagion and stop the branching process of the epidemic.

What we need to do, in order to help slowering the spreading of the disease and help more people get back to state S and avoid state D, is focus on S and I states as if they’re the same. Same rules for S and I, both staying home, so that they are not in the “network” of the epidemic anymore.

Getting quarantined is not so scary as it sounds, nowadays. There are several stuff to do while staying home, like reading books, working out, watching movies.. And of course, if the nature of your job allows it, work remotely πŸ™‚ Needless to say, there are so many alternatives you can use for a groupware software: file sharing, collaborating on documents, video conferencing etc. If you’re not fond of the Big 5, take a look at what we’re doing in LaceWing Tech πŸ˜‰

Rule 2: Good Hygiene

Sooner or later, you may need to go out (buy something, work, etc).. In this case make sure you keep an antiseptic gel close and wash your hands often and thoroughly.

Rule 3: Keep calm

If people are sufficiently worried, then there’s a lot less to worry about. But when no one is worried, that’s when you should worry. So spread the word, keep calm, stick to the rules and things are going to get back to normal soon.

The only thing to fear is the lack of fear itself.

FOSDEM 2020: The biggest FOSS fiesta

I’ve always been hearing stories about this open source fiesta called FOSDEM, but I never had the chance to attend to. This year, Nextcloud made that dream come true. Thank you Nextcloud for sponsoring me to this unique experience!

FOSDEM conference takes place at Brussels and it lasts for 2 days. However, the whole week in town is full of numerous open source events. I would be staying for 4 days, to attend some events and do some sightseeing since it was the first time I visited Brussels. So… Luggage ready, camera ready, open source mode on and we’re off!

I travelled along with my friend Stathis, and arriving at FOSDEM we met the rest of the Nextclouders. We were both glad to see again people we knew – Frank, Jos, Marinela, Greta – but we also made some new acquaintances – Bjoern, Silva, Borris. Altogether, we helped at the booth, talking to people about Nextcloud, introducing it to people that have never heard of it, spreading the word about Nextcloud Hub and helping others resolve any issues they had. And of course, handing out stickers generously!

The booth this year had grown bigger – that explains why Nextcloud was the only organization to have two tables πŸ˜‰ And a cool blue light on the background!

Nextcloud shared the booth with DAVx5 and ONLYOFFICE. It was a pleasure sharing the booth with these awesome people and I’m very happy I got to know them! Open source is literally connecting people πŸ™‚

Both days, FOSDEM was quite crowded and we’ve talked to an amazingly large amount of people. As of the talks, I attended a few – containers related topics – but the rooms were overcrowded and sound didn’t work too well because of that. For me, FOSDEM was more about networking and getting to know people from open source community. And of course, collecting some stickers!

If you feel like seeing some Fosdem Faces to get the feeling, take a look at this album. The photographer got my face too πŸ™‚

One of the events we visited on our trip was that of FSFE. It was pretty interesting to listen to people from different countries talking about their way of promoting open source technologies to their country. That’s where we met Izabel and Luis. My “most important people” from this trip πŸ™‚

Stathis, Me, Izabel, Luis on our way to Delirium

Izabel is one of Stathis’s friends from OpenSUSE community and Luis, is the founder of GNUHealth project. GNUHealth was the first Free Software project that clearly focused on Public Health and Social Medicine. Rumor has it that Luis’ experience in rural and underprivileged areas in South America led him to start thinking on how Free Software could help health professionals and authorities to improve the public health system. That’s how he created GNUHealth, a “Social Project with some technology behind” as he defines it in this talk. For me Luis, is exactly the type of person the world needs most. I was so impressed by his story and his project and I definitely want to find a way to contribute to it in the future.

Back to Brussels, along with these people we headed to Delirium to get a beer with some OpenSUSE friends.

Since I stayed a bit longer in Brussels I had some time to walk around town, do some sightseeing and meet old friends. The most popular spots in the city is the Grand-Place square and the view from Mont des Art. As of attractions, a must-see is definitely Atomium and maybe these well known pissing statues (Manneken Pis, Jaeneken pis, Zinneke Pis). But if you ever visit Brussels, I suggest you take a quick tour around and then visit the cities nearby, like Gent or Bruges. And don’t forget to taste some fries and waffles!

Until next time, enjoy some photos of the city πŸ™‚

Grand Place
Mont des Arts
Met my old friend, Alexandros
Basilica of the Sacred Heart
Manneken Pis
Zinneke Pis
Best waffles in town πŸ™‚

The revival of a Nextcloud Box

Throughout my work on NextCloudPi, I had to do some testing on the NCP board images. Sooner or later, my Raspberry Pi was on fire, constantly testing different versions and features of NCP. Every now and then I encountered articles about the Nextcloud Box, but when I searched for it I found out that it’s been sold out.

Recently, I visited Berlin to attend the Nextcloud conference and that’s where a Nextcloud Box case fell into my hands (Thanks Jan πŸ™‚ ).

People kept telling me that it’s useless since the specific hard drive it was designed for, does not exist anymore. But as I was pretty grateful for this gift, I promised myself I would make it work no matter what.

Challenge accepted! Let’s solve the mystery of the Nextcloud Box.

The case is designed to house a compute board (Raspberry Pi 2 or 3 or oDroid C2) and a 2.5 inch hard drive.

The hard drive that the Box was originally designed to use is the PiDrive, a Raspberry Pi-optimised USB hard drive. Unfortunately, Western Digital has shut down their research team WDLabs which produced the Box, thus the PiDrive is gone as well.

The main question I had to answer in order to find an alternative to replace the PiDrive was the following: Why use a Raspberry Pi oriented hard drive in the first place? One of the major benefits of Raspberry Pi – except for the price and portability – is that it requires low power: 5.0V +/- 5%. On the other hand, hard drives usually require more power than the Pi can supply, especially as they start (maybe an Amp or more). This could overload things and cause trouble (I learned that the hard way after destroying my RPi’s power supply…). So, what PiDrive actually does is requiring lower power consumption than standard 2.5″ HDD and utilising a custom cable which splits the power input. PiDrive’s cable is used to provide an organized power source and supply the appropriate power to the HDD when connected to a Raspberry Pi board. This cable combined with an external HDD would be the solution to the revival of the Box, but of course it’s sold out too, as the PiDrive itself.

After I figured out that the fundamental key of the PiDrive is the required power, I focused on finding a way to get a regular internal HDD the power it needed. The HDD I picked is a 2.5″ Seagate Barracuda 1TB, which fits perfectly inside the case.

What we definitely need in order to connect the RPI with the HDD is a USB to SATA Adapter. PiDrive is using such an adapter as well but it’s integrated. Personally, as I often lack hardware, I create custom-made solutions. So in my case, I used an adapter of an old HDD case with a mini USB port.

Finding a mini USB to USB cable, seemed to be easy. However, the first attempt didn’t go very well, as I used a cable of a single USB 2.0 connector and this could not deliver the power the HDD needed. As a result, my RPi’s power supply died not try this at home! What did the job, was a cable of two USBs 2.0 connectors (one for power and data, the other for power only) which worked just fine as the HDD could draw power from two USB ports simultaneously.

After replacing the power supply for the RPi, and getting an ethernet cable available, it was time to burn a nextcloud image to the micro SD card. Here comes the NextCloudPi πŸ™‚

NextCloudPi is a Nextcloud instance that is preinstalled and preconfigured, and includes a management interface with all the tools you need to self host your private data in a single package. This is an official open source community project that aims at making it easier for everyone to have control over their own data. You can read more about it here and download the images here.

NextCloudPi constitutes the best solution for the Nextcloud Box as it is implemented to provide an option to store data and create backups directly to a USB drive.

Use balenaEtcher to burn the image to the SD card easily. As soon as you do this, insert the SD card to your compute board and plug in the power supply. The rest comes straightforward by using the wizard on your first run.

The following video shows the setup I described above alltogether.

It looks pretty, right? Let’s use it to test its functionality!

First, make sure that you know the IP address that your RPi is assigned. Then use it to enter NCP’s web interface through your browser. Make sure you get your password’s printed to file and continue to the activation.

The screenshots below will guide you step by step how to configure your NCP so that it uses the HDD as the data storage.

Let’s create a backup and check the drive for its existence. Make sure to enable SSH via NextCloudPi web panel first as it is disabled by default.

Use ssh to enter your RPi and ls the directory mentioned above.

There it is! The backup compressed as asked!

My NCP instance using a USB drive as data storage is ready to be used, perfectly fitted inside this little black box πŸ™‚

Nextcloud Conference 2019

After completing Google Summer of Code, I submitted a lightning talk about my work at the Nextcloud Conference 2019. Moreover, I asked to participate to the volunteers team along with my mentors, Pantelis and Stathis.

It was the first time I attended a conference abroad and the first time I ever visited Berlin. It was a unique experience from which I gained a lot and I feel grateful that Nextcloud sponsored me to join the conference.

Let me share this one of a kind experience with you and hopefully inspire more people to join the Nextcloud community and attend the following Nextcloud conferences!

Eirini, Stathis, Pantelis and me, all Greeks, all volunteers, visited the TU Berlin to help set up the main hacking room, in any way each of us was capable of. Tables, chairs, drinks, signs, registration bags, badges etc. All set for the big registration day. This is when we first met Jos and Marinela, who welcomed us, showed us how to organize the place and helped us with our tasks. Thank you both! πŸ™‚

As time passed, more and more Nextclouders arrived at TU Berlin. One of the parts I enjoyed most during this trip, was meeting all these awesome people, who made the newcomers like me feel like home and with whom we had some constructive conversations, technical or not, and had a great time πŸ™‚ I have to admit, I’m inspired by them and I want to contribute to Nextcloud now more than ever!

Conference day 1 has come and all volunteers are on their shifts, exhibitors at their booths, speakers getting ready and TU Berlin is getting crowded by early in the morning.

Frank Karlitschek (CEO of Nextcloud) opened the conference presenting Nextcloud 17 and the new features coming with it. The shiny new features were pretty impressive, like Remote Wipe which allows users and administrators to forcibly clean files from remote devices (e.g. in case they are stolen) or the two-factor authentication improvements about the first login and new administrator settings, regarding lost or broken second factor solution and delegating the ability to create one-time-login tokens to group administrators. Moreover, some big achievements were announced. One of them is a doubling of Nextcloud security bug bounties to USD 10.000, which means we’re talking about a solid and reliable product. Another announcement that got me, was the collaboration with IBM. Nextcloud 17 introduces IBM Spectrum Scale integration, a high-performance file system, which results in several benefits in the area of performance, scalability and storage integration. You can read more about the new features here.

Later that day, among the lightning talks, I had my 5min presentation about my work on GSoC project “Expanding NextCloudPi”, which you can read here (or watch the video at 5:31:06).

Some of the talks that stood out for me were “The Not-so-secret future” of the American activist for Freedom of Expression, Jilian York as well as the lightning talk of the investigative reporter Fredrik Laurin about “The Investigative Cloud”.

A party followed at the Tiergarten where we ate some Berlin dishes and had fun getting to know new people.

Conference day 2 was as interesting as day 1, but except for the technical talks, we listened to some talks that really broadens one’s horizons like the keynote by Renata Avila or Thomas Lohninger’s talk “Stand up and act!”. Both of these talks were breathtaking and inspiring.

At the end, Frank and Jos thanked the volunteers and the conference was officially over.

The rest of the days, a Hack Week took place at the lounge where Nextcloud employees, along with everyone who was willing to hack, shared ideas about Nextcloud and worked together on projects.

As for Berlin, we did have some free time to go for sightseeing and visit some museums. We visited some of the mainstream attractions like the Brandenburg Gate or East Side Gallery, but we had also the chance to visit some alternative places like C-Base, where our friend Marie gave us a tour, or Teufelsberg, where we did some hiking into the woods carrying laptops with us – who said software engineers can’t do that? πŸ˜‰

Greek dream team: Stathis, Fani, Pantelis, Eirini

Again, I want to thank Nextcloud and all of the team for this unique experience!

Hello world!

Welcome to my blog!

Hello world and let this story begin…

I created this blog to house my thoughts – mainly – about software engineering related stuff and also anything else that sounds interesting to share – conferences, travels, books, movies or whatever.

Feel free to take a look a section About me to get an idea of $whoami πŸ™‚

I hope you will find something useful around here!

Happy reading!