Saturday, December 14, 2013

Scientific Computing: R language for Statistical Data Analysis

Computational Statistics is the interface between statistics and computer science. While statistics helps collect, organize, analyse and interpret data, computer science helps in writing algorithms and representing results. There are very wide verity of languages that helps with statistical data analysis in computer science. Let us look at R language available for statistics.

I presently work with R language for Statistical Data Analysis at my work. It's a very neat language and simple to learn and begin with. I had no prior knowledge of either R or Statistical methods. The main use of R for me is to use statistical methods and to do data analysis. 


R Packages
R is an interpreted language and comes with abundant of third-party packages to support variety of statistical computing methods. The R manual can be found here. A list below mentions some of the features that I have encountered so far while working with R language.

1. Descriptive Statistics for R Vectors - Summarizes a given numerical vector with information such as Mean, Mode, Median and Max.
2. Plotting Graphs for representing results - A complex set of data frame (table) can be turned into a graph to better understand the data. R graphs is so much powerful and has lot of features for creating very detailed and neat graphs.
3. Variance analysis - To understand how various variables (vectors) stored in R are related to one another. There are quite a few various methods depending upon type of values variables take - Normal , Log linear and Logistic regression.
4. Multivariate analysis - This technique helps in learning about statistical outcome of more than one variable.
5. Data types - R is very rich in type of data it can consume and data structure it uses. Arrays, Lists, Vectors, Matrix and Data frames in R generally satisfies user's needs to play with variety of data.

Apart from R's usage in statistical data analysis, R is also useful in areas such as Analytics (e.g Machine learning, Statistical Modeling), Graphics and Visualization (Refer to my previous 2 blogs) and Data mining.

I would recommend learning R (or Octave/MATLAB) since it is different than other normal programming languages we know (Java, Python, C etc.) and additionally it is packed with lot of statistical methods which is simple to use and explore. A language falling in the category of Statistical computing looks good on resume and may ultimately help explore new domain.

Sunday, December 8, 2013

Computer Graphics: Applications in Visualizing Information

Graphics helps represent information visually. It would be hard to imagine working on today's modern computer with no visually represented information. Not only computers have graphics but photographs, diagrams, engineering drawings, geometry are also termed as graphics. Computer graphics have evolved over the time and today's modern age computer comes with finest graphics and special purpose graphics processors (GPU - Graphical processing unit). The most fascinating example of computer graphics is the modern age Sci-Fi films. Computer graphics have advanced so much that these film looks very real.

Graphics are not only used in computers but are also in other disciplines. Engineering, medical, mathematics, education, Advertising and Business are some of the areas which uses graphics for variety of purposes.


Mehal Patel: LinkedIn InMaps


We as a human work with information. We feed information to computer. Computers processes and presents information to the humans the way we want. Considering when there is a large amount of data to be analyzed, computer graphics can be used to visualize those data in a manner which is understandable to a human. Information visualization, Scientific visualization, Educational visualization, Visual analysis and Product visualization are some applications of Visualization. Being a Computer Scientist, Visual analysis attracts me the most. One potential use of Visual analysis is to analyse Social networks. Social networks carries lot of information which proves to be useful for so many purposes. Friend suggestions (Suggesting friends in the same network), People influence (Identifying influential people in a social network), Entity resolution (identifying same person having multiple profiles) and Movie ratings (Suggesting movies to users based on their a-like friends feedback) are some of the inferences that can be derived from social networks visualization.

Follow this link to find out more about social networks and analyzing it's network.
To see how your LinkedIn social network looks visually, click here. (I recommend try it out). Image in this blog post shows my LinkedIn network!

Saturday, November 30, 2013

Communications and Security: Bad Passwords!

Have you ever wondered why do we use "passwords" to gain access to various computing resources such as e-mails, social networking websites and personal computers. Before I answer question about "why password is a convenient choice but are bad choice of authentication", let's look at couple of other examples available for authentication purpose. Bio-metric system (heart-beat and retina scan) and smart cards are few other types of authentication systems. Why don't we use these systems for authentication? Can you imagine logging to your Facebook account through Bio-metric system? Why does it sound implausible? Because, these authentication systems cost money. Unlike passwords, they aren't free!

While it's true that passwords are not so very secure way of authentication, due to convenience over other types of authentication systems they are quite popular. However, care should be taken when forming a password. On the other hand, it's also true that when an extra level of security is required, other type of systems are also used along with password authentication. (PIN plus smart card access) Below mentioned points will help you understand on how passwords are bad for authentication purpose.


Password Cracking
Computers are good at remembering a random alphanumeric number while humans are not. This forces humans to choose not-so-random password which makes passwords vulnerable to attacks. It's easy to crack not-so-random password (a variant of brute-force) compared to a randomly generated computer password of the same length. 

Often, websites help you reset/recover forgotten password based on the questionnaire. It's fairly obvious that we tend to choose questions whose answers are directly related to our life, study or interest. If attacker can get hold of your personal information, it might help them recover/reset password. 

While logging into some website, it's not necessary that your login credentials are sent encrypted over internet to website servers. If an active attacker sniffs packages exchanged between user and server, attacker might get hold of login credentials and thus gaining unauthorized access to user's account. 

Social engineering and key-stroke logging are some of the other examples which makes password based authentication vulnerable. While passwords are really bad for authentication, it's most convenient to use as it's free (biggest advantage) unlike other authentication systems we saw above. 

Remember below points to ensure a good level of security when it comes to passwords:

1) Do not use password based on English dictionary words. Have a mixture of words, numbers and special characters.
2) Do not have a password based on your personal information such as name, age or birth date. This information can easily be obtained by others, if required.
3) Do not use the same password for all or most of the websites and/or personal computer logins. If your "common password" is compromised, all your accounts gets compromised too!
4) Choose questions wisely during sign-up on a website for password recovery. Have answers for those questions which are not so obvious to others.
5) When it comes to online bank accounts, remember to have a very complex password! 
6) Use INCOGNITO window (Chrome only) whenever you access accounts on public computers. 
7) Do not get carried away by "Free Wi-Fi" spots unless you trust wi-fi provider!!

Sunday, November 24, 2013

Artificial Intelligence: Probabilistic Reasoning

Human intelligence is based on constant learning and past experience. We use our prior knowledge and use it in one or the other way to do things. In more or less same manner, we can have machines with intelligence. Machines (no, not those military machines) i.e. computers can be fed intelligence to assist us with various tasks. The branch of Computer Science that deals with the study of machine intelligence is termed as Artificial Intelligence and its roots are dated as early as in the year 1956.

Artificial Intelligence is useful in numerous areas. Over the period of 50 plus years many techniques and tools have been developed to solve a variety of difficult problems. Neural networks, Probabilistic methods for uncertain reasoning, Statistical learning methods and Intelligent search and optimization are some of  the tools/techniques used to solve problems in domains where Artificial Intelligence is useful. Let's understand how Probabilistic methods for uncertain reasoning works. 

Probabilistic Inference
Consider for example, an application where we want to have a system that can help us diagnose a disease for a given patient (This is called as Probabilistic Inference). The end result would certainly be a probability value. The system will more or less acts as a Doctor. Now, what set of inputs does this system take? We might have inputs like different symptoms patient has, results of medical test(s) and possibly patient's habits (e.g drinking, smoking etc). The set of inputs really depend upon the type of diagnostic system we want to develop. The set of  inputs are expressed in terms of probability values. The system being developed goes through 3 phases: Representation, Inference and Learning.

Each of these individual inputs are related to other inputs and they kind of influence one another. The interaction of all these inputs is captured via a graphical model, which is constructed using either a Bayesian network or a Markov network - Representation. Each node in the graphical model corresponds to one of the inputs. So for example, when we have that patient is a chain smoker, the probability that patient exposes a chance of a certain type of cancer goes up - Inference. So, using the information available to us (information fed to the system), we eventually come to a conclusion based on the interaction we have in our graphical model.

But, before we can do inference from the system we have to train the system with some prior data - Learning. This type of data is termed as the training set. This training data helps us understand correlations between inputs . This kind of system helps us deal with uncertainty that lies within these type of applications and gives us results in terms of probabilities. 

Few other examples where these technique is useful are: Robot navigation, Text analysis, Speech recognition (we answer probabilistic-ally about what word it might be) and Gene regulatory networks.  I am working in the same area (called Probabilistic Graphical Model) for my master's project (CS 298).

Saturday, November 16, 2013

Computer Science: Historical Perspective

Today's modern age computers are a result of years of thorough research and innovation. This is not the end. Computers are going to get more powerful and innovative in years to come. It's interesting to know how computers were evolved the way they are today. 

Computers are meant to do computing, taking place of "human computers". The time when computers didn't exist, humans did computations (e.g mathematical) by hand. The first person to envision machines doing computation was Charles Babbage in 1830s. He is often called as "Father of the computers". His simple work for arithmetic machine computing proved to be so important that many more complex machines were designed later on based on his work. This eventually gave birth to computers after 1950s. Charles Babbage's machine was referred to as "Analytical Engine", a very first representation of the modern age computer.

Years later, several advancements were made in various computer parts(around 1950s). Grace Murray Hopper developed a notion of compiler, John Backus developed the first programming language - FORTRAN and Jack kilby & Robert Noyce invented integrated circuit. Computer networks also saw advancement such as ARPAnet, which proved to be a precursor to today's Internet. Other areas such as Operating systems, Theory of databases and Computer architecture also saw an advancement over the span of subsequent twenty years. 


IBM's personal computer


These advancements eventually ended up with an introduction of personal computers which hit the market for the very fist time during 1974 to 1977. Scelbi & Mark-8 Altair, IBM 5100 and RadioShack's TRS-80 were some of the computers launched during this period. Steve Jobs and Steve Wozniak introduced Apple computer in 1976.

The term "PC - Personal Computer" originated when IBM released their first personal computer named "Acron" in 1981 (shown in the picture above) running Microsoft MS-DOS operating system. Following the release of Apple's first computer with GUI, Microsoft responded with the release of Windows operating system. Since then the war has continued and many gradual advancements were made to computers. As a result, today computers are an integral part of every possible engineering, medical and science field. It has brought revolution in each of this field and have made our life much easier and safer.

Saturday, November 9, 2013

File Sharing: The Cloud Way

Internet is constantly changing the way people communicate and collaborate for various purposes. There was a time, I remember when files were shared using E-mails, USB drive, CD drives and even Floppy disks. There were many limitations of using such medias for communication. It was difficult for people in different part of globe to share files using physical media and e-mails only supported file size till 25 MB. Obviously, there were other options too but were more or less inconvenient, peer-to-peer file sharing for example (BitTorrent Protocol).

Today, the way people communicate and collaborate over the internet has completely changed. People cannot only share files using the internet, but can also collaborate to create and edit various types of documents such as word, power point presentations and spreadsheets. There are a numerous number of such file hosting services that runs in the cloud and provides an easy way of sharing files with other users. 

Take Data With You!
Such file sharing systems are based on cloud storage. Cloud storage is a form of distributed computing where a large number of storage and computing devices are inter-connected with high-speed network to provide high speed access to data and data is replicated across the globe. Cloud storage basically offers storing data online instead of users storing it locally on their machine. There are many great advantages such as below.

1. Files are always accessible from a browser from any machine around the globe with an internet connection.
2. Users can browse and upload files from their mobile devices such as phone and tablets. 
3. User files are always backed up at different locations (data centers) around the globe. It's way safe to keep important files in cloud and never lose them.
4. Files can be shared with others instantly with just few clicks.
5. Users can collaborate over the internet to create and edit various types of documents.
6. There is no practical limit on a single file size when stored in cloud.

Some popular file sharing services are Dropbox, Google Drive, Amazon Cloud Drive, Microsoft Sky Drive and Apple iCloud

Friday, November 1, 2013

Data Structures: Hashes

Computers store data in a data structure. Computer scientists write algorithms to access data from a data structure. It's good practice to use relevant data structure based on your need. It's good to have a wide perspective on variety of data structures in order to choose an appropriate data structure for your need. Inappropriate selection of data structure tends to increase data access time, no matter how powerful computer you might have!

Array, Lists, Tree and Hash are some of the basic data structure commonly used. Each of these are suitable for one or the other purpose. Stack, queue and graph can be termed as Abstract data types since underlying implementation can use from any suitable basic data structure. For example, Stack can be based upon an Array or a Linked List. 

Hash: Key - value


Hash becomes handy when it is required to have frequent and quick data access and when data modification/deletion is not so frequent. The idea behind hash is to have [ key : value ] pairs stored in a data structure. Multiple values can be stored for each key in a hash. Let's look at how data is stored and accessed from a hash.

Hash takes two values: 1) input data 2) input value. First, hash function converts "Input data" to a key. The generated key than indicates the location to store corresponding "input value". These locations are often called as "buckets". Multiple "input data" can fall into same buckets and hence one key can have multiple associated values.

For accessing data from a hash, we again provide "input data" to get corresponding "input value" stored in a hash. Given an "input data", hash applies the hash function which returns the key indicating the location where corresponding value was stored. Hash than accesses that bucket location and returns the corresponding stored value. In case when multiple values are stored for a given key, a comparison function has to be used in order to get right "input value" for given "input data".

Hash operations are quite efficient and provides O(1) access time for read/write/delete for best case and O(n) access time for worst case where "n" refers to number of items in a hash.

An example where hash can be used is as below:
Consider an application which wants to retrieve a person's phone number in no time given a name. A hash can be generated for [ name : phone-number ] pairs where name is a key and phone-number is a corresponding value. Now whenever we want to find a person's phone number, we can feed in that person's name to application returning his/her phone-number immediately, if found in O(1) time. This can be useful when say we data for millions of people in our database and we want a quick access to give person's phone-number.

Click here to watch an excellent video on Hash data structure.

Sunday, October 27, 2013

Hacking - Hackers and Crackers

Hack. A bad thing for good guys and a good thing for bad guys. Hacking a computer means gaining unauthorized access to a computer's data. As every coin has two sides, hackers can be seen from two perspectives: Hackers and Crackers. Term "Hacker" is largely misunderstood. It could mean either: Good hacker or bad hacker. Good hackers have no intention to exploit system vulnerability while bad hackers do. However, term Cracker always refers to those trying to exploit system vulnerabilities. 

Hacking into computers have been around for quite a long. In earlier days of computers, there was a little connectivity between computers around the globe. However, hacking computers over a network started as early as in 1987 exploiting vulnerabilities of a network to which computers are attached. Today, almost all devices (Laptops, Desktops, Mobiles or Tablet devices) are somehow connected to Internet and with an advancement in technologies attacks have also been improved. It is very much important that computer systems are properly secured and protects systems from at least known computer attacks.

Hackers (and not Crackers) are those who breaks in to the system for good reasons. These people are also referred to as Computer Security experts. Their aim is to identify vulnerabilities of the computer system. The system could be for example a desktop software, a website or a corporate network. Big corporations are an easy target for Crackers since gaining confidential data/information from such corporations can make their businesses loose millions of dollar. There are various techniques used by Hackers/Computer security experts to find vulnerabilities in computer networks. Some of these methods include: Penetration attacks, Vulnerability assessment, Denial of Service attacks and Social engineering attacks. 

Hackers and Crackers


Crackers (yes, those bad guys) are those who tries to exploit system vulnerabilities in a bad way. Their intentions could be anything: profit, a challenge or revenge. Breaking into a computer is not so easy task, at least today. The advancement in technology prevents breaking easily in to computer systems with known attacks till date. There are numerous number of attacks in computer history. I got a chance to understand some of the famous large scale computer attacks in CS 265 class last Fall. Those attacks were very sophisticated and exploited as many systems as they could in a little amount of time. Some attacks that I have studied includes: Password Cracking (passwords are very vulnerable for gaining computer access), Packet sniffing, Malware,  Computer viruses, Key loggers, Trojan Horse, Denial of Service attacks and Men in the Middle attack.

It can be argued that the war between Hackers (good guys) and Crackers (bad guys) can never end. No matter how computer systems get more secured, Crackers finds another way to attack computer systems. However, this also helps in a good way in which computer experts design solutions to protect systems against these unseen computer attacks. 

Based on my experience and observations, below tips will help stay protected:
1. Do not use one single password across all accounts held.
2. Try not to generate password from your personal details. 
3. Do not click random websites and immediately close such websites where content look malicious.
4. Do not install software from an untrustworthy or suspicious publisher.
5. Check for a valid SSL certificate for popular websites. (e.g Facebook, Gmail, Bank websites)
6. Try not to give personal information on each website registered.
7. Have a complex password for your online bank accounts, since you know why!

Sunday, October 13, 2013

Open Source: Why it's "Free"?

Getting something without paying a dollar - "Free" is awesome. The "Free" label attracts nearly every human being on earth, which is expected behavior.

Computers are everywhere - in engineering field, medical, education, art and communication fields to name a few. What powers computer? It's software. It's Obvious that the real power comes from hardware on top of which software runs, but for end-users it doesn't matter. The real interaction with computer happens through software. 

Building a computer software requires a language and set of other supporting tools and software.  Developers build software and there are hundreds of languages and tools that they can choose from. Now what if those tools and languages required a price to pay for using them to build a software? If that was the case today, computers would have not seen the advancement and innovation that we see today. What could be the reason? It's simple. There will be a smaller audience interested in paying for a software and using it than a larger audience willing to use it for free towards a good cause.

Open Source Software


"2 hands are better than 1". This also applies to computer software. Computer software are prone to errors and requires careful development and testing. The more number of eyes sees the source code and carries out testing, the more stable and reliable it becomes. This is exactly the case with Open Source software. 

Open Source software are licensed under "free license" and can be redistributed and are allowed to be modified/improved. The source code for the Open Source software is available to public for use and/or modification. I believe there are several advantages of making a software Open Source. I list some of them as per my opinion.

1) It improves the original release of source code and helps remove bugs and other problems.

2) People from around the world can make a contribution towards the betterment of software and helps a wider audience to connect with each other. This also promotes networking opportunity with a community for the Open Source software.

3) It provides ample of learning opportunities. Contributing in an Open Source software helps an individual learn new technologies which certainly helps towards their career growth.

4) People can get recognized for their contribution towards Open Source software.

5) It brings innovation and advancement as different minded people with different background and experience works on Open Source software.

Lastly, the most important advantage that I believe is:
Open Source software have at least the same number of functionality as their Proprietary counter part software. Most of the people requiring the use of such software do not need advanced features provided by proprietary software and only needs a number of basic features which Open Source software provides. It doesn't make sense to buy a costly proprietary software for some number of basic features. Also, if users feel the need of using advanced features, based on the experience with Open Source software they can always buy the full-featured software (which can be a closed source software).

The most successful example of keeping a software/platform Open Source is Linux. It is the best example of open source software collaboration. Other such popular platform is Android and is no doubt very popular mobile operating system around the globe.

As software program developer, I would recommend making the best out of Open Source software, both as a user and contributor. Presently, I personally am using language R (statistical analysis) and I am glad I get nearly all features of MATLAB via Open Source package R without paying a dollar (MATLAB full version costs hundred of dollars). List of Open Source software can be found here.

Sunday, October 6, 2013

Introduction to Agile Software Development

There are many software development methods or approaches in existence such as waterfall method, spiral method, incremental approach, rapid application development and iterative methods. This methods work as a framework which controls how the project is developed and maintained. There method lacks in or the other aspect of project development. With Agile software development, projects can be developed with more flexibility and pace as product releases requires faster time-to-market. 

Agile methodology is also a software development methodology/framework. It is an incremental and iterative software development approach. Agile software development is nothing but a different way of developing and maintaining software. As the name suggests, it is very flexible methodology and provides agility in many aspects of project development and maintenance. Some aspects are listed below:
1) It promotes adaptive planning
2) A time bounded iterative approach to development
3) Flexible to project requirements and changes
4) Rapid response to changing project requirement and changes

Agile development should give values or importance to below mentioned four things as referenced here:
1) Individuals and interactions over processes and tools
2) Working software over comprehensive documentations
3) Customer collaboration over contract negotiations
4) Responding to changes over following a plan

This four items, if given values/importance over their counter parts on right, will enable rapid software development.

As mentioned above, Agile software development is a framework or methodology towards software development. Many such agile methodology or framework exists: Extreme Programming (XP), Scrum and Dynamic Systems Development Method. Let us talk briefly about Scrum, which I experienced at my previous company.

Agile Software Development


Scrum is a framework built upon Agile software development principles with a focus on how to manage tasks within a team based development environment. Scrum has three core roles namely Product owner ( individual who works with customers directly and is accountable for delivery of a product ), Development team or team members ( develops the product and ships it after every sprint )  and Scrum master ( Ensure that scrum process is followed and is a facilitator for the team).

Sprint is a part of Scrum development and is time bounded. It could range between one week to one month. (Team at my previous company had two weeks per sprint). Sprint ensures that a part of product is delivered after each period(this facilitates time bounded iterative approach to development as mentioned above). Apart from periodic sprint meetings, daily scrums are held to discuss about what work was carried out the day before and what work is planned to finish the same day. Each team member typically takes a minute or two to report their daily status and may put issues/blockers faced in front of the team. Daily scrums help entire team know the status of others and how the overall project is progressing.

Some advantages of Scrum Agile development are as below:
1) Agility
2) Immediate feedback to each team members during daily scrum & sprint planning meeting
3) Issues & blockers are immediately addressed
4) Helps measure each individual's productivity
5) Time bounded development with flexibility in customer requirements
6) Defects will be identified at the earliest, as product is delivered after each sprint phase

There are various tools available in market to support Scrum framework. They can be found here.


Friday, September 20, 2013

LinkedIn and Branding: Ways to brand yourself

Skills have no value unless one knows how to utilize them. In today's competitive world, it's highly important to have a set of distinguish skills and more importantly know how to make an effective use of it. If you don't express your skill sets to the world, no body is going to figure out how brilliant you might be! Personal branding can help an individual to shine in this competitive world and get recognized for his/her expertise. 

LinkedIn is a social networking website for professionals. It is number one professional network where individuals get recognized for their contributions and expertise. LinkedIn can become a life changing factor if one understands the power of Personal branding. Power of LinkedIn's use for professional growth is recognized worldwide. Recent figures at wikipedia says LinkedIn has more than 225 million users worldwide. 32% of those users are from US, 9% from India and 5% in UK and Brazil. Having presence worldwide, Personal branding can help people explore various fascinating opportunities worldwide.

I below present few points (taken from here) from my perspective, which if followed will make people brand themselves effectively.
1. Custom LinkedIn URL: Custom LinkedIn URL of form "linkedin.com/in/yourname" highers the chances of people finding you through various search engines. (Try it out searching yourself)

2. Headline: With headline having future goals, others can understand the kind of domain/job you are interested in. Also, headline should be aligned with the past job experience. 

3. Summary: A summary divided in to three sections will help recruiters/managers derive a clear picture of person's background. First section should be about a brief on who you are, a second section should be about experience and expertise and third section about future aspirations. 


Make the most of LinkedIn


4. Detailed Experience: Past experience is a backbone of your LinkedIn profile. Industrial and academic experience plays a vital part in getting the job. Every project, be it academic or industrial, should be mentioned, possibly with all details that can be included. Attributes such as project website, awards honored and co-worker's recommendation can be included, if possible.

5. Volunteer Experience & Causes: A great feature available on LinkedIn. This expresses your social activeness and not just typical workaholic image.

6. Build Network: Add people who you know and can help you in your professional growth. Start following companies in area of your interest. Adding recruiters and hiring managers from interested companies can quickly help you find jobs relevant to your interest and background.

6. External website/work integration: In order to give better idea about your background and skills set, you can link your work to your LinkedIn profile. This work could be your personal website, research paper presented or co-authored, personal/work blog address and website for business owned for example.

I believe above mentioned subtle changes on your LinkedIn profile can boost up your Personal brand on LinkedIn. Keeping LinkedIn profile up-to-date is another important aspect of Personal branding. If you would like to, visit my LinkedIn profile here -http://www.linkedin.com/in/mehalpatel.

Thursday, September 12, 2013

Quick Response Codes: Powering Virtual Stores

QR Codes are abbreviated as Quick Response Codes. They are two dimensional bar-codes which can store much more information than it's predecessor - one-dimensional bar-codes. QR codes can hold virtually all types of data including numeric and alphanumeric data types, most commonly used. Some popular usage of QR codes are: URLs, Contact information, Coupon codes, Email Message, Social Networking and E-Calendar. Example of QR codes are displayed below (Scan to find out now!):

Welcome Message!Visit Google.com















Two-dimensional QR Codes were first designed for automotive industry in Japan by Denso ADC. Before that one-dimensional codes were in existence (since 1966) and could store more than a little information. In an attempt to increase storage capacity, 2 dimensional bar-codes were invented. These bar-codes are two-dimensional which can store information in both horizontal and vertical directions unlike one-dimensional bar-codes which stores information in horizontal directions only.

After being introduced for Automotive industry, QR codes quickly became popular because of some of it's unique features. QR codes are fast readable, has greater storage capacity than it's predecessor, has auto error correction and most importantly QR code has no license. More information about QR codes can be obtained here. Apart from automotive industry QR codes are being used in Manufacturing, Warehousing and logistics, Retailing, Healthcare, Life Sciences, Transportation, Office automation and Marketing & Advertisement as stated here.

Now a days QR Codes are driving Virtual Stores across the world. I found this particular usage of QR code quite fascinating. It's amazing how this little piece of square has potential to change the world and enrich people's day to day life.

Virtual store is changing the way people shop their daily needs from their favorite retail stores. Instead of physically visiting stores and shopping daily needs, consumers can scan QR codes of various household items placed in large banners at Train stations, Shopping malls, Airports and inside bus, for example. Consumers can make payment right on the spot as item gets added to shopping cart upon scanning QR codes. Consumers receive their purchased items on their doorstep via shipping.


Walmart Virtual Store

Virtual store shopping is very convenient and reduces overall time when consumers wants to buy certain household items frequently. Such virtual stores exists in Canada, South Korea, Argentina and many other countries. Walmart and Peapod have already benefited from such virtual stores. South Korea's HomePlus global grocery and merchandise retailer experienced 76% increase in new registered members and their online sales increased by 130%. A short video on HomePlus's success shows the power of QR codes.

With an increase in number of mobile users, Virtual store will take virtual shopping to a whole new level. Virtual stores will help companies increase their online sales and at the same time lowering their need for large number of  physical stores.

Friday, September 6, 2013

Social Networking: Security and Brand Promotions

Social Networking - an inseparable part of our daily life. Let us explore Security of and Promoting a Brand through Social Networks.

In today's world, Social Networking is growing rapidly. It provides platform for people to share their interests, life-events, thoughts, backgrounds and professional career interests to name few. Social Networking brings world closer and provides more elegant way to reach wider set of audience to communicate with. Social Networking platform can be used for personal and/or professional purposes. These rises two interesting aspects of Social Networking platform. Security measures of Social Networking(personal usage) and promoting a brand through Social Networking(professional usage). Let's look at them in turn.

Privacy is the biggest concern for Social Networking website users. Everyone benefits being a part of Social Network. At the same time users want their personal information private. However, privacy can't solely be achieved by Social Networking website provider but along with the help of Social Networking website users. Let's take an example of Facebook's Social Network. There are 3 most popular features - Add friends, Update status and Facebook applications(games & quizzes) as explained here which if not used properly, can break user's privacy. Consider an example where a Facebook user updates status as "Looking forward to the family vacation next week at Disney World".  This is comparable to a road sign shouting an "Empty House Next Week" to the outside world.  Friends of friends on Facebook can see what their friends are commenting on their friend's status. It may seem like nothing but status such as above might tempt strangers (Friend's of Friends or to large number of Facebook users if update shared publicly) to take advantage of an "Empty House Next Week" situation. A real example of such an incident can be found here. Example discussed here implies that it is very important to understand features of Social Networks and requires a second thought before using them extensively in one's day to day life. Awareness to such risks can help mitigate information leaks and subsequent damage.


Social Networking: Security and Brand Promotions

Social Networking can be viewed from a different perspective where this platform can be utilized for promoting brands. With just a click of a button, businesses can reach out to thousands of customers. A recent study, discussed here, says more and more customers connects to various brands, offering lucrative discounts, through Social Networks. This platform helps connect millions of costumers in a cost-effective way. A successful example of such a media promotion is Dell's discounted merchandise promotion over a dedicated Twitter account. Twitter account alone helped generate $3 million revenue where they posted discounted coupons and new product releases. Similarly other Social medias such as Facebook, Instagram, Flickr and Google+ also provides various features for brand promotions. A case study explains how HubSpot, an all-in-one inbound marketing software, took advantage of Facebook's brand promotion to increase sales. HubSpot actively engaged with their Facebook customers with the help of Facebook page and Facebook ads. Various marketing strategies using Facebook page & ads helped them increase their sales by 71%.

Friday, August 30, 2013

Welcome!

I welcome you all to my blog!


Here's a little bit about my technical background, why I love computer science and how I apply Concepts of Computer science on real world problems. 


I am a Graduate Student at Computer Science Department. I love everything about computers. The technologies surrounding it fascinates me like nothing else. Over the period of my Bachelor's and Master's degree, I have developed good interest in various technologies. Besides academic work, professional experience gave me opportunity to apply and sharpen technical skills I learnt during school. Most of my academic & industrial projects were based on Java programming language, hence, my primary programming language. I love to spend my leisure time reading or working on technologies involving Java. I strive to learn more and more as technology advances, keeping myself in sync. Besides Java, I love working on *nix (Unix/Linux) systems. 

Computer science is such a field where one can find something which still requires some research & development. In today's world, everything is being computerized . Having said that, this creates varieties of interesting problems which needs an answer from Computer Science discipline. I feel excited when I get to work on such problems, be it an academic project or an industrial project.


Computer Science


I have studied various areas of Computer science, Computer Networks, Cryptography & Computer Security, Algorithms and Big-data Analysis to name few. I have been exposed to various challenges which were addressed using computer science concepts during my school as well as professional experience. This has widen my thinking to figure out a problem solution by my analytical skills, fundamental knowledge and industry experience. Having explored various problems and their solutions, I am sure I would be able to take up wide set of problems which can be addressed using Computer science concepts.