Big temple City

On the either side of the Highway are Lush green paddy fields far and wide, we are now entering the rice bowl of ‘Tamil Nadu’ and the roads lead to the ancient city of Tanjore. Named after an Asura who was killed at the place; this city even after a thousand years is bustling with activity and devotion. Tanjore is today identified for the Brihadeshwara Temple, a superstructure dedicated to lord Shiva.

Rice Fields of Thanjavur

 

IMG_0083

View of the Brihadeshwara dome as soon as one enters the city.

 

Thanjavur first came to prominence as the capital city of Rajaraja, the greatest of the Cholas. At his peak he ruled over an empire whose area spanned more than that of India, conquering many south east Asian countries. The might of conquests led to prosperity of the Chola kingdom, in turn sponsoring many a grand temples. There can be found Chola temples in places as far away as Bangalore. It was in Thanjavur that the most magnificent and spectacular of their temples Periya Kovil also known as the Brihadeshwara was erected. A high domed temple with beautiful carving on it walls. The temple today still lies at the heart of the city like it must have at its heyday. Most of the structures standing today like the surrounding walls were not built by the Chola’s. They were added much later by the likes of the Nayaks and the Marathas. They do not figure in the list of architectural marvels, instead it is pretty ordinary when compared to any other South Indian temple. What stands out is the central granite complex with its towering Gopuram(the dome). The Gopuram rises with a tapering end, with a 13 ft Vimana carved from a single stone at the top. The slant of the Gopuram is decorated with carvings of mini Vimanas(tip of the Gopuram right above the inner sanctum) on layers of platform like protrusions. It is as if these are sub structures or lego parts of the whole. The sight of the Gopura even from a distance evokes a surreal feeling. The architecture rivals the gopuram of Madurai in size and sculptures of Belur in complexity. one wonders how such a structure could have been erected at such a height at a time when technology was very primitive. The secret of Brihadeshwara’s construction is simple but definitely not easy. Gradually ascending roads from as far as 9km away were built so that artisans could work at the desired height and required building material would reach through carts and horses. Taking into account that all this feat was achieved ten centuries ago makes this architecture a wonder to ponder over. The base of the sanctum is decorated with an inscription of records, laws and tributes. Much of what we know about the Cholas come from similar writings found in the various temples.This is proof to how life during the Cholas revolved around the temple.

Raja Raja the greatest of the Cholas.

 

IMG_3832

Sun setting over the temple complex.

 

IMG_3819

An artist’s rendering, the construction of Brihadeshwara Dome.

 

Among the sculptures of the temples, an interesting one is that of the Buddha attaining Nirvana under the Bodhi tree. Something which immediately strikes as ‘out of place’. The story goes that RajaRaja built the Big temple after he had a dream when he was on a campaign in the Buddhist city of Anuradhapura, Sri Lanka. Hence the sculpture evokes the memory of the fateful dream. Dusk is the best time to visit the temple as the scorching south Indian sun would have calmed and the temple takes on a magnificent orange glow. To add to it are thousands of pilgrims who flock to the temple like their ancestors must have for a millennium. For them it is more of a holy site and less of a historical one. The center of their devotion is the 13ft Linga placed in the holy inner sanctum. The inner architecture of the temple follows a complete anti pattern of it external looks, made of plain uniform granite. As if intentionally kept blank to remind everyone that the all powerful lord would not care less for your grand structure of ego. Making way through a small crowd, one catches a glimpse of the Linga, the center of attraction in Tanjore for over a thousand years. It is at this moment one is transported back to the kingdom of the Cholas,and a city of Godliness and glory. Such is the Brihadeshwara that it is a place of spirituality interwoven with history with an almost mythical grandeur. With Vibes of Power, Ego and Tragedy, there is also peace to be found, if that is what one seeks.

 

Note:Thanks to Sharath,Ajay and Pai for the help with proof reading.

A place that was once Malgudi

For a generation which grew up on doordarshan, Malgudi days was equivalent to an epic, no less important than the Mahabratha or the
Ramyana. Shankar Nag’s Small Screen adaptation of RK Narayans writing was a very fitting tribute to one of the greatest Work of English Literature from India. Complete with S Vaidyanthans beautiful background score, RK Laxman’s Carrigraphs or master Manjunath’s depiction of the mischievous Swanithan. But Nag achieved artistic perfection by bringing Malgudi to life, which quite arguably  would have been very close to Narayan’s Imaginations.

Malgudi could have been any small town in south India, but Shankar Nag’s imagination choice was a tiny hamlet  named  Agumbe in the Shimoga district of  Karnataka.  Situated in the western Ghats and  with one of the highest rainfall in India, second only to Cherapunji, Agumbe still remains a nature lovers paradise. It was in this small village that Malgudi came alive, The Town square, Swami’s School and much of Malgudi was shot here. The tile roof building and lush country side must have made it a very ideal candidate.  The televised images of the ‘Name less’ and lawleys statute is soldered into us as if it was exactly as in Narayan’s head. Such is the power of Television , that it paints a beautiful graffiti  but leaves little to our imaginations.

The reason to not only see it but also experience it is what made me go to Kasturi Akkas, Doddamane in the center of Agumbe. This and the Agumbe center square is the only thing that remains of Nag’s Malgudi. The house is currently converted into a home stay for flashy tourists like me and the hosts were more than welcome for any random stranger to go check out their house. Although I was out rightly violating thier privacy they were more proud of their heritage than irritated.  An old Man sitting in the veranda proudly explained me how the house has been used for shooting not only TV shows up also Movies more than a couple of times. Hearing the Man I continued on my journey experiencing a piece of Malgudi.

 

Play Review: Alice in Wonderland

What do you do when life has hit the wall, and routine has sucked the life out of you? You Imagine a world with infinite possibilities , you dream of wonderland. This is no ordinary place, here every day objects either become your gateway for a magical trip or attain higher dimension than their mortal purpose. Tram Theatre’s  Adaptation of ‘Alice in wonderland’ is an attempt to use objects and puppets as a medium to tell stories. This is a children play, yet it has got enough substance to capture a grown person’s attention.  Chief among them, is a brilliant improvisation of ‘Object Theatre’ , adding a lot of special effects to the overall feel. The plot has a very Indianized feel and strays quite a bit from the original layout of  Lewis Carroll’s Wonderland. The 100 plus children in the audience were  captivated by the  absurd world created in front of them, their discipline and silence was proof for this. Overall a excellent play if you want to introduce your kids the world of theatre.

Rating: 4/5 .

Lesser know AngularJS directives

I have been working on Angular for the past few months and have quite fallen in love with its approach to frontend development.One of the most awesome things in angular is its approach towards creating reusable HTML attributes and elements through ‘Directives’. Along with letting you write your own custom directives, angular ships with a lot of default directives. while some are helpers like ng-show,ng-class
others ng-model ng-src are bound with angular internals. This blog post is a list of a few lesser known yet useful directives.

ng-if

From an aesthetic point ng-if works similar to ng-show and ng-hide, but instead of hiding the Dom element it selectively adds or removes it from
the DOM tree based on whether the expression supplied it true for false. This is use full because unlike hide and show, the removed element
will not be collected when using css selectors.

ng-class-even/ng-class-odd
While in ng-repeat, we can selectively add classes to the repeated element based on whether the index of the element is odd or even.
Bonus:$index gives the index of the element in the iterator.

ng-change
ng-change lets you to trigger a function or evaluate a expression when the text changes in the particular text box. For the ng-change to work,
the text box should be binded to a model.

ng-dbclick
db-click handles double click events within an element and lets you invoke a function or evaluate a expression when it is done.
similar:ng-mousedown,ng-keypress.

ng-style
Lets you add inline styles to your elements. although inline styles are evil and should be avoided, this cool as you can dynamically update
your style attribute values based on a model binding.

ng-pluralize
The pluralize directive lets you pluralize your content based on en-US localization rules.

Example


<span>{{group.members_count}} <ng-pluralize count='group.members_count'.
when="{'1': 'Member',
'other':'Members'}"></span>

view raw

gistfile1.html

hosted with ❤ by GitHub

Based on the value of members_count. member or members is rendered.
ng-cloak
When the browser renders HTML if AngularJS is not loaded completly, the bindings will show up as very ugly curly braces.
This directive acts as blanket from displaying angular binding syntax before Angular JS is loaded into the browser.
Using this directive in your main pages is a must.
similar:ng-href

These along with many other built in angular directives give us a hint of what angular project philosophy is and where it is heading towards.
Making Common UI events more declarative, reusable and decoupled from the application logic.

One on One- Play Review

In today’s world of short attention span, entertainment is rarely expected to make you think, and rarely does it leave a thought lingering with you for the days to come. but ‘One on One’ quite comfortably has succeeded to break those shackles with its unconventional themes, style and delivery. A collection of 8 short plays, each revolving around pressing social and political issues, delivered with a hint of humor. Each play has a maximum of two characters, with the conversation mostly directed towards the audience, with the feel of talking individually rather than the audience as a whole. The “One on One” feel is what really makes this a unique play, with the script and the actors backing it up heavily. Although I wouldn’t vouch for all 8 plays(two of them bored me no end with their cliches), a couple them were so intense that I found it hard to cope up with the intensity on the stage. Summing up, the crew from Mumbai has done a good job, making it a must watch.
4.5/5

Understanding angular $http interceptors

Angular JS  built in service  $http  is used to make http server requests.  More often than not you would find yourself in a situation where you would want to run hooks for the http calls, i.e execute some logic before or after the http call. For example appending the auth token  to every api request or generic http response error handling. For this $http interceptors become quite handy. One more very important use of interceptors is to log http requests made to external API’s which can be used for analytics.

Although there is not a lot written about interceptors on the documentation site, reading through the code comments makes much more sense. One way to implement interceptors is to create a service and implement the required hooks as functions in the service and then push the service to interceptors array. Or  by pushing  an anonymous factory(function) with the required functions to http interceptors array. There are four types of interceptors Request, Response, Request error and Response Error. Every interceptor factory should have one out of these four methods defined rest are optional.

Let’s clear things with an example.

Response Interceptor

A response interceptor function takes a promise object as argument and returns the resolved promise.  The example Below handles 401 errors from the servers and does suitable error handling.  If the http request returns a success response it does not do anything. But if there is a error, it checks for the error code from the server and if its 401, redirects the user to the login page.


//Works for 1.1.x versions. 1.0.x is similar and can be figured out using code comments
myapp.factory('myHttpResponseInterceptor',['$q','$location',function($q,$location){
return {
response: function(response){
return promise.then(
function success(response) {
return response;
},
function error(response) {
if(response.status === 401){
$location.path('/signin');
return $q.reject(response);
}
else{
return $q.reject(response);
}
});
}
}
}]);
//Http Intercpetor to check auth failures for xhr requests
myapp.config(['$httpProvider',function($httpProvider) {
$httpProvider.interceptors.push('myHttpResponseInterceptor');
}]);

Request Interceptor

A request interceptor function takes in a config object and returns a modified config object.  In the Example Below we are going to add a ‘auth token’ parameter to every request made to the API server.


//Works for 1.1.x versions. 1.0.x is similar and can be figured out using code comments
myapp.factory('httpRequestInterceptor', function ($cookieStore) {
return {
request: function (config) {
var token = $cookieStore.get("auth");
config.url = URI(config.url).addSearch({'_auth_token':token}).toString();
return config;
}
};
});
myapp.config(function ($httpProvider) {
$httpProvider.interceptors.push('httpRequestInterceptor');
});

Although the examples above have implemented two different factories for simplicity, they can be combined into a single factory. And the interceptor looks like the one below.


// Intercepting HTTP calls with AngularJS.
angular.module('MyApp', [])
.config(function ($provide, $httpProvider) {
// Intercept http calls.
$provide.factory('MyHttpInterceptor', function ($q) {
return {
// On request success
request: function (config) {
// console.log(config); // Contains the data about the request before it is sent.
// Return the config or wrap it in a promise if blank.
return config || $q.when(config);
},
// On request failure
requestError: function (rejection) {
// console.log(rejection); // Contains the data about the error on the request.
// Return the promise rejection.
return $q.reject(rejection);
},
// On response success
response: function (response) {
// console.log(response); // Contains the data from the response.
// Return the response or promise.
return response || $q.when(response);
},
// On response failture
responseError: function (rejection) {
// console.log(rejection); // Contains the data about the error.
// Return the promise rejection.
return $q.reject(rejection);
}
};
});
// Add the interceptor to the $httpProvider.
$httpProvider.interceptors.push('MyHttpInterceptor');
});

Final Gist borrowed form https://gist.github.com/gnomeontherun/5678505

Vagrants on a highway

Vagrants on a highway

Far away from home after a three day ride, the trip meter read 1000 Kilometers. Somewhere in the middle of the vastness and chaos that is the Indian highway, a part of the trip  was digitized as a reminder to last for the years to come.

DSC02892

This picture was taken during a bike trip from  Bangalore to Aurangabad. This is one of my favourites, makes me viscerally happy every time I see it. Thinking back, it sure as hell was one crazy crazy trip.  In the photo, Kulkarni, Pawan and Gaurav. Who once with me were Vagrants on a Highway.

PS: I really want to write a post about it but my lazy ass doesnt let me to.

Play review. Nobody sleeps alone

Nobody sleeps alone was like a typical bollywood movie. It had everything, the masala, the dance, the romance and even the music, which was played by a live  drummer cum percussion artist seated on the far end of the stage, which was probably the best thing about the play. The Play starts out with a very dark overtone, like some psychological thriller. But sadly the vibe ended very soon. Then came the humor, with loads of situation comedy which dominated much of the play.  As the play progresses the masala turns quite sour and the direction very sloppy. Props replace artists and the connection between the story and the play title is so vague that it keeps you wondering. All this was very easily negated by some wonderful acting by the 3 artists and amazing special effects by the musician. Apart from some low moments and a failed promise of a dark ending I did quite enjoy the play. Not a bad play to catch on a weekday evening.

Must have bash aliases for git command line users

alias gb=’git branch’
alias gc=’git commit’
alias ga=’git add’
alias gco=’git checkout ‘
alias gd=’git diff’
alias gp=’git push’
alias gp=’git push’
alias pp=’git pull && git push’
alias gst=’git status’

My Favorite here is ‘pp’, pull and push on a single command. Quite handy and saves a lot of time. This can obviously be improved on further, that will be done when I learn more of bash scripting. As of now I have decided to build on my bashrc and vimrc to setup a more productive environment.

 

Thanks to this link. I have modified a few things to suit me.

Parallel processing in Ruby

Parallel Processing can be achieved in two different ways, multi-core and single process threaded architecture. In a Multi core environment independent operations are shared between multiple CPU cores so as to obtain considerable improvements in performance. A single core threaded setup uses a single process with multiple threads for each individual operations using thread context switching for switching between the execution of different threads.  Threads are ideal where operations wait for longer times during I/O operations. When one Thread is blocked for I/O  a context switch takes place to another thread.  This results in collective improvement in performance.

A very simple example of using parallel processing(Threaded or Parallel Processes) is by the gem Parallel.

Note: Using Threads are dangerous and could result in actually slowing your execution if done wrongly be Warned.