Learn BASH with me in 5 mins

I just started learning Linux bash from today. From my first impression of the language, I infer that it is a language with all the basic capabilities as of an infant high level language. May be I am right or wrong.Time will tell . We will keep going and keep discovering gradually. Let's start with the usual protocol of learning a language.

The HELLO WORLD program.


How to print things in shell. This is the first thing everyone wants to know while learning any language.

Anything that is not a variable is printable . And we print/echo it using the famous ECHO keyword

$ echo hello world
hello world


Printing a number.



$ echo 1
1
Printing a string with double quotes
$ echo "my name is arindam"
my name is arindam
Printing a string with single quotes
$ echo 'my name is Arindam'
my name is Arindam
Printing a number with quotes
$ echo '1' 1

Creating  Variables and recalling them.


So how can we store things. How to recall that stored value. How to change that value.

X=999

Note: There should be no spaces around the assignment operator (=). Also, there is no return value after the assignment statement is executed.

$ X=999

$ echo $X
999

$ $X
bash: 999: command not found

A simple = sign works great for assigning values but, the spaces around a important. Otherwise you will get an error.

To recall the value inside a variable, use the $ sign.
If you don't use the echo keyword and try to print the value by just a $ sign (people coming from languages like python would understand why someone would try such a thing).

Saving Strings in variable



$ X=arin

$ echo $X
arin

$ x="hi world"

$ x=hi world
bash: world: command not found

You can store a single word with spaces around without using quotes. But if there are spaces, then you need to use quotes. Other bash breaks down "x=hi world" as two commands x=hi and world. Obviously this doesn't work.

Dynamically changing value


$ echo $X
99

$ echo $((X+1))
100

What happened here. I wanted to use the variable X and get an incremented value of the same.
You need to use a double parenthesis in these cases. Note that this won't change the value of X to the new value.

Using Bash as a calculator



$ echo $((X*2))+$X
198+99

$ echo $(($((X*2))+$X))
297

This probably is an overkill but , if you need to do it, this is how you can.

From the first line, you can observe that , bash evaluates each section separately, and just displays their value in the same format. This is like interpretation


The second does the job , because we asked to evaluate the equation using $((equation)).
I think this looks messy and risky but, just for example sake, it works.

Another way , is to use the keyword "expr". Whatever is mentioned after this keyword become the expression to be solved/interpreted.

$ echo $(expr 5 + 5)
10

n=4
$ echo $(expr 4 * $n)
16


Iterations and LOOPS


Every body loves loops. Iterations are a part of every language. Bash provides the omnipresent FOR  loop and WHILE loop.


$ for num in 1 2 3
> do
> echo $num
> done
1
2
3

So here, we looped on a list of numbers.


X=1
while [ $X -le 99 ]
do
    echo $X
    X=$((X+2))
done

Here, I have printed from number 1 to 99 but only odd numbers.


Accepting input


Another common feature of any language is accepting an input from the user. We have the 'read' keyword for it.


read name
echo Welcome $name

Ranges

My reference: http://www.cyberciti.biz/faq/bash-for-loop/

How do deal with ranges. Bash has a syntax for that. {start..end}


for num in {1..50}
do
echo $num
done

Now , what if the end limit of your range, is inside a variable. You might think, I'll just do {1..$N}. Sorry that doesn't work. There is a better way to do this. If you know C syntax, then you must be familiar with this.

n=4

$ for ((i=1;i<=n;i++)); do echo $i; done
1
2
3
4


Ranges with Step


We want to add a step value. We can do it as {start..end..step}

$ for num in {1..10..2}; do echo $num; done
1
3
5
7
9

If condition with comparison operators



if [ $A -gt $B ]
    then 
        echo $(($A-$B))
else
    echo $(($B-$A))
fi

There are many operators available. Below table should be referred.


For string comparisons, the operators are different.


Example:


$ if [ 'Y' == 'Y' ]; then echo YES; else echo NO; fi
YES

$ if [ 'N' == 'Y' ]; then echo YES; else echo NO; fi
NO

Multiple conditions inside IF


There might be a condition when you have two or more possibilities for the if or else part to be true.

read D
if [ $D == 'Y' -o $D == 'y' ]; then echo YES; else echo NO; fi

Here, the -o stands for OR. Even || works for OR operation but the syntax changes slightly.

read D
if [ $D == 'Y' ] || [ $D == 'y' ]; then echo YES; else echo NO; fi

Also note, for AND operation , -a is used. Also && can be used.

Problem:

Find out if a triangle is scalene , equilateral or isosceles given sides of a triangle a, b, c.


Sol:


read a
read b
read c

if [ $a -eq $b -a $a -eq $c ];then
 echo EQUILATERAL;
elif [ $a -eq $b ] || [ $a -eq $c ]||[ $b -eq $c ];then 
 echo ISOSCELES;
else 
 echo SCALENE;
fi


Problem:


Find out the average to 3 decimals of accuracy. Given an array of numbers.


Input Format
The first line contains an integer, .
lines follow, each containing a single integer.
Output Format
Display the average of the integers, rounded off to three decimal places.

Soln:



read N
s=0
for ((i=1;i<=N;i++))
do
read temp
s=$((s+$temp))
done
printf "%.3f" $(echo $s/$N | bc -l) 

An early morning trek to Ghangad Fort

Ghangad is a short but exciting trek offering the thrill of trekking over difficult patches in portions and some heart trembling moments when you cling on to a thin wire of hope for support.
It great for training beginners. And the view is just splendid.

Duration : 30 mins - 40 mins

Why to choose this trek:

1) Great for only morning treks like Sinhagarh. It offers a mind view of two sides of the mountain .
2) Easy to reach. The route to Ghangad offers amazing landscapes from Tamini Ghat. So it's a bonus.
3) Don't need to plan ahead. Don't need to carry much stuff if you planning to return same day.
4) In rainy season, the waterfalls in the valley area are amazing. We plan to do it this rainy season.
5) Barely any crowd. We encountered no one. Absolute silence and just the wind blowing , animal sounds from the forest . It was just a trekker's dream come true.

Our Plan :

We started at 3:30 .
Climbed and reach back home by 12 AM .
It's an hour long journey . We went via Lonavala and came back by Tamini ghat. The roads are in good enough condition.  So no worries.

Ghangad Fort road
Road to the fort. The right side mountain is Ghangad fort.

Ghangad Fort Information boar
Information board 

Ghangad fort map
Map of the fort
Ghangad fort view sunrise
View of sunrise from the fort

Ghangad fort gate
The gate to the fort

The morning sun up from its sleep. Amazing view from Ghangad fort.
Panorama of the valley from Ghangad fort during sun rise
A huge fallen rock creating a cave. Best location for camping overnight.

View from inside the cave 
Our group 

At the gates

The landscape from the wall..This is shot of the valley behind the fort..Absolutely breath taking view.

Beside the water above..Me on the left..My friend Aditya on the right.
Panorama from the top of the hill..wide shot
On the top of the fort...amazing background

We walked towards the valley below...The view of the ghats from there are unbelievable.


Python List sorting with key argument explored

Everybody uses lists as an array to store values. List provide a lot of in-build features.

  • Sorting
  • Membership
  • Indexing
  • Iteration
  • reversing
  • Adding/Removing
  • Popping
  • Count

Lots of reasons to use lists. I think, one of the most used features is sorting. Internally , python uses Merge sort technique to sort the array items. But the sort method can be used in many other ways to have more control.

The python help says:


>>> help(list.sort)
Help on method_descriptor:

sort(...)
    L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;
    cmp(x, y) -> -1, 0, 1


Things to note: The sort method doesn't return anything. It saves the changes in the list permanently. Thats why it is faster than the method sorted

SIMPLE SORT


>>> l = ['c', 'b', 'd', 'a']
>>> l.sort()
>>> l
['a', 'b', 'c', 'd']

If elements are strings, they gets sorted by alphabetical order.

SORT IN REVERSE ORDER


>>> l = ['c', 'b', 'd', 'a']
>>> l.sort(reverse=True)
>>> l
['d', 'c', 'b', 'a']


Using the KEY argument.

Perhaps the most versatile of all is the "key" argument. The value of the key parameter should be a function that takes a single argument and it returns a key to use for sorting purposes. This technique is fast because the key function is called exactly once for each input record. 


Simple Sort


>>> l = ['c', 'b', 'd', 'a']
>>> l.sort(key=str, reverse=True)
>>> l
['d', 'c', 'b', 'a']


What above code shows is, I want to sort alphabetically by the rules of ascii , in reverse order. This is not so convincing I assume. Perhaps a much interesting example.

Sort by Length of string


>>> l = ['abc', 'b', 'ab']
>>> l.sort(key=len)
>>> l
['b', 'ab', 'abc']

In the above case, we are sorting by length of strings.

So we actually now have a list : [3, 1, 2] .

Hence the result,

['b', 'ab', 'abc']


Corresponding lengths: 

[1 , 2, 3]

Sort by case (Upper)



>>> l = ['abc', 'A', 'AB']
>>> l.sort(key=str.upper)
>>> l
['A', 'AB', 'abc']

When we specify str.upper, we are saying - Treat every element as UPPER CASE, then sort.

So we are sorting ['ABC', 'A', 'AB']

As a result, we get ['A', 'AB', 'ABC']

Sort by case (Lower)



>>> l = ['abc', 'A', 'B', 'b', 'AB']
>>> l.sort(key=str.lower)
>>> l
['A', 'AB', 'abc', 'B', 'b']

Sort by last letter



>>> strs = ['xc', 'zb', 'yd' ,'wa']
>>> strs.sort(key=lambda x: x[-1])
>>> strs
['wa', 'zb', 'xc', 'yd']

I want to sort by the last letter of each word. Essentially this is how we manually do it.

Step 1 : Extract last letter of each word and keep in a list
Step 2 : Sort that list
Step 3 : Relatively display the original list but sorted.

For the Step 1 , we have used a function created using lambda. This function accepts a string and returns it's last letter.

Zeros as least preference


I have a list of numbers with some zeros in it . I want to have the list sorted , but I also want all the zeros at the end.

Original list : l = [4,0,3,0,8,0,1]

Expected list after sorting: [1, 3, 4, 8, 0, 0, 0]

There are many ways to do it. I'll use what comes to my mind first.


>>> sorted(l, key=lambda x:str(x) if x == 0 else x)
[1, 3, 4, 8, 0, 0, 0]


Guess what's happening here? I am exploiting the fact that, as a preference, python will pick up integers first, then strings. So I converted 0 into '0'.
Here's the proof:

>>> ll = [3,2,3, '1', '3', '0']
>>> sorted(ll)
[2, 3, 3, '0', '1', '3']

Sorting a list of big string integers


I have a list of big huge integers in string form and I want sort that. The idea we can use here is:
We know a 2 length integer is likely to be bigger than a 1 length integer.


>>> l = ['1','2','3','56235434245634562345','556532', '84']
>>> sorted(l, key=lambda x: (len(x), x))
['1', '2', '3', '84', '556532', '56235434245634562345']

Essentially we are sorting a list of tuple.

>>> sorted([(1, 5), (1,2), (2, 0), (2, 4)])
[(1, 2), (1, 5), (2, 0), (2, 4)]

So minimal length numbers will get sorted first. Then next length follows and so on .


Sorting a list of dictionaries by a specific key


We have a list that has many dictionaries . All dicts has the same key . We want to sort the list by the value of this key.


>>> l
[{'a': 60}, {'a': 10}, {'a': 20}]

>>> print sorted(l, key=lambda x:x['a'])
[{'a': 10}, {'a': 20}, {'a': 60}]


Need more guidance? I found the google developers guide to be very good. Have a look.



One day trip to Malshej Ghat

Maharashtra offers a host of choices when it comes to hills ,valleys and forts.  Activities like trekking or rappelling are most popular here. 


Malshej is one of those places that will offer you its own specialty. 


  • Rocky mountains, deep gorges, 
  • Beautiful tunnels , roads snaking around. 
  • Uncountable waterfalls.
  • Dense forest and its habitat. 


It's a power package for a day. One day escape from the daily hassles of life. Western Ghats for you ladies and gentlemen.




How to reach:


A road trip will be the best option. You don't want to miss the chance of stopping anywhere you want and click pictures or just stare in awe. 




How to plan:

  1. Start at early morning 6 AM.
  2. Reach Malshej in 3 hrs.
  3. Straight away park at the MTDC.
  4. Have break fast at the restaurant inside.
  5. Stroll behind the hotel . There is a beautiful pathway made for tourists.





Walk way around the MTDC 

Find a good waterfall. Enjoy bathing in it. It's just awesome .



 Return home before night.

Best time to go:

Rainy season. June - August

Precaution:

Before you plan, check latest news about the place. It gets closed for days due to erratic landslides and various other natural disasters frequenting the area.

What to carry:

1) Camera with rain pouch.
2) Lots of water.
3) Change of clothes
4) Towels.
5) Food etc.

Suggestions:

Don't plan staying . Its extremely costly during peak months (Min 4000-5000 Rs). At night , you can barely see or venture outside your hotel. A window facing room is of no good at such weather.




Writing context managers using Python

We use. We forget. This is for myself so I remember the magic called Context Manager. You already must have used the "with statement" for file handling, threads, socket and other operations. I am going to talk about creating you OWN context managers.

The magic operator to be used is : @contextmanager. It can be imported from the module "contextlib"

To create a context manager, use the decorator contextlib.contextmanager


@contextlib.contextmanager
def getListCounts(x):
    try:
        from collections import Counter
        yield Counter(x)
    finally:
        print 'No of elements in the list : %d' % len(x)


Let's now use the above context manager 
   
Example 1:
>>> with getListCount([10, 10, 12]) as c:
 print "Element occurring the most is %d" % c.most_common()[0][0]

 
Element occurring the most is 10
No of elements in the list : 3

Example 2:
>>> with getListCount([10, 10, 12]) as c:
 print "Element occurring the least is %d" % c.most_common()[-1][0]

 
Element occurring the least is 12
No of elements in the list : 3

Python: Super class examples

Hi all. We are going to see some examples of usage of keyword 'super' here . 

Below code shows two classes Employee and Developer. A parent and a child.


class Employee(object):
    def __init__(self, first, last):
        self.first = first
        self.last = last
        print 'Employee: {0}, {1}'.format(first, last)

    def hike_category(self):
        hike = 0
        if self.grade == 'A':
            hike = (0.1*self.pay) + self.pay #percent
        elif self.grade == 'B':
            hike = (0.15*self.pay) + self.pay #percent
        elif self.grade == 'C':
            hike = (0.20*self.pay) + self.pay #percent
        return '{0},{1} gets {2}'.format(self.first, self.last, hike)

class Developer(Employee):
    def __init__(self, fname, lname, grade, pay):
        super(Developer, self).__init__(fname, lname)
        self.grade = grade
        self.pay = pay

Lets run the above program.

Results:

>>> d = Developer('arc', 'roy', 'C', 10000)
Employee: arc, roy
>>> d.hike_category()
'arc,roy gets 12000.0'


Observations and things to note


  • Above programming is done in Python 2.7. 
  • In 2.7, the class needs to inherit from object , otherwise it wont work.
  • The variable names can be different in both classes (In 2.7 only).
  • super needs to have same class name as first argument. 
  • The class instance 'b' can access all class variables of both classes.


A Winter's tale: First trip of the year to Himachal



DEV BHOOMI | LAND OF GODS | ABODE OF SNOW
Shimla city
Shimla City houses

Himachal has many meanings. And true to its meaning, I believe, the snow clad mountains is where the God's live.

Me and my wife made this 10 day trip from Jan 27th to Feb 5th 2017 starting from Delhi Airport.




The Plan

Day 1
Day 2
Day 3
Day 4
Day 5
Day 6
Day 7
Day 8
Day 9
Day 10
Delhi
Delhi to Shimla drive
Shimla
Shimla-Khufri
Shimla to Manali
Manali
Dharamshala
Dalhousie
Amritsar
Delhi

The Execution

  • We suggest you to start from Chandigarh. Reason being, it has a well-connected Airport, ISBT bus terminus and railway station.
  • Average journey time between cities is 7 hrs. Plan for 2 days stay each at Manali, Shimla and Amritsar. 
  • People starting from Delhi airport can catch a bus from airport itself (Indo Canadian bus...it was hell costly I admit...1800 Rs per head till Chandigarh) or from ISBT Kashmiri Gate (Book a HIMSUTA Volvo from here . It will cost around 1100 Rs per head). 
  • If you have not visited Amritsar, include that too in your plan. Otherwise, take an extra day at Dalhousie of Dharamshala to regain energy to travel back. 
  • Budget should be 22000 per head starting from Chandigarh. 
  • All hotels in all Himachal Cities provide breakfast and dinner (Only Veg) inclusive of prices. So don't worry about meal expenses. 

    The Journey

    Waiting at Pune airport. Flight got rescheduled. We left finally at 10 PM. 

    Waiting at Pune airport for our boarding call
    After reaching Delhi, we quickly caught the indo-canadian bus for Chandigarh in the hope of catching another bus for Shimla. The bus, I admit, was amazing but instant booking cost us a lot. Please book it online and get better prices.



    Next day we reached Chandigarh, contacted some Tour planners, and waited for our car to arrive while we raided on a nearby food joint and had awesome Parathas with huge cubes of butter and dahi.

      
    We wanted to eat just one each but ended up eating 5. Oops. 

    Our car arrived soon. A Mahindra Verito. Not bad. Driver was polite enough. We started for Shimla. Himachal here we come.

    First Glimpse of the Mountains


    Shimla

    The name Shimla is derived from the deity Shyamala Devi, an incarnation of Kali. Shimla is the capital of Himachal Pradesh and also the largest city in the state. It's at an altitude of 2206 meters above mean sea level. You can find pinedeodaroak and rhododendron trees all around the city.

    Shimla City houses at Sun set while we took the alley road to the Mall

    Shimla houses sunset view

    .

    Christ Church at night


    Christ Church Shimla Night Shot

    Shimla City Panorama from our hotel


    Shimla City Panorama

    At Khufri, taking a horse rise. Our young horse master. 

    Walking is not at all suggested. Get the boots, as the wet mud is knee deep


    MANALI


    On Road to Manali. 


      The mountain peaks had more snow now. The jungles denser. 

    Snow range on route Manali.
    Manali had received heavy snow in the past week . The roads were full of snow stacked around all dirty. It does create a mess I have to admit.

    Hadimba Temple



    I liked this place. Located between the woods , tall Deodar trees all around. There was also a forest area you can visit after purchasing a ticket. We loved it. 100 ft tall cedar trees all around. The sun barely gets an entry.
    The Tall Cedar tree heads were invisible to us.

    There is a small frozen lake in the middle of the woods. The whole scene felt like a setup of Game of Thrones behind the wall .


    Visit to Guru Vashisht Temple 

    At the parking point, where road to Vashisht Temple begins

    The hot water spring sounds tempting but, 10 or more people bathing in a water tank was not so  attractive.

    The Left wooden structure is the main temple

    In the day time, we visited the famous shopping mall or whatever it was. Its called "Club House". Everything is exorbitantly costly here. So warning. Don't buy anything here. I will say, it's worth a visit.

    Drifter's Inn & Cafe



    We were looking for lunch and I found this place called Drifter's Inn on TripAdvisor. You will have to walk on a steep road a bit to reach this spot (1.5 km from the club house). But I guarantee it's totally worth. We crashed right in.

    Meat balls with spaghetti
    Chicken burger with fries
    Cheese Mushroom.
    Irish coffee and some brandy.

      Every dish was tasty. We thanked our stars again. This was a lucky catch as every other place was closed and I feared the 1.5 km walk might go useless.

      Van Vihar. 



      This was a chance to get near the Beas river in all its glory. We saw few people rafting around in the shallow water. The local park is well maintained. A welcome break from the long journey. Also try a famous local dish available around its gates.

      The Tibetan Monastery


      My first ever monastery. I have never visited one before. We discovered this in the middle of the market around Mall road in Manali.
       

      The Manali Mall road

      Obviously at the end of the day, you will be looking out to shop and eat something. After all, Mall roads are the most happening places in every hill station. You can shop all kind of things here from Jackets to souvenirs. I found everyone wearing Jackets of brand "North Face" . Obvious duplicates. But at 1000 Rs, they are a steal.

      Dharamshala

      The first thing I wanted to see here , was the stadium. It looks awesome. What a back drop. I can't imagine how the players get to this place. It obviously must be awesome to play here. One thing to note is, no tourist stays at Dharamshala City. They stay at McLeodganj. I suggest you do the same. There's a good shopping street there too , so ladies,  please don't worry. Do try the local momos. Most residents are tibetans here , and the veg momo we tasted was I think, the real deal.

      We walked to a nearby temple and then to a water fall called Bhagsu's water fall. Then we visited Dalai Lama's residence. I was fascinated by this place. It's residents. People praying. Practicing Yoga. I'm loving it.

      River beas among mountains. The journey to Dalhousie is spectacular all the way.



      Dalhousie

      Our last spot. This is famous Chamba hills. Surrounded by the Dhauladhar Himalayan range. Absolutely spectacular. We took a stop just to stare all around us. Its hard to capture this in one frame. The hotels here are mostly British made bungalows converted. A taste of history perhaps.

      What we learned


      Himachal trip will always be a long trip. So planning is important. And we want to suggest you from our experience,  a few things.


      1. Shimla

      • Plan for  2 days minimum stay. 
      • At weekdays, you will find less crowd here. 
      • PLEASE choose a hotel near the mall, because you will frequent the mall a lot (I know that).
      • There are many good restaurants and shopping options around this area you don't want to miss.
      • Hotels here charge 300 Rs for room heaters . But I think they under powered to heat up a small room. So skip it. 


      Places to visit and tips related:

      The Mall 

      Tips:

      • Visit this in the evening. The lights look amazing. Night view of Shimla is priceless.
      • Take a walk on the famous street.
      • Try local made momos. They are quite tasty. Mostly they sell Veg momos only. 
      • There is a lift system to take you to the mall. There's usually a long queue and a ticket system to avail this facility. We took it the first time but never took it again. I would suggest you walk between the houses .
      •  Find your way to the top. Its fun and you get so many views from different angles. On the way, you will find so many interesting shops, food options. We tried the local Veg Momos here. They were so tasty. There is also a cake shop that sells English style cakes. They were amazing. We went there twice

      Jakhoo Temple 

      Tips:

      •  Please carry a wooden stick as monkeys pose a problem here. Don't carry any food with you. 
      • The 109 ft tall statue of Hanuman Ji is visible from a long distance. You might want to check that out from your hotel.
      • Carry any Prasad in a bag. Don't carry it in your hands.

      Khufri. 

      Tips:

      1) The only way to reach the main spot is by horse ride. DO NOT try to walk to this place. The road is an absolute mess.
      2) Rent boots. Do not use your own shoes.
      3) Ask the horse controller to be with all the way. Ask him to take you to the final gate. Do not let him drop you before that.
      4) Pay 500 Rs per head max to horse vendor and don't forget to note down his mobile number because you need to call him when you want to return.

      Summary : There are many other spots to visit in Shimla but I think that will take much more time. For a 2 day visit. This is as much as you can do. If you have more time, do have a look at this link for more info on other spots.


      2. Manali 

      • 2 days minimum stay.
      • Solang Valley and Rohtang pass are two major spots people want to see here. But conditions are unpredictable in winter here. And because of that, the roads get closed (We faced this). Please ask your package provider for details of conditions here.
      •  People planning for Manikaran, please note that its a 50 km journey up and down. So you need a full day to visit this spot. May be next time, Still there's a lot to do here. 


      Places to visit and tips related:

      Hadimba Temple

      Its a sweet walk to the temple. Do now miss the small forest entry which is on the right side of the temple. Most people miss it. 

      Adventure Activities

      Kullu is mostly for adventure activities. Paragliding , Rafting etc. At this time of the year, the river depth was not enough for a good rafting experience. We saw most boating crews just ...well....Boating around. So analyse the conditions before you choose to do so. 

      Vashisht Temple

      This spot is famous for the famous hot water baths. You will need some preparation to do this, And its pretty crowded. The water is not HOT , but I'll say WARM at most. If you are fine with taking bath with a lot of people around in a big tank, please do it. 

      Van Vihar

      This is a park near the river Beas. I'll suggest you to take a snack break here. Enjoy the river flowing close to you. 

      Summary: Manali too has a lot to do. Lots of travelling to spots around. So if you plan to visit most of them , plan at least 4 days. For 2 day visit, you can visit local spots and choose some of the distant locations . 

      3. Dharamshala

      • 1 day minimum.
      •  Dharamshala has nothing to see but McLeodGanj has a lot . So stay near this place.
      • Take a walk to  the Bhagsunath temple and Bhagsu Fall. 
      • Visit the shopping road nearby. Try again the local momos. They are Tibetan styled. 
      • Visit official headquarters of all Monastry. Dalai Lama's residence. This place is awesome. 
      • There's a micro pond called Dal Lake. It's an OK place. You might choose to skip this if you don't have any time. 

      Shopping Tips

      I usually dislike shopping for souvenirs but, when you are with your family, I think its better to ;) . 
      Major spots for Shopping are 
      • Road to Shimla Mall 
      • Manali Mall road & Club House
      • McLeodGanj Road 
      • Mandi Market (You will cross city en route Manali  for sure)

      What should you shop for

      • Good yet cheap jackets, duplicates of other brands. Get these from Manali.
      • Authentic Branded jackets. The collections for Jackets at these cities are much much better than our cosmo cities. 
      • Other winter gears, like fur caps, Kullu shawls and Jackets, Khadi shirts. 
      • The String of flags with Mantras . You can't miss this. 
      • Rhododendron soaps
      • Apple Cedar. This is something you won't find so cheap anywhere .  
      Places to eat

      Shimla: Cafe Shimla Times. The ambiance was awesome. There was a band playing. Liked how people crowded this place and enjoyed dancing & singing along. 

      Manali: Drifter Inn. It's ideal for snack style lunch. You will find all good hotels on the road to Manu Temple. 

      McLeodGanj and Dalhousie: It's better to stick to your hotel's kitchen food as there are only average options which are more of hotel , not restaurants. 

      Total Pageviews