Nano command for search and replace

I spend most of my time with headless Ubuntu server or Raspbian (a Debian derivatives distro for Raspberry Pi).

So naturally I use ‘nano’ to edit various configurations files and Python Scripts.

Here are several ‘nano’ shortcuts for your references


  • CTRL-W : search text string
  • ALT-W : repeat search
  • ALT-B : Backward search

Search and Replace

  • CTRL-\  search and replace

Cut, Copy and Paste

  • CTRL-K : Cut text
  • CTRL-V : Paste text
  • M-^ or ESc-^ : Copy text

Save and Exit

  • CTRL-O : Save file
  • CTRL-X : Exit nano

Indentation (useful for Python)

  • M-} :  Indent Right
  • M-{ : Indent Left (unindent)


That’s all which I can share for today…


How to Install telegram-cli in Ubuntu LTS (*.deb)

I’ve compiled an easy to install Ubuntu *.deb package for telegram-cli.

PART 1: List of telegram-cli DEB package binaries

  1. telegram-cli_1.0.6-1_amd64.deb

Install *.deb package by running this command (on Ubuntu 14.04 LTS Trusty)

sudo apt-get -y install  libjansson4
sudo dpkg -i telegram-cli_1.0.6-1_amd64.deb

Running telegram-cli is as easy as typing


PART 2: Running telegram-cli

For first time login, you may need to key in the authorization code, the code will be sent to your mobile device to allow ‘telegram-cli’ to log as your username.
Once the authorization CODE has been entered, you are free to use telegram. Telegram use the concept of ‘peer’ (contact) to send messages instead of phone number. So in order to get a list of your peer, you need to run “contact_list” command.

> contact_list

To send message to a peer/contact (for example to Warrick Brown), just type

> msg Warrick_Brown "wassup, dude? want to hang out today?"

To quit, you can type

> safe_quit

How to Hide OpenSSH Ubuntu version from Nmap and other scanners

In Ubuntu or Debian, a default OpenSSH server will display OpenSSH version alongside with Ubuntu/Debian distribution banner:

$ telnet 22 
Connected to
Escape character is '^]'.
SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2

You can hide the identifying part of Ubuntu-2ubuntu2 from the server banner by editing /etc/ssh/sshd_config file, and adding “DebianBanner no” either at the end of the file, or just under “Port 22” configuration in “/etc/ssh/sshd_config

# What ports, IPs and protocols we listen for

Port 22
DebianBanner no

Save and restart OpenSSH server by typing

sudo service ssh restart

Now the response will just be:

Connected to
Escape character is '^]'.

Happy trying!

Further Reading: Ubuntu Server Administrator Reference

How to install NGINX with PageSpeed module in Ubuntu LTS / Debian

UPDATE: You can now install NGINX with PageSpeed in Ubuntu LTS with deb package:

PageSpeed modules are open source modules developed by Google Inc that can perform website optimization to ensure faster site delivery, automatically.

PageSpeed module is not included in NGINX installation in Ubuntu or Debian. So you need to recompile NGINX together with PageSpeed module, to enable its functionality.

You can install NGINX 1.8.0 with PageSpeed for Ubuntu 14.04 LTS here, using dpkg:
or you can compile it from source code using apt-get.

There are several steps to this method, first you need to get the latest nginx stable (or mainline) from PPA (optional)

#this step is optional, only if you want to get the latest Ubuntu version of nginx

sudo apt-get -y install software-properties-common

sudo -s

nginx=stable # use nginx=development for latest development version
add-apt-repository ppa:nginx/$nginx

apt-get update 

apt-get -y upgrade

Then, you’ve to install dpkg-dev, unzip utility and nginx source from apt repository

apt-get -y install dpkg-dev unzip

apt-get install nginx

apt-get source nginx

After that, you need to download PageSpeed module, this instruction is adapted from

**note replace ${NGINX_VERSION} with the version of NGINX available from apt-get, in my case – its “1.8.0”

export NGINX_VERSION=1.8.0

wget -c${NPS_VERSION}

unzip release-${NPS_VERSION}

cd ngx_pagespeed-release-${NPS_VERSION}-beta/

wget -c${NPS_VERSION}.tar.gz

tar -xzvf ${NPS_VERSION}.tar.gz

cd nginx-${NGINX_VERSION}

Install all build dependencies (your configuration may varies, but i keep it within default Ubuntu configuration.

apt-get -y install libpcre3-dev libssl-dev libxslt1-dev libgd-dev libgeoip-dev geoip-bin geoip-database libpam0g-dev zlib1g-dev memcached

Then configure nginx, remember to replace ${NGINX_VERSION} with your current version of NGINX. In my case, its “1.8.0”

cd nginx-${NGINX_VERSION}

./configure  --with-cc-opt='-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/ --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_spdy_module --with-http_sub_module --with-http_xslt_module --with-mail --with-mail_ssl_module --add-module=debian/modules/nginx-auth-pam --add-module=debian/modules/nginx-dav-ext-module --add-module=debian/modules/nginx-echo --add-module=debian/modules/nginx-upstream-fair --add-module=debian/modules/ngx_http_substitutions_filter_module --sbin-path=/usr/local/sbin --add-module=$HOME/ngx_pagespeed-release-${NPS_VERSION}-beta

After that, run make and make install


make install

The newly compiled nginx will be installed in “/usr/local/bin” without overwriting the original binary file.

Create nginx-pagespeed /etc/init.d file

Optionally you may duplicate nginx in init.d, and rename it to nginx-pagespeed, and stop the original nginx server

cp /etc/init.d/nginx /etc/init.d/nginx-pagespeed

sed -i 's|/usr/sbin/nginx|/usr/local/sbin/nginx|g' /etc/init.d/nginx-pagespeed

service nginx stop

You may also enable basic PageSpeed config in /etc/nginx/conf.d/

nano /etc/nginx/conf.d/pagespeed.conf

And add these basic PageSpeed config

#file /etc/nginx/conf.d/pagespeed.conf
        pagespeed on;
        pagespeed FetchWithGzip on;

        pagespeed FileCachePath /run/shm/pagespeed_cache;
        pagespeed RewriteLevel CoreFilters;

Save the file, and test nginx config, after that, start nginx-pagespeed service.

/usr/local/sbin/nginx -t

service nginx-pagespeed start

**Note: This instruction has been tested under Ubuntu 14.04 LTS with nginx 1.8.0 from ppa:nginx/stable respository. The LTS is chosen because it has much longer support for server, and nginx 1.8.0 supports both spdy 3.1 and latest PageSpeed.

***Please share any thoughts or opinion or suggested correction if this guide didn’t work for you. Thanks!!

Recommended Reading

Ubuntu One cloud storage discontinued

Read this: The once-hyped Ubuntu One cloud storage service has been discontinued. Canonical through its Ubuntu One website has stated that Ubuntu One file services will be shut down permanently effective 1 June 2014.


Users are being given time until 31st July 2014 to download and backup files from Ubuntu One before they will be permanently deleted. Additionally, the service shutdown will also affect Ubuntu One content and music store.

However, according to Canonical Blog, the shutdown will not affect Ubuntu One Single Sign On service, Ubuntu payment service or the U1DB database service.

My thoughts:
Personally, as I suspected early on – Ubuntu One is unable to compete with other Cloud storage competitors and thus decided to focus their efforts on other projects such as Ubuntu Phone project.

Additionally, I also won’t hold my breath on the Ubuntu Phone project as I find it quite hard for Canonical to find manufacturers that will carry Ubuntu OS on their phone. In my opinion, Ubuntu Phone depends too much on Android backend/platform which may risk legal entanglement in the future, or platform incompatibility should there are significant changes in Android platform in the future.

Top 5 things I do with my Ubuntu Linux

I haven’t had much time since I migrated my blog to a new VPS server. However, here is a little treat for all my readers out there. The top 5 things I do with my Ubuntu Linux:

  1. Surfing the internet
    Pretty obvious – I usually surf the internet using my Ubuntu Linux on my Desktop computer. I’ve a dual-monitor setup computer with Intel Core i5 CPU (12GB RAM), It is not a gaming pc, but I do occasionally play DOSBox games as well as Need For Speed: World from another operating system. The seamless Unity integration with the web intrigues me though, wished I had touchscreen monitor
  2. Developing Android Application
    The qemu-based Android device emulator runs nicely on Ubuntu, with no sign of lagging presents in other operating systems. Plus with 12GB of RAM, I can say that I could study and do mobile application with relative comfort. For Android 4.x development, I prefer to use the x86 images, because put less contraint on the CPU for skipping ARM-related code translation.
  3. Torrents
    Usually this is being done in parallel with other works. My current favorite bittorent client is Deluge. For some reason, I find Azureus/Vuze too cumbersome and I haven’t got around to use Transmission. I used to study bittorrent protocol in my spare time, but has since abandoned it when I realise that I’ve not much time to spend on side-projects anymore.
  4. Writing Manual
    I’m now in the process of writing a Lab Manual for those who just begining to learn about Mobile Computing. Although I wouldn’t call myself as an expert, I think every little bit of knowledge-sharing helps. I’ll promise I’ll share my progress with all of you sometimes at the end of the year. Though, I usually prepare my academic papers using Latex (IEEE templates), I choose to write my manual in LibreOffice, for reasons that I’m more familiar with WYSIWYG word-processor, plus, the publisher would prefer to receive the written manuscript in OpenDocument or Microsoft OpenXML file.
  5. Internet Radio
    Though I rarely if ever listen to MP3 in portable devices, I do listen to internet radio station from Rhythmbox. There are sizeable collection of preset Internet Radio station in Rhythmbox according to genre and age-group. I prefer to listen to trance or easy-listening radio stations.

There you go, the top 5 things that I usually do with my Ubuntu Linux. Nothing fancy, just that I prefer to use Ubuntu for reasons of application development. I’m a terminal-emulator typed guy. I prefer to switch/change the environmental settings using terminal emulator, something I find very easy to do in Ubuntu (or any GNU/Linux distribution for that matter).

Until next time…

No Official pre-press Ubuntu 13.04 CD/DVD will be distributed by Canonical

Previously as an effort to promote Ubuntu and Free Software, Canonical has made pre-pressed CD/DVD available for LoCo team to be distributed during release party or promo events.

But starting from Ubuntu 13.04 (Raring Ringtail), pre-pressed Ubuntu CD/DVD will only be made available only for LTS release (the next one will be 14.04 LTS ) from this point forward. This is in-line with Canonical policy to only concentrate on supporting Ubuntu LTS.

In the mean time, Canonical will continue to provide pre-pressed Ubuntu 12.04 LTS CD/DVD to Ubuntu LoCo until 14.04 LTS release in 2014.

source: Ubuntu Loco Council

Why I’m have not become an Ubuntu Member

By this time, I’ve already received dozens of question regarding why I’ve not applied to be an Ubuntu Member.

First and foremost, being an Ubuntu Member is cool. It is about being part of the greater Ubuntu Community officially. Being an Ubuntu members grants certain privileges such as email address and the privilege of having personal blog featured in the Ubuntu Planet.

However, I still have not applied or planned to apply to become an Ubuntu Member anytime soon, as I felt that being an Ubuntu Member carries great weight and responsibility towards the community, something that I felt in my current state would be difficult to do, since I hardly have extra spare time nowadays (so does the hiatus).

Secondly, as the Ubuntu Membership page have cleared out, Membership is not required for contribution, but contribution is required for membership. While I did contribute towards the Ubuntu community, I still thinks that Ubuntu community comes second place than my day-to-day responsibilities. I still felt that I couldn’t do much to deserves being an Ubuntu Member, therefore I elect to be an ordinary user who occasionally contributes back to the Free Software community.

Finally, all of you should note that this is my personal opinion and I still think being an Ubuntu Member is a good thing, I even encourage you to apply for it! However, as for me, I’m still going to hold off my thoughts of becoming one until I can find a valid reason to do so.