<![CDATA[Senpai.Club]]>https://senpai.club/https://senpai.club/favicon.pngSenpai.Clubhttps://senpai.club/Ghost 4.6Sat, 17 Jul 2021 20:33:45 GMT60<![CDATA[Steam announces Steam Deck: a handheld gaming PC]]>

Steam just announced a new handheld gaming device that looks like it is heavily inspired by the Nintendo Switch. That might not be a bad thing though.

As Steam puts it, this is the "All-in-one portable PC" which "runs the latest AAA games--and runs them really well&

https://senpai.club/steam-announces-steam-deck-a-handheld-gaming-pc/60f07b42a0db5a000146020aThu, 15 Jul 2021 18:46:50 GMT

Steam just announced a new handheld gaming device that looks like it is heavily inspired by the Nintendo Switch. That might not be a bad thing though.

As Steam puts it, this is the "All-in-one portable PC" which "runs the latest AAA games--and runs them really well".

I guess we will see about that but from the specs we see so far I highly doubt it, especially if you get the cheapest version with only 64GB of eMMC storage which could probably not even download most AAA games, especially not CoD Cold War with it's respectable size of well over 100GB.

The Steam Deck will come in three different storage versions: 64GB, 256GB and 512GB with high price jumps in between.

While the cheapest version only has eMMC internal storage it looks like the more expensive versions actually have NVME SSDs installed.

Steam announces Steam Deck: a handheld gaming PC

Steam announces Steam Deck: a handheld gaming PC



Processor AMD APU
CPU: Zen 2 4c/8t, 2.4-3.5GHz (up to 448 GFlops FP32)
GPU: 8 RDNA 2 CUs, 1.0-1.6GHz (up to 1.6 TFlops FP32)
APU power: 4-15WRAM16 GB LPDDR5 RAM (5500 MT/s)Storage64 GB eMMC (PCIe Gen 2 x1)
256 GB NVMe SSD (PCIe Gen 3 x4)
512 GB high-speed NVMe SSD (PCIe Gen 3 x4)
All models include high-speed microSD card slot

Controls and Input

Gamepad controlsA B X Y buttons
L & R analog triggers
L & R bumpers
View & Menu buttons
4 x assignable grip buttonsThumbsticks2 x full-size analog sticks with capacitive touchHapticsHD hapticsTrackpads2 x 32.5mm square trackpads with haptic feedback
55% better latency compared to Steam Controller
Pressure-sensitivity for configurable click strengthGyro6-Axis IMU


Resolution 1280 x 800px (16:10 aspect ratio)TypeOptically bonded LCD for enhanced readabilityDisplay size7" diagonalBrightness400 nits typicalRefresh rate60HzTouch enabledYesSensorsAmbient light sensor


Bluetooth 5.0 (support for controllers, accessories and audio)Wi-FiDual-band Wi-Fi radio, 2.4GHz and 5GHz, 2 x 2 MIMO, IEEE 802.11a/b/g/n/ac


Channels Stereo with embedded DSP for an immersive listening experienceMicrophonesDual microphone arrayHeadphone / mic jack3.5mm stereo headphone / headset jackDigitalMultichannel audio via DisplayPort over USB-C, standard USB-C, or Bluetooth 5.0


Input 45W USB Type-C PD3.0 power supplyBattery40Whr battery. 2 - 8 hours of gameplay


micro SD UHS-I supports SD, SDXC and SDHCExternal connectivity for
controllers & displaysUSB-C with DisplayPort 1.4 Alt-mode support; up to 8K @60Hz or 4K @120Hz, USB 3.2 Gen 2

Size and Weight

Size 298mm x 117mm x 49mmWeightApprox. 669 grams


Operating SystemSteamOS 3.0 (Arch-based)DesktopKDE Plasma

Steam announces Steam Deck: a handheld gaming PC

Sold seperately, there is also a Dock you can get for the Steam Deck with following specs.


Peripherals 1 x USB-A 3.1 Port
2 x USB-A 2.0 Ports Networking Ethernet External displays DisplayPort 1.4
HDMI 2.0


Input USB-C Power Delivery passthrough inputDeck connection6" USB-C captive cable with low profile 90° connector

Size and Weight

Size 117mm x 29mm x 50.5mmWeightApprox. 120 grams

If you really want one you should probably be fast looking at the current world-wide chip shortage.

Reservation starts Jul 16th, 10 AM PDT and they say it will start shipping in December 2021.


Introducing Steam Deck
Steam Deck is a powerful handheld gaming PC that delivers the Steam games and features you love.
Steam announces Steam Deck: a handheld gaming PC
<![CDATA[Install Windows 11 on non-compatible CPU (i7-7700k) and ASUS Z270-A]]>After you heard about Windows 11 new compatibility list you may be bummed out as a lot older (even flagship-) CPUs are not officially supported by the new update. While that may change and Microsoft could add some CPUs to the list here is a quick guide on how some

https://senpai.club/install-windows-11-on-non-listed-cpu-i7-7700k-and-asus-z270-a/60dc4eeaa0db5a0001460134Wed, 30 Jun 2021 11:26:25 GMT

After you heard about Windows 11 new compatibility list you may be bummed out as a lot older (even flagship-) CPUs are not officially supported by the new update. While that may change and Microsoft could add some CPUs to the list here is a quick guide on how some of you can still install the Windows 11 Preview Build on your PC.

I tried it with the i7-7700k and the ASUS Z270-A motherboard. This one has PTT support which is an inbuild TPM module required by Windows 11. As far as I know, it only supports TPM 1.2 so if Microsoft decides to bump to TPM 2.0 before launch then there is a definite no for working with that motherboard.

Anyways, here is how to set your motherboard up correctly so you can at least receive some dev channel updates for the Windows 11 Insider Preview.

Set those settings in your Z270-A BIOS: (probably similar ones if your mainboard supports PTT. Check that on the manufacturers page)

  • Advanced/PCH-FW -> TPM Device Selection -> PTT to PTT
  • Advanced/PCH-FW -> TPM Device Selection -> PTP aware OS to PTP Aware.
  • Boot/Secure Boot -> OS Type to Windows UEFI
  • Boot/CSM -> Launch CSM to Disabled (you probably can not start your Linux OS after setting this to disabled)

Restart and that should be it. Open Windows Settings -> Updates -> Windows-Insider-Preview (you might have to enable extended diagnostics). Now you will probably still read something like that your PC doesn't fulfill Windows 11 minimum requirements but you should be able to click on the Start button for the Insider Preview and select the Dev channel thus installing the Windows 11 Insider Preview anyways.

Although following screenshot is in German you will probably get the idea:

Install Windows 11 on non-compatible CPU (i7-7700k) and ASUS Z270-A
Choose the Dev Channel to receive the insider preview.
Install Windows 11 on non-compatible CPU (i7-7700k) and ASUS Z270-A
System Info after updating to Windows 11

Have fun. Updates following...


Minimum hardware requirements
This topic defines the minimum hardware requirements for Windows 10 and all types of devices or computers designed for this release.
Install Windows 11 on non-compatible CPU (i7-7700k) and ASUS Z270-A
<![CDATA[Fast CD with Dokku on Docker]]>https://senpai.club/fast-ci-for-your-apis-with-dokku/6077409b1973120001bdc93dWed, 14 Apr 2021 22:39:41 GMT

This will be my little journey on how I set up my CD with dokku, nginx as a reverse proxy, as a cache (in case of downtime) and SSL with wildcard domains.

I actually had never heard of Dokku before a few days ago when a client asked me about ways to deliver his API as a test run without setting up big k8s clusters. The first thing that came up my mind was Heroku. But there were some compelling reasons against using it so I did a quick search and found Dokku really quick.

What is Dokku?

The GitHub repo describes it as following:

Docker powered mini-Heroku. The smallest PaaS implementation you've ever seen.

Basically it works for the most part just as Heroku does but on your own server. So most people would use it like this: once you have a project that you want to quickly share e.g. an API or some other app you can just push it via git to your dokku instance and like Heroku it does the rest. It automatically sets it up to be running on your domain.

As it is being developed as an open source project for years now it has build up quite a community and therefore a lot of plugins and modifications which lets you manage your instance very easily for the basic stuff.

How to get started?

It isn't very difficult if you know what to do. Although I had some troubles setting it up first as I wanted to use docker and I find the Dokku docs not that good documented when you have no idea whatsoever when you start.

I am familiar with Docker so here is what to do when using it:

1. Run the container. Replace the hostname with the hostname you want to use.

docker container run \
  --env DOKKU_HOSTNAME=dokku.docker \
  --name dokku \
  --publish 3022:22 \
  --publish 8080:80 \
  --publish 8443:443 \
  --volume /var/lib/dokku:/mnt/dokku \
  --volume /var/run/docker.sock:/var/run/docker.sock \

2. Add this to ~/.ssh/config so that you can access it over dokku.docker.

Host dokku.docker
  Port 3022

3. Generate your SSH key. Make sure to add the private key file to ~/.ssh/id_rsa.

ssh-keygen -b 2048

4. Exec into the docker machine to add an SSH key.

docker exec -it dokku bash
vi /key.pub # paste your pub key and save with ESC -> 'wq!'
dokku ssh-keys:add admin /key.pub
dokku ssh-keys:list # confirm that this has an output

6. Add docker Dokku as a command. (Works with debian/ubuntu and bash. Not sure about others)

nano ~/.bash_aliases
alias dokku="docker exec -it dokku dokku" # add this line then re-login with your linux account

7. Now we can try to deploy our first app.

git clone https://github.com/heroku/ruby-getting-started
dokku apps:create ruby-getting-started

cd ruby-getting-started
git remote add dokku dokku@dokku.docker:ruby-getting-started
git push dokku

Most people would be done now. Maybe the next step in case you want to use a reverse proxy to access the docker container from outside and don't want to directly expose it.

By now you can basically push any git project to dokku and it will work like Heroku. Check whether it knows how to start everything. (It mostly does) Then do the rest by itself.

It also works with subtree repos:

git subtree push --prefix subfolder dokku master

~~ Rest is optional ~~

Depending on your config you might already be done now. In my case I wasn't as I access my server over 2 reverse proxies. If you have NGINX you will probably fine by adding a file to /etc/nginx/sites-enabled with something like this:

server {
    listen 443 ssl;

    server_name *.app.yoursite.com;

    ssl_certificate /path/to/your/certificate;
    ssl_certificate_key /path/to/your/certificate_key;

    location / {
        proxy_set_header Host            $host;
        proxy_set_header X-Forwarded-For $remote_addr;


Of course with this you would need a TLS/SSL certificate for a wildcard domain. I did that with certbot:

sudo certbot certonly --agree-tos --email your@email.com --manual --preferred-challenges=dns -d *.app.yoursite.com --server https://acme-v02.api.letsencrypt.org/directory --manual

This asks you to confirm after you added a TXT record to your domain and gives you the paths of the certificate & keyfile. Use those to update the NGINX file.

8. Done. Access the test app at https://ruby-getting-started.app.yoursite.com.

Though am I really done? ... No. I had to make it more complicated. So as my internet is not very stable and I have some APIs that are running for static pages hosted outside of my network I decided to put another reverse proxy in front of it. This time with caching when my server is offline.

~~ Do you really need this? ~~

9. Rent a server outside with a good internet connection. AWS in my case. Set everything up including NGINX. Now for the config:

# *.app.yoursite.com domains with caching
proxy_cache_path /var/lib/nginx/tmp/proxy_cache levels=1:2 keys_zone=STATIC:10m max_size=4g inactive=5d use_temp_path=off;

# reverse proxy to apps
server {
    listen 443;

    server_name *.app.yoursite.com;

    ssl_certificate /etc/letsencrypt/live/app.yoursite.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/app.yoursite.com/privkey.pem;

    location / {
        proxy_cache             STATIC;
        proxy_cache_valid       200 1d;
        proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504;
        proxy_cache_methods GET HEAD POST;
        proxy_pass https://my-home-network-public-address;
        proxy_set_header Host            $host;
        proxy_set_header X-Forwarded-For $remote_addr;


For this to work I set up another SSL/TLS certificate with certbot but on the new server so that it would auto-renew with Let's encrypt.

10. DONE. This time for real. Yay!

Here a short overview of how a request would work. When a (HTTPS) wildcard domain like yourapp.app.yoursite.com is accessed it goes to the AWS server which has a higher uptime than my network. The server basically connects to the server on our network which then again connects to docker and finally gets the wanted app/site/api. It then forwards the results to the user through all those steps.

We are basically caching every request up to 5 days with the max size of 4GB. Everything older in this cache than 10 minutes will not be used. Then when the day comes and our network is down it uses the 5d/4gb cache and tries to deliver at least most of the common requests.

In the end it turned out to be quite a journey I guess. I have no idea if it was worth all the hassle but I am very happy that I can deploy demos and small APIs with domains, SSL and caching already set up with two commands now.

Hope it didn't hurt to much reading about this. :)

<![CDATA[Ship in Suez Canal stuck - Live Tracker]]>Current status :

It is not stuck anymore.
https://senpai.club/boat-in-suez-canal-live-tracker/6055246df4aa6e00017bebb3Sat, 27 Mar 2021 10:38:04 GMT

Current status :

It is not stuck anymore.
<![CDATA[Watch Dogs: Legion PC Multiplayer released]]>Just a short update that Watch Dogs: Legion PC multiplayer was just released without any notice with the latest update. Earlier this month they postponed the multiplayer mode for PC again reasoning that there were some errors that might crash PCs with certain GPUs.

Here is the original message:

https://senpai.club/watch-d/60552451f4aa6e00017bebafSat, 20 Mar 2021 10:17:28 GMT

Just a short update that Watch Dogs: Legion PC multiplayer was just released without any notice with the latest update. Earlier this month they postponed the multiplayer mode for PC again reasoning that there were some errors that might crash PCs with certain GPUs.

Here is the original message:

A message from the Watch Dogs: Legion team about the Online Mode: pic.twitter.com/VVeaZ7v7yb— Watch Dogs: Legion (@watchdogsgame) March 5, 2021 Embedded JavaScript

The Watch Dogs: Legion team's message about the PC multiplayer release:

DedSec, the Online Mode of Watch Dogs: Legion for PC launches today! We are deploying TU 3.22 right now and Online will unlock at 11 AM EDT, 8 AM PDT, 3 PM GMT, 4 PM CET, in ~3 hours from now. Full patch notes and more info can he found here: https://t.co/rHxSQBjNx8 pic.twitter.com/0lWY1paPvP— Watch Dogs: Legion (@watchdogsgame) March 18, 2021 Embedded JavaScript

Now we can finally play Watch Dogs: Legion with friends!

Edit 23. March 2021:

Unfortunately there are still some bugs which in my case ended in crashing the Game multiple times - making it unplayble.

<![CDATA[Benchmarking single board computers with Geekbench for ARM]]>Geekbench released a pre-released version (5.4) of their benchmarking software a short while ago which makes it very easy to benchmark your single board computers and compare them. Of course this might also work with any kind of ARM device.

Right now it works for arm (armv7) and the

https://senpai.club/benchmarking_arm/60513380353882000164cd01Tue, 16 Mar 2021 23:07:32 GMT

Geekbench released a pre-released version (5.4) of their benchmarking software a short while ago which makes it very easy to benchmark your single board computers and compare them. Of course this might also work with any kind of ARM device.

Right now it works for arm (armv7) and the new RISC-V architecture. It is still a pre-release so it may not work perfectly or show all of your specs or might not even work at all.

If you are using a Raspberry PI (arm architecture) you can download their pre-release here. For RISC-V this is the download link.

Once downloaded extract it (e.g. on linux with tar):

tar xf Geekbench-5.4.0-LinuxARMPreview.tar.gz
cd Geekbench-5.4.0-LinuxARMPreview.tar.gz

This will run geekbench on your device, upload the results to their site and gives you the link to access them.

As for my passively-cooled Raspberry Pi 4:

Benchmarking single board computers with Geekbench for ARM


Geekbench 5.4, https://www.geekbench.com/blog/2021/03/geekbench-54/ (last visited Mar. 17, 2021).

<![CDATA[Exclude files and filetypes on OneDrive]]>https://senpai.club/exclude-file-types/602c3abb22186d00015b5701Tue, 16 Feb 2021 22:15:50 GMTExclude files and filetypes on OneDrive

As OneDrive has no easy to access feature to exclude specific files or folders from being uploaded here is a little guide on how to do it with the group policy editor.

As a developer using OneDrive to backup your PC works but if you have (by accident?) a cache/debug folder or some other folder in your backup that has a lot of different (maybe even very small files) files, you may have already experienced the limits of OneDrive: Uploading a lot of files is simply put Very slow. E.g for the NodeJS devs: A node_modules folder for even small projects can already contain over 10k files. In my case that wrecked my whole OneDrive installation and it took days until all my stuff was backed up to the cloud.

Use OneDrive Insider preview

First make sure that you are using the OneDrive insider preview version as earlier version may not have this feature yet. For that open OneDrive Settings -> About -> select Get OneDrive Insider preview updates before release

Copy template files

Now go to %LOCALAPPDATA%\Microsoft\OneDrive{OneDriveVersion}\adm and copy the OneDrive.adml (language file) to C:\Windows\PolicyDefinitions\en-US and the OneDrive.admx to C:\Windows\PolicyDefinitions.

Use Local Group Policy Editor

Open the local group policy editor (e.g. with WIN+R and gpedit.msc) and select ?Computer Configuration -> Administrative Templates -> All Settings. Now find Exclude specific kinds of files from being uploaded.

Exclude files and filetypes on OneDrive

Now on Keywords: Show... you can add keywords for files to exclude from being uploaded. Just type the name of the file you want to ignore or like in the description use * as a wildcard to select multiple filetypes or names.

Update 2021/2/18

While using I found two kinda big limitations of this:

  1. This does not seem to work with folders yet.
  2. Only new files are being ignored. Old, already uploaded files stay as they are.

When a file is ignored it has a different kind of icon instead of the OneDrive Sync logo.

<![CDATA[Cyberpunk 2077]]>https://senpai.club/cyberpunk/5feaff764be6490001d8bda3Tue, 07 Jul 2020 19:43:22 GMT

All the things we know so far

Cyberpunk 2077

If you haven't been living under a rock you've probably heard about Cyberpunk 2077 these days. A game developed by the same company that blessed us with The Witcher series, CD Projekt Red.

In this blog post we're going summarize what we know so far about Cyberpunk 2077. (Status quo 2020-07-07, yes pun intended)

Cyberpunk 2077

First and foremost, the scheduled release date of Cyberpunk for PC and Console is on the 10th of December this year. This means exactly 157 days from today.
However people who are looking forward to play it on Google Stadia will have to hold back until the end of 2020 and it gets even worse. Next-Gen consoles players will have to wait until sometime in 2021.

Cyberpunk 2077

For all the PC players out there, official system requirements haven't been announced yet, but it's safe to assume that you'll need an above average PC to run the game at 1080p and an absolute gaming monster for 4K with 60 frames.
Furthermore, it has been confirmed that Next-Gen consoles will have a graphically upgraded version up for purchase to take use of the additional power.


Cyberpunk 2077

Cyberpunk 2077

Now let's take a look at the game itself. Cyberpunk 2077 is intended to be a first-person, singleplayer, role-playing experience with a possible multiplayer mode coming with updates later on. You're going to play as V , the highly customisable main character.

There are three classes to choose from:
NetRunner, who is focused in hacking
Techie, who is specialized in machinery
Solo, who is trained in combating

As your character V you are going to enjoy the open world of Night City and its surroundings. This metropolis is built around six regions and the Badlands, the outside area of the city.

It is also important to note that the story leads to different endings, which means that you ultimately choose how good of a person you want V to be and more importantly what will happen to Keanu Reeves. Yes, motherf***ing Keanu Reeves is also a character ingame!!!

Also a small little gimmick, CD Projekt Red decided it would be fun to include some minigames.

Cyberpunk 2077

CYBERPUNK: EDGERUNNERS ever heard of that?
Imagine you just finished the game, hanging around at home and don't know what to do. Maybe clean the house, or go grocery shopping or browse furiously through Netflix for some animes, but then suddenly you see the Cyberpunk logo on Netflix and you think...wait what?

You can't believe your eyes, but yes there is definitely a Cyberpunk logo, you click on it and an anime opening starts.

A dream coming true, a 10-episode anime series set in the world of Cyberpunk 2077. The series is called Cyberpunk: Edgerunners and is coming 2022 on Netflix, to be more specific a Netflix Original collaboration with CD Projekt Red and the Japanese animation company Studio Trigger (famous for Kill la Kill).

Now finally to summarize everything in a short paragraph in the end, Cyberpunk 2077 is going to launch on December 10th, 2020 and it features amazing graphics, a great storyline, unique game mechanics and Keanu Reeves. If that's not enough, there will be an anime series in 2022 on Netflix.


All information was provided by the official website https://www.cyberpunk.net/ as of 2020-07-07 at 09:21 P.M. CET.

<![CDATA[Automated updated COVID-19 Live Feed from WHO]]>This is a corona live feed that is updated hourly with a web crawler from the official WHO website with the latest news and information.

Latest Update

WHO publishes interactive timeline of its response30 July 2020To mark six months since WHO declared a public health emergency of international concern, the

https://senpai.club/corona-live-feed/5feaff764be6490001d8bda1Fri, 20 Mar 2020 01:58:55 GMT

This is a corona live feed that is updated hourly with a web crawler from the official WHO website with the latest news and information.

Latest Update

WHO publishes interactive timeline of its response30 July 2020To mark six months since WHO declared a public health emergency of international concern, the highest level of alarm under international law, WHO published an interactive timeline showcasing how the organization has taken action on information, science, leadership, advice, response and resourcing.  Key materials:Interactive timelineWHO Director-General's opening remarks at the media briefing on COVID-19 - 27 July 2020

Current Spread Info

Automated updated COVID-19 Live Feed from WHO

Current FAQ

What is COVID-19?

COVID-19 is the disease caused by a new coronavirus called SARS-CoV-2.  WHO first learned of this new virus on 31 December 2019, following a report of a cluster of cases of ‘viral pneumonia’ in Wuhan, People’s Republic of China.

What are the symptoms of COVID-19?

The most common symptoms of COVID-19 are

  • Fever
  • Dry cough
  • Fatigue

Other symptoms that are less common and may affect some patients include:

  • Loss of taste or smell,
  • Nasal congestion,
  • Conjunctivitis (also known as red eyes)
  • Sore throat,
  • Headache,
  • Muscle or joint pain,
  • Different types of skin rash,
  • Nausea or vomiting,
  • Diarrhea,
  • Chills or dizziness.

Symptoms of severe COVID‐19 disease include:

  • Shortness of breath,
  • Loss of appetite,
  • Confusion,
  • Persistent pain or pressure in the chest,
  • High temperature (above 38 °C).

Other less common symptoms are:

  • Irritability,
  • Confusion,
  • Reduced consciousness (sometimes associated with seizures),
  • Anxiety,
  • Depression,
  • Sleep disorders,
  • More severe and rare neurological complications such as strokes, brain inflammation, delirium and nerve damage.

People of all ages who experience fever and/or cough associated with difficulty breathing or shortness of breath, chest pain or pressure, or loss of speech or movement should seek medical care immediately. If possible, call your health care provider,hotline or health facility first, so you can be directed to the right clinic.

What happens to people who get COVID-19?

Among those who develop symptoms, most (about 80%) recover from the disease without needing hospital treatment. About 15% become seriously ill and require oxygen and 5% become critically ill and need intensive care.

Complications leading to death may include respiratory failure, acute respiratory distress syndrome (ARDS), sepsis and septic shock, thromboembolism, and/or multiorgan failure, including injury of the heart, liver or kidneys.

In rare situations, children can develop a severe inflammatory syndrome a few weeks after infection.

Who is most at risk of severe illness from COVID-19?

People aged 60 years and over, and those with underlying medical problems like high blood pressure, heart and lung problems, diabetes, obesity or cancer, are at higher risk of developing serious illness.

However, anyone can get sick with COVID-19 and become seriously ill or die at any age.

Are there long-term effects of COVID-19?

Some people who have had COVID-19, whether they have needed hospitalization or not, continue to experience symptoms, including fatigue, respiratory and neurological symptoms.

WHO is working with our Global Technical Network for Clinical Management of COVID-19, researchers and patient groups around the world to design and carry out studies of patients beyond the initial acute course of illness to understand the proportion of patients who have long term effects, how long they persist, and why they occur.  These studies will be used to develop further guidance for patient care.

How can we protect others and ourselves if we don't know who is infected?

Stay safe by taking some simple precautions, such as physical distancing, wearing a mask, especially when distancing cannot be maintained, keeping rooms well ventilated, avoiding crowds and close contact, regularly cleaning your hands, and coughing into a bent elbow or tissue. Check local advice where you live and work. Do it all!

Read our public advice page for more information.

When should I get a test for COVID-19?

Anyone with symptoms should be tested, wherever possible. People who do not have symptoms but have had close contact with someone who is, or may be, infected may also consider testing – contact your local health guidelines and follow their guidance.

While a person is waiting for test results, they should remain isolated from others. Where testing capacity is limited, tests should first be done for those at higher risk of infection, such as health workers, and those at higher risk of severe illness such as older people, especially those living in seniors’ residences or long-term care facilities.

What test should I get to see if I have COVID-19?

In most situations, a molecular test is used to detect SARS-CoV-2 and confirm infection. Polymerase chain reaction (PCR) is the most commonly used molecular test. Samples are collected from the nose and/or throat with a swab. Molecular tests detect virus in the sample by amplifying viral genetic material to detectable levels. For this reason, a molecular test is used to confirm an active infection, usually within a few days of exposure and around the time that symptoms may begin.

Learn more about what kind of COVID-19 tests are available

What about rapid tests?

Rapid antigen tests (sometimes known as a rapid diagnostic test – RDT) detect viral proteins (known as antigens). Samples are collected from the nose and/or throat with a swab. These tests are cheaper than PCR and will offer results more quickly, although they are generally less accurate. These tests perform best when there is more virus circulating in the community and when sampled from an individual during the time they are most infectious.

I want to find out if I had COVID-19 in the past, what test could I take?

Antibody tests can tell us whether someone has had an infection in the past, even if they have not had symptoms. Also known as serological tests and usually done on a blood sample, these tests detect antibodies produced in response to an infection. In most people, antibodies start to develop after days to weeks and can indicate if a person has had past infection. Antibody tests cannot be used to diagnose COVID-19 in the early stages of infection or disease but can indicate whether or not someone has had the disease in the past.

What is the difference between isolation and quarantine?

Both isolation and quarantine are methods of preventing the spread of COVID-19.

Quarantine is used for anyone who is a contact of someone infected with the SARS-CoV-2 virus, which causes COVID-19, whether the infected person has symptoms or not. Quarantine means that you remain separated from others because you have been exposed to the virus and you may be infected and can take place in a designated facility or at home. For COVID-19, this means staying in the facility or at home for 14 days.

Isolation is used for people with COVID-19 symptoms or who have tested positive for the virus. Being in isolation means being separated from other people, ideally in a medically facility where you can receive clinical care.  If isolation in a medical facility is not possible and you are not in a high risk group of developing severe disease, isolation can take place at home. If you have symptoms, you should remain in isolation for at least 10 days plus an additional 3 days without symptoms. If you are infected and do not develop symptoms, you should remain in isolation for 10 days from the time you test positive.

Automated updated COVID-19 Live Feed from WHO

What should I do if I have been exposed to someone who has COVID-19?

If you have been exposed to someone with COVID-19, you may become infected, even if you feel well.

After exposure to someone who has COVID-19, do the following:

  • Call your health care provider or COVID-19 hotline to find out where and when to get a test.
  • Cooperate with contact-tracing procedures to stop the spread of the virus.
  • If testing is not available, stay home and away from others for 14 days.
  • While you are in quarantine, do not go to work, to school or to public places. Ask someone to bring you supplies.
  • Keep at least a 1-metre distance from others, even from your family members.
  • Wear a medical mask to protect others, including if/when you need to seek medical care.
  • Clean your hands frequently.
  • Stay in a separate room from other family members, and if not possible, wear a medical mask.
  • Keep the room well-ventilated.
  • If you share a room, place beds at least 1 metre apart.
  • Monitor yourself for any symptoms for 14 days.
  • Stay positive by keeping in touch with loved ones by phone or online, and by exercising at home.

If you live in an area with malaria or dengue fever, seek medical help if you have a fever. While travelling to and from the health facility and during medical care, wear a mask, keep at least a 1-metre distance from other people and avoid touching surfaces with your hands. This applies to adults and children. Read our malaria and COVID-19 Q&A for more information.

How long does it take to develop symptoms?

The time from exposure to COVID-19 to the moment when symptoms begin is, on average, 5-6 days and can range from 1-14 days. This is why people who have been exposed to the virus are advised to remain at home and stay away from others, for 14 days, in order to prevent the spread of the virus, especially where testing is not easily available.

Is there a vaccine for COVID-19?

Yes. There are three COVID-19 vaccines for which certain national regulatory authorities have authorized the use. None have yet received WHO EUL/PQ authorization but we expect an assessment on the Pfizer vaccine by the end of December and for some other candidates soon thereafter.

Large studies of 5 vaccine candidates efficacy and safety results, including these three (and for Moderna and AstraZeneca), have been publicly reported  through press releases but only one (AstraZeneca) has published results in the peer reviewed literature.  , We expect more such reports in the near future.  It is likely that additional candidates will be submitted to regulatory authorities for approval. There are many potential COVID-19 vaccine candidates currently in development.

Once vaccines are demonstrated to be safe and efficacious, they must be approved by national regulators, manufactured to exacting standards, and distributed. WHO is working with partners around the world to help coordinate key steps in this process, including to facilitate equitable access to safe and effective COVID-19 vaccines for the billions of people who will need them. More information about COVID-19 vaccine development is available here.

What should I do if I have COVID-19 symptoms?

If you have any symptoms suggestive of COVID-19, call your health care provider or COVID-19 hotline for instructions and find out when and where to get a test, stay at home for 14 days away from others and monitor your health.

If you have shortness of breath or pain or pressure in the chest, seek medical attention at a health facility immediately. Call your health care provider or hotline in advance for direction to the right health facility.

If you live in an area with malaria or dengue fever, seek medical care if you have a fever.

If local guidance recommends visiting a medical centre for testing, assessment or isolation, wear a medical mask while travelling to and from the facility and during medical care. Also keep at least a 1-metre distance from other people and avoid touching surfaces with your hands.  This applies to adults and children.

Are there treatments for COVID-19?

Scientists around the world are working to find and develop treatments for COVID-19.

Optimal supportive care includes oxygen for severely ill patients and those who are at risk for severe disease and more advanced respiratory support such as ventilation for patients who are critically ill.

Dexamethasone is a corticosteroid that can help reduce the length of time on a ventilator and save lives of patients with severe and critical illness. Read our dexamethasone Q&A for more information.

Results from the WHO’s Solidarity Trial indicated that remdesivir, hydroxychloroquine, lopinavir/ritonavir and interferon regimens appear to have little or no effect on 28-day mortality or the in-hospital course of COVID-19 among hospitalized patients.

Hydroxychloroquine has not been shown to offer any benefit for treatment of COVID-19. Read our hydroxychloroquine Q&A for more information.

WHO does not recommend self-medication with any medicines, including antibiotics, as a prevention or cure for COVID-19. WHO is coordinating efforts to develop treatments for COVID-19 and will continue to provide new information as it becomes available.

Are antibiotics effective in preventing or treating COVID-19?

Antibiotics do not work against viruses; they only work on bacterial infections. COVID-19 is caused by a virus, so antibiotics do not work. Antibiotics should not be used as a means of prevention or treatment of COVID-19.

In hospitals, physicians will sometimes use antibiotics to prevent or treat secondary bacterial infections which can be a complication of COVID-19 in severely ill patients. They should only be used as directed by a physician to treat a bacterial infection.

Latest Report

Situation report - 209


Map, https://experience.arcgis.com/experience/685d0ace521648f8a5beeeee1b9125cd (last crawled Fri Mar 26 2021 02:11:52 GMT+0000 (Coordinated Universal Time))

Q&A Coronavirus, https://www.who.int/news-room/q-a-detail/q-a-coronaviruses (last crawled Fri Mar 26 2021 02:11:52 GMT+0000 (Coordinated Universal Time))

Situation repots, https://www.who.int/emergencies/diseases/novel-coronavirus-2019/situation-reports/ (last crawled Fri Mar 26 2021 02:11:52 GMT+0000 (Coordinated Universal Time))

Events as they happen, https://www.who.int/emergencies/diseases/novel-coronavirus-2019/events-as-they-happen (last crawled Fri Mar 26 2021 02:11:52 GMT+0000 (Coordinated Universal Time))

WHO Crawler, https://gitlab.com/botty-group/who-crawler

<![CDATA[Useful programs and scripts for your Home Server]]>https://senpai.club/useful-programs-and-scripts-for-your-home-server/5feaff764be6490001d8bda0Mon, 16 Mar 2020 23:20:06 GMTUseful programs and scripts for your Home Server

Running multiple home servers in many form-factors for several years I came across dozens of useful programs that may help you to set it up or maintain it. Here I will list some of them - and for each a quick guide on the installation and maybe some useful commands - as a reference for myself and others. I will also update it from time to time if I find some new. As I am using mostly my Raspberry Pi's I will use the user pi, the user and group id 1000 in all commands.

Also before using any scripts in general I want to remind you that you should always examine downloaded scripts before running them.

  • docker
    • Installation using convenience script
      curl -fsSL https://get.docker.com -o get-docker.sh
      sudo sh get-docker.sh
      sudo usermod -aG docker pi # relog after this
    • Useful commands
      docker run hello-world
      docker ps
      docker logs <container id>
  • docker-compose
    • Installation
      sudo apt install docker-compose
    • Useful commands
      docker-compose up -d (without -d for logs)
      docker-compose down
    • Example docker-compose.yml
      version: '2.0'
          build: .
          - "5000:5000"
          - .:/code
          - logvolume01:/var/log
          - redis
          image: redis
        logvolume01: {}
  • NodeJS 13.x
    • Installation
      curl -sL https://deb.nodesource.com/setup_13.x | sudo -E bash -
      sudo apt-get install -y nodejs
    • Useful commands
      node <file>
      npm run
      npm init
  • nodemon
    • Description
      nodemon restarts your application after a change in the current folder
    • Installation
      npm i -g nodemon
    • Usage
      nodemon <file>
  • pm2
    • Description
      pm2 is a process manager with load balancer
    • Installation
      npm install pm2 -g
    • Useful commands
      pm2 status
      pm2 logs <id>
      pm2 start <file>
      pm2 start <file> -- <extra parameters>
  • ssh tunnel
    • Description
      while ssh is already installed on most systems its tunnel feature can be used as a cheap way to forward traffic from a local host behind a firewall over a vps to the public
    • Usage
      ssh -tt -R<server port>:localhost:<local port> root@host -i /home/pi/.ssh/id_rsa -N
    • Server settings
      Edit /etc/ssh/sshd_config and set GatewayPorts yes

Have you come across a useful command or program that I did not list here? Then please leave a comment so that I can add it to the list.

<![CDATA[A quick guide for Kubernetes on a Raspberry Pi (3, 3B, 4) cluster]]>https://senpai.club/kubernetes-on-raspberry-pi-3-3b-4/5feaff764be6490001d8bd92Sun, 15 Mar 2020 21:51:21 GMT

While there are many guides on creating a cluster with Kubernetes there are less on how to create one with Raspberry Pi's (arm architecture) and even less for novices that explain in an easy way what to keep in mind when doing this.

When I started with this project I knew next to nothing about Kubernetes and what lies behind it. In this article, I will not go deeper into the material than setting it up correctly and deploying an example container (GitLab runner) from Docker hub.


  • Raspberry Pi (at least 2GB RAM is recommended for the master so go for RPi 4)

A quick overview of Kubernetes and the used programs

  • kubeadm - master command for the cluster
  • kubelet - this runs the containers
  • kubectl - utility to control the cluster
  • flannel - overlay network for network configuration

Installing kubeadm, kubelet and kubectl

apt-get update && apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
apt-get update
apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl

Initialize kubeadm (on master node only)

kubeadm init --apiserver-cert-extra-sans=<local ip of master node> --service-cidr --pod-network-cidr=

After initialization it will give you a command to join the cluster which shall be executed on all slave nodes. It will look something like this:

kubeadm join --token kgr932f.g3j3i453ji0t34 \
--discovery-token-ca-cert-hash sha256:f9i3fh39hf04h93iuh43g4jih3g4oiho3g4

Copy configuration

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Install Flannel

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/62e44c867a2846fefb68bd5f178daf4da3095ccb/Documentation/kube-flannel.yml

Example container - gitlab runner

apiVersion: extensions/v1beta1
kind: Deployment
name: gitlab-runner-arm
replicas: 4
        arch: arm
        - image: bostrot/gitlab-runner:latest
        name: gitlab-runner-arm
#          volumeMounts:
#          - mountPath: /etc/gitlab-runner
#            name: gitlab-etc
#          - mountPath: /home/gitlab-runner
#            name: gitlab-home
            - name: registrationToken
            value: <token>
            - name: description
            value: <cluster name>
#      volumes:
#        - name: gitlab-etc
#          emptyDir: {}
#        - name: gitlab-home
#          emptyDir: {}

Now you can create the container with kubectl apply -f runner.yml. You can shut it down with kubectl delete -f runner.yml.


Installing kubeadm, kubelet and kubectl - https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#installing-kubeadm-kubelet-and-kubectl (last visited Mar. 15, 2020)
The Kubernetes network model - https://kubernetes.io/docs/concepts/cluster-administration/networking/ (last visited Mar. 15, 2020)

<![CDATA[Inspiring TEDs]]>https://senpai.club/inspiring-teds/5feaff764be6490001d8bd9eSat, 14 Mar 2020 13:19:54 GMT
<![CDATA[DiY Streamdeck / Macro keyboard]]>https://senpai.club/diy-streamdeck-macro-keyboard/5feaff764be6490001d8bd98Fri, 13 Mar 2020 23:00:13 GMTDiY Streamdeck / Macro keyboard

If you have ever needed some extra keys on your keyboard for easier to reach shortcuts or automation you probably heard about macro keyboards.

While there are easier and maybe cheaper ways, with software like AutoHotKey, to "reprogram" a second keyboard I decided to make my own macro keyboard. This has several reasons: For one it is smaller than most keyboards. Then it also costs less if you have the right parts already lying around.
For my setup, I used a Teensy 3.0 as an HID to simulate certain keys, combination or even text input.

The example code I provide does two things that I found useful with a bit of extra setup (changes may apply if another controller is used):

  1. Mute/Un-Mute on Discord
  2. Hold 'W' key for games where you have to move your character for a long distance
  3. Hold the left mouse key until another press to release it

My parts are as follows:

  1. Teensy 3.0
  2. Some old remote's plastic keypad
  3. Board to solder on
  4. 3D printed housing

Now the steps are pretty forward. I soldered some cables quick and dirty to the board, created contact points and put everything into a 3D printed case. The plastic keypad I used is one with conductive pads on the botton (black circles in picture) which was in found in an old remote. The cabling may be changed according to your needs. In my case connecting one side of the key ports to the analog pins and the other side to 3V was sufficient. The output of the analog pins with 10 bits would be 0 - 1023.

If you are using another Arduino you should checkout how to reflash the firmware to act as an HID device. Arduino itself has an article about it in their references.

DiY Streamdeck / Macro keyboard

int button[5];
bool curPressed[5];
bool pressedD = false;
bool pressedM = false;
void setup()

void loop()                     
  // set button array to analog pins
  for (int i = 0; i < 5; i++) {
    button[i] = analogRead(i);
  // button 1 pressed
  if (button[0] > 1000) {
    // check holding
    if (!curPressed[0]) {
      curPressed[0] = true;
      Serial.println("button 1");
  } else {
    curPressed[0] = false;
  // button 2 pressed
  if (button[1] > 1000) {
    // check holding
    if (!curPressed[1]) {
      curPressed[1] = true;
      if (!pressedD) {
        pressedD = true;
      } else {
        pressedD = false;
      Serial.println("button 2");
    } else {
      curPressed[1] = false;
  // button 3 pressed
  if (button[2] > 1000) {
    // check holding
    if (!curPressed[2]) {
      curPressed[2] = true;
      if (!pressedD) {
        pressedM = true;
        Mouse.set_buttons(1, 0, 0);
      } else {
        pressedM = false;
        Mouse.set_buttons(0, 0, 0);
      Serial.println("button 3");
    } else {
      curPressed[2] = false;

Pressing a button on it would connect the 3V line with the connected Analog Input on the device. A 3V input would read as an analog integer value over 1000.


analogRead, https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/ (last visited Mar. 13, 2020).

HID library, https://www.arduino.cc/en/Reference/HID (last visited Mar. 13, 2020).

Using USB Keyboard, https://www.pjrc.com/teensy/td_keyboard.html (last visited Mar. 13, 2020).

Human interface device, https://en.wikipedia.org/w/index.php?title=Human_interface_device&oldid=937206074 (last visited Mar. 13, 2020).

<![CDATA[ReadyNAS Duo v2 Upgrade to Debian Buster]]>https://senpai.club/upgrade-readynas-duo-v2-to-latest-debian/5feaff764be6490001d8bd93Sat, 28 Dec 2019 10:57:41 GMT


ReadyNAS Duo v2 Upgrade to Debian Buster

While searching for a good backup solution for my files, I found my old Ready NAS Duo v2 and thought it would be perfect for this, as it supports up to 4 TB of storage with two 3.5 inch hard drives. The only problem was that the original firmware of this device was outdated already several years ago. This would be critical security-wise for a device that is used to store partly sensitive data. So I started searching for a custom firmware which could give me the freedom I wanted for the NAS. Luckily, I found the website of a guy who ported the latest Debian to the NAS and was kind enough to post a detailed description of it. After altering the built config a bit I build the firmware for the NAS based on Debian.

The NAS got a 128 MB NAND-Flash Chip in-built which is not enough to store full Debian on it. Luckily there are still several ways to work around this. The easiest for me was putting the OS on an external USB stick with enough storage and create a cmd to autoboot from it.

Step by Step

Make sure to backup all your data before following this guide.

1. Enable UART on Raspberry PI (skip if not needed)

To give it some context why I am using a Raspberry PI and not just a TTL to USB converter for doing this you would need to check the Troubleshooting section later in this post. Some commands for unbricking the device/loading uboot onto it are just available for linux or would be tedious to install on Windows. My main operating system is Windows, hence the RPI.

ReadyNAS Duo v2 Upgrade to Debian Buster

If you have a Serial Dongle or any UART device that can read the serial input you can skip this step. The RPi has a UART interface on the GPIO (pins 8 TX, 10 RX) with which you can communicate with the NAS. Before it can do that we have to enable those pins and disable its own console so it won't interfere. sudo raspi-config -> 5 Interfacing Options -> P6 Serial -> No (for serial console) -> Yes (for serial hardware) should do the trick. Now reboot and you should be able to open a connection with minicom or screen and speed 115200 (sudo screen /dev/ttyS0 115200).

2. Connect to the serial interface

ReadyNAS Duo v2 Upgrade to Debian Buster ReadyNAS Duo v2 Upgrade to Debian Buster

Remove the sticker from the backside of the NAS and connect TX->RX, RX->TX, GND->GND. When plugging in the power cable you should see something similar like this in the serial console:

         __  __                      _ _
        |  \/  | __ _ _ ____   _____| | |
        | |\/| |/ _` | '__\ \ / / _ \ | |
        | |  | | (_| | |   \ V /  __/ | |
        |_|  |_|\__,_|_|    \_/ \___|_|_|
 _   _     ____              _
| | | |   | __ )  ___   ___ | |_
| | | |___|  _ \ / _ \ / _ \| __|
| |_| |___| |_) | (_) | (_) | |_
 \___/    |____/ \___/ \___/ \__|

U-Boot 1.1.4 (Jun 29 2012 - 16:06:40) Marvell version: 3.4.27
Netgear version: Uboot-1_1_4-NetgearDUOV3-V1009

U-Boot code: 00600000 -> 0067FFF0  BSS: -> 006D0120

Soc: MV88F1155 Rev 1 (DDR3)
CPU running @ 1600Mhz L2 running @ 533Mhz
SysClock = 533Mhz , TClock = 200Mhz

DRAM unknown CAL  tRP = 8 tRAS = 20 tRCD=8
DRAM CS[0] base 0x00000000   size 256MB
DRAM Total size 256MB  16bit width
Addresses 8M - 0M are saved for the U-Boot usage.
Mem malloc Initialization (8M - 7M): Done
Flash:  0 kB

CPU : Marvell Feroceon (Rev 1)

Streaming disabled
Write allocate disabled

USB 0: host mode
PEX 0: PCI Express Root Complex Interface
PEX interface detected Link X1
Plug On and Power down, Please Switch On !

Turn it on and press a key in the serial console to stop the autoboot. Then you will see something like this:

Switch On !

Net:   egiga0 [PRIME]
Hit any key to stop autoboot:  0

3. Booting kernel and Debian installer

Build or download the latest kernel and the debian installer.
Put them both on an usb stick, plug it into the NAS' front port and restart it with the whole procedure. Then find which USB port it is connected to with

usb start
usb storage

Now set the bootcmd to start from the usb and load the uImage to the location 0x1200000 and uInitrd to 0x2000000.

set bootcmd usb start;fatload usb 0:1 0x1200000 /uImage;fatload usb 0:1 0x2000000 /uInitrd;bootm 0x1200000 0x200000

This actually sets the bootcommand to first start the usb interface then load the file from the usb device with the ID 0:1 into the RAM at the location 0x1200000 and 0x2000000. After that it tells the system where to find both the kernel and the init ramdisk. The boot command now starts the whole procedure.

Now you should get a screen like the following:

ReadyNAS Duo v2 Upgrade to Debian Buster

Set up debian as you normally would and select your desired install location. I picked the USB stick itself as the location for the main OS. Your USB stick should have at least 1 GB of storage and preferably should be sacrificable. Now, wait for the installation to finish.


If your NAS is still booting into its old system try to override the NAND flash with the new kernel + debian installer. e.g. load both from USB with the fatload command into the RAM as before (fatload usb 0:1 0x1200000 /uImage, ...) then write it to the NAND at the appropriate location. You can find those locations by using the printenv command at the line bootargs (uImage is the kernel while initrd is the initial ramdisk). Now use something like nand write 0x1200000 0 LOCATION (replace LOCATION with the actual hex value) to write from the RAM to the NAND. The command has this structure: nand write from offset to.

Problems and troubleshooting

USB stick is not recognized
Plug it into the front USB port as this one is directly connected to the mainboard.
Try another USB stick as the NAS is very picky and some newer ones may not work with it.

Make it cleaner
For esthetics, I directly soldered it to the board. In my case, it was a USB Stick 2.0 so I decided to attach it at the front USB to spare the two USB 3.0 ports on the back. I know, this is by far no perfect soldering and gluing job but it works.

ReadyNAS Duo v2 Upgrade to Debian Buster

Bricked device
If you still get an output on the serial port you might be able to unbrick the NAS with re-flashing the uboot image. Especially when you get stuck at Net: egiga0 [PRIME]. Get the latest uboot from the Netgear download site by extracting the RAIDiator file. Get kwboot (on Linux apt install u-boot-tools) and run kwboot -b uboot.bin -t /dev/ttyS0 -p (/dev/ttyS0 for RPi). Now turn the NAS on and it should boot the uboot image.
After that abort the boot process with any key, load the uboot image from e.g. USB and erase/write the NAND with the image. (be careful to not turn it off after erasing the NAND as this could lead to permanent damage)

fatload usb 0:1 0x2000000 /uboot
nand erase 0 0x180000
nand write 0x2000000 0 0x180000


Debian and upstream kernel on NETGEAR ReadyNAS Duo v2, http://natisbad.org/NAS/index.html (last visited Dec. 23, 2019).

How to unbrick the Netgear Ready NAS Duo v2, https://forum.doozan.com/read.php?3,74954 (last visited Dec. 27, 2019).

NV+ V2 stuck at booting, https://community.netgear.com/t5/Using-your-ReadyNAS-in-Business/NV-V2-stuck-at-booting/td-p/1008743 (last visited Dec. 28, 2019).

<![CDATA[Site under construction]]>https://senpai.club/site-under-construction/5feaff764be6490001d8bd91Sun, 27 Oct 2019 00:16:12 GMT

Senpai.Club is currently under construction.
Meanwhile you can checkout the forums at https://www.bostrot.com.

... wait for it ...