Punjabi By Nature
Punjabi by Nature

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

Arms and the Man

Via Rajesh.... (and my notes below)

Around the time of the Kargil war in July 1999, this is what Atanu Dey wrote in an article entitled “Dollar Auctions and Deadly Games“:

One enlightening model of human behavior is the so-called “Dollar Auction” which illustrates the sort of trap that conflicts can lead to with costly consequences. This auction proceeds much as a normal auction except that while the highest bidder gets to keep the $1 bill bid upon, the second highest bidder has to pay the auctioneer the amount of the second highest bid.

….

The only way to win at a dollar auction therefore is either to not participate or if one does begin, then to either reach a compromise with one’s opponent or to exit as early in the game as possible.

Wars too have the peculiar characteristic that both parties, winner as well as the loser, pay. The dollar auction game illustrates the trap that nations fall into in a process of conflict escalation given the structure of strategic games.

The dollar auction is a perfect model of the conflict that India faces against Pakistan, with Kashmir being the dollar being auctioned. The bids in this auction are the military expenditure of each nation and the auctioneer is the one who collects the spoils of the military expenditures of the two nations. Since advanced industrialized countries are the major suppliers of arms, they play the role of the auctioneer quite well.

If the long drawn-out India-Pakistan conflict is seen as a dollar auction game with the US as the auctioneer, it is easy to understand why it is in America’s interest to keep India engaged in a perpetual conflict with Pakistan that is costly for India but very profitable for the US. Read in that context, the Headley story starts to make sense as well. The plan has been executed to perfection. As they say, it’s all about Money, Honey!

Here is what I think..

Like any other business, arms dealers and manufacterers are a business as well. If their “customers” were to disappear (i.e. no conflict) how will they survive. Hence it is correct to surmise that there are business interests behind this.

What I often wonder is that after arms, sports & entertainment is the 2nd largest business worldwide. Coincidentally, India and US are both big on sports & entertainment as well.

Is there an opportunity to move the $$ away from arms to these industries that have less strife and blood to shed?


Tarun

What am I reading?

India: Fast Growth Does Not Mean a Strong Economy: by Derek Scissors (Heritage Foundation). “It turns out India’s recovery from the crisis is partly illusory—its growth is not sustainable and is not creating broad prosperity.”

What holds India back: by Atanu Dey. “Hubris and ignorance among the powerful is a potently destructive mix and a sure recipe for disaster. The outcome is the disaster we see today. They set up the command-control-license-permit-quota raj. It is the best way known to humanity to retard economic development.”

Website Navigation Tips

6 Tips for Building Coherent Site Navigation

Thanks to RWW
When building a website, getting the navigation right is absolutely critical. A poorly conceived approach to site navigation will confuse and frustrate users, and this isn't the way to get a lot of people using your site.

A big part of this challenge is that you don't always start with a lot of links, but more may be added as the site develops. This means that the original navigation concept may not work as well as it once did.

To help you address these issues and prevent some others from occurring, here are 6 tips for building a site with coherent navigation.

1. Use Colour Coding

Make sure your navigational areas are easily distinguished and/or separated from your content. If everything seems to mix together - think of the content and navigation bar sitting alongside each other on a white background - it'll look a bit messy. A messy navigation bar isn't much fun to use.

2. Group Related Links Together

To avoid link overload, consider having multiple navigation bars, separated into logical groups. For instance, on one of the sites I run, I have core links (home, blog, about) at the top, functional links (dashboard, account history, settings) down the side, and legal/privacy links across the bottom. This allows you to keep each set of links relatively tidy, and it'll be easier to find the links you need.

3. Use Icons to Aid Navigation

Graphical aids can really bring your navigation bar to life, making it both visually pleasing and easy to use. FamFamFam has some good icons - and there are plenty more on Google if you want to look for something else.

4. Handle Hierarchy Consistently

Whether you have collapsible menus that appear as you navigate to a section, pop-out menus that reveal themselves when the mouse cursor hovers over them, or sub-pages with links to more pages, try to be consistent as much as you can. Mixing too many techniques can result in an uncoordinated mess.

5. Separate Non-Navigational Elements

If your navigation is getting quite busy, it may be time to remove things such as the search box from your navigation bar, along with any other features that get in the way of the site navigation. While it's possible to achieve a slick, streamlined site by condensing several core elements into the header and/or the sidebar, this doesn't work so well as you add more and more links. Don't feel the need to use every available bit of white space. And don't put ads in the way of the navigation.

6. Make it Flexible

If the design of your site makes it almost impossible to add any new navigation links, it won't be long before you start to hit the limits of the design. Where possible, future-proof your site by ensuring the design is as fluid as it can be. While a horizontal navigation bar doesn't leave a huge amount of scope, it could wrap onto additional lines. A vertical navigation bar shouldn't break once you add more than 10 links to it. If you build with long-term growth in mind, you'll have an easier time if you do add more links at a later date.

Blog Software