All posts by Ramesh Jha

What is UUID or Universally Unique Identifier ?

UUID (universally unique identifier) is a 128 bit identifier value used in Software construction for uniquely indentifying some object or entity which doesn’t require central registration process.

Sometimes it is also referred as GUID ( Globally Unique Identifier). In canonical form for human readibility, it is represented by 36 character (32 alphanumberic character and 4 huphens). For example :

dd233d16-be05-11e6-b8fe-0401beb96201

According to RFC 4122 ( RFC is formal document from IETF – Internet Engineering Task Force), UUID can guarantee uniqueness across space and time. The chance of two UUID to become same is extremely low. Suppose if a machine generates one billion UUID every second for next 100 years, the probability of creating just one duplicate would be about 50%. Which in practical sense, makes two UUIDs very unique but not in theoratical sense.

Application of UUID

UUIDs are useful in many places such as identifiers for documents, hosts, application clients and other situation where a unique value is necessary like transaction IDs.

UUIDs were originally used in the Apollo Network Computing System and later in the Open Software Foundation’s (OSF) Distributed Computing Environment (DCE), and then in Microsoft Windows platform.

UUID Verisons

UUID has 5 variants. Each version takes different source of information to generate the UUID and are meant for specific purpose. For instance, Version 1 UUIDs takes date-time and MAC address, Version 2 UUIDs are generated from group or user id and date-time, Version 3 & 5 produces deterministic UUIDs generated from a user-specified namespace and user-supplied data, and Version 4 is randomly generated.

Generating a UUID in Python

import uuid
print uuid.uuid1()
print uuid.uuid4()
print uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org')
print uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org')

References : https://tools.ietf.org/html/rfc4122.html

Note : This is a guest post by Ambuj Kumar. Recently, he also made an online tool that generates UUID for verion 1 and version 4 online : https://uuidgenerator.org/

GNOME Sudoku : A desktop Sudoku puzzle game app for Ubuntu

I guess, you’ve heard of sudoku before or have solved any sudoku puzzle at some point of time in your life. Sudoku is one of the most popular number-puzzle game, which was originated in Japan. Probably, it’s the best tool to overcome boredom, specially, when you have nothing much around to do in your home, office or school. You can find Sudoku puzzles in your newspapers, magazines, websites (just Google it) and mobile app stores.

In sudoku puzzle, you are provided with incomplete 9×9 grid (9 rows & 9 columns). Your goal is to fill the empty grids with digits keeping in mind that each row, column and 3×3 section contains numbers only from 1 to 9 with each number used only once in each section.

GNOME Sudoku

For Ubuntu (Linux Mint) users like us, who wants to play sudoku puzzle on desktop can install an app called Gnome Sudoku. Gnome Sudoku is an open-source program and was written in Python.

Features

It’s lightweight, handy and has very simple interface. It comes with easy, medium, hard and very-hard difficulty levels which makes the Sudoku solving even more challenging. While solving the puzzle, the games are automatically saved so you don’t have to worry about saving them. It reloads the last unfinished game when you restart the application. Beside that, you can also create your own 9×9 sudoku puzzle and save the board into PDF file formats for printing.

sudoku

To install Gnome-Sudoku in Ubuntu system, open the terminal and run the following command :

sudo apt-get update
sudo apt-get install gnome-sudoku

 
When you’re done installation, go ahead and launch the app. Next, just select the difficulty level and start solving the puzzle. It’s not going to be easy every-time, just keep trying.

Note : It’s a guest post by Mr. Ambuj Kumar. You should also checkout his recent website http://anysudokusolver.com. It’s an online sudoku solver, And very handy when you are stuck.

Notes – a simple note taking app for Ubuntu/Linux

Notes is a simple and minimalistic note-taking application. It’s a free and open source cross platform app. It offers a simple writing pad for entering plain text, without any style. It can be used for anything – writing short notes, poems, todo list, ideas or long articles/essays etc.

notes screenshot

Notes is build using Qt framework (an open source cross-platform toolkit), inspired by the default notes app from Mac OS X (Yosemite). Although, I find the Mac like icons (minimize, close, maximize) little odd as it doesn’t look blended with XFCE desktop, but I like the simplicity and elegancy of app.

Installing Notes in Ubuntu

In Ubuntu 16.04 LTS, it’s already available in official repository. you can install it from the Ubuntu Software Center.

For older version (e.g Ubuntu 14.04 LTS) or other Debian derivatives such as Linux Mint, first download the debian package and install it using Ubuntu software Centre or GDebi package installer.

Also check out the github page if you want to follow the updates on new features or report any bug etc. Let me know (comment below) your feedback if you use this app for taking notes.

Getting started with Go language on Ubuntu/Linux

Go (Golang) is an open source programming language developed at Google. It’s a compiled and statically typed language like C/C++/Java. It’s lightweight and fast, with small memory footprint and its support for concurrency, networking and multi-processing makes it an interesting choice for specific projects.

I use Go for building small command line apps and rewriting some parts of Sinatra/Rails(Ruby based web frameworks) applications in Go. It helps me save lots of CPU power and RAM after I rewrote some CPU intensive modules in Go. Ruby(Sinatra/Rails) is my default choice for new web projects, but I’m thinking of trying Golang(net/http) for my next project, especially if the performance/speed is critical.

Setting up Go in Ubuntu [14.04]

1. Download the package from the official page.

2. Extract it (to /usr/local or anywhere else)

sudo tar -C /usr/local -xzf go1.5.3.linux-amd64.tar.gz

3. Set the path correctly
Open bash config file using nano (or your preferred text editor).

nano ~/.bashrc

And append the following line.

export GOPATH=$HOME/go
export PATH=$PATH:/usr/local/go/bin
export PATH=$PATH:$GOPATH/bin
export GOBIN=$GOPATH/bin

4. Reload Bash (to apply the new config)

source ~/.bashrc

Type go in the terminal to check if the command is available. Next, you can start writing programs in Golang.

Writing your first program in Go

Lets write a simple “Hello World” Program (hello.go) that would simply print something using fmt.

package main
import "fmt"

func main() {
  fmt.Println("Hello World!")
}

Compile

go build hello.go

Run

./hello

Recommended Links

KeePassX – The Best Password Manager for Ubuntu/Linux

KeePassX is a cross-platform password manager application. It has very high security standards. Since, it stores data locally in encrypted format, it’s probably a better alternative to any online password manager. If you want to share it across multiple devices/platforms just sync the database file using some apps like Dropbox. Make sure you’re synchronizing the encrypted file(*.kdb), not the raw *.xml export or anything else.

add password keepassx

It has simple and lightweight graphical interface, with all the basic features, to make password management easier for everyone. It comes in very handy if you manage lots of online accounts at various sites, because having a unique and strong password for each website is highly recommended. With KeePassX, the Master Password is all you need to remember.

Installing/Setting up KeePassX on Ubuntu [14.04 LTS]

It’s very likely (in most common GNU/Linux distributions – Debian, Ubuntu, Linux Mint etc) that it’s already there in your default package repository. Just open a terminal (default shortcut : Ctrl+Alt+t) and type

sudo apt-get install keepassx

After installing KeePassX, set up the Master Password or Key. And you should also configure/specify the location for storing the database file. KeePassX will prompt you to enter the master key every time you open the application. Keep a very long Master password (I use 22 letters with lower & upper case letters, numbers and special characters) and remember that. On the other hand, you could also use key pairs instead of password. (or both if you wish)

Additional features include a random password generator, storing urls, comments, usernames, attachments etc in a simple and easy way. Passwords can be easily organized in multiple groups and unique icons can be specified for each group.

Visit the official site to know more about the features (or to get package for other distro) and drop a comment here if you’ve any question/issue related to KeePassX.