Sunday, August 24, 2014

Classics of Computer Science

Some times you hear about quotes from Edsger Dijkstra like 'goto considered harmful'. However, you rarely find the details of actual arguments. So I have decided to collect such gems which I consider classics, which someway helped me understand new concept and references/links to original papers/books.

I am planning to keep on updating these list.

Papers/Articles of Edsger W. Dijkstra:

  1. Humble programmer 
  2. Goto Considered Harmful :  Transcriptscanned PDF of original paper 
    This paper introduced concept of 'structured programming'

Papers/Article of David Parnas:

  1. On the criteria to be used in decomposing systems into modules,
    Written in Year 1971, this paper introduced basic concepts of object oriented design (especially concept of encapsulation). I find that programmer still confused the concept of 'encapsulation' as 'hiding the data' rather than 'hiding the change'

Papers/Articles from Google

  1. MapReduce: Simplified Data Processing on Large Clusters
    Paper that triggered big data processing architecture revolution and triggered the opensource Apache Hadoop project.
  2. Detecting influenza epidemics using search engine query data
    Demonstrated how big data analytics can be used to solve some existing problems in entirely different way.
    "Here we present a method of analyzing large numbers of Google search queries to track influenza-like illness in a population. Because the relative frequency of certain queries is highly correlated with the percentage of physician visits in which a patient presents with influenza-like symptoms, we can accurately estimate the current level of weekly influenza activity in each region of the United States, with a reporting lag of about one day."
Please add your comments, suggestions for inclusion in this list.

Sunday, August 17, 2014

How increase the pain your customer - Banking way

Last two days I was trying to pay for stamp duty and registration for a new flat that i am trying to purchase.

  1. First builder went to Bank of Maharastra and got a challan for stamp duty and registration fees.
  2. He gave the challan to me and asked me to pay it.
  3. Tried to pay it online, but realized that to pay online , I need an account in SBI, Bank of Maharashtra, Bank of India or IDBI Bank. Unfortunately I don't have account in those banks. 
  4. So now I go to Bank of Maharashtra branch.
  5. Bank of Maharashtra manager suggests me to pay the amount by CASH. All government policies and banks are trying to reduce the cash transactions. Here for government tax payment we are going 'reverse'. 
  6. When I asked why, Manager explained me that cheque clearing takes 4 to 5 days even for local cheque. It seems RBI has a new process for clearing. Now there is NO local clearing in Pune. The cheque is scanned and sent to RBI for processing. 
    1. So I pay by cheque on Friday. 
    2. Cheque will get scanned on Friday evening.
    3. Saturday will go to RBI clearing.
    4. Monday clearing may happen.
    5. Tuesday the Bank of Maharashtra will get the details it is cleared or not. It may happen that other bank will ask for some time. In this case, it will get delayed
Manual clearing took 2 days while computerized clearing takes 5 day. Amazing !!!!. Instead of making life easier RBI is making more difficult to average banking customer.

I think much simpler process is possible

Sunday, August 10, 2014

Understanding Requirement Specs - Canteen Chapati Way

Few days back I went to SEZ tower 3 canteen for Lunch. I usually take full lunch. Now the full lunch menu is as specified in attached image (lunch_menu.jpg). (3 chapati, 1 bowl of rice etc). The chapati's I received are in the next image. (The size of chapati is around 3-3.5 inches diameter). The canteen guy explained to me that he has to give only 3 chapati's as per Menu however he is giving me ONE extra chapati. Do you see the problem ?

Its the size of 'chapati'. The chapati is small. The "requirement spec" (Lunch Menu) says 3 chapatis but it does not specify the size of Chapati. So provider can take advantage of it and serve really small chapati's and still fulfill the requirement as 'specified'. One option customer has is to provide the requirement spec is excruciating details (e.g. specify minimum size of chapati, minimum size of bowl, size of spoon for pickle etc etc). Pretty soon it will very painful to specify and it will be an "over constrained" problem. With so many restrictions, the canteen contractor has no leeway to improve or experiment. End result will be that I (i.e. customer) will not be happy with the service I get.

This is a common dilemma of requirement specs. Somewhere you have to trust the "common sense" of the customer and service provider. If the service provide don't have that "common sense" then as customer you will be forced to change the provider.

Remember we (software developers) are the 'service provider' for our customers. And our customers are also going to expect "common sense" from us.