02 August 2014

Your personal EULA Lawyer

I remember a patent lawyer joking that patents are deliberately worded with confusing text so that lawyers would have a job :-)
Dear lawyers: We'd love you if you create human-readable licenses too (like the one I did).

For  readers who didn't know, some countries have an unconscionability law which protects people from cleverly written contracts/agreements which work against the person signing it.
Eg: If someone usually does complex business transactions and boilerplate language into a contract containing terms unlikely to be understood or appreciated by the average person, the unsonscionability law can be brought into the picture.

Why bother about software licenses and EULA's?
If we were evaluating a contract on paper, we'd either go through it carefully or hire a lawyer for it (because it might have hidden clauses, escape clauses and the usual mind-numbing jargon). Strangely, most people don't seem to care, when it's a software license or a EULA. They just go ahead and click the "I Agree" button, not worrying about what clauses are hidden below.

Jeff Atwood listed out a few things some EULA's demand, which we aren't even aware of, like not being allowed to criticize the product, taking your permission to allow them to monitor you, not allowing you to use the product with other products, asking you to comply with all their future clause changes and most importantly, the one about them not being responsible if their software ruins your computer.

As far as I know, most people still wouldn't bother and would continue blindly clicking "I Agree".

EULA licenses are probably like one's wife. There's all this text that comes forth, and no matter what, you'll just have to say "I Agree" in the end :)

The solution
For those of you who are bothered, a 1.6MB software called EULAlyzer is all you need as a your personal software lawyer who will verify the EULA for you (do consider donating to them). Once you install it, whenever you encounter a window with some EULA text in it, you don't even have to copy-paste that text into EULAlyzer. Just open EULAlyzer.

Select "Scan new license agreement". You'll see a plus icon. Drag and drop it onto the EULA text which you want to analyze.

And viola! The text gets automatically copied onto the EULAlyzer window (if it doesn't, paste the text into notepad and drag the plus button onto it). Click "Analyze", and you'll be shown what level of danger you are in, for certain kinds of sentences mentioned in the EULA. These are named "interesting" words.

The image above is for the WinRAR EULA. For other EULA's, you'll find more "interesting" sections/key-words being detected. Eg: sections on advertising, promotional messages, third party, website address, the without notice clauses etc.

It basically shows you the text that you should analyze. Spares you the trouble of reading through each and every word of the license agreement.

Google Chrome's browser had a scary EULA, with more than what's shown in the below pic.



On a side-note, I even ran EULAlyzer's own EULA on it, and this is what it showed :-)


Running EULAlyzer on FOSS licenses
Tried running it on GPL v3, and this is what I got:


Definitely a useful software which helps people who want to analyze license text. So long as lawyers keep using familiar keywords, this software will continue being able to detect them :-)

26 July 2014

Preview your webpage realtime while creating it

Wanting to see a realtime or near-realtime preview of the webpage I developed, I found only few options available (like this, this and this one). Strange that nobody mentioned Netbeans.

I'm aware of the Netbeans-Eclipse flame-wars and I happen to like Netbeans more :-) You can install it with an installer or use the portable version, it's simpler to use, simpler to get the settings of a project ready, has Git and Gradle support inbuilt and of course, has the preview option for multiple browsers and devices of varying screen-sizes. Have a look...


Choose the "Embedded Webkit Browser" option for having a preview within the Netbeans IDE itself.



When you press F6 to execute the program, the preview appears. The arrow I drew, points to the options Netbeans gives you to view the page in different screen sizes!


You also have a palette of html elements at your disposal, which you can drag and drop onto your HTML code! If you drag a table element onto your code, Netbeans creates all the relevant code for the table, at the place you dropped the table. Now isn't this cool or what!!!



Here's a look at the code. Also a side-note and a video, below



Use any IDE you like
On a side-note, any company with a mature software team, should not ask their developers to use only one particular IDE. The project should be designed to allow developers to use whatever IDE they like. Even if various developers working on the same project are using different IDE's.
Although Eclipse seems to be more widely used, you would find this video from James Gosling rather interesting. It tells us a bit about how the Eclipse hype came about (starts at around the 6th minute of the video).


19 July 2014

The advantage of compiler optimization and why it can sometimes mess up your program

Recently, I was working on a software that required high-precision computation of matrices stored in an advanced math library.
While working in the Debug mode of Visual C++, all calculations worked fine. Running the program in Release mode, gave me a "1.#QNAN" error and "-1.#IND" error. I was perplexed, because there were no changes I made to the code.

A couple of printf's showed me that the matrices which were supposed to contain small values like 0.5e-03, had been interpreted as negligible values by the compiler, and considered as zero. This caused numerous divide-by-zero errors, resulting in the QNAN and IND errors which are MSVC's way of displaying a NaN.

Here's how you can check for NaN in your program.
  • Boost has  template <class T> bool isnan(T t); under the header #include
  • If TR1 is available, then cmath includes C99 elements like isnan()
  • Here is a small function which should work if your compiler doesn't have the standard function: bool custom_isnan(double var) { volatile double d = var; return d != d; }


The solution
Going to "project properties > C/C++ > Optimization" and selecting the "/Od (Disable)" option prevented the compiler from optimizing away the little numbers to zero and the program worked fine in Release mode.


How compiler optimization can be helpful
A bit of background research led me to an article of Mr.Scott Robert Ladd on Dr.Dobbs. He said:
An optimizing compiler performs an analysis on a program being compiled, generating a more efficient program. Optimizers can delete unused code and variables, improve register use, combine common subexpressions, precalculate loop invariants, and perform other tasks that improve program performance.

At best, optimizing a well-written program will improve its speed by as much as 25 percent. An optimizer will not replace inefficient algorithms with better ones. As the saying goes, "garbage in, garbage out." Most of the responsibility for a program's performance lies with the programmer. Improving algorithms and manually optimizing a program will often increase program speed by several orders of magnitude. The purpose of an optimizer is to make sure that the compiler is producing the fastest code possible from your source code.
          /O1 optimizes code for minimum size.
          /O2 optimizes code for maximum speed.
          /Ob controls inline function expansion.
          /Od disables optimization, speeding compilation and simplifying debugging.
          /Og enables global optimizations.
          /Oi generates intrinsic functions for appropriate function calls.
          /Os tells the compiler to favor optimizations for size over optimizations for speed.
          /Ot (a default setting) tells the compiler to favor optimizations for speed over optimizations for size.
          /Ox selects full optimization.
          /Oy suppresses the creation of frame pointers on the call stack for quicker function calls

Optimization might not always be the best option for you, especially if you're working with high-precision calculations. There are places where an optimizer can optimize away calculations to improve speed.
Eg: If you use ++i (which is faster) instead of i++, it might not actually be of much consequence, because modern compilers would optimize it sufficiently to make the i++ equivalent to the ++i.

p.s: In Visual Studio project settings, if you ever need to use similar settings for Debug and Release mode and you want to avoid having to change the string "Debug" to "Release", then just use the variable "$Configuration". Visual Studio will substitute the string "Debug" or "Release" into "$Configuration", depending on which build configuration you choose.

16 July 2014

Solving the IMAP synchronization problem

If you're using a mail server like Zimbra, which uses IMAP and synchronizes emails between the server and the local machine, it could get disappointing when you delete an email on your local system (if you're using Thunderbird or Outlook) and you see that the mail got deleted on the server as well, or vice versa.

A smart colleague of mine, Ancelot Mark Pinto (who also happens to be the one who un-knowingly introduced me to Thunderbird), found a way to circumvent this problem.
His simple solution was to create local folders in Thunderbird...


and create a mail filter to move or copy incoming emails to the local folder. Note that moving the email from the folder that Thunderbird synchronizes with the server will be the equivalent of deleting it from the server (but the local copy will still be there in the folder you moved it into).



I improvised on it by also creating a filter which moves outgoing mails to the local folder too. [update: turns out that you'll have to run this filter manually. Moving the files yourself would be faster than opening up the filter and running it]


Of course, you wouldn't have to go through all this trouble if your IMAP based email server has the ability to configure synchronization (unfortunately Zimbra doesn't seem to have this facility).

In Outlook, you can create mail filters by creating a rule (personally, I've found Thunderbird to be far better than Outlook, in terms of usability, mail filters, extensibility via add-ons, themes, search capability and speed. And then there's the advantage of it being free and open source!).

What's special about IMAP?
Out of curiosity, I found that the POP (now POP3) protocol, can be used only from one mail server and all operations you perform on the emails, will be done on your local PC, after you've downloaded the email from the server. 
IMAP on the other hand, can have a single storage location that can be accessed from multiple mail servers. Besides, IMAP allows you to keep all emails on the server and constantly synchronizes the local copies and the server copies (which is why if you use the filter to move emails out of the inbox as I've shown above, IMAP thinks that the file got deleted, and the server copy also gets deleted). IMAP also downloads an email to the local machine completely, only when the User tries to open that particular email.

11 July 2014

LOL

Continued from the previous LOL page.


Malayalis sitting
share with this link




On-screen deaths
share with this link


Continued in the next LOL page
 
 
 

07 July 2014

Build a good reputation for volunteers

What comes to your mind when you hear the word "Volunteer"?

Some people think
  • "Hmm...volunteering is some nice thing to do. Something that people consider a noble cause" .
  • or "Err...I don't really know, but lemme participate and see"
  • or "It's one of those events with free t-shirts, caps and snacks, right? I'm in!"
  • or "It's an event where people put in their effort to make the world a better, more caring place"
  • or "Oh! That activity which is a goddamn waste of time! Nothing changes"
  • or "Searching for a bunch of scapegoats eh? Not me!"
  • or "I just want to do my bit for society"
Now what would come to your mind when you hear the word "Google"?
  • "Awesome!"
  • "Best search engine ever! Did you see today's doodle?"
  • "Hey, Google is launching xyz! I can't wait to start using it!"

Notice the difference? It's the brand value of the word. A reputation.
With time, Google has built for itself a splendid reputation with very good quality products and the best intellect on the planet!
But for volunteers, there's a mixed reaction. Why?

How people begin volunteering groups
Some people I know, began volunteering when they actually saw some area of society that badly needed to improve and got together friends/acquaintances, formed a group and started volunteering. No motive for fame. No motive for money. They just wanted to improve things or help someone who was helping society. This is real volunteering.

The other way is when people are asked to start a volunteering group and they catch a few people and ask them to become volunteers or ask them to start a volunteering group. These hapless people have no other option other than to do what they were ordered to do, and without a clue of what they're doing, they form a group of people who are usually forced to volunteer in a similar way and rather than evaluate areas of society where their help is truly needed, they go about mechanically performing what they call as volunteering activities and end up creating volunteering events which nobody really cares about, but you'd always see a bunch of people excitedly saying that they were part of a "noble cause" (often not even knowing why it's a noble cause). I call them non-volunteers.

Not all groups are like that though. I've seen some where they actually do care. They actually do take steps to improve the livelihood of people. They evaluate situations, brainstorm, connect with people who genuinely want to help, form guidelines and measure how they've progressed. Like the first group of people, this is real volunteering too.



Non-volunteers aren't actually welcome in many places
When you go to a place as a group to volunteer, you'll obviously be welcomed. People tend to try not to be rude to you. But when you go alone, you hear from people, the hard truth. I've been told by certain people, how they dislike having volunteers around, because "the volunteers just did some time-pass and went away". Or about volunteers who had to spend fifteen minutes doing volunteering and they looked at their watch and said "ok it's 13 minutes already. By the time we walk to the gate, it'll become 15 minutes".
People at these places can easily recognize which volunteers actually care and which don't. You'll only be breaking their hearts if you don't intend to help long-term. If your intention is just to donate something that helps them, then first ask the representative what they really need, and give them exactly that.

What people have to realize, is that non-volunteers aren't actually there because they wanted to. Somebody forced them to, so you can't really call them a "volunteer". When people grudgingly do the so-called voluntary work, they try to find ways to balance the sense of injustice they've been put through, by making the process more fun and entertaining (or by doing things for the namesake of it). There's nothing wrong in bringing some fun and excitement into volunteering, but it does become a problem when people focus only on this cream of the cake and forget the actual cake itself.
No wonder non-volunteers are disliked!

The alternative
The very act of being forced by someone to volunteer, is what corrupts the foundation of goodness and goodwill with which a volunteer offers their services to society. When you want to start a volunteering group, no matter how much of pressure you're under, please don't force people into it. Instead, either start volunteering yourself and set an example or join an existing good volunteering group and start volunteering with them. A fair bit of word-of-mouth advertising is also required to let people know and join in.

A volunteer or a volunteer group will have a good reputation when they have:
  • Good knowledge of what they're doing
  • and when they bring a lasting positive change in society by thinking, planning and doing things, long-term.

From my experience in volunteering, this is some of what I've learnt:
  • Don't think you're doing a favour to someone by volunteering. As a citizen of your country, you're enjoying many comforts of society. It's your duty to keep it a good society and to help others who don't yet have that privilege.
  • Volunteering requires genuine care, time, dedication and hard-work.
  • Encourage people to adopt volunteering as a way of life.
  • Don't volunteer just because someone told you to or because of some policy you have to follow. Do it because you really feel like wanting to do it.
  • Focus on one objective you want to achieve, rather than on many.
  • If you feel you've got no time to volunteer, then I assure you, you've misunderstood what volunteering is (I'll explain more in future blog posts).
  • Build a good reputation for volunteering, by doing work that actually helps society. This is done when a volunteer educates themselves about the field they're volunteering in, analyzes, consults experts, takes the help of more people, utilizes their core competencies and builds a framework with a long-term vision of sustainability. I have seen volunteers who do this, and these are the volunteers who have my utmost respect and admiration!

The next time someone says "Volunteer", let it have a positive response from everyone. There's a lot to be done to create this good reputation. How about starting right now!


_____________________________________


More on volunteering

Say thank you or donate

05 July 2014

Adios amigos, Orkut

It was today, that I received an email saying that Orkut was shutting down.

To preserve your memories of Orkut, use Google Takeout to save your account into a zip file (you'll be able to do this only until September 2016).

If you've created communities on Orkut, you should know that Google will create archives of the communities that are public (communities that aren't public won't be included in the archive), so it will still be available on the internet as read-only archives. Individuals can login to Orkut (before 30th September 2014) and delete posts they don't want as part of Google's archive.
You can't transfer communities to Google+. The Orkut mobile app will stop working, and nobody can create new Orkut accounts from 30th June 2014 onward (oops, it's already July).

Nostalgia. That's the word that describes a place I found many of my friends again, shared memories with them, created the Stage Anchoring community which helped numerous newbies who were afraid of speaking on stage, became moderator of the Ipe/Iype community and had fun. For some people, Orkut means a lot more.
Faking news came up with a funny article on Orkut's funeral, ending it with
A highly placed source within Google tells Faking News that servers of the search engine will not perform any search operation during the entire event.

Named after its creator, Google employee Orkut Büyükkökten, Orkut has been around for 10 years, and very popular in India and Brazil. I still remember the time that friends were encouraging everyone to move to Facebook, and I didn't want to, because Facebook's UI was much more difficult to use than Orkut's. Of course, things have changed, and the domino effect of people abroad using Facebook and (probably) thus, the practice of others in India too joining Facebook continued.

Apart from it's controversies, Orkut had also introduced nice features like "fans", testimonials (did you know this feature was introduced to find out which profiles were genuine) and a funny feature where you could mark a person as someone you had a crush on, and if that person also did the same to your profile, both of you would get notified of it.

For me, Orkut is primarily about the communities I created and moderated. Some screenshots:


Really, this was just for fun. Glad both ended up getting an exactly equal number of votes :)

This nice community was created by Ashish Ipe





And a special testimonial from a college-mate who admired how I used to win prizes in college fests in college and in neighbouring colleges. Also because of the hobby project I won.


June 15, 2006:
"Ace of Kalpatharu Institute of Technology...The jack of all traits n some of we guys call him master..You talk of talents b4 him n u get into a super market. Oh man, he is juss a programming freak. Being a mechie mechie its kinda unusual but there is lot much in store behind dis innocent face. He is a total sellout @ college fests n not only me but our gang being d prima facie of it..hey master be innovative as u are n be in touch.."


Well, a big thank you Orkut team, for the connections and memories you created!!!

29 June 2014

Another new syntax?

Ever get the feeling that there's a lot of syntax of different programming languages that could have been kept similar? Having learned a multitude of programming languages, I've seen myself moving from a state of knowing a language very well, to a state of finding it difficult to remember the subtleties of the syntax, a few years after not having used the language.

I also know of a multitude of programmers who go through the same problem. Suddenly, at one point in their careers, it becomes difficult to program, without being able to use a search engine to refer the syntax of the language. Not because they're bad programmers, but just because every different language has been created in a different way.

People who create programming languages: If you're listening, can we please do things a bit differently?

Not that I'm against having new syntaxes. For example, I like the fact that languages like Python don't need semicolons, and I simply love the way MATLAB allows a programmer to write code.
Removing a column from a cell array matrix is this simple with MATLAB:
 
model(:,2) = [];

In any other programming language, you'd have to create a loop to iterate through an array or even create a temporary array and copy relevant content into it. Of course, MATLAB might be doing the same thing internally, but I understand that this is why the people who create languages want to put in their own style (which is often awesome style!) into the language.

But think about the programmer. The person who'd eventually use the language. They'd have to learn an entirely new syntax from scratch. While it is fun to learn a new concept, and a new, easier way of writing a language, the greater fun, is in being able to create awesome software quickly. It isn't really necessary to create a different syntax for the same old for loops etc.

So when I mention "Can we do things a bit differently", I'm asking if we can ensure that when a new language is created, the syntaxes for all basic operations, constructs, containers, imports/includes etc. are kept uniform across languages? If there are abstractions to be created above these basic syntaxes, then sure, go ahead and create something that's specific to the functionality you're creating a new programming language for. But otherwise, for the syntax that serves as the building tool for a software, let the syntax be uniform (perhaps we could select a popular language as a baseline?). Programmers will love you for it!

As for you awesome dudes creating esoteric programming languages, do go ahead, unleash your creativity and surprise us! We won't be using those languages in production code at least ;-) Y'know, I never actually believed it initially, when I heard that Brainfuck was a programming language!!!

p.s.: Not wanting to just leave this as a blog post, I wrote to the creators of some popular programming languages. Mr.Bjarne Stroustrup and Mr.Guillaume LaForge were kind enough to reply and the gist of their replies indicated that this problem is well known, and although there's nothing much that could be done about it, it's important to allow languages to evolve. Although I agree with what they replied, I do hope people get talking about this and at least new languages would be created with familiar syntax.

19 June 2014

How to make an old version of Matlab work in Windows 7

It's pretty simple to solve the issue of Matlab 2007 not working with Windows 7.

Type "matlab" in the search bar of the start menu, right click the first executable you see, go to 'properties'.


Select the 'compatibility' tab and run the program in compatibility mode for Windows 2000. That's all. Now click the same Matlab executable, and it will work!


15 June 2014

How to contact Amazon customer care?

Normally, online stores have a customer care number directly available. Amazon has a slightly innovative approach to it (which is more efficient, but confusing to first-time users).
So here's how you go about it:

Click on the "Customer Service" link:



Sign in: (perhaps you could use the "skip sign in" option too, but I haven't tried that)





Select an issue (now this is the confusing part. People would expect a "Submit" button at this stage, but there isn't any) .
After selecting an issue, just go to the third step (shown by the second red arrow below) and click the phone button.



This is the awesome part, where you click on the "Call me now" button, and Amazon will call you on your number (which you'll have to specify).


My experience with their customer service has been good. Even the book house from where I ordered a book (Shah book house) was very helpful. Apparently there's also a general customer service number mentioned for Amazon, 1800-30009009 through which I couldn't get through.

---------------------------

Epilogue: A better user experience

It would've been more helpful if Amazon had designed the web-page to give instructions to the user about the next step involved. Like for example, in step 2, a message could have been shown to proceed to select an option in step 3.
Or if the options were designed as part of a wizard where the next step is shown only after all selections are made in a particular step.


But still, nice ideas, Amazon team!

14 June 2014

null Meetup: OWASP

People who are into software security (web app security and the like...), you'd be happy to know that OWASP Bangalore organizes meetups every now-and-then to share knowledge. Today, there were around 40 people who attended the session at ThoughtWorks, Koramangala.




For those of you who haven't heard of null: "null is India's largest open security community. Registered as a non-profit society in 2010. null is Open, is professional, is inclusive, responsible and most importantly completely volunteer driven".

The agenda today was:
  • OWASP Mobile Top 10 - Part 2 by Anant Shrivastava 
  • Security NEWS Bytes by Nishanth Kumar 
  • Flash based XSS by Abeer Banerjee
  • BEeF by Prashanth Sivarajan  
  • ESAPI  by Satish

Although I couldn't attend the entire session, I did get to hear about the need for encryption (SSL/TLS), the discovery of Heartbleed, the use of msfconsole (I mentioned to them as a word of caution that it should be used only for testing vulnerabilities in one's own application, and never be used on other websites on the internet, as it is not legal to do so) and Perfect Forward Secrecy.
Also briefly covered, were topics on BEeF, BURP suite for app security, ESAPI, WebGoat, PE studio and some news feeds (one of which surprised me - apparently, TrueCrypt isn't secure anymore).

What's more important than the knowledge sharing here, is the networking. They have a networking session, where experts in various security domains stand at different corners of the room and you get a chance to meet them and talk to them. Makes sense, and worth attending the meetup for this very reason. You get to network with many other people who are into security, and can learn from them.

If you'd like to attend future sessions, registrations are on swachalit.

p.s.: A session can only be as interesting as the persons conducting it. This particular session had speakers who were very slow, so you might want to use your discretion on whether a session is helping you or not.

08 June 2014

Conference: Analytics for startups

While you would get a bunch of knowledge by reading my blog posts, I strongly encourage you to actually attend conferences, interact with experts in the field, grow your network and get more knowledge. It's a different experience being present there. You see their expressions, the way they talk, the jokes they crack, the extra wisdom they share. There's also the sense of belonging.

You'd have heard that "data is the future"? Yesterday, I had been to the conference on Analytics at IIM-B, and through the conference, I found that analytics is at a very nascent stage. The panelists themselves, although experienced, were able to share only a rather generalized view of analytics; not just because it is a very vast field, but also because there's not enough of study done about it.

 

The panel:
  • Prof. Dinesh Kumar (moderator)
  • Mr. Vivek Subramanyam, Co-founder & CEO of iCreate
  • Mr. Shantanu, Co-Founder, Meshlabs
  • Mr. Mahesh R, Co-Founder & CEO of NanoBI analytics

The introduction to analytics:
Professor Dinesh is a person students would love to have as a professor. His entire lecture was riddled with jokes and wit which kept the audience giggling away.

We were introduced to three different situations of decision making, via three stories:

1. Dosa King. The story of Mr.Narayanan, who did not have much data when he started off. One example was of how although machines for preparing dosas were eventually set up, they realized that the taste of the dosa changed, depending on every hour that the dosa batter was left uncooked. Decision making with not much data.
2. Tylenol having cyanide: When a couple of people died of cyanide poisoning after consuming Tylenol (the equivalent of Crocin), the CEO of Johnson & Johnson had just a few hours to take a decision of what message to send to the public, because of the innumerable number of capsules already in medical shops.
Apparently he consulted his people of whether there was any cyanide in their plant, and they said no. Later, they said yes. This was a time when companies didn't widely use ERP software. Prof. Dinesh emphasized that if ERP was used effectively, the information the CEO wanted, would have been available at his fingertips in no time. This was an example of decision making with incomplete data.
3. Captain Peter Burkill of British Airways: Close to the airport, when the passenger plane was still airborne, both engines of the plane failed. The pilot had 30 seconds to take a decision on what to do, and the professor told us, that he had at his disposal, around half a terabyte of flight data to sift through for taking a decision. The case of too much data.

When you enter the field of analytics, you'll notice that 80 to 90% of an analytics project, is spent on just cleaning the data. Making it useful for analysis.
[ Nav's note: So it's very important to find people who enjoy sifting through data and making sense of it. Most people would find it boring ]


So how do you define big data? : The non-profit Akshaya Patra tries to provide mid-day meals for children, keeping the cost per meal at 7.50 rupees. As part of optimizing costs, they also have to find the shortest paths for their transport vehicles, to minimize on fuel. Now the number of paths to be calculated here, is twenty factorial. Even if you had a computer that could do 1 million computations per second, it'd take around 76000 years to compute the data.
When you have a situation where our existing IT technology isn't enough to solve a problem, you have at your hands, a big data problem.

Types of analytics
  • Descriptive analytics: This is where you want to visualize your data. Quick View and Tabulo help with this. Data synthesis and visualization. Gramener in Bangalore does this. One other example of descriptive analytics was the use of spot maps. During the cholera outbreak in 1854, there were around 400 theories of how the cholera was spread. Most people thought it spread through air. But John Snow. A doctor, mapped the pattern of the outbreak and correctly located a water pump which seemed to be the source of it. (anecdotally, when he approached the authorities, they asked if that was the case, then why weren't any of the people in the nearby brewery falling sick of cholera, and John found that it was because the workers weren't drinking water from the pump. They were drinking only beer from the brewery :-) )
  • Predictive analytics: When you want to use data and trends to predict consumption patterns in the future for example. Or like how Google and the CDC predict diseases based on data they receive and capture from people. Milk consumption is also an example where people need data to predict how much of milk would be consumed before the expiry date and how much of it they'd have to sell to restaurants who are waiting for a discount a few hours before the expiry. Also about how much of the remaining milk beyond expiry date, would go for preparing paneer, cheese and to sweet shops (apparently many sweet shops use milk that's crossed the expiry date).
  • Prescriptive analytics: This is the toughest of them all. To be able to prescribe a solution, based on the data you have. Of course, this also involves using predictive analytics.

Framework for decision making
This section went very fast. Not much info to share here, but these were the main points:

  • Problem identification: As an example of what Target retail chain did: What would you do if you wanted to find out which of your store customers were pregnant? If you identify these people, you could advertise and sell a slew of products for baby care.
  • Ask the right questions: Asking, requires good domain knowledge.
  • Collection of relevant data: The data has to be in a certain format. One of the reasons companies aren't able to make good use of the data they have in their ERP systems, is because is not built on analytics. Such data is useless to them. The solution to this, is to redesign the ERP systems, with analytics at its core.
  • Pre-processing: Decide how you're going to use the data.
  • Model building: Create data models that will be useful for analysis.

Conclusion:
For a company that uses analytics, it's important to build the right talent and build the right infrastructure.
As an example of how hospitals work, the first day the patient is admitted, is the most profitable for the hospital. The series of (many times un-necessary) tests the patient pays for and the profits made on treatment during the duration of stay. But when it comes to discharging the patient, it would be most economically viable for the hospital to get the patient out as fast as possible and to get the next patient admitted (this often becomes a problem, as doctors aren't available to sign the discharge slips). Data analytics can help by mapping this trend and maximizing profit for the hospital.

As competition increases, analytics becomes more important. For example, if you're setting up a food court, you'd need to predict how many people are going to eat there. One creative way of predicting it is by calculating the number of cars parked in the surrounding area (at offices) and the time at which people come out to eat and the availability of eateries nearby.
[ Nav's note: An excellent opportunity to attract customers with discount offers and a cleaner and less-noisy environment than the competition. Adding music would be another perk ]

Another example where predictive analytics is used, is in the sports industry. Get a load of this: While the sports industry is said to be at 300 billion dollars, the sports-betting industry, is said to be at 400 billion dollars worth!!!

You might also want to have a look at the Analytics Society of India.

The panel discussion
Following Prof.Dinesh's lecture, the panel shared their experience with the audience. Some key points in random:

  • The world is going SMAC: Social Mobile Analytics Cloud
  • Machine learning, Bayesian calculations, Hadoop and DevOps are the 'in-thing' for analytics right now.
  • Opportunities in analytics: Anything that generates a lot of data as part of its functioning, would be good for analytics.
  • Analytics for a small business: One of the challenges faced is in how to explain analytics to business people, in Hindi or Kannada?
  • Learning analytics: Apparently Bangalore University offers courses in analytics. There are five colleges in Bangalore offering a course. Word of caution though, is that no matter what tools you learn through these courses, what really matters is the experience of actually working with data, statistical data, models and open data movement.
  • Surviving and succeeding: Ask the right questions, solve the right problems.
In humour: Can an analytics company use analytics to predict it's own success? :-)
  • Advice: Don't venture into a field in analytics where people are already doing a lot, and you don't have anything different to offer or you don't know how to do it better.
  • How analytics helps: Many times, business people tend to rely on intuition and despise analytics and data.  But analytics helps better than intuition: Like for example, a retail chain located at a place where hurricanes were frequent, wanted to know what people tend to purchase just before a hurricane. Employees guessed torches, raincoats, beer etc. But when they looked at the data, they saw that what sold the most just before and during a hurricane, were strawberry pop-tarts. Amazing, isn't it? Would intuition ever have given you that info?
  • Three most important things for a startup: 1. Talent 2. Talent 3. Talent. All other things can be purchased with money. You have to find the right talent for analytics, and the supply is scarce. Because you have to know what problem to solve, and who will solve it for you. Find people who are at least good at linear programming problems. They'll have to scale their skill more for bigger data problems.
  • The go-to-market is more important than decisions on what technology to use.

Also happened to meet a software architect-turned-entrepreneur who very interestingly, has a startup which helps athletes find grounds in Bangalore. He, like me, was already up-to-date about the latest trends in databases and was all for the JavaScript stack of technologies (which btw, is the future; just like mobile devices are).


Say thank you or donate

01 June 2014

LOL

Continued from the previous LOL page.


Heroine rescue
share with this link


How heroes rescue the heroine in Bollywood movies (some Hollywood movies too)




Dream commute
share with this link


Indiscriminately created road-humps are the funniest example of the "prevention is better than cure"belief


Continued in the next LOL page