Punjabi By Nature
Punjabi by Nature

Sounds of Silence - Part 2

From Roberta Matuson...

Being quiet strengthens focus. It's hard to focus on the task at hand when you yourself are making so much noise. The other team, who participated in the clamming wars, never took their eye off the prize. Our team, on the other hand, did a happy dance in the sand every time we hit pay dirt. In retrospect, this was probably valuable time wasted.

Being quiet calms others. Quiet people have the ability to calm those around them. For example, when everyone is stressing out because it looks like a team isn’t going to meet their deadlines, it’s usually the quiet people who are able to calm people down and carry them over the finish line.

Being quiet conveys confidence. You don’t have to prove anything to anyone when you are confident. You know you do a good job and you believe that eventually others will take notice.

Being quiet means you think before you speak. Quiet people are usually thoughtful thinkers. They think things through before making a statement. Something you probably wish many of your workers would do before taking up your valuable time.

Being quiet gives you the space to dig deep. Quiet people tend to delve into issues and ideas before moving on to new ones. Compare this to the surface people in your organization, who often move onto other matters without giving thought to the gold that may be sitting right below the surface.

In God we trust, everyone else bring your data...

We are on the forefront of building some exciting new technologies around machine learning and smartphones and cloud computing. It is interesting that how these so called "smart"phones typically dont get "smarter" as they go along. They just dont seem to learn your behaviour, preferences, and the actions that you are expected to take from ALL the DATA that is already there on your phone.

Here are a few examples 

SmartDialer - Who will you call next? 

Based on time of the day, location and past calling history

Also, if two phones with SmartDialers are close by then we can also use that to determine that calls may not be made between them

It could start dialing as soon as you pick up the phone and bring it close to the ear

It could also suggest an entry based on other features (for e.g. if your calendar entry says a conference call is due OR if you get a SMS saying "Pls call back")

One could also "pin" a favorite phone number on the home screen,  so that its always there in the list.


SmartTexter

Who will you text next? 

One of the key features of this messaging application will be to help you take "actions" based on "event" notifications by enterprises or people. For e.g. if an event is generated by an enterprise that your "bill is due on such and such date (most enterprises don't send a vcal entry due to compatibility issues) we could generate a calendar entry and suggest to insert it into the calendar" Another example is event generated for expense made on credit cards - we could automatically insert that into an expense book (and note the location, business to form a purchase history). Yet another example is the "Pls call back" message from a person, linked to Auto-Dialer 


Quality

Books, articles, reams have been published about it. I dont think I can do justice to that in a blog post. However, I would like to share some experiences that reflects my deep self belief about what "Quality" means. 

Service that you will remember...
I was studying in graduate school many moons ago. There was a small roadside vendor who used to sell Chinese Food Wraps and a lemonade along with it. The food was warm and the lemonade was cool and you could afford it. Everyday during lunch time, I would walk up to the vendor. There would be a bunch of other students around him. The first thing you noticed that despite so much work to do for one person, he was always smiling. Anything you order, he would smile and say "You got it" and out would come a good pack of wrap and lemonade. The wrap was always the same size, food was always warm, and lemonade always good.  
You would never find him
(a) late/absent
(b) not smiling
(c) food of different quality on different days 

How many times can you say that for *any* service that you get from anyone? I have forgotten a lot of things about graduate school in the years that I graduated but whenever it comes to food and quality, my thoughts go back to that young Chinese guy and his cart. I hope (and willing to wager) that he is a successful professional today. 

Product that you will remember...
This was in early days when I was just trying different things to do after leaving Microsoft. Someone from US approached me to write a small program that was like a spider and crawl and mark pages as reachable or not reachable and insert them into a database. I wrote that program myself and commented it and designed it. I wrote a basic UI to go with it. The guy was actually a fairly good programmer himself and when he saw the code he was very impressed. He became a friend and would recommend me to anyone. Years rolled by and now he is a senior executive at Motorola. He still reaches out to me willing to take my products to Motorola!! I think he experienced that "a-ha" moment that day when he saw the product and remembers it till today. 

Quality is something that when you experience it once, you will never forget it. 

Does your work do that for your customers? 

Plus Addressing

A little known technique that comes in handy...

Suppose you have an email id abc@gmail.com Using a technique called plus addressing you can use the following ids

abc+<name of a website/company>@gmail.com for e.g. 
abc+vodafone@gmail.com can be used as the user id on the vodafone site

OR 

abc+test0001@gmail.com can be used by testers to test sites that require email id for registration.

Where do all the email ids addressed to such addresses go? 
They all go to the original id abc@gmail.com

Advantages
(1) You can write filters in your email client to route emails from abc+xxxx@gmail.com to do whatever you want 
(2) If you are unsure whether a site will share this address for spamming, and you use the plus address, you will know exactly which site shared the address as you have suffixed the site name to each registration.
(3) No need to generate thousands of email ids for testing! 

This is one of the awesome techniques that exists in email systems that is simply underexploited. 

Cheers,

Tarun

IT workspaces needs solitude and focus

I came across this very interesting article 

Are You a Zen Coder or Distraction-Junkie?

http://www.componentowl.com/blog/2012/02/zen-coder-vs-distraction-junkie/

"What you do when compiling can ruin your life. And not just when compiling, but when waiting for any short computer operation to finish.

That time is ridiculously tiny compared to the rest of your workday, yet it can have a huge impact on your productivity and well-being overall. Yes, that’s a big fat claim.

And by the way, this article is not just about coders or programmers. It’s about any smart people working with computers. And there will be pictures! Let’s rock and roll -"

I am personally convinced that this thought is right. I am intending to ask my team and work on ideas that reduce distraction time and increase focus time on a task as a result.

Regards,

Tarun

Scrum Call != Status Call

Too many times you see a scrum call that starts and ends as a status call. 

A: What are you doing? 
B: I did this.
A: Oh, ok
B: Lets talk tomm at the same time
A: Oh, ok

Scrum call != Status Calls 

Scrum calls are the only time during a day when the entire  team gets together and must use this as a brainstorming, intellectual pow-wow session. Difficult questions must be asked and answered. 

Status calls are better reserved for - no one....

Tarun

The maker of coloured computers

The year is late 1998 and three friends gather for a chat. They usually chat about IT industry, the stock market and anything else..

A: You know Steve is back at Apple. 
B: Big deal. 
C: He is a good guy but what can he do? 
A: Stock price is around US $10/INR 400, should we buy? 
B: Apple stock? The maker of coloured computers?  
C: Ha, Ha 

Fast forward to 2011, The Apple stock is at US 378.25 approx INR 18,000.

More than the stock price it is the impact that Apple and its legendary founder Steve has created on the world, IT and consumers worldwide that has made millions of people outpour their grief.

On behalf of all my colleagues and friends and family, Steve, may you continue to enthrall where ever you are and whatever you do. 

Oh, and one more thing.. That C above is yours truly. 

Regards,

Tarun 

Art of Good Code Design (Philosophical)

Thanks to RWW...

You probably have never heard of Dieter Rams (pictured at left) but certainly know of his work. For many years he was a product designer for Braun and other German companies. Back before Frog and Apple put the "i" in many of its products Braun was selling very elegant items that were well designed, such as calculators, shavers and household appliances. Many of these items can be found in museum collections all over the world today. Rams has had several design shows over the years and is known for his ten principles of "good design," and I thought if we substitute the word "code" for "design" that there is a lot software developers could learn from his principles too. Here they are, with some of my comments.

  1. Good code is innovative.
 One of the exciting things about working in the tech industry is that we still have plenty of innovation each and every day. And the best coding takes advantage of this innovation and wows us.

  2. Good code makes an app useful
. This seems fairly obvious. We buy or download apps to use them, just like products. But the best apps carry code that can showcase their use and avoid distractions.

  3. Good code is aesthetic.
 Some IDEs can turn code into quite elegant arrangements that could almost hang on your wall, they are so attractive. But understanding the aesthetic of what your code does is also important. In the design world, aesthetic is very important because it is reflected in the products we use. Just look at the crowds inside your average Apple store and how things are laid out, and contrast that with the aesthetic, if you can find it, in your average Best Buy. No comparison.

  4. Good code helps us to understand an app. And bad code helps us to see a badly designed app too. 
    Things which are different in order simply to be different are seldom better, but that which is made to better is almost always different.


    - Dieter Rams, 1993


  5. Good code is unobtrusive. Perhaps this talks more about the resulting UI than the actual code itself. But it could also refer to the ability to easily read someone else's code too. Certainly this is the case for open software.

  6. Good code is honest
. No tricks, no hidden trap doors, no malware needed. And no false advertising either: the code is the core essence of an app, nothing more, nothing less.

  7. Good code is long-lasting.
 Some of the best software programs have been around for decades. They don't go out of style, just like well-designed products.

  8. Good code is thorough, down to the last detail
 Squash those bugs! Find those corner cases! Test and retest with different browsers and environments. Don't leave anything to chance.

  9. Good code is concerned with the environment.
 Again, somewhat obvious.

  10. Good code is as little code as possible. Sadly, we have moved away from this tenet over the years, look how bloated our operating systems have gotten. I remember the early days when APL was considered the ultimate in coding - a single line could pack a ton of programming horsepower. You needed a special keyboard to code in it:


Peshawar to Patiala

Today is India's 64th Independence day. 

I was talking to my father today about what happened around Independence in 1947. My father's family was living in Peshawar (North Western Frontier Province) where my grandfather moved to in 1906. My grandfather knew Urdu, the language of the local traders in Peshawar. Slowly, he learnt the trade (fruits and dry-fruits) and quite a few years later he became a trader himself. In 1945, our family had a 3 story mansion and a car - a luxury that was not to come back to us till 50 years later. 

As it became clear in the years following World-War II that India will be partitioned based on religious lines. In March, 1947 my father's family except my uncle (his elder brother) and my grandfather move to India. They could see Lahore burning in flames as they passed it in the train. The Maharaja of Patiala had offered that Hindus and Sikhs are welcome to his state and he will offer any and every help possible. Meanwhile, riots had broken out everywhere. Khan Abdul Gaffar Khan's followers (Red Shirts) had helped in arresting the riots to a large extent in Peshawar.  They would eat, sleep, and breathe on the streets. However, not everyone was lucky. My uncle and grandfather were still there. My uncle got attacked with a knife on his forehead, fortunately he survived as he was quickly taken to a local doctor. Elsewhere, my father's uncle (mama) was butchered in front of his wife. My father recalls a similar incident in Patiala where a Muslim was hacked to death even though he was ready to convert. My father was all of 13 years old then!

Trains full of dead bodies used to go from one side to the other. Then sanity returned in the weeks and months following the partition. My uncle and grandfather landed in India using a military plane in October 1947. In January, 1948 my family moved to Delhi. 

In Delhi, they were "lucky" to be given shelter in a 1 room house in Fatehpur Sikri. A Muslim family had vacated that house and gone to Pakistan. Similar fate awaited people who were occupying Hindu, Sikh homes in Pakistan. In this 1 room house, 7 people lived and there was 
just one light bulb! My grandfather started his trade again in the Old Subzi Mandi (Old Vegetable Market) My father would walk all the way from there to his school and back. Many nights were spent studying under a lamp post. He was given Rupees 10 (about 25 US cents in today's rate) out of which Rupees 7 were for school fees and rest for eating/commuting. 

Times changed. Grandfather worked hard. He often slept in the shop itself from where he did trading. He had several dues that were pending to the relatives who had relocated along with him from Pakistan. On the other hand, the traders who had gone to the other side were not ready to pay up. It was difficult to go across the border and get the payments back! Anyways, times became better and times changed. We moved to our own house and business started to grow. 

My father meanwhile entered Academics. He started teaching at Batala Christian College (BCC) and then at SD College, Ambala and finally had a job at Delhi University/SD College, Delhi.  

In 1964, twin tragedies befell our family. My grandfather passed away, and 13 days later when the family returned after doing the rituals for my grandfather, my grandmother had also passed away. It was as if they had immortalized, "Till death do us part"

I hope to continue talking about the story of our family and the times/tribulations of the past. When you see much of what is happening today, you wonder whether the following is true: "History repeats itself, and those who do not know history are condemned to repeat it"

--Tarun

Culture of Review

 I am writing this memo to share with you something that I call the "Culture of Review"
We have spent a lot of time analyzing the efficiency of our team and also how to improve the quality of the work done. Whilst we will discuss the efficiency part later, I want to focus on the quality part here.
 
Many a times, we have gathered requirements, analyzed and developed systems, tested it and delivered it to the customer. However, a few areas where we fall short is
 
(a) Requirements were misunderstood
(b) Coding Guidelines were not followed
(c) Only one person has knowledge of a part of the system.
 
We need to address these problems. One way the industry addresses this is through "Whitebox testing". In my opinion, a "Review" is more effective than whitebox testing.
 
Reviews address the fundamental problems we have today on the quality side. When you have an extra pair of eyes reviewing your code/package, it is difficult to slip in things unnoticed (BTW - Ethical behaviour is what you are doing when NO ONE is watching you!)
 
The guidelines being followed can be done with an aid of tools + manual reviews as no tool can do a perfect job on doing style and guidelines check.
 
They also build knowledge in more than 1 person and bring a different perspective to the system, often times for the better.
 
 
Regards,

Tarun

Blog Software