Sunday, December 29, 2013

Windows 2008 R2 Core

I have been working on this OS for quite some time now.This has been one of the most strange windows OS that i have seen. No UI available complete command line, looks like working on a UNIX box.
Has been challenging, but i do like challenges.I started the first thing on this was porting our existing product on this, product just went for failure all of a sudden, installation failed, looked as if gonna be quite difficult to get through this situation.started debugging the same then found that product installer failing for some of the WMI Calls not getting through.Then just started looking in to it with some more debug statements, then found that WMI calls not getting created a sample to identify the issue, then gotta know that WMI calls do not get through on through an msi on windows 2008 R2 Core, due to some design changes.
Then created the whole package again, so that even if it fails for these calls it should go through.
Finally re-created the package and got it delievered, customers were pretty happy after the release.
Felt quite good.
Recently i observed some more strange things regarding this OS normally when we change the value of the PATH environment variable it reflects when we open the new command prompt.
But in this case we need kill the task manager & open it again and then open a new command prompt then the updated path gets reflected.

which way is technology heading to...

Today's modern day technology has really changed the way people feel about technology, use the technology for daily purposes and business purposes.Traditional Technology used to locked up inside a PC and people used to open the Box to do something fruitful.This has continued for almost 2 decades where companies like Microsoft,Apple,HP,DELL etc. have really ruled the market and hearts of the people with MS being the sure Winner in this race.Those were the golden days for all of these companies who are today considered as Traditional IT Solution providers.Things started changing when Google started attracting developers initially and end-users in latter stage with its modern day understanding, implementation & Reach of Technology.In today's changing market Trends Google is surely the winner. Traditional IT 
providers still do co-exist in IT Ecosystem, but they do just co-exist !!!

If you go back to the olden days, its clear that Traditional providers have really evolved IT and brought it to people's plate, but what they have kept hidden from the people is what actually runs behind the scenes.They were able to win a lot of hearts and businesses by demonstrating it as a complex thing and you need education to actually use it.Then people started minting money on IT Educations, certifications. I Still remember during my school days MS Certification used to be mandate for Govt. officers. PC was demonstrated as a complex thing which needs education,smartness and overall like, if you want to use it, learn it.As people didn't had a choice during that era, they used to put people to actually operate the PC and get things done.Even if it could have been done with just few mouse clicks. Traditional IT 

Folks have really scared the people and ruled the minds of the people almost like a pope explaining "the sins that you can get into if you do not follow this."

Google i would say has really come up with an open thought and an open mindset about technology. Technology is easy and simple to use, use it for your daily purpose and get your job done.Companies like MS, HP, DELL etc. really knew the market trend and thought that they are the Market leaders and market moves on their fingers and this over-confidence has led to a sad decline of this folks.

MS has been too late to enter into the Cloud Space, they were late almost by a decade. They had everything with them, if you trackback MS was one of first movers in embedded platforms and they remain sole provider for a very long time. you take GPS systems, ATMs,Handheld devices or even touch based O2 phones. MS has also innovated tablet in early 2000s which was XP based,they should have capitalized on that and moved it ahead but what really stopped could be the amount of revenues which is being generated from PC Business is very high and dependencies on OEM is also high.if MS wants to push Tablet in the market then it needs OEMs and OEMs might not be ready to promote it since they already have huge investments in PC world and even MS never wanted to get into Hardware world and remain always as software giant.MS dropped this idea. Even the idea for cloud and virtualization came little too late from MS as they gave it a very low priority since it needs continuous internet connection,security,reliability etc lot of factors and overall development cost.So they were happy to stick with old OS,Office business which they are very good at.

During the same period a giant was evolving with his beautiful search engine and modern thought about technology, which started stealing the show and growing silently in web space with its products like GMAIL, Google search engine, Google Ads and lot more web based products which really started helping end-users and Businesses in a easier manner and the most importantly it is independent of any OS since everything is Browser based.The show was completely moved towards Google after the release of 

Android as a common Mobile platform irrespective of hardware and open source too. And with just 5 years in the market from its release date it is surely the market leader with providing all the features and end-user would expect. Google has followed the Microsoft way in a sense by providing only the OS and rest left to the OEMs with a deviation of making it open source. 

In Past 2-3 years every end user has now become intelligent enough to use the Smartphone without any training required. I would say end-user has become so smart with this smart phones that they know what they are actually doing and why they are doing, today's end-user has now started questioning is the video quality good, can i share this on facebook, can i do a voice chat for free etc. This is a big change in the way end-user looks at the technology today. Today everyone without fear does a Google search and gets the answer no need to open a Big PC box or ask someone to do it for you,since you do not know how to use computer.I even do see an end-user talking cloud computing like "ya this is processing on cloud, net is little slow taking time". This was just unknown to end-user for a long time.with Google world has gone Web and end-user really smart to use it.

During the Same period another Giant which picked and ruled the world and it still rules is Apple. 

Apple with its Flagship product iPod, iPhone and then iPad really got end-user experience drastically changed.Though iPad which was criticized initially by Tech Giants later everybody followed it like Sheep.
With this overall war has started between two i.e Apply vs Google.

This is a really Pity that during that stage MS was a just a passive participant in this war and busy releasing OS like Windows 7,8,... MS Which still has the biggest PC Market in the world and above that largest enterprise market really failed to smell the heat which was there in the market and a lost a big share of it which could have been a cakewalk for him.

Now the question arises for the Developers and end-users who have been so loyal to MS for decades. MS has always lived up to its promises, but in its own way. This a big shift in the market from Traditional PC Computing to Cloud Computing where MS is trying its best to put its feet on. It has acquired Nokia to enter into Mobile space and trying really hard to find a place in this changing Market Trends. with now newer Platform Azure it is entering in to cloud based server computing which can handle any clients i.e iOS,Android and obviously windows.But is it too late to enter this market now for MS or it could really do this time again. MS has always dominated the market with its cool business tactics but is it finding difficult to compete with offerings from Google and Apple. For a MS Developers and Enterprise it is wait and watch situation before making any strategic decision to move to other providers.

Finally i would like to conclude 

"Google is Coming up, Microsoft is Coping up which way should i Look up ??".

Why Guidelines are important in Programming

Completing every task is important but how you complete it, is equally important !!!
Guidelines are one of the building blocks for any foundation. We do follow Guidelines almost everywhere in our life like Walking on the Street, Driving a Car, or having a Food. There is a certain amount of common guidelines are followed almost everywhere.

People can say they had lunch but was this the right way to have lunch ??
How would it be if people in cafeteria don't take the food in the plate and just barge in, which creates a big chaos and finally they end up spoiling the entire place.Then somebody from housekeeping is being called to clean the floor.Does this looks civilized way of eating had they been taking food in plate they would have avoided the chaos and also cleaning required from housekeeping.

Following Coding Guidelines should be the Developers first religion !!!
While doing programming there are certain Coding Guidelines which needs to be followed.This guidelines make sure that code is written in right way with all the possible error handling which makes it foolproof.Code can be written without this guidelines but will that work in all the scenarios that is positive and negative ??Many a times developer do this mistakes of not following the guidelines and just writing the code they feel is correct, this works fine in positive test cases but starts failing badly in negative scenarios.
Writing a code without guidelines does accomplishes the task in the first place but it spoils the entire product and then company has to invest time and money in cleaning it up.

My personal Experience.........
I have seen lot of scenarios in which serious issues did came for a silly thing that buffer was too small to handle the data. The reason being simple developer never thought of making this dynamic and allocated it to a static size which he thought it would never reach.This would be have been 10 mins job for developer when he written it, but now it has come as customer case due to which,Project management,Programme Management, Architect,Developer,QA everybody is involved.Can you imagine the cost that company is bearing for a small mistake by a developer.This does not stops here now developer needs to reproduce the scenario which again takes time, then there is regular follow up with team at customer site and all the stake holders.Finally after identifying the issue developer fixes it and makes the release.But now QA has to re-validate not only that Defect but certify the product again that there are no impacts due to this change.
What has happened finally we have just introduced cost to company due to one silly mistake.
Is this acceptable ?? Shouldn't developer be following a basic guideline before he writes the code ??

How can we make it better ??
There are some basic Guidelines that any developer in any programming language should follow
  1. Think of all the scenarios before you write the code, consider both positive and negative
  2. While writing the code,read the API documentation carefully, check what all error codes API is returning   and see how to handle them
  3. Add proper exception and Error handling to the code
  4. Initialize the variable before you use them
  5. Release the memory after you use it, if you use manage code than be sure Garbage collector will free your objects
  6. They should not be any buffer overflows or stack overflows in your code.
  7. Code should be unicode compliant
  8. Neccessary arrangement for localization should already be done
  9. Check the data which is being processed is of static or dynamic size and take decision accordingly.
  10. Divide the code in smaller functions, which makes it more readable, reusable & maintainable.

Thinking Positive is Good but only positive is not Good !!! 

Big Data

When we hear the term Big Data first thing that comes to mind that a Data which is Big. But what is the definition of Big, do we consider a data which is in TeraBytes as Big Data or do we consider more than this as Big.Getting to this detail is really important.
Lets say i want to transfer a data of 100GB over email is it possible, the answer is no,The reason being Email Client cannot send data of size 100GB, it means it cannot process data of size 100GB. It means this data is Big enoughfor Email Client to handle.Lets say I want to transfer this same data using Wi-Fi or through file sharing then it would certainly be possible.It means this data is not Big for Wi-Fi File Transfer, since it can handle this. How is that the same data is Big for one but not for other
this is due to computational capabilities of each of this applications or services.So we would summarize
Big Data is a Data which is beyond Computational capabilities of certain utility or application or service.
Overall if we see, there are two types of data one which is being saved in conventional system like Databases which is in a structured format.Other is the one which is variety of data with different combinations like Text,Image,Video,Blog,Article,Surveys,Posts etc. which is scattered and which is not in a structured format. So Overall Data is either Structured or UnStrctured.As on Today out of 100% of data which is available Structured data is only 10% and Unstructured Data is 90%.Today's Business Analytics, predictions etc is being done on this Structured data. But to have accurate Analytics and predictions more effort needs to be put to read and process unstructured data.Processing Unstructured Data is the Biggest challenge, because of some important factors i.e its Variety & Volume.
So here we define 3 Attributes of Big Data
1. Variety
2. Velocity
3. Volume
A solid Example of Big Data is Facebook.Everyday Facebook generates 25TB of Data with a huge variety of Text,Audio,Video,Images etc. and at an undefined input velocity.So all 3 attributes of Big Data are covered under Facebook.Who is the source of this Big Data ?? Why and when this gets generated ??
Big Data is being generated by almost all the smart devices around us with rate of almost every second.
To List a few of the sources of the Big Data are as below PC's,SmartPhones,Tablets,Social Networking Sites,Smart Grids,Smart Meters,Mobile Apps,Industrial Automation Devices,Finance Applications,Retail Applications,Many more....

Is all this data which is being generated is really useful, what business needs can it justify ??
Lets discuss about some of the important sources.

SmartPhones is biggest lifeline of all the people across the globe.Today Sales of SmartPhones has outperformed sales of PC. People do store all the personal information in Phone and also keep sharing this data with lot of friends and colleagues.Like some applications like "WatsApp" are the ubiquitous Apps which people do use for sharing the data.SmartPhones are being used for booking movie tickets, do a faceebook update, post tweets on twitter and a lot more thing.This is a lot of data, This is a lot of personal data, which shows the pattern of the person regarding his likes,dislikes etc.

Gone are the olden days when people used to know their electricty usage at the end of the month and used to get shocks due to this bill.Now with smartmeters, people do get to know their usage almost every hour and tune their usage accordingly.Now if we collect all these data and analyze it, it would help us understand the usage required in the country and when they need to borrow the electricity or they could actually lend power to other nations. like canada selling power to US or US selling power to canada.

Social Networking Sites
Social Networking sites like facebook,twitter etc. do allow people to share their personal data,pictures,videos etc. This is a lot of data about a single person regarding what activity the person is doing, what are his likes, dislikes.This also gives information regarding his opinions regarding certain issues,
whether he supports such a case or not.Everyday facebook generates 25TB of data, twitter generates 12TB of data.This is a lot of data.How could we makes this data useful ??. if we gather this data about a person we could actually monetize on that by generating a pattern and predicting what he would be looking for next and presenting that data, so that he can quickly purchase it. Lets say if we understand that he likes to watch hollywood movies then we offer him next upcoming hollywood movie by Tom Hanks and this could generate business for us.

Technology Going forwad....
This are just a few examples where Big Data is being generated. Now with the Technology moving fast pace, we will be having more smart devices around us which will be generating more data, then we actually can think of. We Will be having an instrumented and interconnected world with these new set of devices. Slowly will be moving towards next generation of cities i.e Smart Cities which will have huge set of smart devices interconnected and continuosuly trasnsmitting and processing data which will help businesses,end-users to achieve their goals faster and in a better way.

In a Nutshell....
if we could process all of this data for different causes we could actually achieve a lot
1. Lets say we could predict what could be next natural calamity
2. Which part of my airbus is not functioning well
3. Which devices in my network are consuming too much of power ??
4. will the stock market crash ??
5. Will sales of smartphones go up next month ??

We can Do Real Big Things with Big Data, Just that we need to Think Big !!!