<?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/"
	>

<channel>
	<title>Advent Digerati &#187; Philosophy</title>
	<atom:link href="http://blog.adventdigerati.com/category/theory/philosophy/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.adventdigerati.com</link>
	<description>Where Life meets Geek</description>
	<lastBuildDate>Mon, 26 Jul 2010 00:49:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Zen and the Art</title>
		<link>http://blog.adventdigerati.com/2009/03/zen-and-the-art/</link>
		<comments>http://blog.adventdigerati.com/2009/03/zen-and-the-art/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 03:55:31 +0000</pubDate>
		<dc:creator>Zack</dc:creator>
				<category><![CDATA[Philosophy]]></category>
		<category><![CDATA[Theory]]></category>

		<guid isPermaLink="false">http://blog.adventdigerati.com/?p=46</guid>
		<description><![CDATA[Programming, specifically the intelligent design of such constructs, has always been at least twenty percent mimicry. Someone shows us how to write an efficient binary toggle and the practice stays with us. Learning how to find exclusive results between two SQL tables can shave minutes off of execution time, and your boss will certainly be [...]]]></description>
			<content:encoded><![CDATA[<p>Programming, specifically the intelligent design of such constructs, has always been at least twenty percent mimicry. Someone shows us how to write an efficient binary toggle and the practice stays with us. Learning how to find exclusive results between two SQL tables can shave minutes off of execution time, and your boss will certainly be impressed if you boost throughput by 85%.</p>
<p>Along the road to enlightenment, I&#8217;ve had some superlative teachers, professors, and friends instruct me on the best ways they knew to implement everything from Levenshtein Distance to Diffie-Helman compression, from polygon intersection to Relational Division. These lessons weren&#8217;t always apparent, and hardly ever enjoyable, but the knowledge and satisfactoin at the end of the project often put me years ahead of self-study.</p>
<p>Several times, I&#8217;ve been asked questions to which I&#8217;ve had absolutely no idea as to the solution. Yet, right then and there, an answer was demanded of me. It&#8217;s difficult and embarrassing, but situations like these are more about the reasoning than an off-the-cuff answer. This is an important concept, since it is a large step on the road to Doing Big Things.</p>
<p>Such occurrences were relatively commonplace, and for a long time I couldn&#8217;t figure out why someone looking to help me was asking a question that I either obviously had no business answering, or that was completely over my head. Then, just a few days ago, I stumbled onto the concept of zen. Zen, for want of a clearer definition, is the internal feeling and state of mind which is, in rudimentary forms, omniscience about a subject. It is the absence of bounds or form of knowledge in an area of concentration or meditation.</p>
<p>Zen and the art of programming was an interesting thought experiment, and until then I had no idea zen was being taught to me the entire time.</p>
<p>A <a href="http://dictionary.reference.com/browse/mondo" title="mondo">mondo</a> is a component of zen scripture where the roshi (`roh-shee) [teacher] asks the student a question, demanding an immediate answer. Since this question is often complex or multi-part, the process of developing the answer is more critical than the answer itself, akin to the Biblical scripture of teaching a man to fish. Had the pupil regurgitated some decade-old algorithm learned in Intro to VisualBasic doesn&#8217;t further the understanding of the problem at hand. Just because you may have learned bubble sort first doesn&#8217;t mean it&#8217;s the best choice for your production code base. A mondo would solve whether insertion sort would suffice instead of spending two days of company time implementing heap sort; and, more than that, it should help you realize the patterns in the future to prevent the same questions from needing attention again.</p>
<p>This insight, the ability to anticipate or at least keep pace with the business&#8217; needs, is one of the most efficient ways to show off one&#8217;s skill in a profession. Especially now, when employers need to &#8220;cut off the fat&#8221; out of their budgets and reign in on ambitious funding of pipe-dream projects to stay competitive.</p>
<p>And there&#8217;s no reason you <i>shouldn&#8217;t</i> want to continue to learn. If nothing else &ndash; and trust me, there&#8217;s plenty else &ndash; you will bring those skills back to the workplace every day, inspiring those around you and impressing your superiors. That&#8217;s not even counting the personal satisfaction of reasoning through an enigma and coming out the upper side with a better solution or clearer understanding of the problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adventdigerati.com/2009/03/zen-and-the-art/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Lost in Translation</title>
		<link>http://blog.adventdigerati.com/2008/11/lost-in-translation/</link>
		<comments>http://blog.adventdigerati.com/2008/11/lost-in-translation/#comments</comments>
		<pubDate>Thu, 06 Nov 2008 06:01:22 +0000</pubDate>
		<dc:creator>Zack</dc:creator>
				<category><![CDATA[Philosophy]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Practicum]]></category>

		<guid isPermaLink="false">http://adventtechnorati.wordpress.com/?p=40</guid>
		<description><![CDATA[As a programmer, if you&#8217;ve ever been tasked with migrating any system from one implementation to another, then you have undoubtedly ran aground on technical issues ranging from missing or underperforming data structures, inefficient algorithms, or a combination of these and any number of other issues. It doesn&#8217;t matter if it&#8217;s merely going from one [...]]]></description>
			<content:encoded><![CDATA[<p>As a programmer, if you&#8217;ve ever been tasked with migrating any system from one implementation to another, then you have undoubtedly ran aground on technical issues ranging from missing or underperforming data structures, inefficient algorithms, or a combination of these and any number of other issues. It doesn&#8217;t matter if it&#8217;s merely going from one language to another or across platforms, the inevitability of technical conundrums is inescapable.</p>
<p>This is not to say, however, that they are insurmountable. Often, in fact, when we stop trying to over-engineer our system and evaluate the situation as it is, we can make optimizations beyond our expectations. As a simple &#8220;for instance,&#8221; presuming we have a determinant for a conditional that is initially a free-text entry. According to this pretense, Boolean evaluation can take as little as the first byte in the string or as much as the full text of the string; thus, for sake of computation time, memory, and most of all maintainability, it should be avoided at high cost. Compare this with replacing this free-text with a numerically-indexed list of choices and the Boolean evaluation drops to a static value. (Even better, most implementations of bit-wise integer comparison are executed as close to machine code as possible.)</p>
<p>But, inevitably, there are cases which solutions such as these are not so prevalent or obvious. <i>For instance</i>, when implementing join-context SQL conditionals as PHP, it can take a tremendous amount of derived and out of band knowledge to perform the translation. Combine this with already complex logic, (nested XORs, negated string comparisons, and cross-table lookups), and the code can get slow and ugly very fast. So what do you do as an engineer with an email, the SQL, and a pat on the back? Get a game plan.</p>
<p>It&#8217;s more important to pencil in a strategy for defining your criteria than going off of pre-existing assumptions. For one measure, repeated calculations in the original may be consolidated as a single conditional whose value is stored and later addressed; the processing efficiency alone is worth the change when scaling up to enterprise-level datasets. Additionally, as I stated above, changing data types of pre-existing conditionals can be a great boon as well, and performing integer arithmetic is <i>always</i> faster than <code>strcmp</code>.</p>
<p>Once the parameters are defined, we zoom out to observe the algorithm. Keeping in mind the practice degrades maintainability, nesting some repeated conditionals can save processing power down the line. But don&#8217;t get nesting-happy; (especially with code you&#8217;re simply translating and didn&#8217;t have the mental inception for) you&#8217;ll forget why two conditionals had been nested or why their order mattered so much. This is where your formal logic class enters the picture. Class, what is {A, B, C, D} &amp; {A, B, C}? Of course it&#8217;s {A, B, C}; it&#8217;s also &not;{D}. The optimization, however slight, of changing
<pre><code>if($var == A OR $var == B OR $var == C) { something_true(); }</code></pre>
<p> to
<pre><code>if($var != D) { something_true(); }</code></pre>
<p> may not increase performance by leaps and bounds, but if you&#8217;re deep in the code anyway why wouldn&#8217;t you shave off the time?</p>
<p>Now, after the code is written and tested, there is much rejoicing. The only thing we now have to contend with is if the translation needs to change. And while we may not, (and hopefully will not), go back to square-one with our evaluation, we should at least take the time to consider where we may have gone wrong in our previous implementations and where we can continue to go right.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adventdigerati.com/2008/11/lost-in-translation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
