Monday, December 24, 2012

Dependency Injection: For my Ninth Grader

Homestead High’s Astronomy Club has planned to arrange a visit to Foothill Observatory. So each student was asked to reach observatory at 9.00 AM on following Saturday. Everyone agreed. On Saturday, only quarter of the club members made to the observatory.

Club’s presiding officers were surprised that why only few students made to the observatory despite being so close to school. They decided to find out the reason, so future visits can have more participation. After talking to club members following reasons were listed for low attendance:

1. Non availability of public transport near observatory
2. Parents were busy somewhere else so no ride was available
3. Lack of coordination among students, so ride share was not common
4. …
5. ….
6. …

After few months, Club proposed to visit observatory again. But to avoid previous mistake, this time Club Officers arranged transport from School to observatory and back. Attendance rose to almost 100%.

If you notice in both scenarios only one thing has changed but results were drastically different. What was the change!!

In first scenario, each student was supposed to arrange his transport and in second scenario club officers had responsibility to arrange transport.

In second scenario students were dependent on club officers. It was up to club officers to arrange transport from First Student Charter or US Coachways any other transport company. It was possible that club officers might have arranged one bus from First Student Charter and second from US Coachways. In general students were dependent upon club officers for transport so have more time and energy to focus on learning.

This is Dependency Injection (DI).

Wednesday, December 19, 2012

Prediction for remaining decade (2013-2020)

1. SAAS and PAAS will prevail for small and big enterprise.
2. IAAS will thrive in enterprise data centers (Private Cloud)
3. Industry specific cloud platforms will rise to cater regulatory and vertical specific needs.
4. Fragmentation and Alternatives of Java and Enterprise Java (like Apache harmony, and Spring) will emerge stronger and official java from Oracle will loose its sheen due to lust for its monetization by Oracle.
5. Laptop, mobile and tablet will merge into one.
6. Indian IT workforce will shift from permanent job to contractual jobs like in USA.
7. Developing countries will swept by telecom revelation like India in previous decade.
8. Gamification will engulf almost all experiences especially of social media.
9. Outsoucing will change from India focused to 2I + 1 (2 location in India and one elsewhere)
10. Apple will loose its grip on smart mobile phone market.
11. Application will be pervasive in devices and appliances like phones (mobile and fixed line), TVs, automobiles, refrigerators, disk (CD/DVD/BlueRay) players, and any computing device.
12. Fragmentation of Internet - There will be walls around country or region specific internet
13. Rise of china based technology companies.


Prediction for remaining decade (2012-2020)

Tuesday, December 18, 2012

Top Tech trends of 2013

1. Merger of Tablet and Smart phone into one in developing markets ( India, China, Africa, South America)
2. BYOD will gain further momentum
3. Specialized app store will rise but will be controlled by big daddies of IT ( Apple, Amazon, Google, Samsung, Microsoft, etc)
4. Mozilla’s Mobile OS will emerge and start threatening Android.
5. Advertisers will follow you from one device to another ( Phone, tablet, laptop, desktop, smart glasses, etc)
6. Consumerization of IT will gain further momentum
7. Jobs will keep on shifting from Hardware to Software
8. Private Cloud will gain currency will ultra large (e.g. Wallmart), financial institutions (Banks, Insurance, etc.), security and privacy conscious industry (defense contractors, etc.)
9. HTML5, Java Script, CSS experts will be in great demand
10. Social networking Analysis
11. Big Data and Social networking Analysis will rise further
12. Spatial gesture sensitive and voice controlled devices will rise further
13. Mobile payment will rise further

Top Tech trends of 2012

Monday, December 17, 2012

Software requirement gathering failure


Recently, I came across news in which server in a restaurant has nick named one of the guest and that nick was offensive (http://www.latimes.com/features/food/dailydish/la-dd-food-fyi-women-called-fat-girls-on-restaurant-receipt-20121210,0,4647008.story).



From software perspective this is a failure in requirement gathering.  I can fairly assume that one who gathered requirement has not worked on the floor.  She should know that giving nick name is common practice any restaurant and most of the time ad hoc nick names are not so pleasant.  So why nick name got printed on receipt. Life of nick name should be confined till screen of Point of Sale (PoS) system.


So lesson for any Product Owner in any agile (SCRUM) software development (sic!) environment must have worked on the floor and not living in Ivory Tower.


Wednesday, November 28, 2012

Semantic Software



I remember in hey hay days of web 2.0, there was lot of talk about semantic web. But it seems that just like many other fads, semantic web fashion (sic!) is also evaporated. 

But still, Semantic web makes lot of sense as web is becoming things oriented from human focused.  In the core of semantic web, lies semantic software.

Before going further, let’s pick some argument which provides differentiation between syntactic and semantic.
Syntax is what the grammar allows, semantics is what it means (http://c2.com/cgi/wiki?SyntaxVsSemantics)

But this differentiation does not provide any clue about, how to make software more semantic.  As per the above statement, every software is semantic.

But, does  this full fill the fully automated internet of things? I do not think so. Then what are the THINGS/CONCEPTS make a software semantic. In my view software which can evolve by itself in an ecosystem is truly semantic. Does our computer have reached that level of maturity where software can evolve by itself? NO.

So, how to make a software self evolve.? I do not know but I think usage of following concepts in software will push in right direction.
1.       Pattern matching
a.       Text  --> Regular expression --> To parse any input text, stored text
b.      Data àstored, real time (Complex Event processing)
2.       Pattern discovery
a.       Text (unstructured data)
b.      Data à stored
3.       XSLT and Schematron
4.       Rule engine
a.       Rules are defined at design time
b.      Rules are defined at run time
5.       Glossary/ontology/taxonomy/data dictionary à not on the piece of paper but in code. Data dictionary usage can be seen in usage of combo box instead of free text, option buttons, 
6.       Choreography (not orchestration)
7.       Understanding of meta data of various constructs and giving handle to user to manipulate them to alter behavior of that construct under the eco-system of given computer ( hardware and/or software)
8.       Artificial Learning (AI) and machine Learning (ML)

Tuesday, November 27, 2012

XML: For my Ninth Grader - Part 2

XML: For my Ninth Grader - Part1



But any real book has a name, author name, text under each element, chapter name, and section name. This information is still not represented anywhere. Let us try to represent this information.

  


If you notice in pictogram, few of the additional information added can be represented better if that gets its own box. For example, in Book --> Front Matter --> Forward, Content need to be broken into Paragraphs and each Paragraph should have its own box.

Lets’ redraw the book picture again with additional understanding.
 






If you notice, few of the things from boxes of previous picture are moved into new boxes while some are remaining inside the original box. For example in forward box, heading remains inside the box while paragraph has moved out.  

This decision is arbitrary and left to the designer of the XML. I have chosen to follow a simple rule. Something which is small will remain the box and something which is big enough, should move out and acquire its own box.

Now let us assume a book which is very simple (so it does not have most the optional elements). So my book’s structure is:


Now let us represent this picture in the form of the text.
 


 


This textual representation is XML.

Reference: