<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>De-Coded</title>
	<atom:link href="http://decoded.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://decoded.wordpress.com</link>
	<description>De-code the mystique of Coding</description>
	<lastBuildDate>Thu, 27 Apr 2006 17:35:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='decoded.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>De-Coded</title>
		<link>http://decoded.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://decoded.wordpress.com/osd.xml" title="De-Coded" />
	<atom:link rel='hub' href='http://decoded.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Understanding &#8216;Abstraction&#8217;</title>
		<link>http://decoded.wordpress.com/2006/04/27/understanding-abstraction/</link>
		<comments>http://decoded.wordpress.com/2006/04/27/understanding-abstraction/#comments</comments>
		<pubDate>Thu, 27 Apr 2006 16:29:56 +0000</pubDate>
		<dc:creator>decoded</dc:creator>
				<category><![CDATA[Coding]]></category>

		<guid isPermaLink="false">https://decoded.wordpress.com/2006/04/27/understanding-abstraction/</guid>
		<description><![CDATA[In the beginning there was Abstraction. And the abstraction was God (of OO). And God of abstraction said let there be Classes and there were Objects &#8211; Book of Genesis &#8211; OO Bible Abstraction is very important concept in OO. Understanding Abstraction is crucial in becoming a successful OO designer. Abstraction cannot be understood by [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decoded.wordpress.com&amp;blog=195769&amp;post=8&amp;subd=decoded&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In the beginning there was <em>Abstraction.</em> And the abstraction was God (of OO). And God of abstraction said let there be Classes and there were Objects</p>
<p align="right">&#8211; Book of Genesis &#8211; OO Bible</p>
<p align="left">Abstraction is very important concept in OO. Understanding Abstraction is crucial in becoming a successful OO designer. Abstraction cannot be understood by reading books (which deal with it in Abstract terms turning it into a sort of mystery). Like Morpheus said to Neo in Matrix, You need to experience it yourself.</p>
<p align="left">Roughly stated, Abstraction is the process of discovering <strong>classes</strong>, their <strong>responsibilties</strong> [the services they provide, the functions they implement] and how these classes interact [<strong>co-ordination</strong>]&nbsp;with others to complete the big picture [implement the system].</p>
<p align="left">Continuing with our &#39;File System&#39; example [easy to understand], it&#39;s easier to find Files, without using &#39;Search&#39;, if the directories are given <u>meaningful names</u>.&nbsp;Files an directories [ class/functions] are&nbsp;easier to find if the names are short and <u>easier to remember</u>.</p>
<p align="left">It&#39;s easier deduce what files&nbsp;&#39;My Photos&#39; directory contains, than&nbsp;the one named &#39;RoboXYZ12T45G&#39;.File system [programming language]&nbsp;will not prevent a file &#39;hardrock.mp3&#39; from being created under &#39;My Photos&#39;. It&#39;s the users [programmer] resposibility to organize files [functions] under the right directory [class] based on <u>purpose [responsibilty]</u>&nbsp;of that directory [class]. To summarize, meaningful and easy to remember&nbsp;names ought to be given based on the purpose served.</p>
<p align="left"><span id="more-8"></span></p>
<p align="left">The purpose a class serves [it&#39;s responsibility] comes from the Context in which it&#39;s used. If there are a bunch of functions that deal with managing a savings account in a Banking System, since they serve the same purpose [of managing an SB account]&nbsp;they should be grouped&nbsp;together under the class [meaningful name]&nbsp;&#39;SBAccount&#39;. The name &#39;SBAccount&#39; also serves to explain the purpose of the class. Being short, it&#39;s also easier to remember than &#39;BankOfSwaziLandSavingsBankAccountClass&#39;.</p>
<p align="left">The class names are easier to remember if they are based on some concept in the problem domain [ project requirements]. The usual practice is that &#39;Nouns&#39; in a system become Classes and &#39;Verbs&#39; [ like deposit/withdrawal] become functions. Of course, it&#39;s a gross simplification, it requires a thorough understanding of the domain [ Banking/Finance/Automotive etc.] to capture the REAL nouns and verbs. Domain expertise is highly critical in designing the system, in a meaningful and easy to understand way.</p>
<p align="left">Not all classes are [problem] domain based. Some might come the language, technology, user interface, architecture,&nbsp;library&nbsp;and or the framework used.&nbsp;And others from the solution the designer proposes. For example, you find that &#39;Loan Approval&#39; in bank is a sequential process with muti-levels of verification and approval. Workflow will be an ideal solution to handle this.</p>
<p align="left">You might decide to to use off-the-shelf third party WorkFlow profuct (COTS) or develop your own solution. Eitherway you&#39;d be likely to come across Classes like &#39;WorkflowDefinition&#39;, &#39;WorkFlowStep&#39;, &#39;WorkFlowStepsRelation&#39;, &#39;WorkFlowInstance&#39;, &#39;ActivityInstance&#39; etc. There is no magic formula to these (so-called) &#39;Solution Domain Objects&#39; as they are based on&nbsp;the solution proposed.</p>
<p align="left">As often famously stated &#8211; &#39;It&#39;s an Art. Not a science&#39;. That said, there is a veritable treasure-trove of pre-packaged/ready made&nbsp;solutions available under the name <strong>Patterns</strong>. [ mainly Design Patterns/Architectural patterns].&nbsp; There&#39;s also a class of Patterns called &#39;Analysis Patterns&#39; to assist in discovering classes in the Problem Domain too. A word of caution, Patterns are a highly advanced subject and difficult to understand for a beginner to OO programming. These should be read and refered only after coming to grasps with the basics.</p>
<p align="left">For for most&nbsp;common programming situations, Patterns are an overkill ;&nbsp; they add complexity to the system in exchange for&nbsp;flexibility. While flexibility makes the systems easier to extend, with lesser code change, it also makes it hard for the new programmer to understand the system&nbsp;and become productive in a short span of time [ high entry barrier]. It&#39;s my experience, many times [mainly newer] programmers use patterns to show-off [based on ego], instead of any real &#39;Flexibility&#39; requirements. Most times it pays to &#39;Keep It Simple Stupid&#39; [KISS]. If flexibility is needed later, simple code can be re-factored into Patterns to achieve the results.</p>
<p align="left">It&#39;s a common misconception that great designs are arrived at the beginning using tools like UML, Rational Rose etc. It&#39;s pragammatic to start with a simple design and well-designed [problem] Domain classes. As the development continues Requirements will begin to make sense, REAL requirements will begin to surface, better understanding of the solution will develop, as also real world concerns like speed of execution, Robustness [ handing errors without crashing], Availability [ lesser downtime], Scalability [ ability to handle large number of users without serious degradation in performance] etc. begin to kick in. In a nut-shell, complete design of the system at get-go is a pipedream. Design is a evolutionary process. Most great designs are arrived at by continuous Refactoring.</p>
<p align="left">Since the post has already turned out to be longer than intended, I leave the topics of Co-ordination, Inheritance, Normalization &amp; De-Normalization to a future post.</p>
<p align="left">Let me know your views.</p>
<p align="left">&nbsp;</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/decoded.wordpress.com/8/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/decoded.wordpress.com/8/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/decoded.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/decoded.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/decoded.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/decoded.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/decoded.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/decoded.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/decoded.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/decoded.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/decoded.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/decoded.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/decoded.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/decoded.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/decoded.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/decoded.wordpress.com/8/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decoded.wordpress.com&amp;blog=195769&amp;post=8&amp;subd=decoded&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://decoded.wordpress.com/2006/04/27/understanding-abstraction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/056aa645bf1f87a02dd48053b91b63b5?s=96&#38;d=identicon" medium="image">
			<media:title type="html">decoded</media:title>
		</media:content>
	</item>
		<item>
		<title>Coding Forward</title>
		<link>http://decoded.wordpress.com/2006/04/26/coding-forward/</link>
		<comments>http://decoded.wordpress.com/2006/04/26/coding-forward/#comments</comments>
		<pubDate>Wed, 26 Apr 2006 18:55:55 +0000</pubDate>
		<dc:creator>decoded</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">https://decoded.wordpress.com/2006/04/26/coding-forward/</guid>
		<description><![CDATA[Every programmer is aware of the language war that has been brewing of-late; unless he/she has been living in a swamp far away from civilization. Java&#39;s overwhelming dominance over other programming languages is under serious threat; and even the most vocal Java advocates understand it though reluctant to admit in public. First salvo was fired [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decoded.wordpress.com&amp;blog=195769&amp;post=7&amp;subd=decoded&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Every programmer is aware of the language war that has been brewing of-late; unless he/she has been living in a swamp far away from civilization. Java&#39;s overwhelming dominance over other programming languages is under serious threat; and even the most vocal Java advocates understand it though reluctant to admit in public.</p>
<p>First salvo was fired by Microsoft with the introduction of C#&nbsp;, .NET SDK and by allowing scripting languages as first-class citizens under .NET runtime, a privilige long denied to them under JVM thanks to SUN&#39;s limiting NBH (Not built here) vision. C# not only emulated Java&#39;s most successful features, but also came up with several handy features like Autoboxing/Unboxing, Explicit interface implementation, properties, variable arguments, friendly-for-loop and so on. SUN,&nbsp;which had been reluctant to add these much demanded features (by programmers), was finally forced to add these features with Java 5. The hurried introduction of &#39;genericity&#39; before it&#39;s C# advent is a sign that Sun takes the threat seriously.</p>
<p>On the other hand, dynamic languages have grown in popularity, thanks to the success of PHP and&nbsp;newer OO languages like Ruby and Python. Though more focussed on Web development, the collective mindshare developed is significant, and considering most apps developed these days are indeed web apps, they indeed pose a serious threat to Java&#39;s dominance over server-based programming.</p>
<p><span id="more-7"></span></p>
<p>On the one hand SUN&#39;s marketing machinery gets busy dissing dynamic languages to be slow, lacking type safety and unsuitable for developing large systems. On the other SUN developers are busy adding native support for &#39;Scripting languages&#39; with Java 6. Main focus will be to support &#39;Ruby&#39; (despite reluctance to admit it) and <a href="https://pnuts.dev.java.net/">PNUTS</a>, a homegrown scripting language. If SUN&#39;s so convinced that scripting languages pose no serious threat, why&#39;s give a high priority to support them? And develop yet another scripting language ? (which incidently&nbsp;was developed by Sun&#39;s Japan division, coming from&nbsp;the home country of Ruby!)&nbsp;</p>
<p>Countless flame wars have been, are and will be fought over internet about which language is the best, and likely to emerge the winner. Most of these discussions are <em>political </em>in nature and have nothing to do with the real merits/de-merits of the languages when it comes to the &quot;in the trenches&quot; programming. As a language-agnostic programmer, I believe every language has it&#39;s share of strengths and weakness. There is nothing you can do in one, that you cannot do in other. Some might need you to write lesser code, others more code. Some will run faster and others <em>adequately</em> fast.</p>
<p>Having said thus, I&#39;m not ignorant to the fact that programming landscape is changing. Project budgets are shrinking, thanks to bad economy, along with project timelines due to cut-throat competition. Only those projects that get it right fast and able to change fast keeping with changing business dynamics will succeed in the unforgiving economy.</p>
<p>The reign of Moore&#39;s law over processing power ( CPUs getting more powerful and faster every year), has ensured the death of &#39;my complicated language is really fast&#39; argument. It suffices if the language is sufficiently fast enough to meet business needs. Businesses will, continuingly, be less willing to invest in years of development (with associated huge costs) for the sole reason that the system will run a little faster. Especially, if there are other solutions available round the corner. When time to develop and market is critical to success, companies will look for <em>good</em> solutions that deliver faster, instead of <em>execellent</em> solutions that take longer to develop.</p>
<p>Days of throwaway and dummy prototypes is gone. Prototypes are expected to be built fast and easily convertible&nbsp;to the final solution. Dynamic languages have an edge over Static languages due to their flexibility, ease of development and ability to do more with less code. With the dropping hardware costs and increasing processing power, availability of native libraries to perform variety of tasks appear to be&nbsp;the final barrier. Of course dynamic languages also need faster VMs, for those occasions where the speed of execution makes or breaks the system.</p>
<p>In one of the discussions, Guido van Rossum (author of Python), when asked what would be his number 1 wish for his language, made a frank admission that it would be &#39;a Faster native VM&#39;. All said and done, Java gained mainstream acceptance only after the success of JIT compilers and Hotspot VMs. In theory, there is nothing to stop development of Faster VMs for dynamic languages. In practice, however, few can afford legions of full-time dedicated programmers like Sun or Microsoft.</p>
<p>Sun and Microsoft opening their VMs may be a good news in the short term, in terms of faster VMs, availability of libraries and tools and wider acceptance. But in the longer run, it can turn out to be a curse too! Ready availability of Java/.Net libraries will kill motivation to develop native libraries. This could&nbsp;seriously hamper&nbsp;the growth of dynamic languages, limiting their usage to faster prototyping. Without a wide repertoire of libraries they will never be candidates for providing full blown solutions. Programmers would still be forced to interact with Java or C# for most functionality.</p>
<p>Other than opening JVM, it wouldn&#39;t surprising if a future&nbsp;Java version comes with scripting-like extensions very soon. Microsoft has already taken a lead in this direction with C# 2.0 (closures, partial classes etc.). I&#39;m sure that Java will follow suit. It&#39;s very important for the native statically compiled language to be scripting-like, so that, if needed , crtical&nbsp;code in the scripting language can be converted, speedily, into the compiled language for performance. Being script-like will provide an easy migration path (feature to feature).&nbsp;And the addition of these features will also increase programmer productivity manifold in Java and C#.</p>
<p>&nbsp;As I see it [as of now] Coding foward, most new functionality will be prototyped using lanaguages like Ruby or Python under JVM or .Net environments. Java and C# will be used for the libraries they provide. If the scripting code runs fast enough it will be retained. Otherwise the code will be converted to Java or C# for better performance, and <em>some</em> even to venerable old system-powerhorse C lanaguage too.</p>
<p><strong><u>Cue :</u></strong> It will pay to know and be ready to program in multiple languages. Proficiency in at least one static, one dynamic and C language ( and remaining knowledgeable about others) will be the key to success.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/decoded.wordpress.com/7/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/decoded.wordpress.com/7/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/decoded.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/decoded.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/decoded.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/decoded.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/decoded.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/decoded.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/decoded.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/decoded.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/decoded.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/decoded.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/decoded.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/decoded.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/decoded.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/decoded.wordpress.com/7/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decoded.wordpress.com&amp;blog=195769&amp;post=7&amp;subd=decoded&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://decoded.wordpress.com/2006/04/26/coding-forward/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/056aa645bf1f87a02dd48053b91b63b5?s=96&#38;d=identicon" medium="image">
			<media:title type="html">decoded</media:title>
		</media:content>
	</item>
		<item>
		<title>Handling &#8216;deprecation&#8217;</title>
		<link>http://decoded.wordpress.com/2006/04/25/handling-deprecation/</link>
		<comments>http://decoded.wordpress.com/2006/04/25/handling-deprecation/#comments</comments>
		<pubDate>Tue, 25 Apr 2006 19:27:38 +0000</pubDate>
		<dc:creator>decoded</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">https://decoded.wordpress.com/2006/04/25/handling-deprecation/</guid>
		<description><![CDATA[A post by Bill Venners, comparing the way Python and Java handle deprecation,&#160;caught my attention while surfing java.net . While Java prefers the Warn-and-forget way, Python takes the other extreme of removing old features altogether. Bill discusses the pros and cons of each method i.e &#8211; lean and clean libraries vs. backward compatibility. Personally, I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decoded.wordpress.com&amp;blog=195769&amp;post=6&amp;subd=decoded&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A <a href="http://www.artima.com/weblogs/viewpost.jsp?thread=157470" title="Java vs. Python ">post</a> by Bill Venners, comparing the way Python and Java handle deprecation,&nbsp;caught my attention while surfing <a href="http://www.java.net" title="Java Net">java.net </a>. While Java prefers the Warn-and-forget way, Python takes the other extreme of removing old features altogether. Bill discusses the pros and cons of each method i.e &#8211; lean and clean libraries vs. backward compatibility.</p>
<p>Personally, I would prefer Java followed the Python way; allowing older features to co-exist through minor revisions ( like 2.x versions) and remove them with the next major revision (like 3.0). IMO deciding to take the leap (migrate) to next major version of a library, framework or platform is a non-trivial decision, considering the large number of feature changes involved. And that&#39;s what major revisions are for!</p>
<p><span id="more-6"></span></p>
<p>To clarify further, let&#39;s say I migrate my Java app from JDK 1.4 to JDK 5.0. For e.g. If I am still using the Collections, old style, without generics, don&#39;t utilize new for-loop and auto-boxing/unboxing to make the code less cluttered, what benefit do I reap by using latest and the greatest version? I would be better of sticking with 1.4 version for some more time (as long as it&#39;s supported)</p>
<p>Most migrations to next major version happen, NOT because the project wishes to use the new enhancements, but to remain saddled with the latest supported version. Given this reason, if Sun were to totally remove all deprecated methods from since the last major version, projects would still migrate. And in the process enjoy the benefits of using newer/advanced features.</p>
<p>But, that&#39;s the last thing SUN is likely to do. It would takes months for 1.4 projects to use 5.0 (which they ultimately will!), meaning longer support period for 1.4 and a&nbsp;more protracted&nbsp;adoption period for 5.0. It would be more easier to mark stuff &#39;deprecated&#39; and move on,&nbsp; achieving 80% adoption within months.</p>
<p>It&#39;s not that SUN has a pristine record for backward-compatibility. Just try running EJB 1.0 apps in latest servers. EJB 3.0 deprecates most of EJB 2.0 way of doing things ( Entity-Beans no longer exist!). When SUN can come up with such massive deprecations at an Enterprise level, how come SUN&#39;s so fanatic&nbsp;about retaining&nbsp;deprecated JDK functionality?</p>
<p>First of all, the flawed versioning system. While Java was at version 2.0 (Java2) JDK version was kept pegged to 1.2. And now that Java is at version 5.0, JDK uses an internal versioning of 1.5. I can understand Java 2 situation, adding static/inner classes [of various flavors] might be forgiven for not bumping up the JDK version.But, if adding features like generics, enums, new for-loop etc. don&#39;t appear to warrant a major JDK version changes [in their thinking], I don&#39;t know what-else will?.</p>
<p>Secondly, the complacency caused by the <strong>@deprecated</strong> JavaDoc tag.&nbsp;It&#39;s cheap to use. I&#39;ve seen used for trivial name changes [ l-o-o-o-nger names], addition of newer better methods, addition of parameters etc. While it&#39;s extensively used, it seldom serves it&#39;s purpose. More often than not, compiler warnings tend to be ignored; given the project deadlines and budgets. Deprecated methods keep building over time and soon it becomes near impossible to remove them as there could be countless projects using them ignoring the warnings. If SUN were to remove all the deprecated methods in the next version of JDK, it would be months (if not a year) before that version gains acceptance as mainstream.</p>
<p>IMO <strong>@deprecated</strong> is a half-baked measure that could have been used better. There is no standard way to capture when the deprecation happend (which version?), upto to what version the method will be kept, and when shall it be removed. For e.g it could&#39;ve been -</p>
<p><strong>@deprecated&nbsp; since(1.1) allow_upto(1.3) removal_plan(1.5)</strong></p>
<p>For versions prior to 1.3, say 1.2, the compiler could issue a warning &#39; Deprecated since 1.2. Will be removed in 1.5&#39;.&nbsp; For version 1.4 compiler should stop with the compilation error &#39;Deprecated method disallowed after version 1.3. Scheduled for removal in version 1.5&#39;.&nbsp; This will cause a slight heart-burn, but it will also ensure that dyed-in-the-wool slobs stop using those features. On reaching 1.5 the feature can be safely removed.</p>
<p>Wouldn&#39;t it make the life easier for all of us?</p>
<p><strong>@depecated Deprecated by @Deprecated</strong></p>
<p>&nbsp;<strong>@deprecated</strong> tag itself has been deprecated by <strong>@Deprecated</strong> annotation since Java 5. Now you need to give <strong>@Deprecated </strong>annotation to inform the compiler of code deprecation, and <strong>@deprecated</strong> JavaDoc tag to add reaons of deprecation to JavaDocs. How ironic, that the venerable feature itself should become an example of &#39;Deprecation&#39; and the redundancy/code-bloat it causes.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/decoded.wordpress.com/6/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/decoded.wordpress.com/6/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/decoded.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/decoded.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/decoded.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/decoded.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/decoded.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/decoded.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/decoded.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/decoded.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/decoded.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/decoded.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/decoded.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/decoded.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/decoded.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/decoded.wordpress.com/6/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decoded.wordpress.com&amp;blog=195769&amp;post=6&amp;subd=decoded&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://decoded.wordpress.com/2006/04/25/handling-deprecation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/056aa645bf1f87a02dd48053b91b63b5?s=96&#38;d=identicon" medium="image">
			<media:title type="html">decoded</media:title>
		</media:content>
	</item>
		<item>
		<title>OOPS is Procedural too!</title>
		<link>http://decoded.wordpress.com/2006/04/24/oops-is-procedural-too/</link>
		<comments>http://decoded.wordpress.com/2006/04/24/oops-is-procedural-too/#comments</comments>
		<pubDate>Mon, 24 Apr 2006 20:36:44 +0000</pubDate>
		<dc:creator>decoded</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">https://decoded.wordpress.com/2006/04/24/oops-is-procedural-too/</guid>
		<description><![CDATA[All the&#160;OOPS vs. Procedural programming might&#160;mislead you to believe that OOP is totally unrelated to POP. That&#39;s not entirely true. The confusion is further confounded by OOAD books that teach in abstract&#160;as in&#160;&#39;In procedural programming functions call functions. In OOP Objects pass messages to other objects&#39;. What&#160; this really means is Objects call functions defined [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decoded.wordpress.com&amp;blog=195769&amp;post=5&amp;subd=decoded&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>All the&nbsp;OOPS vs. Procedural programming might&nbsp;mislead you to believe that OOP is totally unrelated to POP. That&#39;s not entirely true.</p>
<p>The confusion is further confounded by OOAD books that teach in abstract&nbsp;as in&nbsp;&#39;In procedural programming functions call functions. In OOP Objects pass messages to other objects&#39;. What&nbsp; this really means is Objects call functions defined within their own class or in other classes! <span id="more-5"></span></p>
<p>Lets consider an example .</p>
<p><code></p>
<pre><strong>Procedural function call</strong> --</pre>
<p>void f1(){<br />
f2();<br />
}</p>
<p><strong>(so-called) OOP message passing</strong></p>
<p>public class ClassA {<br />
public void fnA()<br />
{<br />
ClassB objB = new ClassB();<br />
objB.fnB(); fnA3();<br />
}</p>
<p>public void fnA2() {</p>
<p>}</p>
<p>public void fnA3() {</p>
<p>}</p>
<p>}</p>
<p>public class ClassB {<br />
public void fnB()<br />
{<br />
}<br />
}</p>
<p>ClassA objA = new ClassA();<br />
objA.fnA(); objA.fnA2();</p>
<p></code>As you can see from the above example, Objects do most of the work in OOPS. Objects need to be created (using &#39;new&#39; operator) to be able call the functions (methods) on them. Once an object is created multiple functions can be called on it. An object can, not only call it&#39;s own classes function, but also create/and or call other objects [of same or different class] functions.</p>
<p>Though, at the outset, this style of programming might feel radically different, at a micro-level OOP is procedural too.</p>
<pre>public class MyClass {               

public void Myfunc() { f1(); f2(); f3(); }                

private void f1() { // do stuff }                

private void f2() { // do some other stuff }                

private void f3() { // do some more stuff }               

}</pre>
<p>As you&#39;d notice, implementation of Myfunc() is entirely procedural. Good thing about OOPS is that builds on best practices of POP, while eliminating it&#39;s limitations.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/decoded.wordpress.com/5/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/decoded.wordpress.com/5/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/decoded.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/decoded.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/decoded.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/decoded.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/decoded.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/decoded.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/decoded.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/decoded.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/decoded.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/decoded.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/decoded.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/decoded.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/decoded.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/decoded.wordpress.com/5/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decoded.wordpress.com&amp;blog=195769&amp;post=5&amp;subd=decoded&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://decoded.wordpress.com/2006/04/24/oops-is-procedural-too/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/056aa645bf1f87a02dd48053b91b63b5?s=96&#38;d=identicon" medium="image">
			<media:title type="html">decoded</media:title>
		</media:content>
	</item>
		<item>
		<title>Object Oriented Madness -II</title>
		<link>http://decoded.wordpress.com/2006/04/24/object-oriented-madness-ii/</link>
		<comments>http://decoded.wordpress.com/2006/04/24/object-oriented-madness-ii/#comments</comments>
		<pubDate>Mon, 24 Apr 2006 16:15:23 +0000</pubDate>
		<dc:creator>decoded</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">https://decoded.wordpress.com/2006/04/24/object-oriented-madness-ii/</guid>
		<description><![CDATA[My last post dealt with reasons&#160;why OOPS is misunderstood by a number of programmers. Having dealt with the cause, lets cover the effects. Myth I : OOP is all about re-usability. Fact : You don&#39;t need OOP to write Re-usable code. Good coding practices result in re-usability (OOP or not). OOP is all about managing [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decoded.wordpress.com&amp;blog=195769&amp;post=4&amp;subd=decoded&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>My <a href="http://decoded.wordpress.com/2006/04/21/object-oriented-madness-i/" title="last post">last post </a>dealt with reasons&nbsp;why OOPS is misunderstood by a number of programmers. Having dealt with the cause, lets cover the effects.</p>
<p><strong>Myth I : OOP is all about re-usability.</strong></p>
<p><u>Fact : You don&#39;t need OOP to write Re-usable code. Good coding practices result in re-usability (OOP or not). OOP is all about <strong>managing complexity</strong>.</u></p>
<p><span id="more-4"></span></p>
<p align="center"><strong></strong></p>
<p align="center"><strong>Recipe for Re-usability&nbsp;</strong></p>
<p align="center"><strong></strong></p>
<p>It&#39;s possible to write re-usable code in non-OO languages such a C or Pascal. Let&#39;s say you wrote a function to calculate factorial of a number, it is re-usable, in the sense, that it can be called from thousands of other places.</p>
<p>Any procedural function is re-usable as long as it depends only on it&#39;s parameters and doesn&#39;t depend on global data. To be really re-usable, the function must do only one thing and do it good. Don&#39;t attempt to do too many things in a function. If your function does that it&#39;s time to split (re-factor) it into two or more smaller functions. The term &quot;modularity&quot; is often used to refer to this practice of splitting code into smaller manageable chunks.</p>
<p>Also, it&#39;s a&nbsp;good coding practice to keep&nbsp;the length of a function limited to within 50 lines (max). If it exceeds the limit, chances are you are doing too many things there. Even if you&#39;re doing just the one thing, it probably involves several steps. It might be a good idea to&nbsp;refactor related steps into functions of their own.</p>
<p>A side-effect of modularizing code is the creation of global variables. It&#39;s always not possible to pass data around functions using just the parameters; definitely not if the functions need to pass around 10 or more parameters! Function calls with more than 10 parameters are difficult to understand, error-prone ( disordering of values passed) and maintain.</p>
<p>Having too much &quot;Global Data&quot; data is bad. It forces every function to depend on others thereby turning them un-reusable. It&#39;s also error-prone and hard to maintain. Now, before we shower praises on OO languages about the <strong>private </strong>variables, it would be sobering to remember that, a POP language like. C had <strong>static </strong>variables which limited visibility to only functions defined in the same file. For arguments sake, it&#39;s possible to declare all variables as public, for sake of convenience, the way <strong>externs</strong> (the real global variables) were abused in C.</p>
<p>What about extensibility? Simple. Use <strong>delegation</strong>!. Write another function that calls your function with additional functionality.&nbsp;In fact, as it turns out, delegation happens to the way to extensibility even in OO languages, in far more situations than the much hyped (and abused) &quot;inheritance&quot;.</p>
<p align="center"><strong>Managing Complexity</strong></p>
<p>I hope the defence of PO languages didn&#39;t give the impression that OO languages have no or limited benefits. That would be far from the truth. In fact OO languages do enjoy distinct benefits over procedural peers. Otherwise&nbsp;they wouldn&#39;t have (nearly) overtaken the programming world!</p>
<p>While it&#39;s considerably faster to develop an application using a procedural language, systems developed using OO languages are easier to maintain and extend. The real secret being their ability to ease complexity.</p>
<p>If you have read any OOAD book, you&#39;d most likely come the statement &#39;Human mind can at a time process only 7 plus or minus 2 pieces of information&#39;. And forgotten by the time you read through to the end. Unfortunately, most authors don&#39;t elaborate further on the subject, leaving it out as a mundane detail.Instead of discussing in abstract terms, it would be easier to understand in terms of an analogy. Most appropriate would be to compare it to the File system in any operating system.</p>
<p>Any respectable OS has a file system that has a &#39;Root&#39; directory (top-most directory). Root directory several directories underneath it, these in turn have sub-directories that contain sub-sub-directories and so on and so forth. This arrangement makes it easier to organize things by keeping related files together under the same directory. Having well-known directories ( like &#39;My Documents&#39; in Windows or &#39;/usr/&#39; in Unix) makes it further easier to find things.</p>
<p>It also avoids <strong>Name-collisions</strong>. Let&#39;s say File Systems lacked the concept of directories and everything were stored under Root, it would be impossible to create a file &#39;xyz.doc&#39;, if a &#39;xyz.doc&#39; already exists. The solution would be to rename as&nbsp;&#39;xyz2.doc&#39;. Problem is you&#39;ll soon have a large number of similarly named files soon ( making it harder to find required info fast). The file names will continue to grow and become cryptic.</p>
<p>And soon will reach File System limitations on the length of file-names (256 on Windows)! Even if name-collision were not a problem, finding the one *single* file needed, would be like searching the haystack for a needle ( Root would have thousands of files under it, directly).</p>
<p>Procedural languages suffer the same problems as&nbsp;a File System with no directories. OO languages make it easier to organize things by having <strong>Classes</strong> ( equivalent of directories)&nbsp;that contain <strong>methods</strong>/functions ( files). Classes help in keeping the functionality better organized, so that functions that perform a certain task can be easily located (found) during maintenance. Name-collision&nbsp;is be avoided by having similarly named functions [which work differently]&nbsp;under different Classes.</p>
<p>Some OO-languages carry the concept further, through usage of <strong>Name-spaces</strong>(packages if you program Java). Name-spaces help to further organize classes logically (also physically in Java). It&#39;s the same concept as having sub-directories, sub-sub-directories etc. It&#39;s interesting to note that Java&#39;s support of Name-spaces in fact depends on using directories to organize classes. It goes without saying that languages that don&#39;t support name-spaces suffer a major limitation.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/decoded.wordpress.com/4/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/decoded.wordpress.com/4/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/decoded.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/decoded.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/decoded.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/decoded.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/decoded.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/decoded.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/decoded.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/decoded.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/decoded.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/decoded.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/decoded.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/decoded.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/decoded.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/decoded.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decoded.wordpress.com&amp;blog=195769&amp;post=4&amp;subd=decoded&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://decoded.wordpress.com/2006/04/24/object-oriented-madness-ii/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/056aa645bf1f87a02dd48053b91b63b5?s=96&#38;d=identicon" medium="image">
			<media:title type="html">decoded</media:title>
		</media:content>
	</item>
		<item>
		<title>Object Oriented Madness &#8211; I</title>
		<link>http://decoded.wordpress.com/2006/04/21/object-oriented-madness-i/</link>
		<comments>http://decoded.wordpress.com/2006/04/21/object-oriented-madness-i/#comments</comments>
		<pubDate>Fri, 21 Apr 2006 20:22:26 +0000</pubDate>
		<dc:creator>decoded</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">https://decoded.wordpress.com/2006/04/21/object-oriented-madness-i/</guid>
		<description><![CDATA[Most of the popular computer languages these days&#160;like Java, C#, C++, Ruby etc. are Object-Oriented. That means you can code a system in terms of Classes&#160;and Objects. Classes serve as the&#160;blue-prints that define what an object of that class knows,&#160;what services it provides and how those services are implemented. Objects are instances of a class [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decoded.wordpress.com&amp;blog=195769&amp;post=3&amp;subd=decoded&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Most of the popular computer languages these days&nbsp;like Java, C#, C++, Ruby etc. are Object-Oriented. That means you can code a system in terms of Classes&nbsp;and Objects. Classes serve as the&nbsp;blue-prints that define what an object of that class knows,&nbsp;what services it provides and how those services are implemented. Objects are instances of a class that actually do (most of) the real work.</p>
<p>Actually Object-Orientation is a very simple programming paradigm, once you come to grasp it. So it should be really simple to learn and master OOP. However, in reality, things are not that peachy. Unfortunately, most of the widely available so-called &#39;Object Oriented Analysis And Design&#39; (OOAD) are either utterly useless in understanding it,&nbsp;or make it appear like complicated rocket science through liberal zargon-dropping.<span id="more-3"></span></p>
<p>There are honorable exceptions like Bertrand Myer&#39;s seminal book &#39;Object Oriented Software Construction&#39;, which IMO is, a must read for every OOP&nbsp;programmer (even if he/she&nbsp;never intends to program in Eiffel, the programming language used in the book).</p>
<p>Given the lack of real good OOP books in main-stream languages (most of them deal more with language features instead of teaching OOP), it&#39;s not suprising to see appalling lack of Object orientation, years after OOP has gained popular acceptance. A lot of it has to do with the half-baked truths propogated by the &#39;Learn X langauge in 10 days&#39; books.</p>
<p>With all due respects, I agree that, these books do help a beginner to learn a new lanaguage&#39;s important features quickly. But they also present half-truths as the reasoning behind&nbsp;how certain features are to be used. While an experienced programmer knows well to ignore them, they could be (and are) taken as cardinal truths by newbies.</p>
<p>This misunderstanding of OOP by beginners (as well as some senior) programmers is the cause of plethora of badly-written programs that do not run as intended, crash and cause losses to the customers.&nbsp;DailyWTF (<a href="http://thedailywtf.com/">http://thedailywtf.com/</a>) is a great source for these programming gotchas. It&#39;s a great forum to read, not to mock at others, but to learn from their mistakes and prevent ourselves commiting those same mistakes under project (deadline) pressure. Or the influence of &quot;star&quot; programmers/designers who believe theirs (only) is the best programming methodology in the whole world, however tedious and silly it might be.</p>
<p>You&#39;re right&nbsp;, if you guessed,&nbsp;the Roman Numeral &quot;I&quot; indicates it&#39;ll be one long post that&#39;ll be broken down into manageable digestible chunks. Having dealt with the reasons behind highly prevalent misunderstaning regarding OO among programmers, future installments will cover the popular misconceptions and try to correct them.</p>
<p><em>Yours, De-Coded</em></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/decoded.wordpress.com/3/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/decoded.wordpress.com/3/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/decoded.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/decoded.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/decoded.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/decoded.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/decoded.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/decoded.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/decoded.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/decoded.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/decoded.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/decoded.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/decoded.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/decoded.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/decoded.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/decoded.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decoded.wordpress.com&amp;blog=195769&amp;post=3&amp;subd=decoded&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://decoded.wordpress.com/2006/04/21/object-oriented-madness-i/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/056aa645bf1f87a02dd48053b91b63b5?s=96&#38;d=identicon" medium="image">
			<media:title type="html">decoded</media:title>
		</media:content>
	</item>
		<item>
		<title>Hello world! How are you doing?</title>
		<link>http://decoded.wordpress.com/2006/04/21/hello-world/</link>
		<comments>http://decoded.wordpress.com/2006/04/21/hello-world/#comments</comments>
		<pubDate>Fri, 21 Apr 2006 17:49:13 +0000</pubDate>
		<dc:creator>decoded</dc:creator>
				<category><![CDATA[metablog]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[As you can guess, I am a programmer. No, NOT Yet Another Programmer blogging about his girlfriend or his latest thingamajig. Why would that be of any interest to you? Unless you lack &#34;life&#34; and have all the time in the world to kill, reading trivialities, which I suspect isn&#39;t the case if you continue [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decoded.wordpress.com&amp;blog=195769&amp;post=1&amp;subd=decoded&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As you can guess, I am a programmer.</p>
<p>No, NOT Yet Another Programmer blogging about his girlfriend or his latest thingamajig. Why would that be of any interest to you? Unless you lack &quot;life&quot; and have all the time in the world to kill, reading trivialities, which I suspect isn&#39;t the case if you continue to read.</p>
<p>Yes. This blog is about Coding. More about Coding techniques that work and that don&#39;t (per my experience). Design, Architecture and other buzzwords will be peppered in as needed; but -&nbsp;Coding &#8211; shall remain the crust.<span id="more-1"></span></p>
<p>The focus will be on techniques, rather than Programming Languages. I remain agnostic to wasteful discussions about &#39;why a particular language/OS is better than others?&#39;. My personal mantra &#8211; Any OS/language&nbsp;is okay, as long as it gets the job done <em>satisfactorily</em>. Having said thus, I am a bit biased toward Open Source/Free software as they provide full source code to the implementation; enabling programmers like me to tweak, change, enhance the system per our liking. What better way to judge a entree than having an up and close look at it&#39;s recipe? And garnishing can be added if you, so, desire.</p>
<p>Why am I doing This? Too much time to kill? Obviously, NO. You wouldn&#39;t find any personal pics or boring mundane details here. And no &quot;hot&quot; scoops either. Well, I am doing it for myself. A self-referential guide to nudge me, back, into the right path whenever the project pressures shall lead me astray.</p>
<p>I will be glad if you find any of it&nbsp;useful, and grateful if you contribute you thoughts and indebted if you&#39;d correct me and/or provide a better solution or analysis.</p>
<p><em>My Thanks to K &amp; R for providing millions of Coders the right tool to learn programming and programming languages. Also a nice way to begin a blog.</em></p>
<p><em>Yours, De-Coded</em></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/decoded.wordpress.com/1/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/decoded.wordpress.com/1/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/decoded.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/decoded.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/decoded.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/decoded.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/decoded.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/decoded.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/decoded.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/decoded.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/decoded.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/decoded.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/decoded.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/decoded.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/decoded.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/decoded.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decoded.wordpress.com&amp;blog=195769&amp;post=1&amp;subd=decoded&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://decoded.wordpress.com/2006/04/21/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/056aa645bf1f87a02dd48053b91b63b5?s=96&#38;d=identicon" medium="image">
			<media:title type="html">decoded</media:title>
		</media:content>
	</item>
	</channel>
</rss>
