Archive for the ‘linux’ Category

DigitalOcean has new droplet plans

January 17, 2018 Leave a comment

DigitalOcean has some new droplet plans (more info here). The cheapest droplet was 5 USD, and you got 512 MB RAM and 20 GB SSD for this price. Now, for the same price you get 1 GB RAM and 25 GB SSD.

If you have a standard droplet, you can upgrade it for free. I did it today and it was just one click :) Of course, I made a snapshot first, but the upgrade went smoothly, so after some testing I removed the snapshot.

If you want to try DigitalOcean, here is my referral link: If you sign up through this link, you also support me :)


Categories: linux Tags: ,

[mongo] Upgrade to version 3.6

January 1, 2018 1 comment

Under Manjaro, my MongoDB 3.4 was upgraded to version 3.6 and it stopped working. Great!

In the log file I found this error: “IMPORTANT: UPGRADE PROBLEM: The data files need to be fully upgraded to version 3.4 before attempting an upgrade to 3.6; see for more details.

Visiting the link in the error message, it was suggested to execute a DB command in the mongo shell. But the Mongo server was not willing to start, thus I couldn’t connect to it with the Mongo shell!

So I downgraded to version 3.4 just to be able to start the Mongo shell and execute the command “db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )“. Now I upgraded MongoDB to version 3.6 and it started happily.

Categories: linux, manjaro, mongodb Tags: ,

Linux Journal shuts down after 23 years

December 5, 2017 1 comment

It’s sad but Linux Journal shuts down :( Here is the announcement: .

LJ made all the issues available in various digital formats: .

Here is a simple script to produce individual wget commands to download the PDFs one by one:

#!/usr/bin/env python3

template = "{n}.pdf&tcode=pdf-{n}-1234&action=spit"

def main():
    for i in range(132, 283+1):
        url = template.format(n=i)
        cmd = 'wget "{url}" -O {n}.pdf'.format(url=url, n=i)

if __name__ == "__main__":


$ python3 >
$ sh
Categories: linux Tags: ,


September 30, 2017 Leave a comment

screenkey is a screencast tool to display your keys, thus your viewers can see exactly what keys you pressed.

Here is a screenshot:

And here is a short youtube video about it from gotbletu: link.

Categories: linux Tags: ,


September 24, 2017 Leave a comment

Under Linux you want to do some screen capturing. For instance, you want to do some tutorial videos.

I used gtk-RecordMyDesktop for a long time, but my current favorite is simplescreenrecorder. With gtk-RecordMyDesktop I could only save in .ogv format that I had to convert to .mp4 with ffmpeg. simplescreenrecorder can save directly in mp4 format.

Adobe Premiere Pro CS6
For editing my videos, I started to use Adobe Premiere Pro CS6. First, I asked my friends, and most of them suggested this. Second, I found some good and detailed tutorial videos for this software. I’m a newbie in video editing, so I needed some tutorials that showed everything step by step.

However, in Premiere Pro I ran into a problem. You need to import a video file and pull it to the timeline if you want to edit it. However, when I pulled an mp4 file, the audio track didn’t appear on the timeline. I had a workaround solution: from my .mp4 I extracted the audio in .wav format (with ffmpeg), and pulled it to the audio track. Strangely, the audio track was often a little bit shorter than the video track. But it was just annoying, it didn’t cause a problem.

So I tried some other screen capturing tools next to gtk-RecordMyDesktop, and that’s how I found simplescreenrecorder. After several trial and errors, I figured out why the audio track was missing. Whether the audio track appears or not depends on the audio codec! If you save the audio in AAC format, then Premiere Pro will like it and the audio track will appear when you pull such an .mp4 on the timeline. The good news is that you can select in simplescreenrecorder what audio codec you want to use!

Here are some screenshots of my simplescreenrecorder setup:

For some more screen capturing tools, see this post: 5 Best Screen Capture Tools for Linux.

Introduction to Linux

September 23, 2017 Leave a comment

I want to start a new video series entitled “Introduction to Linux”. It is intended for beginners who never (or not much) used Linux before. So far I have one video, but I plan to add more videos in the future. I will update this post with the new videos.

Complete playlist: here.

Videos in the series:

Categories: linux, ubuntu Tags: ,

Getting started with C# on Linux

June 30, 2017 Leave a comment

I’ve heard lots of good things about C# but I’ve never tried it. I saw some codes and thought “fine, it’s like Java”. As I also have Linux on my primary machine, I was not interested in Microsoft technologies. However, a few years ago .NET Core was open sourced and it reached version 1.0 (now it’s 1.1). It’s a cross platform framework and it works well under Linux too, so I thought it was time to try it. Project Mono has also existed for a long time but .NET Core comes directly from Microsoft.

Under Manjaro, install these packages with yaourt: dotnet, dotnet-cli, dotnet-sdk. We will also try Mono, so install the package mono too. For Ubuntu, see the instructions here: .

Create a project

Create a folder for holding your C# projects, e.g. ~/CSharpProjects (optional), and create a folder for a sample project (e.g. ~/CSharpProjects/Sample). Enter it, and create a source file called hello.cs with the following content:

using System;
using static System.Console;
using System.Linq;

namespace SampleApp
    class MainClass
        public static void Main(string[] args)
            WriteLine("Hello World!");

Compile with Mono

If you installed Mono, you have the command “csc” (C Sharp Compiler).

$ csc hello.cs
$ mono hello.exe 
Hello World!
$ chmod u+x hello.exe
$ ./hello.exe 
Hello World!

Compile with dotnet

Now let’s use the official command-line tools. You can also delete the file “hello.exe”. I suppose you are in the project’s folder. Issue the following command:

$ dotnet new console

It creates a project file (with extension .csproj), and a sample file called Program.cs . As we already have hello.cs, Program.cs is not needed so simply delete it (leave only one source file, but it doesn’t matter which one). Then,

$ dotnet restore    # installs some necessary packages, using the .csproj project file
Restoring packages for /home/jabba/Dropbox/csharp/Sample/Sample.csproj...
$ dotnet run        # compile and run
Hello World!

The binary output is here: bin/Debug/netcoreapp1.1/Sample.dll . If you use the command “dotnet”, you get a .dll, not an .exe . However, it can be executed:

$ cd bin/Debug/netcoreapp1.1
$ ./Sample.dll 
Hello World!
$ dotnet Sample.dll 
Hello World!

When you are ready with the development and ready for deployment, issue this command:

$ dotnet publish
Microsoft (R) Build Engine version 15.1.1012.6693
Copyright (C) Microsoft Corporation. All rights reserved.

  Sample -> /home/jabba/Dropbox/csharp/Sample/bin/Debug/netcoreapp1.1/Sample.dll

According to the docs, “dotnet publish compiles the application, reads through its dependencies specified in the project file, and publishes the resulting set of files to a directory. The dotnet publish command’s output is ready for deployment to a hosting system (for example, a server, PC, Mac, laptop) for execution and is the only officially supported way to prepare the application for deployment.”


Mono ships a REPL too called “csharp”.

$ csharp 
Mono C# Shell, type "help;" for help

Enter statements below.
csharp> 1+1

Visual Studio Code support

Programming C# with VS Code is a joy. When you open a .cs file, the editor offers immediately to install the official C# extension. In order to execute a program, install the Code Runner extension. Then, add the following lines to your user settings:

    "code-runner.executorMap": {
        // "python": "python3",
        // "csharp": "echo '# calling mono\n' && cd $dir && csc /nologo $fileName && mono $dir$fileNameWithoutExt.exe",
        "csharp": "echo '# calling dotnet run\n' && dotnet run"

Choose either Mono or dotnet.


If you have Linux, no problem, you can try C#. I started to play with it yesterday, but I like it. It seems a saner language than Java :)