<?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; Uncategorized</title>
	<atom:link href="http://blog.adventdigerati.com/category/uncategorized/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>Happy First Birthday!</title>
		<link>http://blog.adventdigerati.com/2009/11/happy-first-birthday/</link>
		<comments>http://blog.adventdigerati.com/2009/11/happy-first-birthday/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 15:04:44 +0000</pubDate>
		<dc:creator>Zack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.adventdigerati.com/?p=71</guid>
		<description><![CDATA[Well, it&#8217;s been one full year today since I started this blog, and I&#8217;ve got to say that I&#8217;ve achieved exactly what I wanted out of it. It is a place to put my thoughts on technology and how it relates to my life down for the world to see. There&#8217;s been a significant fall-off [...]]]></description>
			<content:encoded><![CDATA[<p>Well, it&#8217;s been one full year today since I started this blog, and I&#8217;ve got to say that I&#8217;ve achieved exactly what I wanted out of it. It is a place to put my thoughts on technology and how it relates to my life down for the world to see. There&#8217;s been a significant fall-off of quantity, recently, but the quality of my articles I&#8217;ve always strove to keep at least on par with my most adamant topics. There&#8217;s been some <a href="http://blog.adventdigerati.com/2009/07/theres-an-app-for-that/" title="There's an App For That">humor</a>, <a href="http://blog.adventdigerati.com/2009/04/ms-slices-x-path-to-ribbons/" title="MS Slices XPath to Ribbons">kvetch</a>, and some musings on what being a developer in the real world has <a href="http://blog.adventdigerati.com/2009/03/zen-and-the-art/" title="Zen and The Art">taught</a> me all mixed in along the way.</p>
<p>I hope this next year will afford me more time to write, as I&#8217;ve enjoyed all the comments I&#8217;ve received from you readers. I have plans on documenting and devoting a page on this blog to two new Open Source projects I&#8217;ve written since starting this site; accepting suggestions, comments, and hopefully remarks that they were useful to you.</p>
<p>Thanks for reading.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adventdigerati.com/2009/11/happy-first-birthday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bound and Loving It</title>
		<link>http://blog.adventdigerati.com/2009/11/bound-and-loving-it/</link>
		<comments>http://blog.adventdigerati.com/2009/11/bound-and-loving-it/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 15:32:58 +0000</pubDate>
		<dc:creator>Zack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.adventdigerati.com/?p=69</guid>
		<description><![CDATA[All IDE&#8217;s should have custom keybinding options. For years I&#8217;d lived under the thumb of JCreator and Notepad because all the shortcuts of the then-major (free) IDE&#8217;s were just ridiculous. I would never have guessed what the command for Save All was without a guide. And that&#8217;s what&#8217;s the most retarding: IDE&#8217;s are supposed to [...]]]></description>
			<content:encoded><![CDATA[<p>All IDE&#8217;s should have custom keybinding options. For years I&#8217;d lived under the thumb of JCreator and Notepad because all the shortcuts of the then-major (free) IDE&#8217;s were just ridiculous. I would never have guessed what the command for Save All was without a guide. And that&#8217;s what&#8217;s the most retarding: IDE&#8217;s are supposed to <em>help</em> you write code, not make you spend more time wondering how to do something than getting it done.</p>
<p>I jumped ship to Eclipse for Java development several years ago. It was Free, independent of Sun, and had a plugin architecture. It wasn&#8217;t until some errant day that I fortuitously pressed Ctrl+Shift+c to toggle a line comment. I was floored! Oh, rational and easy keyboard shortcuts, where had you been all my life?! I remember, tied up in some &#8220;Ctrl+Alt+x-tcomment&#8221; command. No longer!</p>
<p>Then, after I began really customizing Eclipse, right around Ganymede, I started tweaking the keybindings to just-suit my likings. I bound Ctrl+Alt+s to Save All, Ctrl+Alt+q to Close All, and Ctrl+Alt+r to Run. It was glorious. My high-school typing teacher told us that two hands on the keyboard will always be faster than a mouse. I&#8217;d have to amend that statement and say that it certainly is, for particular tasks. The key is to bind the right tasks to easy-access shortcuts, and you&#8217;ll never be beaten in a speed-test by a mouse-driven GUI.</p>
<p>Recently, I&#8217;ve again changed loyalties and moved to Netbeans. (Aside: Eclipse was wonderful, and I still have a soft spot in my heart for it, but the explosive memory usage and frequent hangings made it unusable.) It was a tough switch, though. I had tried several years before, and ran into what I considered a major usability problem: lack of multi-key bindings. By the time I was ready to switch, I was almost ready for Emacs. The fact that I could nest actions into multi-key-multi-mask shortcuts was downright awesome! By then, I&#8217;d had intimate exposure to SVN and couldn&#8217;t live without my Ctrl+t-Ctrl+c check-in binding; (&#8220;t&#8221; for &#8220;team&#8221;, &#8220;c&#8221; for &#8220;check-in&#8221;). It wasn&#8217;t until recently that I gave it another shot and am so thankful for the effort. I&#8217;ve discovered an entirely new realm of happiness for an IDE. Assigning and navigating bookmarks takes less than ten seconds and jumping to the declaration of a function to see the actual code, then right back to where you were is easy as Ctrl+d-Alt+Left!</p>
<p>Custom keybindings will save your life, or at least make you twice as productive. Learn them, use them, enjoy them.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adventdigerati.com/2009/11/bound-and-loving-it/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>the saddle</title>
		<link>http://blog.adventdigerati.com/2009/08/the-saddle/</link>
		<comments>http://blog.adventdigerati.com/2009/08/the-saddle/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 01:25:13 +0000</pubDate>
		<dc:creator>Zack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.adventdigerati.com/?p=65</guid>
		<description><![CDATA[And after a long hiatus, the Prodigal Programmer returns. Well, if only at half-measure. Unfortunately, work has been keeping me and my ever-waking mind occupied learning Django, (which will, undoubtedly, bear the brunt of many a discrediting post in the future), while real life welcomes me back to nights out and trips both across-state and [...]]]></description>
			<content:encoded><![CDATA[<p>And after a long hiatus, the Prodigal Programmer returns. Well, if only at half-measure. Unfortunately, work has been keeping me and my ever-waking mind occupied learning Django, (which will, undoubtedly, bear the brunt of many a discrediting post in the future), while real life welcomes me back to nights out and trips both across-state and up North to the Allegheny National Forest.</p>
<p>I suppose more than anything, I just needed to recharge the batteries, as it were. Being a digerati only allows for so much creative thought to be put into extracurricular activities before you owe it back to what you&#8217;re being paid to do. And, while I absolutely love putting my opinion and my works out to the public, (expect to see at least one post about GitHub and it&#8217;s glory soon), I just realized I didn&#8217;t have the content to keep up with this (or any other) blog. So rather than pollute what I strive to make otherwise a substantial addition to your Google Reader feeds, I&#8217;ve left this smolder.</p>
<p>But having a moment now, I&#8217;m finally in a rejuvenating mood that I believe is worth sharing with all my readers. If you&#8217;re mildly interested, I&#8217;ve had many starts to articles on various topics which I hope to finish: CSS syntax, Django bugs, and an expansive description of an open source project I hope to put on GitHub very soon regarding the new CANVAS HTML element.</p>
<p>In short, I&#8217;m back to writing in the techblogosphere, and I&#8217;m quite happy about it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adventdigerati.com/2009/08/the-saddle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MS Slices X-Path to Ribbons</title>
		<link>http://blog.adventdigerati.com/2009/04/ms-slices-x-path-to-ribbons/</link>
		<comments>http://blog.adventdigerati.com/2009/04/ms-slices-x-path-to-ribbons/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 04:31:32 +0000</pubDate>
		<dc:creator>Zack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Rant]]></category>

		<guid isPermaLink="false">http://blog.adventdigerati.com/?p=53</guid>
		<description><![CDATA[Microsoft has a history of creating things that are one-off mainstream, (or Open Source), in what they call an effort of efficiency or a claim to sticking to standards. In reality, they&#8217;ve just muddied the waters for developers looking to make the web more ubiquitous. IE8 continues this misguided charge with Web Slices, a particular [...]]]></description>
			<content:encoded><![CDATA[<p>Microsoft has a history of creating things that are one-off mainstream, (or Open Source), in what they call an effort of efficiency or a claim to sticking to standards. In reality, they&#8217;ve just muddied the waters for developers looking to make the web more ubiquitous.</p>
<p>IE8 continues this misguided charge with <a href="http://msdn.microsoft.com/en-us/library/cc304073(VS.85).aspx">Web Slices</a>, a particular element of a page which the browser can selectively update asynchronous to the rest of your behavior. In lamens terms, consider it to be RSS on crack. The idea is kind of cool and interesting as a developer: Provide desktop and web apps a <a href="http://en.wikipedia.org/wiki/Uniform_Resource_Identifier">URI</a> to a manageable piece of information that can be parsed relatively frequently for updates.</p>
<p>My issue is two fold: (1) the URI Microsoft defines is nonstandard and trivial; and (2), why should we learn another set of proprietary syntax for what should be defined elsewhere in the page or headers?</p>
<p>As for the URI, <a href="http://en.wikipedia.org/wiki/XPath">XPath</a> is a much stronger and cleaner way to identify what is subscribable. Why should I be limited to just one element at a time? XPath would allot me several subscriptions all at once. A URI like <code>http://blog.adventdigerati.com//*[@class="story"]:first</code> would give you my the snippet to my latest blog post, and omitting <code>:first</code> would give you all the posts on the front page. Why is that so hard?</p>
<p>Secondly, most of Slices&#8217; API is defined using bastardized (X)HTML elements and attributes. Even I learned that text content should not be used to define semantic meaning in a document; it&#8217;s a corruption of XML standard, one of the best directions in web standardization so far. How hard would it be to include a custom <a href="http://www.w3schools.com/html/html_meta.asp"><code>&lt;meta></code></a> tag in the <code>&lt;head></code>? Namespacing a custom tag would be sufficient, and you could even achieve the same effects MS wants via these methods. <code>&lt;meta name="ms-slice-title" content="/absolute/path/from/slice/root/to/title/tag"/></code> would give a consistent way to retrieve the titles for each slice with one line of code! Or, if need be that the slices be drastically different, <code>&lt;meta name="ms-slice-ttl" content="//*[@class='entry-content']"/></code> would parse slower but achieve the same goals, and be standards-compliant.</p>
<p>In all, everything Microsoft wanted to get out of their new Web Slices feature could already be done using existing tools; let&#8217;s not clutter what could be an awesome new tool for developers with sub-par requisites that somehow shoehorn their way into standards by just being left to fester.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adventdigerati.com/2009/04/ms-slices-x-path-to-ribbons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Classy C Code Covers</title>
		<link>http://blog.adventdigerati.com/2009/01/classy-c-code-covers/</link>
		<comments>http://blog.adventdigerati.com/2009/01/classy-c-code-covers/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 03:05:19 +0000</pubDate>
		<dc:creator>Zack</dc:creator>
				<category><![CDATA[Humor]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.adventdigerati.com/?p=33</guid>
		<description><![CDATA[Since the dawn of time, (or at least of the printing press), there has been the effort to impress causal readers with fancy, printed book covers. For the most part, educational and scientific books have eluded these efforts. It&#8217;s probably why when people think of a book about coding, they imagine chunky typefaces and horrendous [...]]]></description>
			<content:encoded><![CDATA[<p>Since the dawn of time, (or at least of the printing press), there has been the effort to impress causal readers with fancy, printed book covers. For the most part, educational and scientific books have eluded these efforts. It&#8217;s probably why when people think of a book about coding, they imagine chunky typefaces and horrendous block-quotes of line-numbered source code, (or, as the Luddite call it, &#8220;gibberish&#8221;).</p>
<p>Then came <a href="http://oreilly.com/">O&#8217;Reilly</a> and his onslaught of black and woodblocks of wonderfully foreign animals. After all, what <a href="http://en.wikipedia.org/wiki/O%27Reilly_Media#Animal_books">business</a> does a camel have learning Perl, anyway? Regardless, the new and fresh cover matched an <a href="http://en.wikipedia.org/wiki/Epoch_(reference_date)">epoch</a> in programming/coding reference books. Gone were the days of black and gray boxes, laden with cross references and appendices; now, we have analogies and metaphors to spare. Reading up on honing your skills as a software engineer just got a whole lot more interesting.</p>
<p>But, you have to draw the line somewhere&#8230;and I&#8217;m very glad Dave Thomas, (the programmer, not Wendy&#8217;s uncle), did. Look at a humorous reworking of one of his past titles:</p>
<p><img src="http://pragdave.blogs.pragprog.com/.a/6a00d83451c41c69e20105368a3148970b-320wi" alt="Agile Web Development With Rails cover art"></img></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adventdigerati.com/2009/01/classy-c-code-covers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dynamic-Sql Act III</title>
		<link>http://blog.adventdigerati.com/2008/12/dynamic-sql-act-iii/</link>
		<comments>http://blog.adventdigerati.com/2008/12/dynamic-sql-act-iii/#comments</comments>
		<pubDate>Fri, 26 Dec 2008 00:24:27 +0000</pubDate>
		<dc:creator>Zack</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Theory]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Practicum]]></category>

		<guid isPermaLink="false">http://blog.adventdigerati.com/?p=24</guid>
		<description><![CDATA[All RDb queries are structured in a strict syntax. This is a simple axiom which can and will be exploited by our experiment on the most fundamental level: building the tree. The elementary fact is that whatever comes next must be related to something which has preceded it. It is this relationship which we will [...]]]></description>
			<content:encoded><![CDATA[<p>All RDb queries are structured in a strict syntax. This is a simple axiom which can and will be exploited by our experiment on the most fundamental level: building the tree. The elementary fact is that whatever comes next must be related to something which has preceded it. It is this relationship which we will use to link and unlink our tree.</p>
<p>Using our <a href="http://blog.adventdigerati.com///dynamic-sql-act-ii">previous example</a>, we can already see how rapidly a RDb can gain entities and relationships as correctly storing information can require many additional entities. For our &#8220;intelligent SQL constructor,&#8221; the system will need to weed through the myriad of tables to get to find the fastest path from start to finish.</p>
<p>Now suppose we expand our example yet again and include a second path between <code>Baby</code> and <code>Deceased</code>: &#8220;A Baby can be born and soon after become Deceased.&#8221; This new relationship throws a monkey wrench in some interfaces, as the most direct path from Baby to Deceased is now a single hop. For some users, that we may abstract the fact a Person will become Deceased can lead to erroneous expectations either from the developer or the user; in either event, this is a discrepancy which will cost patrons and development costs in the end.</p>
<p>So how can we expose this fact? My personal inclination is to be explicit is possible. By describing to users what you, as the developer, were intending, harmful reactions should realistically be cut to a minimum. To do this, the system will need to be mathematically aware of how the RDb is structured and what the relationships imply. As proposed in <a href="http://blog.adventdigerati.com/2008/11/dynamic-sql-act-i/trackback/">the exposition</a>, knowledge of existing information, its meaning, and a relation to other algorithms should help us greatly.</p>
<p>The first tool we&#8217;ll need is a mathematical expectation of how to go from Baby to Deceased. Because of the wonders of modern medicine, users expect that life for a Baby does not cease until having consumed a significant time on Earth. From the data-modeling standpoint, this is to trace the relationship from Baby to Deceased through the Person entity. However, some UIs may not account for this and choose the direct, 1-hop, relationship.</p>
<p>From a user&#8217;s standpoint, this is misleading. &#8220;I&#8217;m calculating social security checks for the elderly; why do the results include a dozen records which are extraneous?&#8221; The system&#8217;s presumption that it must follow the most direct path from Baby to Deceased seems flawed, though &ndash; for the criteria &ndash; its data may be perfectly correct. Shouldn&#8217;t we instead initially propose to follow the path with the highest probability of success?</p>
<p>In such an example, based on our knowledge of the use of the system, we estimate that there are ten times the number of records for paths between Baby to Deceased using the Person table as without. Taking this into account, we almost assuredly are retrieving the right result set for social security calculations. Then, for the remaining ten percent, we offer the option to &#8220;trim&#8221; the Person entity from our query.</p>
<p>Additionally, what the system hasn&#8217;t exposed here is the semantic relationship the surmised from the entities provided. Perhaps the results <i>were</i> appropriate for what was provided, just not what was expected. This is the second tool we must produce: a means of exposing to the user our presumption of the semantic meaning of their query. This is, admittedly, less for our system to act upon than to influence what the user will input next, or perhaps withdraw and try again.</p>
<p>By now it might sound familiar to problems faced in graph theory. At the moment, there are two that I can think of which aptly fit into this scenario: maximal flow and minimal cut. Both are incredibly annoying problems with surprisingly low-tech solutions. They also both make use of our mathematical model tool we prescribed earlier. An improvement to this theory which deserves its own article will be proposed at the end of the article.</p>
<p>Luckily, there are means to do all of these things when given a well thought-out framework. Semantic ties can be stored within the framework and the mathematical model can be derived quickly from the data via a few SQL queries. (I already anticipate the cries of outrage over additional SQL queries, but those drawbacks will be addressed in the conclusion; so please, save your flames until the end of the series.)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adventdigerati.com/2008/12/dynamic-sql-act-iii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XOmB Attack!</title>
		<link>http://blog.adventdigerati.com/2008/12/xomb-attack/</link>
		<comments>http://blog.adventdigerati.com/2008/12/xomb-attack/#comments</comments>
		<pubDate>Sat, 06 Dec 2008 14:45:00 +0000</pubDate>
		<dc:creator>Zack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Plug]]></category>

		<guid isPermaLink="false">http://blog.adventdigerati.com/?p=20</guid>
		<description><![CDATA[Congratulations to the XOmB team, (prononunced &#8220;zom&#8217; bee&#8221;), for reaching a major milestone in their development: kernel stability. For everyone who hasn&#8217;t been following the Pitt Geeks forums, XOmB is a new middleware architecture, written as much as possible in the D programming language, lying between the HAL and the OS. The &#8220;XO&#8221; stands for [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_21" class="wp-caption alignright" style="width: 160px"><img src="http://blog.adventdigerati.com/wp-content/uploads/2008/12/zen_classic_logo-150x72.png" alt="XOmB Logo" title="XOmB Logo" width="150" height="72" class="size-thumbnail wp-image-21" /><p class="wp-caption-text">XOmB Logo</p></div>Congratulations to the <a href="http://xomb.org/">XOmB</a> team, (prononunced &#8220;zom&#8217; bee&#8221;), for reaching a major milestone in their development: kernel stability.</p>
<p>For everyone who hasn&#8217;t been following the <a href="http://forums.pittgeeks.org/index.php">Pitt Geeks forums</a>, XOmB is a new middleware architecture, written as much as possible in the D programming language, lying between the HAL and the OS. The &#8220;XO&#8221; stands for &#8220;exo,&#8221; as in &#8220;<a href="http://en.wikipedia.org/wiki/Exokernel">exo-kernel</a>.&#8221; <a href="http://pdos.csail.mit.edu/exo.html">MIT has written several</a> exo-kernels, it&#8217;s main details page was last updated in 1998.</p>
<p>XOmB was written by several University of Pittsburgh <a href="http://www.cs.pitt.edu/">CS</a> students starting just after Y2K, and not a year after graduation is the kernel stable enough for LibOSes to be written and tested. It&#8217;s a great day for <a href="http://en.wikipedia.org/wiki/Free_and_Open_Source_Software">FOSS</a>! (Oh, I didn&#8217;t mention it was <i>free</i> before? ;-P)</p>
<dl>
<dt>GIT XOmB</dt>
<dd><a href="git://github.com/untwisted/xomb.git">git://github.com/untwisted/xomb.git</a></dd>
</dl>
]]></content:encoded>
			<wfw:commentRss>http://blog.adventdigerati.com/2008/12/xomb-attack/feed/</wfw:commentRss>
		<slash:comments>0</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>
		<item>
		<title>Programeese</title>
		<link>http://blog.adventdigerati.com/2008/10/programeese/</link>
		<comments>http://blog.adventdigerati.com/2008/10/programeese/#comments</comments>
		<pubDate>Sun, 19 Oct 2008 03:50:50 +0000</pubDate>
		<dc:creator>Zack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adventtechnorati.wordpress.com/?p=13</guid>
		<description><![CDATA[As part of my &#8216;training&#8217; for my new (first) job, I was instructed to pick up and read the book Hackers and Painters by Paul Graham. It seemed like quite the novel idea; after all, people who program computers are supposed to be scientists. It&#8217;s a science to most because that&#8217;s the definition of science: [...]]]></description>
			<content:encoded><![CDATA[<p>As part of my &#8216;training&#8217; for my new (first) job, I was instructed to pick up and read the book <i>Hackers and Painters</i> by Paul Graham. It seemed like quite the novel idea; after all, people who program computers are supposed to be <i>scientists</i>. It&#8217;s a science to most because that&#8217;s the definition of science: something that can be repeated ad nauseam with the same result. But it&#8217;s deeper than that to those inside the business, and that&#8217;s what Graham focuses on.</p>
<p>Anyone can write something that uses a finite language to perform a task; they view programming as a science because the result is all-important. A subset of these people care about the means to that end, how to innovate and control or to clarify and enhance something that predates their intervention. It is these select programmers that see what they do differently from science; as Graham&#8217;s analogy goes, they are as painters.</p>
<p>It was a novel idea, one I hadn&#8217;t personally thought of. Coming out of the 80&#8242;s and taking computer classes in the 90&#8242;s, I learned that the old, original way to program was pencil-and-paper; you traced, retraced, and did it again until you were sure that all the pieces compiled and didn&#8217;t hang on an infinite-loop. <i>Ka-chunk</i>-ing the graphite into punch cards or translating the pseudo into real code seemed like a science; the very implementation of the scientific method.</p>
<p>Enter the 2000&#8242;s. As a Comp Sci student, there are classes everyone dreads. Algorithms are typically one of them. Learning the Complexities of Djikstra and A* meant sleepless nights reviewing code, compiling, and reading the textbook. Sounds like a science to me! But, at the end of it all, the reason so much pain was endured is quite clear: it makes us resilient, faster, and better &#8220;painters.&#8221; We see the loops, callbacks, and hash trees as strokes on the canvas or rhymes in a song; storing references instead of whole objects slides the slant rhyme into a perfect-pitch. I thought differently, even began speaking a different language in my head: a <i>programeese</i> that was based more in logic and absolutes than society&#8217;s compassionate relative truths.</p>
<p>Then again, this brings up its own interesting tangent. Maybe software engineers are closer to being writers than painters, but no one has written about the connection because the thought of mixing science and creativity was a noxious concoction. William Strunk wrote <i>Elements of Style</i> in 1918. He didn&#8217;t have a clue what Boolean logic or a vacuum tube was. But he did understand writing; and words were his symphony. He must have, I believe, painstakingly sat through the English Composition equivalent of our programming algorithms class. His grasp of what makes a good essay translates with only a little help into great programming practice.</p>
<p>An excerpt with noted emphasis:<br />
<blockquote><b>Make the <strike>paragraph</strike> [function] the unit of composition: one <strike>paragraph</strike> [function] to each <strike>topic</strike> [task].</b></p>
<p>[&hellip;]Ordinarily, however, a <strike>subject</strike> [task] requires subdivision into <strike>topics</strike> [functions], each of which should be made the <strike>subject</strike> [task] of a <strike>paragraph</strike> [function]. The object of treating each <strike>topic</strike> [task] in a <strike>paragraph</strike> [function] by itself is, of course, to aid the <strike>reader</strike> [programmer]. The <strike>beginning</strike> [declaration] of each <strike>paragraph</strike> [function] is a signal to him [or her --<i>Ed.</i>] that a new step in the development of the <strike>subject</strike> [task] has been reached.[&hellip;]</p></blockquote>
<p>~ <a href="http://www.bartleby.com/141/strunk5.html#9">Bartleby</a></p>
<p>That&#8217;s remarkably coherent for what was changed! And if you hadn&#8217;t thought about it before, beautiful code follows this advisory very closely. The function is the fundamental unit if any program, (if you bar the variable since they are in themselves stoic). Its purpose should be solid and rudimentary if internally complicated. But just as my 5th-grade teacher taught me when outlining my papers, that complication should not become so extensive that the intent is lost; in that scenario, the paragraph should be subdivided, and likewise the offending function should be dissected. The contexts are different, but the underlying principles are the same: <i>K.I.S.S.</i> &mdash; Keep It Simple, Stupid!</p>
<p>So, after all, maybe programmers are men and women of double duty; scientists who engineer excellent structures that do exactly as told, and yet makers who craft works that are intuitive and engaging to use. I guess that &#8220;programeese&#8221; I constructed my world around once I appreciated what I had learned was more than sounding crazy. It was learning how to fasten a dangling participle or paint a Douglas fir Bob Ross would be proud to put in the background of one of his paintings.</p>
<p>Buy <a href="http://www.amazon.com/Elements-Style-Fourth-William-Strunk/dp/020530902X">The Elements of Style</a><br />
Buy <a href="http://www.amazon.com/Hackers-Painters-Big-Ideas-Computer/dp/0596006624">Hackers and Painters</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adventdigerati.com/2008/10/programeese/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Constructor</title>
		<link>http://blog.adventdigerati.com/2008/10/constructor/</link>
		<comments>http://blog.adventdigerati.com/2008/10/constructor/#comments</comments>
		<pubDate>Mon, 06 Oct 2008 06:49:29 +0000</pubDate>
		<dc:creator>Zack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adventtechnorati.wordpress.com/?p=3</guid>
		<description><![CDATA[Welcome to Advent Technorati, the code-oriented portion of Advent Euphoria, my LiveJournal, (LJ), weblog; a blog stuffed with ideas, anecdotes, and insights from my aspect as a newfound professional software engineer.]]></description>
			<content:encoded><![CDATA[<p>Welcome to Advent Technorati, the code-oriented portion of Advent Euphoria, my LiveJournal, (LJ), weblog. I&#8217;ve been thinking of writing this for a long time now, and many things had barred my awaited adoption of WordPress as a major aspect of my online presence. I didn&#8217;t like that it was different from LJ, didn&#8217;t like that it didn&#8217;t have community support, didn&#8217;t like that I&#8217;d be switching from a product I liked; but most of all, I didn&#8217;t like the limited customization WordPress offered its free users. What changed my mind was if this is going to be disparate from my general blogging activities, more professional and thought-provoking, then having the font be 13px Calibri didn&#8217;t seem to matter as much anymore.</p>
<p>I hope to fill this blog, (hopefully before Technorati.com gets upset, I just liked the name), with a few ideas, anecdotes, and insights from my aspect as a newfound professional software <i>engineer</i> in the professional world. Here in the U.S., it&#8217;s 2:30 AM on a Monday morning, and I know I&#8217;m going to have fires to fight come the work-week; so I&#8217;ll bid you (possible) readers a good night, or good morning, and try to update this with something meaningful by Wednesday.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adventdigerati.com/2008/10/constructor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
