Good Git!

Most used (but yet unremembered) git commands

TLDR;

1
2
3
gl #git log --oneline --decorate --graph --all
gll #git log --graph --pretty='%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --all
tig #A commandline git history viewer
Read more

Hello World

My very first post after a very very long haitus!

Too much has happened. It’s overwhelming.
The hope is with this blog sanity prevails the world becomes a happier place.

First things first :

  1. Test the powers of Hexo and come up with a URL scheme
  2. Import all previous blog (or at-leat point to them)
  3. Ensure all DNS setting are properly set
  4. Test if the blog works online
  5. First write about why it took me so long to write a blog and how and why I am so thankful hexo exists

Of course - if you know me you know that 3 happens first!

Also, to copy over my other blogs:
https://sahilahuja.wordpress.com/
All blogs here: https://www.blogger.com/profile/01969448586664126777

The point of living

You have been warned. These are random thoughts.

After a lot of self evaluation, (or by asking a 5 year old kid), one realizes that the point of living is just being happy.

“Don’t worry, be happy!”

But then, why us? Any one else could have been happy in our place.

One answer to this argument could be: Why bring about a change? You think you are special? Let the world be as it is. Our place in this world is to just live and let live.

Then I guess the answer is - it depends on what you want to be. Special or not so special. Do you want to bring about a change and maybe (not always) sacrifice your happiness (a.k.a. chill) ?

Hard core argument finding maniacs (spiritual gurus) could again point out “Beta, everyone is special” and maybe add it with “Every ant has a part to play in this world”.

I give up then.

Bangalore International Airport Shuttle service timings and route

Their website sucks. [as on January 25th 2009].

And collecting information from different sources was NOT fun.

So here I am assimilating all steps at one place:

For routes:
http://www.btis.in/airport#
or

http://www.flickr.com/photos/rednivaram/2541783270/

For timings:
From airport to Bangalore, here’s the pic:

http://www.flickr.com/photos/rednivaram/2540963595/

from Bangalore to airport, there’s no website. I called up Just Dial (080 23333333) and they mailed me this info:

Building : Bangalore International Airport
Area : Devanahalli
Pin : 562110
Tel. : 22952422, 22952522, 12667
Mobile : 9480815422, 9480815799, 9480816800
Extra Info: Route Numbers With Timings** Towards Bangalore International Airport Dedicated Bus Service Vayu Vajra & Suvarna
=======================================

Bus Tariff:

A.C. Vayu Varja : Four Flat Fares Of Rs. 200/-, 150/-, 125/-, 100/- .
Non A.C. Suvarna : Three Flat Fares Of Rs. 100/-, Rs. 80/- & Rs. 50/
=======================================

Bus From To
bias 1 Hebbal Ring Road Bangalore International Airport
bias 2 Mysore Road Satellite Bus Stand Bangalore International Airport
bias 3 Jeevan Bhima Nagar Bangalore International Airport
bias 4 Hal Old Airport Bangalore International Airport
bias 5 J P Nagar 6Th Ph Bangalore International Airport
bias 6 Kadugodi Bus Station Bangalore International Airport
bias 7 Koramangala Bangalore International Airport
bias 8 Electronic City Bangalore International Airport
bias 9 Kempegowda Bus Station Bangalore International Airport
bias 11 Chikkalasandra Bus Stand Bangalore International Airport
bias 12 Kuvempu Nagar (Btm Lyt) Bangalore International Airport

bias-1
bial To Hebbala
departure From :Bangalore International Airport

0650 0715 0740 0805 0830 0920 0945 1030
1055 1120 1125 1210 1235 1300 1325 1350
1415 1440 1505 1550 1615 1640 1705 1730
1755 1820 1845 1910 1935 2000 2025 2110
2135 2200 2225 2250 2315 2340 0005 0210
0235 0300 0350 0415 0440

hebbala To Bial
0600 0625 0650 0715 0740 0805 0830 0855
0920 1010 1035 1120 1145 1210 1235 1300
1325 1350 1415 1440 1505 1530 1555 1640
1705 1730 1755 1820 1845 1910 1935 2000
2025 2050 2135 2200 2225 2250 2315 0120
0145 0210 0300 0325 0350

bias-2
bial To Mctc Bus Stand
departure From :Bangalore International Airport

0600 0700 0800 0900 1000 1100 1200 1300
1400 1500 1600 1700 1800 1900 2000 2100
2200 2300 2400 0100 0200 0300 0400

mctc Bus Stand To Airport

0600 0700 0800 0900 1000 1100 1200 1300
1400 1500 1600 1700 1800 1900 2000 2100
2200 2300 2400 0100 0400 0500

bias-3
bial To Jeevanbhimanagara
departure From :Bangalore International Airport

0600 0615 0630 0645 0650 0715 0735 0755
0810 0825 0840 0910 0925 0940 1010 1025
1035 1105 1120 1135 1220 1235 1245 1320
1335 1335 1420 1435 1445 1515 1530 1545
1615 1630 1645 1700 1745 1800 1825 1845
1855 1925 1940 1950 2020 2035 2050 2120
2135 2145 2300 2335 2350 2400 0045 0130
0230 0300 0410 0440 0510 0525 0545

jeevanbhima Nagara To Bial

0615 0630 0645 0715 0730 0745 0830 0845
0900 0910 0925 0940 1025 1040 1055 1125
1140 1155 1205 1225 1240 1250 1320 1335
1345 1435 1450 1500 1535 1550 1605 1635
1650 1700 1730 1745 1755 1825 1840 1855
1925 1940 1950 2020 2050 2120 2135 2150
2230 2330 0045 0100 0145 0225 0255 0325
0340 0355 0410 0425 0440 0455 0510 0525
0550

bias-4
bial To Hal
route No.bias-4 Bial To Hal Old Airport departure From Bial

0500 0600 0700 0800 0900 1000 1100 1200
1300 1400 1500 1600 1700 1800 1900 2000
2100 2200 2300 2400 0100 0200 0300

hal To Bial

0500 0600 0700 0800 0900 1000 1100 1200
1300 1400 1500 1600 1700 1800 1900 2000
2100 2200 2300 2400 0100 0300 0400

bias-5
bial To J.p. Nagar 6Th Phase
departure From Bangalore International Air Port

0610 0625 0640(V) 0655 0710 0725 0740V 0820(V)
0835 0850 0905 0920(V) 0935 0950 1005 1020(V)
1035 1050 1105 1120(V) 1135 1150 1205 1220(V)
1235 1320(V) 1350 1405 1420(V) 1435 1450 1505
1520(v) 1535 1550 1605 1620(V) 1635 1650 1705
1720(v) 1815 1830 1845 1915 1930 1945 2015
2045 2115 2145 2215 2300(V) 2315 2400(V) 0015
0045 0100(V) 0015 0130 0200(V) 0230 0300(V) 0340
0410 0440(V) 0510 0540(V)

j.p. Nagar 6Th Phase To Bial

0600(v) 0615 0630 0645 0700(V) 0715 0730 0745
0800(v) 0815 0830 0845 0900(V) 0915 0930 0945
1000(v) 1100(V) 1115 1130 1145 1200(V) 1215 1230
1245 1300(V) 1315 1330 1345 1400(V) 1415 1430
1445 1500V 1515 1610 1625 1655 1710 1725
1755 1825 1855 1925 2040(V) 2055 2125 2140(V)
2155 2225 2240(V) 2255 2310 2340(V) 0005 0040(V)
0120(v) 0150 0220(V) 0250 0320(V) 0350 0405 0420(V)
0435 0450 0505 0520(V)

bias-6
bial To Kadugodi Bus Station
departure From Bial

0440 0540 0640 0740 0830 0930 1030 1130
1230 1430 1530 1630 1730 1830 1930 2030
2130 2230 2330 0045

kadugodi
0600 0700 0800 0900 1000 1100 1200 1300
1400 1500 1655 1745 1855 2000 2055 2145
2245 2400 0100

bias-6
bangalore International Air Port To Kadugodi Bus Station
departure From Bial

0440 0540 0640 0740 0830 0930 1030 1130
1230 1430 1530 1630 1730 1830 1930 2030
2130 2230 2330 0045

departure From Kadugodi
0600 0700 0800 0900 1000 1100 1200 1300
1400 1500 1655 1745 1855 2000 2055 2145
2245 2400 0100

bias-7
bangalore International Air Port To Koramangala
departure From Bangalore International Air Port

0600 0630 0700 0730 0800 0830 0900 0930
1020 1050 1120 1150 1220 1250 1320 1350
1420 1450 1520 1550 1620 1650 1720 1750
1820 1850 1920 1950 2020 2110 2120 2150
2240 2310 2400 0040 0130 0220 0345 0430

departure From Koramangala

0610 0640 0700 0735 0820 0850 0920 0950
1020 1050 1120 1150 1220 1250 1320 1350
1420 1450 1520 1550 1620 1650 B 1750
1820 1910 1920 1950 2040 2110 2140 2210
2230 2300 2330 2400 0420 0450 0525 0540

bias-8
bangalore International Airport To Electronic City
departure From :Bangalore International Airport

0310 0500 0625 0715 0800 0840 0925 1010
1055 1135 1240 1355 1445 1535 1620 1705
1745 1825 1935 2015 2100 2145 2230 2315
2355 0040

departure From :Electronic City

0110 0200 0300 0505 0550 0630 0730 0815
0855 1010 1105 1220 1305 1350 1430 1530
1630 1745 1830 1915 2015 2115 2230 2330
0040

bias-9
bangalore International Air Port To Kempegowda Bus Station
departure From Bangalore International Air Port

0615 0725 0755 0825 0925 0855 0925 0945
1015 1045 1115 1145 1215 1245 1325 1355
1425 1455 1525 1550 1615 1645 1715 1745
1815 1905 1935 2005 2035 2105 2155 2225
2255 2320 2325 2355 0020 0105 0120 0135
0205 0220 0235 0305 0330 0335 0405 0430
0435 0505 0535

departure From Kempegowda Bus Station

0600 0630 0635 0700 0730 0735 0800 0820
0825 0850 0920 925 0950 1020 1050 1115
1200 1230 1300 1330 1400 1425 1450 1520
1550 1620 1650 1740 1810 1840 1910 1940
2030 2100 2130 2200 2230 2340 1210 1240
0110 0140 0230 0300 0330 0400 0430 0440
0500 0540

bias-11
bangalore International Air Port Tochikkalasandra Bus Stand
departure From Bangalore International Air Port

0520 0635 0750 0830 0935 1030 1125 1220
1300 1425 1520 1620 1720 1830 1930 2030
2130 2210 2330 0045

departure From Chikkalasadra Bus Stand

0430 0520 0600 0705 0800 0900 1000 1050
1155 1300 1400 1500 1620 1655 1750 1850
2000 2120 2240 0330

bias-12
bangalore International Air Port Tokuvempu Nagara (Btm Layout)
departure From Bangalore International Air Port

0415 0520 0620 0720 0820 0920 1040 1240
1340 1440 1620 1720 1820 1920 2020 2140
0045 0230

departure From Kuvempu Nagara (Btm Layout)

0415 0520 0610 0720 0830 0940 1030 1140
1240 1450 1610 1710 1820 1930 2025 2130
2245 2400

Creating a super-pendrive

Hi,

Its been really long since I blogged. Before going ahead, want to tell you that will be posting my endeavours on running virtual machines soon.

This, however, is my experience/guide for creating a super pen drive (a.k.a. a usb disk that if booted from presents a grub menu with options - GParted, Fedora, .. and any other linux distro hopefully, and has Fedora persistence, and has a spare partition too for you to use it as a normal pen drive).

It wasn’t as straight forward as I thought (like… all other things).

Steps:

  1. Decide the partitioning layout and partition the pen drive.
  2. Install grub on one partition
  3. Install GParted on another
  4. Install Fedora on another
  5. Install grub again on the partition in step 2 :P, and setup grub.conf
  6. Sit back, and enjoy (may need to crouch forward in some cases.. )
    A super neat trick:

To check at any time how you pen drive would behave if you boot from it, use the command : qemu -hda /dev/sdb -m 256 -vga std

This command reduced my research time to one third.

1) Decide the partitioning layout

I used GParted on my Fedora installation (on my harddisk) to set up the partition of the pen drive.

2) Install grub on one partition

Make sure you manually mount the grub partition. The /media/something folder in which it gets mounted automatically gave me some trouble. So unmounted it from there, and mounted /dev/sdb5 to /mnt/usbgrub

grub-install --no-floppy --root-directory=/mnt/usbgrub/ /dev/sdb

3) Install GParted on another

Use UNetbootin for GParted

4) Install Fedora on another

Need to make sure that usb disk is ext3 before doing this. When I did this on a vfat disk, I got an “error 22” when trying to boot from the usb disk.

Use liveusb-creator or live-iso-to-disk for Fedora.

Persistence is buggy according to http://forums.fedoraforum.org/archive/index.php/t-219250.html so instead, a better solution is to directly install fedora on the pen drive on a separate partition, like in http://linuxsoftwareblog.com/blog/?p=156

5) Install grub again on the partition in step 2 :P, and setup grub.conf

1
2
3
4
5
6
mount /dev/sdb5 /mnt/usbgrub/
grub-install --no-floppy --root-directory=usbgrub/ /dev/sdb
Now, to setup the grub menu:
cd /mnt/usbgrub/boot/grub/
cp /boot/grub/grub.conf .
cp /boot/grub/splash.xpm.gz .

gedit grub.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,1)
#          kernel /vmlinuz-version ro root=/dev/mapper/VGSahil-LVRoot
#          initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,4)/boot/grub/splash.xpm.gz
hiddenmenu
title Fedora (2.6.30.8-64.fc11.i686.PAE)
root (hd1,1)
kernel /vmlinuz-2.6.30.8-64.fc11.i686.PAE ro root=/dev/mapper/VGSahil-LVRoot rhgb quiet
initrd /initrd-2.6.30.8-64.fc11.i686.PAE.img

title GParted Live
root (hd0,5)
kernel /live/vmlinuz1 boot=live union=aufs    noswap noprompt acpi=off irqpoll noapic noapm nodma nomce nolapic nosmp ip=frommedia vga=normal
initrd /live/initrd1.img

title Omega 11 Live
root (hd0,6)
kernel /syslinux/vmlinuz0 root=/dev/sdb7  rw liveimg quiet  rhgb
initrd /syslinux/initrd0.img

Digikam Caveats - things to make sure using Digikam

I have been bitten. And so I post this in the hope that some needy soul finds this before he/she/it gets bitten too.

Problem: Digikam saves image tags (ratings/captions that you spend hours editing) in its internal database. When you switch to a newer linux version, lose this information - unless you are careful enough to copy over the digikam.db4 file - which I was. The second problem is that if you move around or copy your files using a file browser, you lose this information ( !!!! ), and digikam doesn’t allow copy of albums (!!).

Solution:

  1. Specify the location of your digikam.db4 file as the root directory of you photo library. This way, when you move your library, you have the digikam database with you.This can be configured through digikam Configuration > Collections.

  2. The most important step (which digikam should have made default according to the Principle of least astonishment)

    • Enable the all options starting with “Save” in digikam Configuration > Metadata. This would save all tags, ratings, captions and copyright information directly in the image instead of relying on digikam database for it.
      digikam-metadata-setting
    • Add author and copyright information in digikam Configuration > Identity. I put the following there:
      • Author: Sahil Ahuja
      • Credit: Sahil Ahuja
      • Source: http://sahilahuja.wordpress.com
      • Copyright: CC BY 3.0
        digikam-identity-setting
        These steps will ensure that from now on all you files get properly tagged, the way you mean them to be.

What about the images I have already tagged, captioned and rated?

After these setting are applied, digikam enforces them only for images you write to from now onwards. For images that are already in your library, we need a write operation on them to embed the metadata into the files.

This can can be done by creating a custom search that matches all possible ratings one by one, and right clicking and assigning the same rating again. Do the same for all tags too. And now all your metadata should get embedded in the file. Voila!

digikam-customSearch-rating

httpd with SElinux

Giving httpd access to other folders (apart from default SElinux allowed folders):

  • system-config-selinux rocks!!
    Go to System-> Administration -> SELinux Management (or system-config-selinux from command line).
    Type httpd in Filter and press enter. You will see that files that allow httpd write access have the Selinux File Type httpd_cache_t:s0. So.. now you know what to do right? Say you want to give httpd write access to folder /var/lib/dokuwiki/data/cache, then add a new file labelling using the Add button with the following details:
    File specifications: /var/lib/dokuwiki/data/cache(/.*)? File Type: all files SELinux Type: httpd_cache_t MLS: s0
    and then
    restorecon /var/lib/dokuwiki/data/cache

OR

  • Go to /var/lib/dokuwiki/data and apply the selinux file type to cache directorychcon -R -t httpd_cache_t /var/lib/dokuwiki/data/cache
    And now, httpd should have write access to this folder.
  • *Running httpd on other ports:**
    Open /etc/httpd/http.conf and change
    Listen 80
    to
    Listen 81

If you use VirtualHosts, you need to change the ports there instead (<VirtualHost *:81>)
Giving httpd access to other ports:
Go to Network Port in SELinux Administration and filter of “80” and press enter. You will see an entry for http_port_t. Create a similar new entry for port 81 for SELinux Port type http_port_1.
And that’s it.
Links to posts that helped me:
Dan Walsh’s Blog

Notes on SElinux

Making Fedora rpms/yum work - Offline

This is guide relevant to those who wish to spread fedora to friends and loved ones who don’t necessarily always have an internet connection (or a good one atleast). The problem faced in such situations, almost always (talking from my experience), is that there are a huge number of rpms that need to be downloaded to make fedora capable of playing media, and fill it with good stuff like k3b, amarok etc.

This isn’t always possible with the skimpy internet connections that our not-so-tech-savvy aunts have. (We’ll assume that it is our aunt on whose system we need to install fedora for the sake of this guide.)

So, I devised a way of spreading fedora to our aunt’s system, without getting embarrassed  by that fact that we weren’t able to run mp3 on their system.

The way to do this, is to install a fresh copy of fedora on our system, and then bring it to perfect shape by installing many more rpms, and while doing this, keeping a copy of the rpms required, and then copying this repository of rpms (which we are sure don’t require any more rpms as dependencies as we install them on our own system in offline mode) on a pen drive and taking it along with the fedora installation media to our aunt’s home. And after installing fedora on her system, we simply install all the rpms on her system.

Steps:
On our system:
Download all rpms required for the extra packages (the package rpms + dependencies)
yumdownloader --destdir=rpmsForAunt --resolve rpmName(s)

OR

create a service pack of all pending updates or certain rpms using gpk-service-pack
yum install gnome-packagekit-extra

OR

Edit /etc/yum.conf and change the value of keepcache to 1. After the update is done, the downloaded rpm files then can be found in (and copied from) subfolders named “packages” in /var/cache/yum. When you’re done with them you can get rid of them to save disk space with yum clean packages.
On our aunt’s system:

  1. Install fedora.

  2. Install the extra downloaded rpms:

    1. You need to disable all repositories before yum localinstall will work without net access. To do so,
      go to System > Administration > Add/Remove Software and go the System > Software Sources and **uncheck **all sources.
    2. Installing the rpms:(1 : see footnote)
      cd rpmsForAunt; yumlocalinstall --nogpgcheck *
      The above command is to be run for every category of rpms below after copying the resultant directories on our Aunt’s system.

For getting all updates:
I wrote a script for downloading all updates (after a fresh install) to a directory:

1
2
3
4
5
for i in `yum list updates | grep fc11 | cut -d ' ' -f 1`
do
echo Now downloading rpms for package $i
yumdownloader --destdir=localUpdate --resolve $i
done

For getting all media rpms:

1
2
3
4
rpm -ivh http://rpm.livna.org/livna-release.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-livna
rpm -ivh http://linuxdownload.adobe.com/adobe-release/adobe-release-i386-1.0-1.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-adobe-linux

(the above is required only so that _you (and not your aunt) _can download the rpms)

yumdownloader --destdir=localRpmsForMedia --resolve libdvdcss vlc flash-plugin xine xine-lib-extras xine-lib-extras-freeworld mplayer mplayer-gui gecko-mediaplayer mencoder amarok rhythmbox gstreamer-plugins-ugly gstreamer-plugins-bad gstreamer-ffmpeg audacious audacious-plugins-freeworld* k3b

A few more rpms that I use:

yumdownloader --destdir=localRpmsOther system-config-lvm gparted digikam m17n-db-*

(1)I faced an issue while bash was updated using this method. It said transaction failed.

To resolve this, I ran

--clean
1
rpm -e bash

The above command listed two bash versions (I don’t remember the version numbers), on saying rpm -e bash.version1, it said there are many dependencies, then I tried rpm -e bash.version and it worked. Then, I went back to the yumlocalinstall step and then that worked.

India, and Mr. God

So long since I have written anything. And there’s so much I want to write.

But I ll write about what’s on the top of my mind right now.

Yesterday (Diwali), Rajni aunty, mom’s friend, came to our house. Her son, (Mr. X we’ll call him) went straight to everyone’s feet wishing them Happy Diwali, conjuring a smile on everyone’s face as they blessed him (I know, a strange custom. Hopefully will be prevalent only for one more generation). Then he dashed towards the glass table where we had kept crackers we had dried all day long on the roof. We didn’t buy any crackers this year, we used only what we had from last year.

We had a special matchstick that was a mini-sparkler. Mr. X took that out. I don’t know what possessed him, but what he did next was insane. He lit the match stick, on top of the stack of crackers.

The crackers caught fire. Yes, inside my house. There was a stack of loose electric crackers that caught fire and thus were lighting each other. And all of them started bursting one after the other. The whole commotion went on for around a minute after which the electric crackers ran out. After the smoke settled, I saw a few atom bombs (green coloured crackers filled with gunpowder tightly wrapped with rope) lying on the glass table.

I couldn’t help thinking what might have happened had that the atom bombs gotten lit on the glass table. (Anyone heard of pipe bombs used in delhi blasts? A Hint : Its the shreds that cause the maximum damage. Not the shockwave)

A question to “modern” parents : should children be beaten up for their misdeeds? You decide.

Now, coming back to the title of the post. After the smoke settled, Mom took a broom and swiped all the leftovers to one side. (Our sofa got burnt partially). After swiping the burnt cracker papers to one side, as she was about to swipe them out of the door, Mr. X’s mom says “Don’t swipe them out of the house. It’s considered a sin to clean the house during Diwali.”

After all this. I don’t think God would mind.

Will India ever prosper? Not until our value system and reason is so deeply screwed up with religion and baseless customs.

Here’s an article I read minutes after writing my post, reinforcing what I just wrote.