tag:blogger.com,1999:blog-78934280623854200372024-03-13T04:35:12.955-07:00Digital serialization of "I"Anonymoushttp://www.blogger.com/profile/12005534559649864874noreply@blogger.comBlogger12125tag:blogger.com,1999:blog-7893428062385420037.post-4875649348724062102014-08-12T00:13:00.000-07:002014-08-13T03:48:10.139-07:00Web page performance - Myth and solution...<div class="MsoNormal">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">At different points in my journey in software industry, I
got engaged in discussions/exercises, which are aimed towards improving the
performance of the product (For now, let’s constrain it to only to web based
products). I have learnt a lot from all such engagements, but at the same time,
I feel that there is a lot of gap, the way people see performance and aspire to
improve it. Let’s dig a little deep and understand the objective and how to
achieve it. <o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="MsoNormal">
<u><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><b>Define the performance GOAL</b><o:p></o:p></span></u></div>
<div class="MsoNormal">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Performance improvement is something, which at no point of
time you can say with 100% confidence that you have achieved it completely. It
can be an endless exercise and you do it endlessly only when you have INFINITE
people and time to do it. But the reality is different. So, it boils down to
the fact that you should come up with a smart GOAL for performance to ensure
smart ROI. <span style="mso-spacerun: yes;"> </span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="MsoNormal">
<u><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><b>How to define GOAL</b><o:p></o:p></span></u><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Defining the goal for your web page performance can be a tedious exercise. Most of the time, I have encountered people having random goals (page load time less than 2 secs.) without doing enough homework. IMO, before stating the goal, one should first analyse following parameters - </span></div>
<ul>
<li><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><b style="text-indent: -18pt;">Consumer</b><span style="text-indent: -18pt;">:
It sounds reasonable and obvious to first figure out the consumer for whom you
are improving the performance. For majority of the cases, I find two main
categories here.</span></span></li>
<ul>
<li><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif; text-indent: -18pt;">The real end user</span></li>
<li><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><span style="text-indent: -18pt;"><span style="font-size: 7pt;"> </span></span><span style="text-indent: -18pt;">Search engine crawlers</span></span></li>
</ul>
</ul>
<div class="MsoNormal" style="margin-left: 36.0pt;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">In case you are not worried much
about SEO then you can consider yourself in the luckier lot who do not need to
think about the later.</span></div>
<div class="MsoNormal" style="margin-left: 36.0pt;">
</div>
<ul>
<li><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><b style="text-indent: -18pt;">Platform:
</b><span style="text-indent: -18pt;">Performance numbers vary significantly based on the platform e.g. if your
web page is only for mobile then the perf. score target can be significantly
different from a web page which is only serving on desktop browser.</span><span style="text-indent: -18pt;"> </span></span></li>
</ul>
<ul>
<li><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><b style="text-indent: -18pt;">Page budget</b><span style="text-indent: -18pt;">:
There have been numerous discussions on the </span><a href="http://www.slideshare.net/grigs/native-is-easy-web-is-essential/51" style="text-indent: -18pt;">obesity
of internet</a><span style="text-indent: -18pt;">. This obesity comes with a cost to performance. Hence we must
define the page budget upfront and performance goal should be in accordance
with the page budget. The idea behind the page budget is to define amount of
content (text, video, image etc…), dynamism, 3</span><sup style="text-indent: -18pt;">rd</sup><span style="text-indent: -18pt;"> party assets you
want to load on the page. Due to the nature of business, if you provide a very
high budget to your page, then you should compromise your performance goals
accordingly.</span></span></li>
</ul>
<ul>
<li><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><b style="text-indent: -18pt;">Performance
metric</b><span style="text-indent: -18pt;">: Now it boils down to which metric is the best to track the
performance of the page? There are so many metrics related to page performance.
Traditionally page load time has been the de facto metrics, which I have found
everyone emphasizing on while talking about page load performance. I am not
sure about the reason but the reason can be as basic as “it is easy to
understand” compared to other more technical metrics. IMO, correct metric
definition is very important part of the overall optimisation strategy</span></span></li>
<ul>
<li><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><b style="text-indent: -18pt;">Speed
Index: </b><span style="text-indent: -18pt;">For end user what matters most is how quickly he/she can start
consume the content on the page. How does it matter if one ajax call on the
page is taking 10 secs in the background but most of the content is loaded for
consumption for the end user fairly quickly. Although the page load time for
such pages will not be very healthy but user is not restricted from consuming
the content of the page unless page load event is not fired for the page. So,
it reasonably intuitive that if you device a metric which gives score around
how quickly the content is rendering for a given page and optimizing that will
yield better end user satisfaction. </span><span style="text-indent: -18pt;"> </span><span style="text-indent: -18pt;">I
find </span><a href="https://sites.google.com/a/webpagetest.org/docs/using-webpagetest/metrics/speed-index" style="text-indent: -18pt;">Speed
Index from Webpagetest.org</a><span style="text-indent: -18pt;"> to be an apt metric for the same.</span></span></li>
<li><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><span style="text-indent: -18pt;"><span style="font-size: 7pt;"> </span></span><b style="text-indent: -18pt;">TTFB for
search engines</b><span style="text-indent: -18pt;">: People have been experimenting with various page
performance metrics to understand its impact on SEO.</span><span style="text-indent: -18pt;"> Moz guys did a thorough analysis around it to understand the relation between a given
performance metric and SEO rank. And the results are not counter-intuitive. As
per the result the </span><b style="text-indent: -18pt;">time-to-first-byte
(TTFB)</b><span style="text-indent: -18pt;"> has a correlation with the search rankings.</span></span></li>
</ul>
</ul>
<div class="MsoNormal" style="margin-left: 36.0pt;">
<o:p><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></o:p></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaLYa0cIbR0FoC2UwzHbSteEDEHATgNcK1K0gXD4_RgFz7wuyrYw6u1dwR8RK4MMkKD8FyRzqucFhTM-9EMVLcO5psaf_FxnTj7rvdYSbzb3aHycZHaiastMO5acwWC1pR0KJeZzZmFT4/s1600/Untitled.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaLYa0cIbR0FoC2UwzHbSteEDEHATgNcK1K0gXD4_RgFz7wuyrYw6u1dwR8RK4MMkKD8FyRzqucFhTM-9EMVLcO5psaf_FxnTj7rvdYSbzb3aHycZHaiastMO5acwWC1pR0KJeZzZmFT4/s1600/Untitled.png" height="163" width="320" /></span></a></div>
<div class="MsoNormal" style="margin-left: 36pt; text-align: center;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Lower TTFB leading to higher
search rank position.</span></div>
<div class="MsoNormal" style="margin-left: 36pt; text-align: center;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiw6rGbgLJtDJ6lZgnlQXQXLlPUGy7UO7BeZEsx8StFkm4kXWrS2mKLGEIeB9F-BP9QTaQZpUEyTAq4pfO3EOPjzX_5wz5w1v0WRaClvnmv2u22e2nqOtLDN3GNTbZUNXVuRZJabLyqxf8/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiw6rGbgLJtDJ6lZgnlQXQXLlPUGy7UO7BeZEsx8StFkm4kXWrS2mKLGEIeB9F-BP9QTaQZpUEyTAq4pfO3EOPjzX_5wz5w1v0WRaClvnmv2u22e2nqOtLDN3GNTbZUNXVuRZJabLyqxf8/s1600/2.png" height="161" width="320" /></span></a></div>
<div class="MsoNormal" style="margin-left: 36pt; text-align: center;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">No correlation between page load
time and search rank position.</span></div>
<div class="MsoNormal" style="margin-left: 36.0pt;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="MsoNormal" style="margin-left: 36.0pt;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">For more detailed report access <a href="http://moz.com/blog/how-website-speed-actually-impacts-search-ranking">Moz
report here</a>. </span></div>
<div class="MsoListParagraph" style="mso-list: l1 level1 lfo2; text-indent: -18.0pt;">
</div>
<ul>
<li><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><b style="text-indent: -18pt;">Competitive
analysis</b><span style="text-indent: -18pt;">: </span><span style="text-indent: -18pt;"> </span><span style="text-indent: -18pt;">At the beginning when you
are building the product first time, it becomes really complex to come up with
target numbers for performance metrics. In such cases, you can get a lot of
clue from competitive landscape. This analysis can help you both in terms of
setting up the goal for performance metrics and page budget.</span></span></li>
</ul>
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br />
</span><br />
<div class="MsoNormal">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Defining the right goal is almost half the battle won. All
of above can help you in terms of coming up with the right performance GOAL for
your pages. Now it all boils down to how to achieve the goal and
maintain/improve on a regular basis. <span style="mso-spacerun: yes;"> </span>There are many technology write-ups about tweaking
performance at DB level, server end and UI level. But IMO, the most important
piece is to inject right hooks in development process so that everyone remains
sensitive about performance. <span style="mso-spacerun: yes;"> </span>Below items
which can provide you some clue on these lines:<o:p></o:p></span></div>
<div class="MsoNormal">
<u style="text-indent: -18pt;"><b><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></b></u></div>
<div class="MsoNormal">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><u style="text-indent: -18pt;"><b>Performance
in product design</b></u><span style="text-indent: -18pt;"> </span><span style="text-indent: -18pt;"> </span></span></div>
<div class="MsoNormal">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><span style="text-indent: -18pt;">A large part of
performance goal can be achieved by right design of product. I am firm believer
that the sensitivity about performance should start from the product inception
stage. Brad frost has described it beautifully </span><a href="http://bradfrostweb.com/blog/post/performance-as-design/" style="text-indent: -18pt;">over here</a><span style="text-indent: -18pt;">. The
requirement document should clearly mention about performance goals for pages
considering the above-mentioned parameters.</span></span></div>
<div class="MsoNormal">
<b style="text-indent: -18pt;"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></b></div>
<div class="MsoNormal">
<b style="text-indent: -18pt;"><u><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Performance
measurement tools integration with Continuous integration system</span></u></b></div>
<div class="MsoNormal">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><span style="text-indent: -18pt;">During
regular development cycle, it is very important to raise alarms at the very
early stage in case there is degradation in performance score for a given page.
It is almost impossible to achieve this in a manual way hence one should
integrate tools, which provide the relevant scores with each build and raise an
alarm in case of degradation. You can use tools like </span><a href="https://developers.google.com/speed/docs/insights/libraries" style="text-indent: -18pt;">Google PageSpeed
Insight score</a><span style="text-indent: -18pt;"> for such purpose.</span></span></div>
<div class="MsoNormal">
<b style="text-indent: -18pt;"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></b></div>
<div class="MsoNormal">
<b style="text-indent: -18pt;"><u><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Knowledge
sharing</span></u></b></div>
<div class="MsoNormal">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><span style="text-indent: -18pt;">I have seen many instances where in people act on performance
improvements only when there is an alarm raised for it. I attribute it to lack
of awareness, which can be reduced significantly by creating a
knowledge-sharing environment.</span><span style="text-indent: -18pt;"> </span></span></div>
<div class="MsoNormal">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">I could have covered the nitty-gritty details of perf.
Optimization in a given technology but I believe that more important part is to
have a smart approach. Rest I will leave it to you decide whether you want to
jump on the problem in a reactive way or …</span></div>
Anonymoushttp://www.blogger.com/profile/12005534559649864874noreply@blogger.com8New Delhi, Delhi, India28.635308 77.2249600000000128.1893855 76.579513 29.081230499999997 77.870407000000014tag:blogger.com,1999:blog-7893428062385420037.post-91954159127297984692013-03-24T06:07:00.001-07:002014-08-12T00:48:09.127-07:00Complexity in software design<!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]-->
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>JA</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
<w:UseFELayout/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="276">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]-->
<!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:Cambria;
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:minor-latin;}
</style>
<![endif]-->
<!--StartFragment-->
<br />
<div class="MsoNormal">
<div style="text-align: justify;">
<div style="text-align: left;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">During last many years of my career in software development,
I came across many systems. Knowing about all those systems and their designs
was really an enriching experience but somewhere in the back of my mind, this
question remained unanswered: What is an appropriate design?</span></div>
</div>
</div>
<div class="MsoNormal">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><o:p></o:p></span></div>
<div class="MsoNormal">
<div style="text-align: justify;">
<div style="text-align: left;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></div>
</div>
</div>
<div class="MsoNormal">
<div style="text-align: justify;">
<div style="text-align: left;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Till now, I have come across with many
designers/architects/developers/testers in industry and have heard from them
about their approaches on designing a system against a given requirement set.
Fortunately/unfortunately, I mostly came across with people who were extremists
in their approach towards design. For some of them, design is nothing but a
sequence of method calls and for rest it was always making things as complex as
possible (in the name of futuristic, scalable, generic etc…)<o:p></o:p></span></div>
</div>
</div>
<div class="MsoNormal">
<div style="text-align: justify;">
<div style="text-align: left;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></div>
</div>
</div>
<div class="MsoNormal">
<div style="text-align: justify;">
<div style="text-align: left;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">I can safely say that these two extreme approaches can be
labeled as under-design and over-design respectively. Both of these approaches
may seem to be opposite of each other, but as far as repercussions are
concerned, most of the time they lead you to very similar situations
(surprisingly) like dump the software, redesign, rewrite, refactor etc. What
actually happens depends upon up to what level of extreme approach was taken. <o:p></o:p></span></div>
</div>
</div>
<div class="MsoNormal">
<div style="text-align: justify;">
<div style="text-align: left;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></div>
</div>
</div>
<div class="MsoNormal">
<div style="text-align: justify;">
<div style="text-align: left;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">The challenge is how do you avoid doing the same or,
identify if you are already in this trap? There is no generic answer to this
question but of course, some of the checks and balances can always be put to
ensure that you are not leading in the same direction.</span></div>
</div>
</div>
<div class="MsoNormal">
</div>
<ul>
<li style="text-align: left;"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><b style="text-indent: -18pt;">Make sure
that product is not too complex for users to use:</b><span style="text-indent: -18pt;"> Everything starts from
here, if the product itself is not simple and beautiful, then there is high
probability that you will end up having a complex design to build it. This is
very costly and frustrating situation to be in as in this case, even if you
have rightly skilled people to do the software development, when the product
goes to the market, no one likes it, as it was too complex to use.</span></span></li>
<li style="text-align: left;"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><b style="text-indent: -18pt;">Understand
the right use cases before designing</b><span style="text-indent: -18pt;">: This is a prerequisite of software
design. Never jump for design, if you are not fully aware of the right and
complete use cases of the system. Knowing the end user workflow might not be
sufficient and hence it is important to understand the use cases relevant for
different components of the software.</span></span></li>
<li style="text-align: left;"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><b style="text-indent: -18pt;">Design
against the real requirements not against your own intellectual dreams:</b><span style="text-indent: -18pt;"> Many
of the times under the shadow of beautiful words like generic, scalable,
modular, futuristic, flexible, designers end up defining a small problem into
something which is overly complex to build. This not only complicates things
for engineers but also creates delays for time to market, which could be
potential business risk in this fast moving competitive world.</span></span></li>
<li style="text-align: left;"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><b style="text-indent: -18pt;">Design/implement
in such a way so that others can understand:</b><span style="text-indent: -18pt;"> Even though it sounds strange
but the reality is that it is more difficult to make simple things. For the
longevity of any system, it is very important that others also understand it
properly. If the system is too complex to understand then it is very likely
that either it a case of under/over design. </span><span style="text-indent: -18pt;"> </span></span></li>
<li style="text-align: left;"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><b style="text-indent: -18pt;">Technology
and product domain both are equally important:</b><span style="text-indent: -18pt;"> Involve the right set of
people while designing the system. It is not only important that the person
is knowledgeable enough of the technology world but also aware of the domain,
product requirements etc. It is a common practice that we assume that a person who
has good experience in industry will do justice and with that assumption, we
end up giving the design problem to a new senior person without ensuring that
he/she is fully clear about the product requirements etc… In such cases, the person tend to prove his knowledge and skills in the whole
exercise and tries to push most of the things which he/she knows about, which
results into unnecessarily complex system.</span></span></li>
<li style="text-align: left;"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><b style="text-indent: -18pt;">Little
knowledge is very dangerous:</b><span style="text-indent: -18pt;"> Sometimes, the problem is in hands of those
people who do not posses enough experience and for them
implementation of any system is nothing but a set of program statements
partitioned into various methods/functions. This leads to a non-maintainable
system where in any change in the system leads to a rewrite of the system. Hence
it is very-2 important that the problem is given to the right set of people. There
are plenty of engineers in the industry who possess little knowledge of things
and pose as experts. If you hand over the problem to such people, their first
attempt is always to prove themselves and in doing so, they propose to use tools,
technologies, patterns which they have used. The net result is very complex.</span></span></li>
</ul>
<div class="MsoNormal">
<div style="text-align: justify;">
<div style="text-align: left;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Enough of dos and don’ts, let us go through some concrete
example to understand some of the about mentioned points.</span></div>
<div style="text-align: left;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></div>
<ul>
<li style="text-align: left;"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">The requirement is to write a small program to
reverse a string and without knowing the context of program usage, the
person in charge starts assuming cases like</span></li>
<ul>
<li style="text-align: left;"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">What if the input string is too big to fit in
the main memory of computer?</span></li>
<li style="text-align: left;"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">What if the string contains double byte
characters?</span></li>
<li style="text-align: left;"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">What if there is more than one string to be
reversed. Etc …</span></li>
</ul>
<li style="text-align: left;"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">You were supposed to design an employee
management system and the person in charge of design starts thinking about</span></li>
<ul>
<li style="text-align: left;"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Will the database which contains the Employee
table be able to handle more than 10 billion rows.. <a href="https://www.google.co.in/publicdata/explore?ds=d5bncppjof8f9_&met_y=sp_pop_totl&tdim=true&dl=en&hl=en&q=population%20of%20earth" target="_blank">Come on</a>, are you assuming the company to hire its employees from Mars?</span></li>
<li style="text-align: left;"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">What if relational DBs become a bottleneck for
scale, so why don’t we think about the big data storage technologies?</span></li>
<li style="text-align: left;"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">What if the no. of concurrent request to the
system goes beyond a limit and our normal HTTP server will not be able to
handle it? Etc…</span></li>
</ul>
</ul>
</div>
</div>
<div class="MsoNormal">
<div style="text-align: justify;">
<div style="text-align: left;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Without the context of the requirement and use cases, some
of these what ifs may sound like genuine ones but in the given situations they
are nothing but over complications. It is very easy to get trapped with these
questions and companies end up paying lots of cost for hypothetical (so called
futuristic) requirements. There is a very thin line between proper design and
over/under design. Of course one should make things flexible, configurable,
scalable etc., but up to what extent is the question, you need to answer in
your own context. While designing the system, it is equally important to keep
in mind the following aspects:</span></div>
</div>
</div>
<div class="MsoNormal">
</div>
<ul>
<li style="text-align: left;"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif; text-indent: -18pt;">Long-term maintainability of the
system.</span></li>
<li style="text-align: left;"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif; text-indent: -18pt;">Easy traceability: In case of errors,
one should be able to trace back the faulty component easily. The components
can be debugged easily.</span></li>
<li style="text-align: left;"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif; text-indent: -18pt;">Simple to understand for others to use
or, change.</span></li>
<li style="text-align: left;"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif; text-indent: -18pt;">In case of malfunctioning, the system
should be able to provide the right alert notification about it.</span></li>
</ul>
<div class="MsoNormal">
<div style="text-align: justify;">
<div style="text-align: left;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-size: 11.5pt;">To end with one should always check against the following
statement: <o:p></o:p></span></div>
</div>
</div>
<div class="MsoNormal">
<div style="text-align: justify;">
<div style="text-align: left;">
<i><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><span style="font-size: 11.5pt;">"When your design actually makes things </span><span style="font-size: 11.5pt;">more complex</span><span style="font-size: 11.5pt;">
instead of simplifying things, you’re over engineering."</span></span></i></div>
</div>
</div>
<div class="MsoNormal">
<div style="text-align: justify;">
<div style="text-align: left;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-size: 11.5pt;"><br /></span></div>
</div>
</div>
<div class="MsoNormal">
<div style="text-align: justify;">
<div style="text-align: left;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-size: 11.5pt;">Time to say bye for now. In case you are interested in reading more on this topic here are some relevant references:</span></div>
</div>
</div>
<div class="MsoNormal">
<div style="text-align: justify;">
<div style="text-align: left;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-size: 11.5pt;"><br /></span></div>
</div>
</div>
<div class="MsoNormal">
<div style="text-align: justify;">
<div style="text-align: left;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-size: 11.5pt;"><a href="http://www.amazon.com/Scalability-Rules-Principles-Scaling-Sites/dp/0321753887/ref=sr_1_1?ie=UTF8&qid=1364129526&sr=8-1&keywords=scalability+rules" target="_blank">This book</a> covers some of the items related to this topic nicely. </span></div>
</div>
</div>
<div class="MsoNormal">
<div style="text-align: justify;">
<div style="text-align: left;">
<a href="http://www.codesimplicity.com/post/what-is-overengineering/"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">http://www.codesimplicity.com/post/what-is-overengineering/</span></a></div>
</div>
</div>
<div class="MsoNormal">
<div style="text-align: justify;">
<div style="text-align: left;">
<a href="http://tobeagile.com/2010/12/15/under-design-and-over-design/"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">http://tobeagile.com/2010/12/15/under-design-and-over-design/</span></a></div>
</div>
</div>
<div class="MsoNormal">
<div style="text-align: justify;">
<div style="text-align: left;">
<a href="http://stackoverflow.com/questions/1001120/what-is-over-engineering-as-applied-to-software"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">http://stackoverflow.com/questions/1001120/what-is-over-engineering-as-applied-to-software</span></a></div>
</div>
</div>
<div class="MsoNormal">
<div style="text-align: justify;">
<div style="text-align: left;">
<br /></div>
</div>
</div>
<!--EndFragment-->Anonymoushttp://www.blogger.com/profile/12005534559649864874noreply@blogger.com0tag:blogger.com,1999:blog-7893428062385420037.post-50956269898885397822012-06-24T02:29:00.000-07:002014-08-12T00:51:21.280-07:00Exciting developments in Spring for Apache Hadoop project<style>
<!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;
mso-font-charset:2;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:0 268435456 0 0 -2147483648 0;}
@font-face
{font-family:"MS 明朝";
panose-1:0 0 0 0 0 0 0 0 0 0;
mso-font-charset:128;
mso-generic-font-family:roman;
mso-font-format:other;
mso-font-pitch:fixed;
mso-font-signature:1 134676480 16 0 131072 0;}
@font-face
{font-family:"MS 明朝";
panose-1:0 0 0 0 0 0 0 0 0 0;
mso-font-charset:128;
mso-generic-font-family:roman;
mso-font-format:other;
mso-font-pitch:fixed;
mso-font-signature:1 134676480 16 0 131072 0;}
@font-face
{font-family:Cambria;
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:0;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:-536870145 1073743103 0 0 415 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:Cambria;
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"MS 明朝";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
mso-themecolor:hyperlink;
text-decoration:underline;
text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-noshow:yes;
mso-style-priority:99;
color:purple;
mso-themecolor:followedhyperlink;
text-decoration:underline;
text-underline:single;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
font-family:Cambria;
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"MS 明朝";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
@page WordSection1
{size:595.0pt 842.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:35.4pt;
mso-footer-margin:35.4pt;
mso-paper-source:0;}
div.WordSection1
{page:WordSection1;}
</style>
-->
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Few days back, Spring source community announced the second
milestone of SHDP (Spring for Apache Hadoop) Project. The very first time I had
come to know about this initiative from VMWare, I was almost sure that this is
going to be a boon for Java spring development community interested in
Big data. In the second milestone, they have made it a point to address the
major challenges of developers by providing many of the Spring’s powerful
concepts for Apache Hadoop development. </span></div>
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Gradually this project is evolving and rightly hitting the
main challenges of developers who are working on the Hadoop and its peripheral
technologies. The new milestone not only covers the core support for Hadoop
based MR Jobs but also provides support for related technologies like HBase,
Hive, Pig etc.</span></div>
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">For the developers who are using HBase in their stack, this
release is a wow moment. Spring has offered its powerful DAO (Data Access
Object) concept for HBase. Developers can now use the powerful template for
HBase crud without worrying about exception handling, writing boilerplate code
or, handling resources and disposing them. This means that you don’t need to
worry about tedious tasks like looking up a HBase table, running the query,
building a scanner, cleaning up resources etc...</span></div>
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">In case you really want to get a feel of how much headache
it removes for a developer, here is a sample code snippet provided by Spring
source to read each row from a HBase table. </span></div>
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="MsoNormal" style="text-align: left;">
<i><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-size: 10.0pt; mso-bidi-font-family: Courier;">//
read each row from 'MyTable' List<string> rows =
template.find("MyTable", "SomeColumn", new
RowMapper<string>() {<span style="mso-spacerun: yes;"> </span><span style="color: grey;">@Override</span><span style="mso-spacerun: yes;">
</span>public String mapRow(Result result, int rowNum) throws Exception {<span style="mso-spacerun: yes;"> </span>return result.toString();<span style="mso-spacerun: yes;"> </span>} }));</string></string></span></i></div>
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">This definitely reduces a lot many lines of code. The other
noticeable point is that all different types of exceptions being raised by the
underlying HBase APIs are being converted into one DataAccessException which
again eases the development for layers involved in CRUD operations with HBase. So
the developers who are using HBase in their technology stack are destined to
enjoy this release. </span></div>
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">There is a lot of good news for the development community
who is using Hive and Pig. Spring seems to have support of both clients (Thrift
and JDBC) for Hive. For the Thrift client a dedicated namespace has been
provided. In case you want to use the JDBC client, one can leverage the rich
JDBC support in Spring which provides you facilities like Jdbc template, NamedParameterJdbcTemplate
etc. For the pig developers, Spring provides easy configuration
and instatiation of pig servers for registering and executing pig scripts
either locally and remotely.</span></div>
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">There is a lot more like cascading integration, security
support for which I am excited to delve into details, but one thing is quite
clear that the small elephant is definitely going to enjoy this spring :)<span style="mso-char-type: symbol; mso-symbol-font-family: Wingdings;"></span></span></div>
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Here are some of the useful links in case you are interested
to get into the details of all these developments:</span></div>
<div class="MsoNormal">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="MsoNormal">
<a href="http://blog.springsource.org/2012/06/13/spring-for-hadoop-1-0-m2/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+SpringSourceTeamBlog+%28SpringSource+Team+Blog%29&utm_content=Google+Reader"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Blog
post on 2nd milestone release of Spring for Apache Hadoop</span></a></div>
<div class="MsoNormal">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><a href="http://www.springsource.org/spring-data/">Spring
Data Project</a> </span></div>
<div class="MsoNormal">
<a href="http://www.springsource.org/spring-data/hadoop"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Spring
Data on Apache Hadoop</span></a></div>
<div class="MsoNormal">
<br /></div>
Anonymoushttp://www.blogger.com/profile/12005534559649864874noreply@blogger.com2Gurgaon, Haryana, India28.4594965 77.026638328.3478185 76.8687098 28.5711745 77.1845668tag:blogger.com,1999:blog-7893428062385420037.post-53732984873375724582012-02-05T00:46:00.000-08:002014-08-12T00:51:39.127-07:00Hybrid Type Inference support in SpiderMonkey<div style="font-family: Verdana,sans-serif; text-align: justify;">
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"MS 明朝";
mso-font-charset:78;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:1 134676480 16 0 131072 0;}
@font-face
{font-family:Verdana;
panose-1:2 11 6 4 3 5 4 4 2 4;
mso-font-charset:0;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:-1593833729 1073750107 16 0 415 0;}
@font-face
{font-family:Verdana;
panose-1:2 11 6 4 3 5 4 4 2 4;
mso-font-charset:0;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:-1593833729 1073750107 16 0 415 0;}
@font-face
{font-family:Cambria;
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:0;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:-536870145 1073743103 0 0 415 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:Cambria;
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"MS 明朝";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
mso-themecolor:hyperlink;
text-decoration:underline;
text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-noshow:yes;
mso-style-priority:99;
color:purple;
mso-themecolor:followedhyperlink;
text-decoration:underline;
text-underline:single;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
mso-style-unhide:no;
mso-style-qformat:yes;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:36.0pt;
margin-bottom:.0001pt;
mso-add-space:auto;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:Cambria;
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"MS 明朝";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst
{mso-style-priority:34;
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-type:export-only;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:36.0pt;
margin-bottom:.0001pt;
mso-add-space:auto;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:Cambria;
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"MS 明朝";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle
{mso-style-priority:34;
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-type:export-only;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:36.0pt;
margin-bottom:.0001pt;
mso-add-space:auto;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:Cambria;
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"MS 明朝";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast
{mso-style-priority:34;
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-type:export-only;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:36.0pt;
margin-bottom:.0001pt;
mso-add-space:auto;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:Cambria;
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"MS 明朝";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
font-family:Cambria;
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"MS 明朝";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
@page WordSection1
{size:595.0pt 842.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:35.4pt;
mso-footer-margin:35.4pt;
mso-paper-source:0;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:1606109950;
mso-list-type:hybrid;
mso-list-template-ids:-1474810198 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l0:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l0:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l0:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l0:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l0:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l0:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l0:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l0:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l1
{mso-list-id:1680085379;
mso-list-type:hybrid;
mso-list-template-ids:1955212242 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l1:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l1:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l1:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l1:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l1:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l1:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l1:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l1:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l1:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
</style>
</div>
--> <div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<span style="font-size: small;">Few days ago, Firefox prompted me with the pop up window to download and update itself with its recently released version 9.0. I got curious to know about what is new in this version and hence went to read the release notes from Mozilla. </span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<span style="font-size: small;">In a very small duration of time, I got delighted with the fact that this release has JavaScript performance improvements as one of the major highlights. I got fascinated with performance improvement claims (~30%) in JavaScript execution. Upon further digging in, my curiosity kept on increasing, when I started reading about its <i>“Hybrid Type Inference”</i> support in its JavaScript engine “SpiderMonkey”. After studying in detail, it became pretty clear that this is a very significant change in execution strategy for JavaScript and has the potential to set a new trend altogether. </span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<span style="font-size: small;">JavaScript as a language has established itself as the de-facto language for client side programming in the world of web development. Its vast popularity across the globe has generated immense interest of global developer’s community and many corporates in this language. This has created a very healthy competition amongst different vendors who want to dominate in the browser war. Google’s Chrome was the first one, which actually introduced a lot many new radical changes in its V8 engine, which forked huge performance improvements in the language execution. </span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<span style="font-size: small;">One of the most important was the introduction of JIT compilation in JavaScript. Use of JIT compilation rather than interpretation has generated huge performance benefits. Still the language takes a back seat when you compare the performance of the language with some of the other established languages which use JIT compilation like Java, C# etc.</span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<span style="font-size: small;"><b>Where is the gap?</b></span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<span style="font-size: small;">This gap is mostly because JavaScript provides a lot of freedom to its developers. Execution engine pays the cost of this freedom. What kind of freedom, we are talking about here? This freedom is primarily the freedom of developers to treat any variable as any type and the freedom of type extension at runtime. </span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<span style="font-size: small;">Let’s get into the detail of the first type of freedom (Typeless nature of language): Languages like JavaScript don’t have the notion of static type, which becomes a bottleneck in generating a very efficient machine code. Let’s consider a very simple case of adding two integer variables and assign the sum to a third variable. If the compiler has to generate a code, where in it has no idea that it is a sum operation of integers then it will emit code which should be able to handle addition of any two types of variables be it int, float, string etc. But assume when the compiler has the knowledge of the types of the variables, which are going to be added then in such cases it become very easy and straightforward for the compiler to generate machine code, which can handle integer addition and the sum results into an integer. </span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<span style="font-size: small;"><b>Pure static analysis for Type inference a rescue?</b></span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<span style="font-size: small;">It becomes quite clear that to achieve the performance of languages like Java, C#, generation of Type specific code is quite important. Unfortunately, for wild language like JavaScript, this is not a straightforward task. One way to achieve this is by performing purely static analysis of the code. But the challenge here is that because of the openness of the language, any pure static analysis for inferring Types becomes so computationally heavy that it does not pay for the performance improvements, which it brings in. Also, because the language is Type less and supports prototype for object extension at runtime, it becomes almost impossible for any static Type analyzer to emit out precise code with all type variants. And not generating code for all possible Types is like changing the expected behavior of the code, which by no means can be regarded as a sound strategy.</span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<span style="font-size: small;">Here comes the very interesting strategy for type inference implemented in SpiderMonkey shipped with firefox version 9. It supports a hybrid approach to achieve Type inference. This strategy is an outcome of the acceptance of following facts explained earlier.</span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<span style="font-size: small;"> </span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<span style="font-size: small;"> </span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoListParagraphCxSpFirst" style="font-family: Verdana,sans-serif; text-align: justify; text-indent: -18pt;">
<span style="font-size: small;">1.<span style="-moz-font-feature-settings: normal; -moz-font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> </span>Compiled machine code, which does not have Type notion can’t be as efficient as the one, which gets generated after Type inference.</span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoListParagraphCxSpMiddle" style="font-family: Verdana,sans-serif; text-align: justify; text-indent: -18pt;">
<span style="font-size: small;">2.<span style="-moz-font-feature-settings: normal; -moz-font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> </span>For any pure static analyzer for Type inference, it is quite impossible to do justice on all the fronts: </span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoListParagraphCxSpMiddle" style="font-family: Verdana,sans-serif; margin-left: 72pt; text-align: justify; text-indent: -18pt;">
<span style="font-size: small;">a.<span style="-moz-font-feature-settings: normal; -moz-font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> </span>Sound code: The emitted code should be able to take care of all possible Types and object extension at runtime. </span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoListParagraphCxSpMiddle" style="font-family: Verdana,sans-serif; margin-left: 72pt; text-align: justify; text-indent: -18pt;">
<span style="font-size: small;">b.<span style="-moz-font-feature-settings: normal; -moz-font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> </span>Cost of analysis: The analyzer should not be very computationally heavy, otherwise the static analysis offsets the performance benefits at the runtime.</span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoListParagraphCxSpLast" style="font-family: Verdana,sans-serif; text-align: justify; text-indent: -18pt;">
<span style="font-size: small;">3.<span style="-moz-font-feature-settings: normal; -moz-font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> </span>If we also take into consideration the usage pattern of JavaScript code for many different websites, then it can be realized that many of the times, we end up loading huge amount of JavaScript code for the website but only end up using a small fraction of it. </span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<span style="font-size: small;">The Hybrid approach is nothing but to account for only a subset of Types during static analysis and the ones, which are not accounted during the static Type inference analysis, there should be a way to catch those cases dynamically. This approach not only generates the optimized machine code for the most expected Types in the code by doing static Type inference, but also keeps a provision to catch dynamically at the run time for all those cases, which do not score very high as a candidate for possible Type during static analysis. </span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<span style="font-size: small;">Of course this approach is not so simple in implementation as it has to provide the capability of dynamically catching the uncommon cases. If you combine the object’s Type extension capability in the language with the earlier challenge then it actually becomes quite complicated scenario. There are many things, which need to be considered while having such a flexible strategy. </span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoListParagraphCxSpFirst" style="font-family: Verdana,sans-serif; text-align: justify; text-indent: -18pt;">
<span style="font-size: small;">1.<span style="-moz-font-feature-settings: normal; -moz-font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> </span>Precise and efficient static analyzer.</span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoListParagraphCxSpMiddle" style="font-family: Verdana,sans-serif; text-align: justify; text-indent: -18pt;">
<span style="font-size: small;">2.<span style="-moz-font-feature-settings: normal; -moz-font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> </span>Capability to dynamically catch cases which are not handled through the static analyzer. </span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoListParagraphCxSpMiddle" style="font-family: Verdana,sans-serif; text-align: justify; text-indent: -18pt;">
<span style="font-size: small;">3.<span style="-moz-font-feature-settings: normal; -moz-font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> </span>Dynamically catching the uncommon cases also comes with a cost, which is not there in the Typed languages. To reduce this further, have provision of supplemental analysis like overflow scenario, definite properties inside objects etc.</span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoListParagraphCxSpMiddle" style="font-family: Verdana,sans-serif; text-align: justify; text-indent: -18pt;">
<span style="font-size: small;">4.<span style="-moz-font-feature-settings: normal; -moz-font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> </span>Recompilation of the code at the runtime to handle the case where in a new Type is identified at the runtime, which was not taken into consideration by the static analyzer.</span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoListParagraphCxSpMiddle" style="font-family: Verdana,sans-serif; text-align: justify; text-indent: -18pt;">
<span style="font-size: small;">5.<span style="-moz-font-feature-settings: normal; -moz-font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> </span>More complicated memory management: Type inference by static analyzer and capability to recompile the code while it is running also brings in additional overhead to memory management. The execution engine needs to ensure that it is only keeping the relevant compiled code in memory and the garbage collector is collecting the rest. </span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoListParagraphCxSpLast" style="font-family: Verdana,sans-serif; text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<span style="font-size: small;">To handle these things, Firefox has not only changed its JavaScript engine (SpiderMonkey) but also had to made relevant changes in its JIT compiler (JaegerMonkey). If you go into the details of the implementation there are so many things being introduced like sematic triggers, Type constraints, Type barriers etc… But yes these core changes have definitely justified the performance benefits, which it has created. I can’t even imaging, how many million man-hours are being saved by enhancing the performance of the most popular language for client side web development.</span><span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"></span></span><span style="font-size: small;"> Hats off to those engineers involved in this improvement.</span><span style="font-family: Verdana,sans-serif;"></span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<span style="font-size: small;">Here are some of the relevant links related to this topic:</span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<span style="font-size: small;"><a href="http://www.mozilla.org/en-US/firefox/9.0/releasenotes/">http://www.mozilla.org/en-US/firefox/9.0/releasenotes/</a></span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<span style="font-size: small;"><a href="http://people.mozilla.org/%7Elmesa/ti-draft.pdf">http://people.mozilla.org/~lmesa/ti-draft.pdf</a></span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<span style="font-size: small;"><a href="http://arstechnica.com/open-source/news/2011/12/firefox-9-slinks-onto-the-scene-with-fancy-javascript-optimizations.ars">http://arstechnica.com/open-source/news/2011/12/firefox-9-slinks-onto-the-scene-with-fancy-javascript-optimizations.ars</a></span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<span style="font-size: small;"><a href="http://labs.oracle.com/self/papers/pics.html">http://labs.oracle.com/self/papers/pics.html</a></span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="font-family: Verdana,sans-serif; text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="background: none repeat scroll 0% 0% white; font-family: Verdana,sans-serif; text-align: justify;">
<span style="font-size: small;"><span style="color: #222222;">Signing off for this time with a request to provide your fruitful comments…</span></span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span></div>
<div class="MsoNormal" style="background: none repeat scroll 0% 0% white; font-family: Verdana,sans-serif; text-align: justify;">
<span style="font-size: small;"><span style="color: #222222;">--<i>RBK</i></span></span></div>
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;"> </span></span>Anonymoushttp://www.blogger.com/profile/12005534559649864874noreply@blogger.com1Gurgaon, Delhi, India28.46385 77.017837999999983-8.1247479999999968 17.252212999999983 65.052448 136.78346299999998tag:blogger.com,1999:blog-7893428062385420037.post-45129334966945206272012-01-26T01:03:00.000-08:002014-08-12T00:51:53.553-07:00MapReduce v/s SQL<div style="font-family: Verdana,sans-serif; text-align: justify;">
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"MS 明朝";
panose-1:0 0 0 0 0 0 0 0 0 0;
mso-font-charset:128;
mso-generic-font-family:roman;
mso-font-format:other;
mso-font-pitch:fixed;
mso-font-signature:1 134676480 16 0 131072 0;}
@font-face
{font-family:"MS ゴシック";
panose-1:0 0 0 0 0 0 0 0 0 0;
mso-font-charset:128;
mso-generic-font-family:modern;
mso-font-format:other;
mso-font-pitch:fixed;
mso-font-signature:1 134676480 16 0 131072 0;}
@font-face
{font-family:"MS ゴシック";
panose-1:0 0 0 0 0 0 0 0 0 0;
mso-font-charset:128;
mso-generic-font-family:modern;
mso-font-format:other;
mso-font-pitch:fixed;
mso-font-signature:1 134676480 16 0 131072 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:-520092929 1073786111 9 0 415 0;}
@font-face
{font-family:Cambria;
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:0;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:-536870145 1073743103 0 0 415 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:Cambria;
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"MS 明朝";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
h1
{mso-style-priority:9;
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-link:"Heading 1 Char";
mso-style-next:Normal;
margin-top:24.0pt;
margin-right:0cm;
margin-bottom:0cm;
margin-left:0cm;
margin-bottom:.0001pt;
mso-pagination:widow-orphan lines-together;
page-break-after:avoid;
mso-outline-level:1;
font-size:16.0pt;
font-family:Calibri;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:major-latin;
mso-fareast-font-family:"MS ゴシック";
mso-fareast-theme-font:major-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:major-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:major-bidi;
color:#345A8A;
mso-themecolor:accent1;
mso-themeshade:181;
mso-font-kerning:0pt;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
mso-style-unhide:no;
mso-style-qformat:yes;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:36.0pt;
margin-bottom:.0001pt;
mso-add-space:auto;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:Cambria;
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"MS 明朝";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst
{mso-style-priority:34;
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-type:export-only;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:36.0pt;
margin-bottom:.0001pt;
mso-add-space:auto;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:Cambria;
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"MS 明朝";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle
{mso-style-priority:34;
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-type:export-only;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:36.0pt;
margin-bottom:.0001pt;
mso-add-space:auto;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:Cambria;
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"MS 明朝";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast
{mso-style-priority:34;
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-type:export-only;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:36.0pt;
margin-bottom:.0001pt;
mso-add-space:auto;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:Cambria;
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"MS 明朝";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
span.Heading1Char
{mso-style-name:"Heading 1 Char";
mso-style-priority:9;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-link:"Heading 1";
mso-ansi-font-size:16.0pt;
mso-bidi-font-size:16.0pt;
font-family:Calibri;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:major-latin;
mso-fareast-font-family:"MS ゴシック";
mso-fareast-theme-font:major-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:major-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:major-bidi;
color:#345A8A;
mso-themecolor:accent1;
mso-themeshade:181;
font-weight:bold;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
font-family:Cambria;
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"MS 明朝";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
@page WordSection1
{size:595.0pt 842.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:35.4pt;
mso-footer-margin:35.4pt;
mso-paper-source:0;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:1895582913;
mso-list-type:hybrid;
mso-list-template-ids:-1130704224 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l0:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l0:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l0:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l0:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l0:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l0:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l0:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l0:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
</style>
</div>
--> <div style="font-family: Verdana,sans-serif; text-align: justify;">
<span style="font-size: small;"> </span></div>
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-size: small;">I was exposed to the MapReduce paradigm couple of years ago and am in touch with the open source implementation of MapReduce framework (Hadoop) since then. <a href="http://www.clickable.com/">We</a> started to play with <a href="http://hadoop.apache.org/" target="_blank">Hadoop</a> actively to understand the pros and cons of the framework and as of today we have considerably progressed by building our new platform backed by this powerful distributed computing framework. </span></div>
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-size: small;">During this whole journey, we encountered many challenges and questions. One of the most frequent query was why not SQL based systems and why Hadoop? After going through various discussions, technical articles and my own exposure to this system, I thought of sharing my own experience around this very frequent query originating from different development community.</span><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-size: small;">The concept of MapReduce was actually brought in to solve the scale problem when you are dealing with huge amount of data, which nowadays is not a problem that exists only for big corporate houses (like Google, Microsoft etc.). With the bloat of information everywhere, this problem of dealing with huge data set has become a more common problem than earlier. Most of the times people try to solve it with the conventional systems like SQL. Many of the places, it has been successful up to some extent, but beyond a threshold, it becomes really very challenging to tackle this problem with those conventional systems. There are many reasons of this challenge.</span></div>
<div class="MsoNormal" style="text-align: justify; text-indent: 36pt;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="MsoListParagraphCxSpFirst" style="text-align: justify; text-indent: -18pt;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-size: small;">1.<span style="-moz-font-feature-settings: normal; -moz-font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> </span><b>Unstructured data processing:</b> SQL systems are optimized to deal with structured data. The whole concept of relational databases is based on the notion of relational schema to store information, which becomes a challenging when you are dealing with unstructured data. In such cases you end up retro fitting your information in a tight schema, which creates challenge while digging out insight from the data. </span></div>
<div class="MsoListParagraphCxSpFirst" style="text-align: justify; text-indent: -18pt;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="MsoListParagraphCxSpMiddle" style="text-align: justify; text-indent: -18pt;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-size: small;">2.<span style="-moz-font-feature-settings: normal; -moz-font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> </span><b>Control on processing steps:</b> SQL mostly is a language, which is declarative in nature, and when you use SQL for querying information, you pass on your interest in result and the data sources from where this information can be retrieved. The actual details of how to get to the result still lies under the control of query processing engine. So, you are left with nothing (Most of the time you can only pass on some clue/hint to the engine to influence its strategy of processing), but to rely upon the genius of processing engine to provide you the data through optimal processing. </span></div>
<div class="MsoListParagraphCxSpMiddle" style="text-align: justify; text-indent: -18pt;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="MsoListParagraphCxSpMiddle" style="text-align: justify; text-indent: -18pt;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-size: small;">3.<span style="-moz-font-feature-settings: normal; -moz-font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> </span><b>Scale (out v/s up): </b>Conventional systems like relational databases are designed to work on monolithic systems rather than distributed clusters. This imposes the constraint that while addressing the scale issue, you will end up buying costlier hardware. One thing worth noting here is that cost of the hardware does not increase linearly, meaning the cost of one machine having 5 times power than a standard machine is more than 5 times costlier than the standard machine. Because of this equation, it makes more sense to address the scale challenge horizontally than vertically. That means if you build framework where in you can scale by just adding more no. of machines, it makes more sense. Of course adding more machines comes with an overhead of more co-ordination requirements. For which if you have at your luxury a framework like Hadoop, then it can be a smart move to approach for scale out using such frameworks.</span></div>
<div class="MsoListParagraphCxSpMiddle" style="text-align: justify; text-indent: -18pt;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="MsoListParagraphCxSpMiddle" style="text-align: justify; text-indent: -18pt;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-size: small;">4.<span style="-moz-font-feature-settings: normal; -moz-font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> </span><b>Offline v/s online processing:</b> The original requirement because of which the MapReduce framework originated was around processing huge amount of data without caring about items like realtime processing, transaction support etc. Hence these systems are more optimized for offline processing rather than realtime processing of data. Though there are many other technologies, which are trying to address these pieces as well, but still as of today, in the heart of the framework, it is fundamentally a offline distributed processing framework. </span></div>
<div class="MsoListParagraphCxSpMiddle" style="text-align: justify; text-indent: -18pt;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="MsoListParagraphCxSpLast" style="text-align: justify; text-indent: -18pt;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-size: small;">5.<span style="-moz-font-feature-settings: normal; -moz-font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"> </span><b>Raw talent v/s conventional wisdom: </b>Relational database systems have existed in the industry for quite a few years and it has catered to the need of its age very successfully. These successful years of SQL adoption in the s/w industry has produced a lot of experts around that technology. So, when you are using SQL based systems, you have the luxury to have these expert advices. On the contrary, in the MapReduce world, the thought process is quite different and during your initial days of its adoption, it is very likely that you may end up designing your system in the relational way even though underlying you tend to use these new frameworks. Design and thought process in MapReduce requires a raw thought process, and the moment you try to retrofit this with conventional thought process of how to build your stack thinking about entities and its relationships, you debar yourself from gaining the juice of MapReduce framework. </span></div>
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-size: small;"><b>Conclusion </b></span></div>
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-size: small;">This post certainly does not cover each and every aspect of both the systems, but IMHO, it provides you some data point to think about while you are planning to build your stack around these technologies. Obviously, the intent of the post is not to prove anything, but to dig out different relevant points around these technologies. For a given requirement, it is even possible (and it is not very remote possibility in many of the cases) that you end up building your stack with a marriage of both these technologies. </span></div>
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-size: small;">Signing off for right now with a request to provide your fruitful comments… </span></div>
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-size: small;">--<i>RBK</i></span></div>
<div style="font-family: Verdana,sans-serif;">
<span style="font-size: small;"> </span></div>
Anonymoushttp://www.blogger.com/profile/12005534559649864874noreply@blogger.com3Gurgaon, Delhi, India28.46385 77.017837999999983-8.1247479999999968 17.252212999999983 65.052448 136.78346299999998tag:blogger.com,1999:blog-7893428062385420037.post-34631414409254357342012-01-24T08:49:00.000-08:002012-01-26T00:52:01.381-08:00Tanhai...<div class="MsoNormal" style="font-family: verdana; font-style: italic;">Har bita lamha apni ek tasveer liye aata hai,<br />
Mujhe meri <span class="il">tanhai</span> mein dara jata hai.<br />
Mujhe khud se nahin apni <span class="il">tanhai</span> se ummid hoti hai,<br />
Aur ek ajeeb si bechaini uski taqdeer hoti hai.</div><div class="MsoNormal" style="font-family: verdana; font-style: italic;"><span class="il">Tanhai</span> mujhse sach kahne ko kahti hai,<br />
Kabhi kabhi to jid karne lagti hai,<br />
Main use jhoothla nahin pata hoon,<br />
Chah kar bhi kabhi jeet nahin pata hoon.<br />
<br />
Main khud se baat karna chahta hoon,<br />
Kuch paheliyon ka hal dhoondhna chahta hoon.<br />
Par <span class="il">tanhai</span> ko mujh pe bharosa nahin hai,<br />
aur ab to mujhko bhi yakeen yahi hai.</div><div class="MsoNormal" style="font-family: verdana; font-style: italic;">Band aankhon mein roshni jab chamkti hai,<br />
Sannate mein kisi ki aahat jab khatkti hai.<br />
Tab har baar meri <span class="il">tanhai</span> mujhse pahle jagti hai,<br />
Aur mujhe jagakar badi bedard si hansti hai.<br />
<br />
Wo mera kuch nahin kar payegi ye janta hoon,<br />
Per phir bhi achanak se apne ko dara hua pata hoon.<br />
Aur khusi hoti hai ki kabhi to main sach se darta hoon,<br />
Aur in sab ke baad bhi usse baat karne ko tadpta hoon.<br />
<br />
Ek khwahish hai kabhi to wo mujhe raasta bataye<br />
Uske jaisa kyun nahin hoon, ye samjhaye.<br />
Lekin poochne ke pahle hi phir se dar jata hoon,<br />
Aur phir se apne aap ko wahin tanha pata hoon.<span class="HOEnZb"><span style="color: #888888;"></span></span><br />
<span class="HOEnZb"><span style="color: #888888;"><br />
</span></span><br />
<span class="HOEnZb"><span style="color: #888888;">-- RBK<br />
</span></span></div>Anonymoushttp://www.blogger.com/profile/12005534559649864874noreply@blogger.com0tag:blogger.com,1999:blog-7893428062385420037.post-32981211709805451642009-07-19T01:10:00.001-07:002009-07-19T01:10:27.708-07:00“Kyun hai” – My first poem<blockquote> <p><font color="#83956a" size="2">Har saans mein ehsaash kyun hai? <br />Har ehshaash mein ek pyas kyun hai?</font></p> <p><font color="#83956a" size="2">Har pyas mein milawat kyun hai? <br />Har dard mein ek chahat kyun hai? <br />Har chahat mein ek dikhawat kyun hai? <br />Har dikhawat mein ek banawat kyun hai?</font></p> <p><font color="#83956a" size="2">Har lamha itna bikhra kyun hai? <br />Har aaj itna mohtaaj kyun hai? <br />Har chehra itna suna kyun hai? <br />Har roj mujhe jina hi kyun hai?</font></p> <p><font color="#83956a" size="2">Sochta hoon sochna hi kyun hai? <br />Na sochna hi achha kyun hai?</font></p> <p><font color="#83956a" size="2">Har khwahis itni jiddi kyun hai? <br />Har aadmi itna piddi kyun hai? <br />Har raat itni chhoti kyun hai? <br />Har din itna bhaari kyun hai?</font></p> <p><font color="#83956a" size="2">Sochta hoon ek aadhar dhoondh loon <br />Jine ka sansaar dhoodh loon <br />Par us sansaar ki jaroorat kyun hai</font></p> <p><font color="#83956a" size="2">Sochta hoon sab mithya hai yahan pe <br />Per in sab mein itni haqeeqat kyun hai.</font></p> <p><font color="#83956a" size="2">                                         --RBK</font></p></blockquote> Anonymoushttp://www.blogger.com/profile/12005534559649864874noreply@blogger.com0tag:blogger.com,1999:blog-7893428062385420037.post-51991188326674181622009-07-13T09:22:00.001-07:002009-07-13T09:22:09.294-07:00Many many congratulations “Raza and Mubeen”<p>With the title of the blog, most of the readers would have guessed that probably its a congratulation to a newly wed couple. you are right and i am on the way to return journey from Hyderabad to Bangalore and just trying to recollect the moments which I spent this weekend. There are so many sweet memories attached with the trip and I would like to share it with you. These memories make it a memorable one. Some of the main reasons are:</p> <ol> <li>It was wedding of one of my very good friend (Raza) </li> <li>First time i was attending a Muslim wedding and I was very excited for it. </li> <li>The day of marriage was also my birthday :) </li> <li>I met with many old friends and spending time with them was real fun. </li> </ol> <p>What else do you want to achieve during a normal weekend. </p> <p>I left from my office on Friday evening then met one of my very old fiend on station. It was his first day in office after passing out from IIMb. we sat in the train and my phone started ringing from 11 P.M. onwards. Many of the people who were knowing that i was travelling that night were wishing before time as they were worried about what if i am out of the signal coverage. So, first time i celebrated my birthday inside a Indian Railways coach. </p> <p>Next morning we were in the city with which i have a lots of memories as this is the city from where my career started. Then we met with the groom and here we were a little bit disappointed to see the tummy of the groom (Raza i am sorry but its a truth).  Next with friends i moved to a nearby shopping mall (GVK 1) and did some shopping for my birthday. Celebrated the birthday with the pastries from Karachi bakery and then in the evening finally reached the place where the marriage was supposed to take place. i was thrilled as i wanted to know the way it goes on and i actually found it very exciting. We met with the boy, congratulated him and then finally had that awesome biryani which was the crux of all things. Thanks raza for the awesome biryani. I suggest you to open a restaurant with the same caterer. </p> <p>The very next day it was a fun time with friends, met with raza and bhabhi. I along with Vineet and Himanshu did lots of masti and the finally i am returning back from Hyderabad to Bangalore. When i recollect the moments many of the things are still there which make me either laugh/smile like:</p> <ul> <li>Joke by Himanshu (Because I find that i have some responsibility towards the society, I cann’t publish that here, but it was a killer one :) ). </li> <li>Dhokala, Raj kachauri and masala milk of Tiwari. I miss it like anything in Bangalore. </li> </ul> <p><a href="http://lh5.ggpht.com/_ZUyniPfrTII/SltfJIPBMYI/AAAAAAAADBw/VsCilC2DjO4/s1600-h/DSC04783%5B5%5D.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="DSC04783" border="0" alt="DSC04783" src="http://lh5.ggpht.com/_ZUyniPfrTII/SltfLEY1tsI/AAAAAAAADB0/aSaC9CqXYy0/DSC04783_thumb%5B3%5D.jpg?imgmax=800" width="423" height="297" /></a> </p> <p>Wish you all the best Raza and Mubeen in the new life.</p> Anonymoushttp://www.blogger.com/profile/12005534559649864874noreply@blogger.com0tag:blogger.com,1999:blog-7893428062385420037.post-30311697922524222642009-07-10T08:28:00.001-07:002009-07-10T08:28:51.782-07:00Thank you sir<p>Today was a great day for me and this blog will explain it how. <br />We had a party time from our <a href="http://www.deshaw.com/">company</a> and we went to a resort (Leo meridian) outside the city for having some dance practice from <a href="http://www.jbdance.com/">john britto</a> gang. Every thing there was cool and we all tried (because I think it was only a try not a dance) to dance for almost 4-5 hrs and then came back home. While coming back home I met a person who is in Indian military. I must say you here that this was not planned. We just met him and I was really very much impressed by his thoughts he shared with us during that small meet. I feel that it should be a valuable thing to share those with my friends and that’s why I am putting all the thoughts in this blog.</p> <p> <br />We all were returning from the dance class in which all the dances were of western nature or better to say non-indian kinda. When we let him know about this I feel that he did not feel very great about it. Though it does not mean he was against these things but still he wanted it to happen some other way. Then he told us the way he feels and just with in 15 minutes he put his thoughts before us and here are those precious ones… <br />First of all being a military person he told us the kind of invasion a country can have. He told that there can be 3 types of invasion in this world. <br />1. <strong>Military Invasion</strong>: which is the least dangerous in its impact as the asset lost and things destroyed can be recovered and rebuilt if the nation has a good will power for it. Its impact goes out in the least time once the war is over which we can justify by many such events which happened in history. <br />2. <strong>Economic Invasion</strong>: These is the 2nd type of invasion whose impact is worse than the first one and in this one you never get a direct feel of the attack being taking place and after some time you realize about your inability which automatically generates as an aftereffect of this. Its impact is more lasting and the recovery takes time. <br />3. <strong>Cultural Invasion</strong>: This is the 3rd in its kind and most brutal in its impact as the recovery is almost impossible. In this you even don’t feel that some thing wrong is going on somewhere, rather you feel that there are something sweet going on. And you get a feel of things going positively with a rocking speed. And in most of the cases while persuading that speed you forget your roots and your own culture and finally when the impact appears bare faced then you are not in a position to recover. As mentioned here this one is the most deadly due to its impact and the hidden nature of attack. <br />The person who was putting these thoughts said to us that we (actually most of us, mostly young generation) are under attack of the 3rd kind of invasion and as per its nature we are not able to feel it rather we are feeling better. His main concern was that its not bad in tasting things which others have and others do but there should not be a blind aping of things. <br />He even quoted the starting days of this attack when Englishmen used to distribute packets of tea free of cost during his grandpa’s days and we gradually lost our own sarbat, <a href="http://en.wikipedia.org/wiki/Lassi">lassi</a> and sattu pani. <br /></p> <p>It was really a great a talk with that gentleman and I would like to salute his way of thinking and attitude. He did not preach us to live our life differently than what we are doing right now, but he just cautioned and requested us to check our roots time to time.</p> <p> <br />I salute his thoughts and I hope that his concern will not go in waste. Thanks a lot sir for sharing such valuable thoughts.</p> <p><em>[This is a post from my old blog. On public demand I am re-posting it  ;)  Please refer today as december 3 2006.]</em></p> Anonymoushttp://www.blogger.com/profile/12005534559649864874noreply@blogger.com1tag:blogger.com,1999:blog-7893428062385420037.post-77202720141395857932009-07-07T11:39:00.001-07:002009-07-07T12:06:07.775-07:00In the lap of nature<p><em><strong>“Reading about nature is fine, but if a person walks in the woods and listens carefully, he can learn more than what is in books, for they speak with the voice of God.”</strong></em></p> <p>I almost heard this voice during my trip to <a href="http://en.wikipedia.org/wiki/Coimbatore">Coimbatore</a>. It was really an awesome experience to be there. It was a random trip which was planned at the eleventh hour. I, mummy and <a href="http://vcroy.piworx.com">Vikas</a> went to coimbatore to meet my youngest sister.</p> <p>We only stayed there for one and half days but the places where we visited and the fun which we had was awesome. First we started with a visit to a temple called <a href="http://en.wikipedia.org/wiki/Dhyanalinga">Dhyanalinga</a>, which was so soothing in its own. It is a Yogic temple which is more a meditation center. We had the first time experience to take a bath in the kund where the shivling was immersed. To worship the shivling standing inside water was a different experience altogether. </p> <p>The main temple was a large ellipsoidal dome with the lingam (more than 10 ft in height) in the center. People who were visiting the temple were sitting around that lingam and doing meditation for some time. </p> <p>After the temple we had lots of fun during the lunch time and then we roamed other places around the city.</p> <p>In the night we went to a restaurant in the city where we ordered family dosa which was a unique experience in its own. You can imagine the uniqueness about it by looking at the photographs.</p> <p><a href="http://lh6.ggpht.com/_ZUyniPfrTII/SlOWTLCS97I/AAAAAAAADBQ/ElcbN_9nvMI/s1600-h/DSC04676%5B5%5D.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="DSC04676" border="0" alt="DSC04676" src="http://lh5.ggpht.com/_ZUyniPfrTII/SlOWUyMGYjI/AAAAAAAADBU/lD43RRpcJso/DSC04676_thumb%5B3%5D.jpg?imgmax=800" width="405" height="282" /></a> </p> <p><a href="http://lh6.ggpht.com/_ZUyniPfrTII/SlOWW8Ff8DI/AAAAAAAADBg/qfsehsstml4/s1600-h/DSC04681%5B11%5D.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="DSC04681" border="0" alt="DSC04681" src="http://lh3.ggpht.com/_ZUyniPfrTII/SlOWYg5hEuI/AAAAAAAADBo/e_5Iv1LiFjg/DSC04681_thumb%5B9%5D.jpg?imgmax=800" width="409" height="322" /></a> </p> <p>We enjoyed the food a lot and actually we gave prizes as ranks to people who played key role in finishing the child Anakonda aka THE DOSA.</p> <p>Next day we had a comparatively peaceful day when I got more time to observe nature more closely. I was so fascinated with the beauty of nature that i could not stop myself composing and singing these lines</p> <blockquote> <p align="center"><font size="2">आसमां कह रहा है जमीं से!  बादलों को छुओगे कैसे !! </font></p> <p align="center"><font size="2">पत्तियां हिल रही हैं ऐसे ! ज़िन्दगी जी रही हो जैसे !! </font></p> <p align="center"><font size="2">बादल भी उतरने को आतुर ! चुमते हो पहाडों को जैसे !! </font></p> <p align="center"><font size="2">झरने भी बहे जा रहे हैं ! गीत गता कोई बैठे बैठे!! </font></p> <p align="center"><font size="2">अब चली है वही फिर बयार! जैसे सब को सिखाती हो प्यार !! </font></p> <p align="center"><font size="2">पछियों की ध्वनि छा रही है ! दिल में वीणा बजी हो जैसे !! </font></p> <p align="center"><font size="2">ज़िन्दगी तो बसी है यहीं पे ! दिल मचलता है जीने को जैसे !!</font></p> <p align="left">Many many thanks to Archu and her friends to make all this real.</p></blockquote> Anonymoushttp://www.blogger.com/profile/12005534559649864874noreply@blogger.com0tag:blogger.com,1999:blog-7893428062385420037.post-23386046301143135682009-02-06T13:41:00.001-08:002009-02-07T02:47:49.876-08:00निष्कर्ष<p>This is one of the many poems written by my younger sister. I really love to read her poems. Whenever I go through her poems, I feel so proud of her. </p> <p><span style="font-size: 100%"><font size="2">आज कुछ पल हैं, अपने साथ होने को, <br />जीवन की रफ़्तार में अपनी गति समझने को, <br />मैं कठघरे में हूँ, उस मैं के आगे, <br />जो कभी मेरा आत्मीय था, <br />अब उसका होना ऐसे पलों पर आश्रित था. </font></span></p> <p><span style="font-size: 100%"><font size="2">मेरे दृश्य पटल पर सारा अतीत चलचित्र है, <br />अचंभित सी वहां अपनी मौजूदगी देखती हूँ, <br />दृश्य पर दृश्य अपने अस्तित्व की तलाश है, <br />पर अपनी पहचान धुधली नज़र आती है, <br />क्यूँ अपनी जय पराजय में मैं स्वयम दर्शक मात्र हूँ ? </font></span></p> <p><span style="font-size: 100%"><font size="2">जिंदगी चंद दस्तावेजों की ही मुहताज क्यूँ है? <br />क्या मेरा समर्पण मेरी जीत नहीं है ? <br />प्राणवान होना हास्य पैर नहीं स्वाश पर निर्भर है, <br />तो हँसने की ही चाह क्यूँ करती हूँ मैं? <br />क्या मेरे रुदन में कोई सार्थकता नहीं है? </font></span></p> <p><span style="font-size: 100%"><font size="2">क्यूँ अपनी नीयति को अपनाना नहीं आता मुझे ? <br />वो जो मेरे होने से भी अर्थहीन है, <br />उसके होने में अपने अर्थ की तलाश कैसी? <br />शायद इन सवालों के जबाब दूसरे सवाल ही हैं <br />और निष्कर्ष की चाह व्यथा को आमंत्रण. <br /><strong><span style="color: #008000"></span></strong></font></span></p> <p><span style="font-size: 100%"><font size="2"><strong><span style="color: #008000">-- वंदना वशिष्ठ </span></strong></font></span></p> <p><span style="font-size: 100%"><font size="2"><strong><span style="color: #008000"> </span></strong></font></span></p> Anonymoushttp://www.blogger.com/profile/12005534559649864874noreply@blogger.com5tag:blogger.com,1999:blog-7893428062385420037.post-76455330531729317842009-02-06T13:18:00.001-08:002009-02-06T13:18:08.365-08:00My first blog<p>Hi All,</p> <p>This is going to be my first blog entry. It does not mean that i never blogged before, but this time i thought of giving blogging a new try. Hence I deleted my previous blog and recreated with the same url from the scratch. </p> <p>As the description of the blog itself says, the blog is about</p> <p><strong>“Digital Serialization of my realization of the world.”</strong></p> <p>Hence I will post about anything what I feel to share with myself and my readers. Lets wish and hope that this effort has a long lasting effect.</p> Anonymoushttp://www.blogger.com/profile/12005534559649864874noreply@blogger.com1