Good Care at Nokia Care

As with most other care providers around here, I wasn’t expecting a good experience when i went to Nokia Care center at East Patel Nagar to get my dad’s mobile phone repaired.

Surprizingly (to me atleast), a waiting ticket system was in place and working. The only other place in Delhi where I have seen the waiting ticket system working in Delhi is at the ABN Amro bank.

I picked up my ticket at the gate and waited for my turn with one of the front desk officers.
The front desk officer, listened to my complaint, did some prelminary checks, cracked some jokes with the other front desk staff around and told me that the phone would be repaired free of cost since it was still in warranty period and I could collect it the next evening.

She printed the job card and marked the IVRS phone number on the card, where i could check the status of the job by entering the job card number.

A couple of hours later, out of curiosity, I checked the status at the IVR number and it said that the job was finished and I could collect the phone.

I went to the Nokia Care center and collected the phone. And it seems to be working OK now.

It was one of the most hassle-free customer care experience I have had recently with a big company. So naturally had to blog about it. The job was done before the commited time and there was no unnecessary waiting for me at any step.

After my experience with some of the mobile service providers and banks, I am very skeptical of IVR systems, which make me listen to songs and music for minutes, with breaks in between to tell me “All our customer care executives are currently busy. Someone will be with you shortly, please hold the line”.

Maybe Nokia Care’s IVRS works because there is no dealing with a human.

Just one point though, If the front desk staff could stop giggling and fooling around with each other, while dealing with customers, it would make the customer feel a lot more important and “cared” for.

I was actually wondering if the companies have a code of conduct in place for their front desk employees.

Baba Ramdev controversy

My father is suffering from “End Stage Renal Disease”. His creatinine level was 11, whereas the healthy creatinine level is around 1.

He was undergoing peritoneal dialysis, four exchanges a day with baxter’s 2.5% CAPD fluid. But the creatinine level never came below 10. So much so that his nephrologist was considering putting him on haemodialysis.

Then my father saw Baba Ramdev’s yoga camp being telecasted live on Astha TV. There were some testimonials of people whose creatinine level had come down by doing pranayama regularly.

We were skeptical and thought those testimonials were doctored. But my father wanted to give it a try. So he started doing pranayama daily, infact twice a day, in the morning and in the evening.

Within 2 months, his creatinine level is down to 5.8. His blood pressure and blood sugar levels are also under control now.

Baba Ramdev, does not recommend any of his medicines as the first line of defense. He says that 90% of the problems will be solved by Pranayama alone. And I have seen this happen in my father’s case.

I see not logic, why then, would he do anything that Brinda Karat alleges.

Infact to me, he seems like a modern day Chanakya, whom India needs very badly.

Also, it is one of my new year resolution to do pranyama every morning.

ruby code block and iterators

Code Blocks and Iterators are a very useful feature in Ruby.

An iterator is a method that executes a block of code.

Say we have a method named each

def each(array)
    #do something

The block is specified next to the method call, after the last parameter to the method.

names=['alice', 'bob', 'charlie', 'dave']
each(names) { |s|  puts s }

Our block is the code within the { } braces. (mutiple line block can be written between do….end)

We are passing an array names, in the call each(names).
Inside each() we will iterate through this array names.

def each(arr) 
  for i in 0..arr.size-1 
    yield arr[i] 

All the code block iterator’s magic is done by the yield statement.

The yield statement invokes the code in the block.
The yield statement can also pass parameters to the block . In our example, the array element at position i is passed to the block. The block receives this parameter between vertical bars or pipes. (|s| in our example)

A block may also return value to the yield. The last expression evaluated in the block is passed back as the value of the yield.

Here is the complete listing of our code so far

def each(arr) 
  for i in 0..arr.size-1 
    yield arr[i] 
names=['alice', 'bob', 'charlie', 'dave']
each(names) { |s| puts s } 

This code will print all the array elements, as yield is called for each array element. Yield in turn invokes the code block passing it the array elements, the code block puts the element.

We could change the block code to print all the array element in upper case or in reverse.

each(names) { |s| puts s.upcase } 
each(names) { |s| puts s.reverse } 

What we have done so far, is actually provided builtin by ruby for various types of collections.

each is a builtin iterator in ruby which yield the elements of the collection.
To print all elements of array names we could simply do

names.each { |name|  puts name }

Similarly there is a find iterator.
To print all names that begin with m, we could use

m_names = names.find { |name| name.index('m') == 0 } 
m_names.each { |name| puts name } 

Iterators help a lot in keeping ruby on rails code compact. I have been using them a lot, ever since i discovered them.