Getting started with Raspberry Pi

1.0 Raspberry Pi

Raspberry Pi 4 Model B

Raspberry Pi is a popular single board computer developed by the Raspberry Pi Foundation in the U.K. Raspberry Pi 4 Model B (Pi4B) was released in June 2019. The main components of Pi4B are:

  • The system-on-chip, (Soc).
Read more

Gimp: How to stack the main window over the toolbox and layer windows

When Gimp is installed fresh, the toolbox and layers windows are stacked on top of the main window and it is not possible to get the main window on the top. This can be quite annoying since one works mostly on the main window and the other two are required only once in a while.… Read more

Everything is too small on desktop at 1080p

After installing Ubuntu Linux on a laptop with screen resolution 1920x1080 pixels or more, you may find that the icons and text appear to be small. You can alleviate the problem by taking the following steps.

1. Install gnome-tweak-tool

$ sudo add-apt-repository universe
$ sudo apt-get install gnome-tweak-tool


Read more

Wacom tablet not connecting with Ubuntu Linux

1.0 Error

Wacom One CTL-672/KO-CX tablet was not connecting with a laptop running Ubuntu Linux 18.04 LTS. It was working fine earlier, with the wacom driver obtained from the Linux Wacom Project. The Linux kernel on the laptop had been updated recently.Read more

Connecting Wacom One CTL-672/KO-CX tablet to Ubuntu Linux

Wacom CTL-672 connected to computer running Ubuntu Linux

Wacom One CTL-672/KO-CX is an 8.5 inch x 5.3 inch graphic tablet which can be connected to a computer via a USB port. The tablet comes with a pressure sensitive cordless pen. Once connected to a computer via a USB port, pen and tablet work like a mouse on a mouse pad, giving a very fine pointer on the screen.… Read more

nginx 502 Bad Gateway

1.0 502 Bad Gateway

nginx 502 Bad Gateway

After the update of Linux on the web server, the website would not open in the browser. Instead the following error was displayed.

502 Bad Gateway

2.0 Solution

First we check the nginx server.

$ systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2019-03-21 15:16:47 UTC; 16h ago
     Docs: man:nginx(8)
 Main PID: 1354 (nginx)
    Tasks: 8 (limit: 1158)
   CGroup: /system.slice/nginx.service
           ├─1354 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           └─1355 nginx: worker process

Warning: Journal has been rotated since unit was started.
Read more

How to trim a string in C

Trim a string

The problem of removing leading and trailing whitespace characters in strings occurs in programming quite often. Here is a solution.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

void trim (char *dest, char *src); 

int main (int argc, char **argv)
    char inbuf [1024];
    char outbuf [1024];

    printf ("Type a string : ");
    while (fgets (inbuf, 1024, stdin) != NULL) {
        trim (outbuf, inbuf);      
        printf ("input string -%s-\n\n", inbuf);
        printf ("string -%s-\n\n", outbuf);
        printf ("Type a string : ");


// trim: leading and trailing whitespace of string
void trim (char *dest, char *src)
    if (!src || !dest)

    int len = strlen (src);

    if (!len) {
        *dest = '\0';
    char *ptr = src + len - 1;

    // remove trailing whitespace
    while (ptr > src) {
        if (!isspace (*ptr))


    char *q;
    // remove leading whitespace
    for (q = src; (q < ptr && isspace (*q)); q++)

    while (q < ptr)
        *dest++ = *q++;

    *dest = '\0';

We can compile and run the above program.… Read more

Socket programming using the select system call

Server and clients

1.0 Client-Server Paradigm

The Client-Server paradigm divides the software architecture of a system in two parts, the server and its clients. The server works in the background and maintains the system-wide database. Using the database, it provides the functions for system operation and responses to queries from the clients.… Read more

MCE hardware error cpu 0

1.0 Error


While running Ubuntu 18.04.1 on a laptop, the following errors were observed.

mce: hardware error cpu 0 machine check 0 bank 6 ae0000000040110a
mce: hardware error tsc 0 addr ffb07540 misc 238a0000086
mce: hardware error processor 0:40651 time 1540082330 socket 0 Apic 0 microcode 24
ipmi dmi invalid offset 0

The system would stop in the single user mode.… Read more

Socket Programming using UDP in C

1.0 Datagram sockets

There are two major types of network sockets, viz. Stream sockets (SOCK_STREAM) and Datagram sockets (SOCK_DGRAM). The socket type defines the semantics of communication between this socket and its remote counterpart. Stream sockets provide full-duplex reliable sequenced data streams.… Read more