<?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>Bavarian Cream</title>
	<atom:link href="http://ssedlmayr.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://ssedlmayr.wordpress.com</link>
	<description>Steve Sedlmayr&#039;s ActionScript Geekplasmatron</description>
	<lastBuildDate>Fri, 21 Oct 2011 14:57:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='ssedlmayr.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/fcaf55f611c334105028d9b0199962db?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Bavarian Cream</title>
		<link>http://ssedlmayr.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://ssedlmayr.wordpress.com/osd.xml" title="Bavarian Cream" />
	<atom:link rel='hub' href='http://ssedlmayr.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Game mechanic for my game</title>
		<link>http://ssedlmayr.wordpress.com/2011/10/21/game-mechanic-for-my-game/</link>
		<comments>http://ssedlmayr.wordpress.com/2011/10/21/game-mechanic-for-my-game/#comments</comments>
		<pubDate>Fri, 21 Oct 2011 14:57:30 +0000</pubDate>
		<dc:creator>ssedlmayr</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ssedlmayr.wordpress.com/?p=19</guid>
		<description><![CDATA[Here&#8217;s the core mechanic of my game: Steve-Sedlmayr-game-mechanic-102011<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ssedlmayr.wordpress.com&amp;blog=10089208&amp;post=19&amp;subd=ssedlmayr&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s the core mechanic of my game:</p>
<p><a href='http://ssedlmayr.files.wordpress.com/2011/10/steve-sedlmayr-game-mechanic-102011.pdf'>Steve-Sedlmayr-game-mechanic-102011</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ssedlmayr.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ssedlmayr.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ssedlmayr.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ssedlmayr.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ssedlmayr.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ssedlmayr.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ssedlmayr.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ssedlmayr.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ssedlmayr.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ssedlmayr.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ssedlmayr.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ssedlmayr.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ssedlmayr.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ssedlmayr.wordpress.com/19/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ssedlmayr.wordpress.com&amp;blog=10089208&amp;post=19&amp;subd=ssedlmayr&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ssedlmayr.wordpress.com/2011/10/21/game-mechanic-for-my-game/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7fac3e8b7cb80686e1f49d969b36679a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ssedlmayr</media:title>
		</media:content>
	</item>
		<item>
		<title>Working on a game of my own</title>
		<link>http://ssedlmayr.wordpress.com/2011/10/21/working-on-a-game-of-my-own/</link>
		<comments>http://ssedlmayr.wordpress.com/2011/10/21/working-on-a-game-of-my-own/#comments</comments>
		<pubDate>Fri, 21 Oct 2011 14:55:20 +0000</pubDate>
		<dc:creator>ssedlmayr</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ssedlmayr.wordpress.com/?p=15</guid>
		<description><![CDATA[I&#8217;m finally working on one of my own games. I came up with it about 2 years ago, a couple of months before starting my first job in the games industry, at PlayFirst. I&#8217;ve got the concept listed as a prior invention at work ;D. Here&#8217;s the original concept, which has changed somewhat since then. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ssedlmayr.wordpress.com&amp;blog=10089208&amp;post=15&amp;subd=ssedlmayr&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m finally working on one of my own games. I came up with it about 2 years ago, a couple of months before starting my first job in the games industry, at PlayFirst. I&#8217;ve got the concept listed as a prior invention at work ;D. Here&#8217;s the original concept, which has changed somewhat since then. It will probably be single-player game now instead of a social play-for-free game, which was a little ambitious:</p>
<p>M&#8217;B-Bot GDD Notes<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>Summary</p>
<p>A light, social RPG featuring a beat-boxing robot that appeals to all audiences. The game is highly entertaining foremost, but explores social and cultural themes, such as economic justice, the history of jazz, the roots of hip hop, and sustainable communities at the same time. Built in Flex &amp; ActionScript, deployed via Air and integrated with Facebook.</p>
<p>Story Synopsis</p>
<p>m&#8217;B-Bot is a beat-boxing robot who lives in BeBopotron, a vaguely American metropolis in an alternate reality where everyone is a musical robot. Think Machinarium meets GTA in an all-ages appropriate and somewhat futuristic setting. m&#8217;B-Bot&#8217;s age will not be specified, but it is implied that he is an ingenue in the city. His nemesis, though he does not know it when he arrives, is DigiD, criminal impresario of evil in BeBopotron. DigiD stands for all negative values in the game: greed over cultural and community good; gluttony over moderation; short-term profit over sustainability, etc. In short, he represents all of the vices, institutions and practices that have gotten the human race into it&#8217;s currently straitened situation.</p>
<p>m&#8217;B-Bot arrives in the city penniless and with no professional skills and must find a way to make a living, or his battery will run down and he will shut off permanently. He starts beat-box performances on the street for spare credits. He eventually gets noticed by the locals who realize his unique talents and they send him off on various errands and missions, earning him ever-increasing respect points (RP) and credits, and improving BeBopotron.</p>
<p>m&#8217;B-Bot&#8217;s adventures involve cleaning up and renewing neighborhoods, connecting communities, creating self-sufficient sustainability, creating alternatives to crime, generally helping people, learning and educating about history and music, and righting economic injustices. Although not always directly, standing in his way around every turn to block, stymie and obfuscate is the ever nefarious DigiD and his DigiDrones.</p>
<p>Milieu</p>
<p>The environment is American urban, rundown and slightly futuristic, but not postapocalyptic like Borderlands, Fallout 3, Machinarium, et al. As the player improves neighborhoods, the environment changes to be dazzlingly futuristic in an understated, contemporary way a la Mass Effect. In the rundown mode the environment might be more industrial and even steampunkish. In the utopian mode, everything is streamlined and plasmic. Will have to avoid looking too much like a shopping mall. In the rundown mode, there will be more chains (all alluding to DigiD indirectly in the name), trash, grime, pollution, traffic, homeless and sick robots, et cetera. In utopian mode these things will be gone. The chains will be replaced by local shops.</p>
<p>The robots of BeBopotron are musical, so it should feature a variety of robot &#8216;genres&#8217; &#8211; jazz, bluegrass, griot, pop, etc. and this should generally inform the game design. Genres should generally be those that contributed to the growth of hip hop. There may also be breakdancing robots in the game.</p>
<p>Basic Gameplay Mechanic</p>
<p>The basic gameplay mechanic consists of essentially a mini-game involving making m&#8217;B-Bot beat box with the keyboard and mouse. The player beatboxes in a variety of ways to earn RP and level up. The visible portion of this control will consist of 2 parts.</p>
<p>The first part is a horizontal table at the upper left of the gameplay area consisting of 2 rows of 10 columns. The first row is an indicator of keys: either QWERT YUIOP or the numerals 1-0 or WER ASDF ZXC at the user&#8217;s option. The second row consists of symbols corresponding to beatbox moves, which players can configure as they like. The total number of moves might be boosted by unlocked moves or custom moves the user puts together with a simple editor and move system. Users might also have a special move generated by the construction of their avatar. The move symbols will be simple line drawings of a mouth in the position needed to make the sound, augmented as necessary by arrows or icons to differentiate similar moves.</p>
<p>The second part is a circular track similar to the track in Fable II for making expressions, except circular rather than semicircular. Inside the circle will be an animated &#8216;close-up&#8217; of the avatar&#8217;s mouth beatboxing.</p>
<p>To beatbox, the user will hold down one of the move keys. As they do so, a green bar will fill the beat wheel and quickly degrade, revealing a more slowly degrading yellow bar and a static red bar under that. At the same time, as in Fable II, a ball will circle the track rapidly. The user must click while holding down the move key and while the ball is on the green bar for the maximum score, with lesser modifiers for the yellow and red bars. As the user levels up, the ball will move faster and there may be multiple degrading green bars within the beat wheel.</p>
<p>The control is known as the B.U.D.D.H.A, or Beatbox University Downright Digital HUD Apparatus, also known as the buddhatron. The Buddhatron should start out grungy like BeBopotron, and improve to become shiny and plasmic, either gradually as a subtle indicator of game completion, or morphing slowly in response to the state of the current street. Being a HUD, it should only be visible when requested by the user while roaming, unless it is required for a mission, when it will be mandatory. The user obtains the Buddhatron after finishing a tutorial at Beatbox University.</p>
<p>In addition to configured and avatar-native (special) moves, NPCs may also have unique special moves, and users may acquire additional special moves by augmenting upgrade slots with hardware such as scratch tables, EQs, autotuners, amplifiers, vocalizers and the like, and possibly breakdancing moves.</p>
<p>Gameplay Overview</p>
<p>The player beatboxes to earn respect points and improve the community. Ideally the game should be playable in arcade, challenge and story modes. Challenge mode will allow the player to beatbox against friends for respect points. Arcade mode will serve up a subset of available missions for the user to play, but will not save any progress besides perhaps a high score per session.</p>
<p>The main mode is story mode, in which the user engages in a number of different types of missions to improve BeBopotron.</p>
<p>Ideas for different kinds of mission include:</p>
<p>- Simon-says: an opponent does 1 move, player matches; the opponent does 2 moves, et cetera. In story mode the round ends after a certain number of moves. In challenge, the first to fail (host or challenger) loses. In arcade, the round ends when a move is missed. There might be a variation in which the user has to match a percentage.<br />
- Beat challenge: freeform beatboxing but in rhythm to a beat. If a certain number of moves in a row are out of synch, the round ends. Play a certain amount of time or to an RP target, or open-ended for max RP.<br />
- Freeform beatbox challenge &#8211; target a certain amount of RP<br />
- Versus beatbox challenge &#8211; either timed or first to RP<br />
- Waypoint beatbox race &#8211; race to different points and perform the moves specified in a certain time<br />
- Driveby beatbox &#8211; pass by a specific location quickly and perform a specific series of moves<br />
- Scavenger hunt &#8211; go to specified locations and unlock items with specified moves<br />
- Hidden loot &#8211; find grafitti of a series of moves and perform them to unlock the loot</p>
<p>Goals</p>
<p>- Appeal to all ages<br />
- Appeal to all genders<br />
- Appeal to all ethnicities<br />
- Bust genres<br />
- Bust platforms<br />
- Create innovative gameplay<br />
- Educate about social issues and a little about the history of hip hop without seeming heavy handed</p>
<p>How the Goals Will Be Met</p>
<p>#Appeal to all ages:</p>
<p>- Make the gameplay accessible to a younger audience but challenging enough for adults.<br />
- The alternate reality populated by robots is one that is familiar to and popular with most generations. The anthropomorphizing of machines is a good proxy for a similar device, anthropmorphic animals, without seeming too childish. This makes it a good fixture both for memes targeted at children as well as for exploring more sophisticated ones like the toxicity of the built environment and sustainability. It also allows for the usage of a milieu that is more likely to appeal to adults.<br />
- Encode different &#8216;rating channels&#8217; in the content. For instance, in the movie The Amazing Mr. Fox, the word &#8216;cuss&#8217; is used in a Brechtian way to accomplish this very thing. While the content was safe for children, using it anywhere an actual cuss word would be used added an layer of adult humor to the film.<br />
- Hip hop itself has been around nearly four decades, meaning it has fans ranging from roughly 5-10 years old to as old as 50+.</p>
<p>#Appeal to all genders:</p>
<p>- Again, robots are key. Since robots are genderless,</p>
<p>Presentation Tier Tech</p>
<p>Server Tech</p>
<p>Revenue Model</p>
<p>Free-to-play with virtual currency for functional and decorative items; possibly some consumables as well. Plan to use Offerpal.</p>
<p>Social Distribution Channel</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ssedlmayr.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ssedlmayr.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ssedlmayr.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ssedlmayr.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ssedlmayr.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ssedlmayr.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ssedlmayr.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ssedlmayr.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ssedlmayr.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ssedlmayr.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ssedlmayr.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ssedlmayr.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ssedlmayr.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ssedlmayr.wordpress.com/15/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ssedlmayr.wordpress.com&amp;blog=10089208&amp;post=15&amp;subd=ssedlmayr&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ssedlmayr.wordpress.com/2011/10/21/working-on-a-game-of-my-own/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7fac3e8b7cb80686e1f49d969b36679a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ssedlmayr</media:title>
		</media:content>
	</item>
		<item>
		<title>Enough with the manifestos</title>
		<link>http://ssedlmayr.wordpress.com/2011/09/10/enough-with-the-manifestos/</link>
		<comments>http://ssedlmayr.wordpress.com/2011/09/10/enough-with-the-manifestos/#comments</comments>
		<pubDate>Sun, 11 Sep 2011 03:58:26 +0000</pubDate>
		<dc:creator>ssedlmayr</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ssedlmayr.wordpress.com/?p=16</guid>
		<description><![CDATA[I have not posted in a long time, it feels good to get back to the blog. I just wanted to post one thing, briefly: I&#8217;m sick and effing tired of software engineers posting one-sided, syllogistic screeds about how their outlook on coding is superior to everyone else&#8217;s with the implication that it makes them, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ssedlmayr.wordpress.com&amp;blog=10089208&amp;post=16&amp;subd=ssedlmayr&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have not posted in a long time, it feels good to get back to the blog. I just wanted to post one thing, briefly: I&#8217;m sick and effing tired of software engineers posting one-sided, syllogistic screeds about how their outlook on coding is superior to everyone else&#8217;s with the implication that it makes them, in turn, superior to everyone else. I dissected Joel Spolsky&#8217;s bullshit post about the Duct Tape Programmer a while back and another one was posted today: http://www.codercorner.com/blog/?p=502. It&#8217;s an article about another straw man: this time it&#8217;s the Prophet Coder, an engineer who&#8217;s a robot and not &#8216;smart&#8217; because he uses tried techniques to get the job done. Here&#8217;s the deal: there is no silver bullet for anything in software engineering. Sometimes you need duct tape programming (though rarely); sometimes you need well-structured code, sometimes you even need gold-plating. Sometimes you need patterns; sometimes you need a new model. Some engineers work well one way; some work well another. Some humans have one learning style, some have different ones. The key is context. The situation is different every time. But at the end of the day, you have to get software built and the bullshit behind both of these articles is that it takes a TEAM to get the job done. Projects never go well with a bunch of twinkly cowboys running around everywhere. Maybe it&#8217;s spurious, but I&#8217;ve worked with a lot of cowboys and they all wrote bad code that I or someone else had to fix at some point. Just because you like doing things one way and somebody else disagrees does not mean you are superior and the coder messiah delivered by the god of binary to the world for the purpose of all other coders kissing your immaculate, defect-free ass. Everyone has a pimple or two on their ass, and everyone writes a bug or two every once in a while. There is plenty of room for different paradigms. So quit plaguing the interwebs with manifestos about how much more super-awesome your way of thinking is than that of the infidels. Reality is more complicated than that and everyone just thinks you&#8217;re an asshole.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ssedlmayr.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ssedlmayr.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ssedlmayr.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ssedlmayr.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ssedlmayr.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ssedlmayr.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ssedlmayr.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ssedlmayr.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ssedlmayr.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ssedlmayr.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ssedlmayr.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ssedlmayr.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ssedlmayr.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ssedlmayr.wordpress.com/16/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ssedlmayr.wordpress.com&amp;blog=10089208&amp;post=16&amp;subd=ssedlmayr&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ssedlmayr.wordpress.com/2011/09/10/enough-with-the-manifestos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7fac3e8b7cb80686e1f49d969b36679a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ssedlmayr</media:title>
		</media:content>
	</item>
		<item>
		<title>Chitin Beta released</title>
		<link>http://ssedlmayr.wordpress.com/2009/12/23/chitin-beta-released/</link>
		<comments>http://ssedlmayr.wordpress.com/2009/12/23/chitin-beta-released/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 08:18:57 +0000</pubDate>
		<dc:creator>ssedlmayr</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ssedlmayr.wordpress.com/2009/12/23/chitin-beta-released/</guid>
		<description><![CDATA[I&#8217;ve finally published my modularity framework; you can view it and download it here: http://chitin.googlecode.com/svn/trunk/<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ssedlmayr.wordpress.com&amp;blog=10089208&amp;post=14&amp;subd=ssedlmayr&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve finally published my modularity framework; you can view it and download it here:</p>
<p><tt><strong><em>http</em></strong>://chitin.googlecode.com/svn/trunk/</tt></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ssedlmayr.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ssedlmayr.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ssedlmayr.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ssedlmayr.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ssedlmayr.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ssedlmayr.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ssedlmayr.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ssedlmayr.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ssedlmayr.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ssedlmayr.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ssedlmayr.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ssedlmayr.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ssedlmayr.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ssedlmayr.wordpress.com/14/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ssedlmayr.wordpress.com&amp;blog=10089208&amp;post=14&amp;subd=ssedlmayr&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ssedlmayr.wordpress.com/2009/12/23/chitin-beta-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7fac3e8b7cb80686e1f49d969b36679a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ssedlmayr</media:title>
		</media:content>
	</item>
		<item>
		<title>AS3DTC P0wn3d me ;..(</title>
		<link>http://ssedlmayr.wordpress.com/2009/11/13/as3dtc-p0wn3d-me/</link>
		<comments>http://ssedlmayr.wordpress.com/2009/11/13/as3dtc-p0wn3d-me/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 23:16:14 +0000</pubDate>
		<dc:creator>ssedlmayr</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ssedlmayr.wordpress.com/?p=12</guid>
		<description><![CDATA[I submitted an entry to Mike Chambers&#8217; AS3DTC contest this week: http://www.mikechambers.com/blog/ He won&#8217;t be announcing his results until next week, but I downloaded the entries from his gitHub repo and did a quick run through in IE8/Windows 7 Ultimate 64-bit on a 2.2 GHz duo core laptop with 4GB RAM, and here were the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ssedlmayr.wordpress.com&amp;blog=10089208&amp;post=12&amp;subd=ssedlmayr&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I submitted an entry to Mike Chambers&#8217; AS3DTC contest this week:</p>
<p><a href="http://www.mikechambers.com/blog/">http://www.mikechambers.com/blog/</a></p>
<p>He won&#8217;t be announcing his results until next week, but I downloaded the entries from his gitHub repo and did a quick run through in IE8/Windows 7 Ultimate 64-bit on a 2.2 GHz duo core laptop with 4GB RAM, and here were the results I came up with myself (I didn&#8217;t do any validation):</p>
<p>//Me -&gt; 24 ms<br />
//import entries.AaronSpjut.ProximityManager; // -&gt; 16 ms<br />
//import entries.AndrewTraviss.ProximityManager; // -&gt; 11 ms<br />
//import entries.ArnaudGatouillat.ProximityManager; // -&gt; 6 ms<br />
//import entries.BertrandLarrieu.ProximityManager; // -&gt; 7 ms<br />
//import entries.CayGarrido.one.ProximityManager; // -&gt; 12 ms<br />
//import entries.CayGarrido.two.ProximityManager; // -&gt; 13 ms<br />
//import entries.DanielKerner.one.ProximityManager; // -&gt; 39 ms<br />
//import entries.DanielKerner.two.ProximityManager; // -&gt; 32 ms<br />
//import entries.GrantSkinner.ProximityManager; // -&gt; 6 ms<br />
//import entries.GregoryPelletier.ProximityManager; // -&gt; 11 ms<br />
//import entries.HuyeTueDao.ProximityManager; // -&gt; 12 ms<br />
//import entries.IainLobb.ProximityManager; // -&gt; 11 ms<br />
//import entries.IanThomas.one.ProximityManager; // -&gt; 13 ms<br />
//import entries.IanThomas.two.ProximityManager; // -&gt; 45 ms<br />
//import entries.JeanPhilippeAuclair.ProximityManager; // -&gt; 9 ms<br />
//import entries.JimCheng.ProximityManager; // -&gt; 7 ms<br />
//import entries.JonasMonnier.ProximityManager; // -&gt; 8 ms<br />
//import entries.KermitHu.ProximityManager; // -&gt; 100 ms<br />
//import entries.MarcinSzczepanski.ProximityManager; // -&gt; 8 ms<br />
//import entries.MarkStarling.ProximityManager; // -&gt; 15 ms<br />
//import entries.MihaiAlexandruBirsan.ProximityManager; // -&gt; 31 ms<br />
//import entries.MikeChambers.ProximityManager; // -&gt; 10 ms<br />
//import entries.PhillipChertok.ProximityManager; // -&gt; 17 ms<br />
//import entries.RossGerbasi.ProximityManager; // -&gt; 26 ms<br />
//import entries.SeanChristmann.ProximityManager; // -&gt; 8 ms<br />
//import entries.VladimirAngelov.ProximityManager; // -&gt; 10 ms<br />
//import entries.WaiLam.ProximityManager; // -&gt; 9 ms</p>
<p>There were a surprising number of entries under 10 ms; I will have to do some digging and learn some new codes this weekend. Ah well, at least I wasn&#8217;t dead last; I&#8217;m glad I participated <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ssedlmayr.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ssedlmayr.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ssedlmayr.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ssedlmayr.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ssedlmayr.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ssedlmayr.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ssedlmayr.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ssedlmayr.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ssedlmayr.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ssedlmayr.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ssedlmayr.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ssedlmayr.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ssedlmayr.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ssedlmayr.wordpress.com/12/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ssedlmayr.wordpress.com&amp;blog=10089208&amp;post=12&amp;subd=ssedlmayr&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ssedlmayr.wordpress.com/2009/11/13/as3dtc-p0wn3d-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7fac3e8b7cb80686e1f49d969b36679a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ssedlmayr</media:title>
		</media:content>
	</item>
		<item>
		<title>Duct tape programming sucks</title>
		<link>http://ssedlmayr.wordpress.com/2009/11/11/duct-tape-programming-sucks/</link>
		<comments>http://ssedlmayr.wordpress.com/2009/11/11/duct-tape-programming-sucks/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 21:22:38 +0000</pubDate>
		<dc:creator>ssedlmayr</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ssedlmayr.wordpress.com/?p=9</guid>
		<description><![CDATA[Okay, the aforementioned post about using Ant and its scripting engine for metaprogramming in ActionScript (and other fun things) is going to have to wait a little while. Before I blog about that, I&#8217;d like to post an example-based tutorial about an application modularity/user interface library I&#8217;ve written. And before I do that, I&#8217;d like [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ssedlmayr.wordpress.com&amp;blog=10089208&amp;post=9&amp;subd=ssedlmayr&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Okay, the aforementioned post about using Ant and its scripting engine for metaprogramming in ActionScript (and other fun things) is going to have to wait a little while.</p>
<p>Before I blog about that, I&#8217;d like to post an example-based tutorial about an application modularity/user interface library I&#8217;ve written. And before I do that, I&#8217;d like to ruminate about a recent post by Joel Spolsky on his well-known blog Joel on Software titled &#8220;The Duct Tape Programmer&#8221;.</p>
<p>Before I start pontificating, in fact before I even state a position or describe the article, I have to make the obligatory geek obeisances: I highly respect Joel Spolsky, his blog and the Stack Overflow site. Which, of course, is an obvious telegraph that I disagree with his position, since no geek kowtows respectfully to a more senior or accomplished engineer except as a prelude to potent disagreement (unless as a postscript to successfully implementing that engineer&#8217;s public code). I also have to say, in the interest of full disclosure, that I have not read the book Joel is referring to in his post,<em> Coders at Work</em>. However, Joel being the talented blogger he is, the content of his post stands on its own, and merits discussion independently of its references.</p>
<p>I highly recommend reading his post first here, then coming back to finish this post:</p>
<p><a href="http://www.joelonsoftware.com/items/2009/09/23.html">http://www.joelonsoftware.com/items/2009/09/23.html</a></p>
<p>If that&#8217;s too much work for you, the gist of his article is that quality code (which he appears to think is over-engineered by definition) is fundamentally inimical to timely code. Moreover, he posits a mythical hero, &#8220;The Duct Tape Programmer&#8221;, a swashbuckling, sort of Errol-Flynn-meets-nerd-next-door type, crossed with Nietszche&#8217;s superman, and a dollop of Don Johnson, circa Miami Vice, a la carte, as a magical panacea to every deadline dilemma and architecture imbroglio. These guys are a superior category of coder, mind you; they are &#8220;the software world equivalent of pretty boys&#8230; those breathtakingly good-looking young men who can roll out of bed, without shaving, without combing their hair, and without brushing their teeth, and get on the subway in yesterday’s dirty clothes and look beautiful, because that’s who they are.&#8221; The rest of us are &#8220;architectural astronauts&#8221;, and if we condescend to consider design patterns, TDD, OOP or &#8220;any kind of coding technique that’s even slightly complicated&#8221;—basically any forward development in software engineering over the past 2 decades, which, it turns out, are all just fads—well, then we&#8217;re bullies, or just plain frigtards.</p>
<p>However, never fear. Just load up a couple of these beautiful, chimeric cowboy Adonises like proverbial silver bullets into the Colt revolver of Duct Tape Programming (cue trumpets), and fire them with spaghetti-Western-style bravado at that werewolf of looming release dates, and presto-change-o, your frigtard convention will be blown to smithereens, and your product will ship with full functionality and on time. There&#8217;s one glaring problem with this allegory: it has almost no correspondence to reality, at least in my humble experience. In other words, to channel Penn and Teller for a moment: it&#8217;s bullshit.</p>
<p>The following blogs have done a fairly good job of debunking this myth on their own, with varying degrees of agreement or disagreement (mostly disagreement) with the original argument:</p>
<p><a href="http://blog.objectmentor.com/articles/2009/09/24/the-duct-tape-programmer">http://blog.objectmentor.com/articles/2009/09/24/the-duct-tape-programmer</a><br />
<a href="http://jeffreypalermo.com/blog/debunking-the-duct-tape-programmer/">http://jeffreypalermo.com/blog/debunking-the-duct-tape-programmer/</a><br />
<a href="http://java.dzone.com/articles/duct-tape-programming">http://java.dzone.com/articles/duct-tape-programming</a><br />
<a href="http://www.markhneedham.com/blog/2009/09/26/the-duct-tape-programmer-some-thoughts/">http://www.markhneedham.com/blog/2009/09/26/the-duct-tape-programmer-some-thoughts/</a></p>
<p>However, the implications of this article are so fundamental to the craft of software development, and impinge on issues that come up so frequently on projects, that I feel compelled to answer them independently, if only to clarify and codify for myself my personal views on these issues, and why. First, I&#8217;d like to take the inductive tack and talk about my personal experience with duct tape programming. Before I do I need to make another disclosure: having worked with both, I don&#8217;t like pretty boys or cowboys.</p>
<p><strong>Duct tape programmers in my experience</strong></p>
<p>To be perfectly blunt, every single piece of duct tape programming I&#8217;ve ever run across has been an unmitigated piece of crap. Actually, make that shit. Steaming, days-old, maggot-infested, rotting shit sitting at the bottom of a construction site port-o-john where the workers—who all have colorectal cancer—eat lunch every day at a nearby taco truck that serves only carnitas burritos with extra salsa and sour cream. I don&#8217;t mean by this simply that this code is hard to follow, or poorly commented, or has lots of extra line returns randomly and inexplicably sprinkled throughout it, or that it has oodles of orphaned and commented code, or its member instances and local variables are all named with cryptic and completely unhelpful monikers like &#8220;z3&#8243; and &#8220;testVar&#8221; and &#8220;googlySparkleTron&#8221;.</p>
<p>I will admit that I&#8217;m a nazi when it comes to code cleanliness. Naming conventions and good syntax and formatting habits make for more legible code, and that&#8217;s really the point. There&#8217;s a misconception that programs are written for devices; they aren&#8217;t. If that were true, we would write code in binary. Software is written to run on devices, to be sure; but it&#8217;s written for developers. The aim of most of the big advances in coding methodology, like OOP and design patterns, has been to make code easier to understand for developers, which in turn frees them up to build bigger, more complex applications with more features. And legibility is certainly important just from a purely practical angle. It can mean the difference between deciphering a class in a few minutes with a quick glance at its interface as opposed to slogging through it for an hour, wondering the whole time which particular kind of crack the author was smoking when it was written.</p>
<p>But that&#8217;s still only syntax, and it&#8217;s a minor element compared to the other, even deeper things usually wrong with this code. For instance, class instances that require multiple external calls to do something that could be accomplished with a single external call that encapsulates the remaining operations in private template methods. Or a class that requires a wonky, fragile, externally loaded ad-hoc XML structure to run properly. Why? Because that&#8217;s the first thing that came to mind for our shiny, happy Duct Tape Programmer, and he or she just could not be bothered with five minutes of that annoying little trifle we call thinking to tease out an even marginally better solution.</p>
<p>Why? Here&#8217;s one possible theory. In my experience coders that fall into the duct tape category are often obsessed with looking good to non-coders. They&#8217;re glory hounds. And the easiest way to do that is to make people think that you&#8217;re some sort of genius speed coder. Speed coders, by the way, are even more chimeric—I don&#8217;t think I&#8217;ve ever met a single bona fide speed coder. I&#8217;m not saying they don&#8217;t exist, I just have never met one. Anyway, this particular kind of Duct Tape Programmer knows that the nuances of actually getting a product to ship will be lost on laypeople. So if the class they supposedly authored to perfection in a half hour flat is actually bug-ridden and requires 4 hours of additional love from another engineer—sometimes more senior, but not always—just to be good enough for testing (let alone release), an engineer who is not a glory hound because he has nothing to prove and doesn&#8217;t trumpet his every success loudly to any and all who will listen, but instead toils quietly in the background while the Duct Tape Programmer leaves early for the third time this week for yet another &#8216;appointment&#8217; or &#8216;errand&#8217;, it doesn&#8217;t matter.</p>
<p>In fact, it&#8217;s all the better for him, because everyone will attribute the half hour to him and take it at face value that his code was fully functional at the first crack, which he repeats every chance he can, while chalking up the long hours the other engineer has to put in to make it actually run to obsessive compulsion, greed if he&#8217;s an hourly contractor, and/or slowness, which to those who don&#8217;t know any better equals incompetence. Rarely if ever will a non-technical person credit long hours to something positive like a passion for a bug-free, positive user experience. The more brownie points that can be racked up with the chickens, the more you can make yourself look like the coder version of the late Bob Ross (you know, that white guy with the hippie fro that used to crank out oil paintings of idyllic forests in half an hour on PBS), the better. You can spot these guys easily because they often inject flashy words like &#8216;rockstar&#8217;, &#8216;ninja&#8217;, &#8216;guru&#8217; or &#8216;god&#8217; into their titles in email signatures and on personal business cards, as in: &#8216;UI Rockstar&#8217;; &#8216;Flash Ninja&#8217; ; &#8216;Java Guru&#8217;; or &#8216;XAML God&#8217;. You know who you are. By the way, the douchebag quotient of one of the above titles is the equivalent to wearing a Bluetooth headset in public while rollerblading in spandex. It&#8217;s. That. Bad. PSA.</p>
<p>Now, I don&#8217;t want to be guilty of the same generalizations I am criticizing and the above isn&#8217;t always true; which brings me to the next point.</p>
<p><strong>3 flavors of duct tape programmers</strong></p>
<p>In my experience there are 3 kinds of duct tape programmers.</p>
<p>The first kind are simply junior engineers. We all go through this phase in the first few years of our career to varying degrees, especially in the realm of UI engineering in general and Flash platform development in particular, which seems to attract a lot of self-taught software engineers, like myself. I would imagine it to be less common among freshly minted computer science graduates, but who knows. Usually these engineers have 3 years or less of professional experience. They are understandably eager to demonstrate their worth to the team. Their head is swimming with all sorts of new concepts that they are equally as eager to try out, but they don&#8217;t have much experience, so their toolkit and instincts are limited. To an extent, this is the perennial state of all software engineers, because the project and the technology is always changing. But you have to start somewhere, and for junior engineers this condition is particularly acute. I can say this with a certain amount of confidence, because with 5-6 years of experience as a developer and another 3 before that as a web designer, I&#8217;m just barely considered a senior developer myself.</p>
<p>If this person is humble and open to advice, and most importantly, not afraid to admit when she is incorrect or does not know something, I would argue she is still a duct tape programmer (note the lack of initial caps), but not of the kind Joel Spolsky describes. She codes in a duct tape fashion simply because that is the best way she knows how to do things. If you give her unsolicited advice about how to do something more efficiently, she&#8217;ll listen genuinely and say something like, &#8220;Wow, thanks. I&#8217;ll have to try that out next time.&#8221; And the next time she has a chance, she will try it.</p>
<p>If this same person is instead an attention-seeking asshole, who despite his lack of experience claims that he has worked with every technology or language any other developer of any skill or experience level ever mentions in passing on a lunch break, is obsessed with popularity and is a pompous smartass to boot, then you&#8217;ve got your Duct Tape Programmer. I don&#8217;t know about you, but I often have an urge to punch this person in the face repeatedly for no immediately apparent reason. This person is probably under 25, but if some grizzled old hacker reminisces about playing around with the first PDP-11, he will invariably chime in. &#8220;Oh yeah, I played around with one of those too, it was pretty cool. My dad had one of those.&#8221; Any one of the claims he makes might be true for all you know, but there are so many of them that the probability of them all being true is so unlikely that it threatens to rip the fabric of space-time asunder. You find yourself wondering, &#8220;If this kid is such a prodigy, why is he working here? Shouldn&#8217;t he be a professor emeritus at MIT or something?&#8221; Maybe he&#8217;s just slumming with us ordinary mortals. If ever you make the mistake of offering advice about something, he&#8217;ll be visibly annoyed and usually give you the brush off.</p>
<p>The second kind of duct tape programmer is the lifelong hacker. Of course, quite a few geeks come in this flavor, of all ages and backgrounds. The one I&#8217;m specifically referring to is usually about the same age as the junior engineer. The main difference between this guy and the previous character is that he really did play around with his dad&#8217;s (or more likely granddad&#8217;s) PDP-11 when he was eight. You know this is probably true, because he doesn&#8217;t advertise it. It just kind of slips out when you&#8217;re talking about other things. This person isn&#8217;t a pretentious asshole, so again is not a Duct Tape Programmer, but simply a duct tape programmer. This guy, even though he&#8217;s much more experienced than the junior engineer, is a duct tape programmer because it&#8217;s simply in his nature as a pure blood hacker from birth. Even though he has a day job as an engineer, he isn&#8217;t really an engineer; he&#8217;s a hacker.</p>
<p>Like Joel Spolsky with regards to the Duct Tape Programmer, this is not an insult; I have deep respect for this person. However, he is prone to making some of the same mistakes that the junior engineer does, because he tends to be a little myopic; all he sees is the project currently in front of him. As a hacker, rather than an engineer, he doesn&#8217;t care very much about quality. All he is concerned with is pure function, because that&#8217;s how a hacker operates: figure something out, then move on to the next thing. Often, this person&#8217;s engineering gig is just a day job to support his hacking habit. He just wants to hammer out his code as quickly as possible so he can leave at 5 and go play with his new netbook he cobbled together out of discarded parts running Debian with a tweaked kernel. The big difference is that if you can convince him there is a better way to do things, he&#8217;ll actually give it a go, and won&#8217;t complain about it. As a hacker, he can&#8217;t resist trying something new. He has an unbounded enthusiasm for new ideas. If, at the end of the project, he disagrees with any part of the methodology, he&#8217;ll make it known, but devoid of ire, pomp or rancor of any kind. What he will give you is a reasoned response why. If he learned anything from the new methodology, he&#8217;ll make that known too, and you can be absolutely certain he&#8217;ll continue to use those parts in the future.</p>
<p>The third and last kind of duct tape programmer is simply a junior engineer all grown up into a senior engineer. Except, unlike the rest of his colleagues, who grew out of their duct tape, cowboy-code-slinging, caveman debugging days, he still clings to his old ways with the desperation of a crack-head down to his last rock. The difference between this character and the first kind of duct tape programmer is that there is rarely a Dr. Jekyll version. This guy is even worse than his junior counterpart, because he has the seniority to throw his weight around, and when he doesn’t get his way he often throws actual temper tantrums. If you run across this guy, run as fast as you can in the opposite direction. Fire him if you can. I’m not kidding. He has all of the flaws of the junior version, but blown up to outsize proportions. This personality is very difficult to work with, especially under tight deadline pressure. So much time is wasted wrangling his ego that your product will probably ship faster without him, and be better in quality.</p>
<p>Now, lest you think the above portrait sketches are derived from my imagination, or are composites of various people I’ve worked with, know that I have actually worked with one or more concrete, in-the-flesh examples of each of these discrete personality types, and although I will not name them, I could quite readily. I’m guessing that most developers with more than a few years of experience could identify at least one specimen of each of the above personality types from their own experience.</p>
<p>And don’t get me wrong: I’ve had positive experiences, not just with the junior engineers of the humble variety and the born hackers, but even with the Duct Tape Programmers (let’s just call them DTPs from here on out) of both the junior and senior varieties. For instance, on one job I had to code a 360-degree viewer with a scrub control from a 30 frame FLV. The logic of my code was perfect, totally flawless. I was very proud of my little widget. Unfortunately, the performance was quite choppy. The problem was that, because it was a video, in order to scrub to the appropriate frame, the video literally had to seek to the appropriate frame. The overhead incurred was enough that there was a half second delay or so, enough to be annoying and register as visible choppiness. Take me at my word that the code was perfect; there wasn’t any room for improvement in the algorithm.</p>
<p>To make matters worse, this was at an ad agency, and as designers do at agencies when these sorts of issues occur, one particular designer apparated, Harry Potter style, out of thin air to bug me about it at intervals of roughly 27 seconds. I literally had not seen this guy for like 2 weeks prior. “Why doesn’t it wooooork?!” he intoned, with a whiny tone of voice meant to indicate how incompetent he thought I was. When I tried to explain that it had to do with the nature of the medium itself, and the overhead incurred from seeking to individual frames in a video, he would have none of it. Suddenly an expert on software development, he said, “Tsk. Something’s wrong with your code.” I didn’t know what to do; there literally was no room for improvement in the code. I had gotten out of touch with my own duct tape days as a junior engineer and forgotten that an FLV can be imported into a timeline; then, instead of seeking a video, you can simply jump to the appropriate frame in the SWF. I had forgotten the easy solution.</p>
<p>Luckily, this occurred to one of our resident junior DTPs. He imported the FLV into a FLA, published it out, and voila, it was perfectly smooth. Cool. He saved the day, which I acknowledged every time I had the chance. What wasn’t cool, and which I did not talk about for political reasons, was that he did it behind my back, without consulting me first, and rather than reusing the existing code and simply swapping out the video for the SWF, which would have been a very simple refactor and taken about 5 minutes, had he bothered to ask, he gutted the whole thing and recoded it from scratch, which took him more than an hour. The important thing to him was that he got his brownie points, and he could now claim full authorship (not to mention an extra billable hour of work).</p>
<p>Any good team requires a diverse variety of personality types to be successful, and as much as I hate to admit it, that includes DTPs; as long as you keep them on a tight leash and keep them in your sight at all times. But they are hardly a divine gift to coding and saviors of the universe. And that’s true of all engineers, including the architectural astronauts and the design pattern frigtards: they are all necessary, as a category, but no individual category is indispensible in and of itself. The parts don’t work without the whole, just like in an engine. There are no spare parts in an engine: you need all of them to run. And it’s hard to say which of those parts is the most crucial, since losing any one of them will cause the engine to stop running.</p>
<p>And that’s really the biggest beef I have with Joel’s post. It’s not what he says, but the unequivocal way he says it. Any time someone claims to have a Swiss Army knife solution to every possible situation, you should be very skeptical, because the reality just is not that simple. Shipping is obviously a necessary feature for an application. But it’s not enough to just ship any old garbage out the door; it has to be scalable, maintainable, and relatively defect-free as well. If a couple features have to be postponed until a later release because they just don’t work well, then so be it. This can and does happen all the time. Sure, the client tends to be a little peeved, but if you’ve ever been in the alternative situation, you know it’s far preferable.</p>
<p>Because the alternative is that you ship on time with every feature, but full of bugs. Which is fine until a VP from the client calls your boss at 3 AM from the east coast and chews his ass for an hour because he found a glaring, gnarly defect in a core feature that any retard could have caught before it even went to QA, but somehow this bug made it through development, QA and UAT, completely intact, and into production. What usually follows is a round of additional, high-level ass-chewings behind closed doors, eventually culminating in an all-nighter or two for one or more members of the development team, and finally grim debates about how much of the emergency work the client will pay for, if any, and how much is covered in the SLA, which means your company has to swallow it. Whoops. There go the margins. Maybe we’ll make a profit on the next project. And the potential damage to your reputation is even worse. Often, business relationships end permanently over these sorts of mishaps. I&#8217;ve seen it happen.</p>
<p>The myth of the DTP occurs frequently on software projects. It&#8217;s a common response to the unique pressure software teams are constantly under to deliver working products in complex circumstances. Despite the fact that tools like OOP, Agile, design patterns and TDD were all created to address these very circumstances, one symptom of this response is to blame the toolkit. The reasoning seems to be that, under tight deadline pressure, there isn&#8217;t time for high-falutin&#8217; distractions like… engineering. Engineering is just another obstacle to kicking the app out the door. Just bang it out and launch it, already, for fuck&#8217;s sake. It&#8217;s sort of like having to build an airplane in 3 months from scratch and deciding that, under the circumstances, aeronautic engineering is just too much of a distraction to employ for the task, despite it being your best hope of accomplishing your goal, so instead you&#8217;ll use duct tape. I don&#8217;t know about you, but I wouldn&#8217;t fly in that plane if you paid me. I&#8217;ll take the titanium frigtard version, thank you, even if I have to wait an extra month or two to get it.</p>
<p>Let&#8217;s examine Joel&#8217;s version of this argument, how he puts it together, and why I think it&#8217;s wrong.</p>
<p><strong>A straw man: frigtard engineering</strong></p>
<p>Joel&#8217;s argument starts by positing a straw man: frigtard engineering. He cobbles this fallacy together out of various other fallacies: appeals to ridicule, emotion, tradition and popularity with a sprinkling of ad hominem on top to seal the deal. The net result is the conjuring of a figure we&#8217;ve all run into, and some of us may have even embodied at some point: the enthusiastic architectural tinkerer prone to gold plating every line of code that crosses her path. Like the hacker, this is simply in her blood, and like both the junior and senior DTPs you have to keep an eye on her, because she is prone to re-writing other people&#8217;s code without asking, and given half a chance will apply the Midas touch to every bit in your application that isn&#8217;t nailed down. She will often strike up random, half-hour-long architectural conversations that she will largely dominate and from which it is impossible to extract yourself from in a socially acceptable manner. In fact, she can&#8217;t extract herself. You can tell that she knows she&#8217;s been prattling on for too long, and may even make self-deprecatory statements to that effect, but she just can&#8217;t stop. Eventually you have to take charge and save the both of you and just say, &#8220;Cool. Well, back to work…&#8221; with a well-timed raising of the eyebrows while making full eye contact. Ordinarily she will be just as grateful for this bit of salvation as your immediate cubicle neighbors or office mates who have to listen in on the whole thing.</p>
<p>However, like the hacker and unlike the junior DTP, this person is usually completely devoid of rancor or negativity. She&#8217;ll be happy if you just indulge her for a few minutes, and she&#8217;s probably one of the nicest people you&#8217;ve ever met. She&#8217;s certainly no frigtard; she&#8217;s just enthusiastic about what she does. And while a lot of the things she ruminates about might end up in the garbage, she will often come up with innovative solutions in a pinch that save the day and would never occur to a DTP, and in fact would not even be possible with a duct tape programming approach. In a rush, she&#8217;s cognizant enough of her own penchant for over engineering and will modify her coding style accordingly, so she&#8217;s no real threat to shipping a product on time. But she&#8217;s also capable of thinking in the long term, and doesn&#8217;t think that reusable code and shipping code are, or ought to be, mutually exclusive, and she&#8217;s correct of course.</p>
<p>You need at least one of her on your team, because without her, your codebase very well might devolve into a morass of spaghetti. She&#8217;s one of the few people on your team with the vision to imagine how your product will evolve through its full life cycle and beyond. And when it comes to serious engineering problems, she&#8217;s the person you want at the helm. Let&#8217;s say you have to retrieve a single element from a collection with 3 million entries. The DTP will say, &#8220;Just iterate over an array. It&#8217;s easy. Der.&#8221; But our garrulous architect knows that searching through all 3 million records just to get to the one at the end is too slow and inefficient and will incur quite a lot of overhead on the server. Having memorized a text book on data algorithms, she will appropriately opt for a linked list or binary tree, and cut the maximum number of iterations down to something like 500. If you&#8217;ve read Joel&#8217;s post, I know, I know, he makes a specific example of a DTP using a linked list, but he&#8217;s talking about C++ DTPs and I&#8217;m talking about ActionScript DTPs, who generally don&#8217;t know what linked lists are. Anyway, you get the point.</p>
<p>But to the DTP and his worshippers, she&#8217;s just a dorky frigtard. Having successfully conjured a personality most developers are familiar with, he proceeds to set it up as the foundation for the real straw man: not the frigtard engineer herself, but frigtard engineering. The convenient thing about straw men is that once you&#8217;ve set them up in the background—sort of like a semantic scarecrow to reason—you can proceed to make all sorts of other generalizations based solely on the implication of the scarecrow&#8217;s existence. You never have to reference the straw man directly once its established and accepted. And the first generalization he makes essentially throws the baby out with the bath water. Because apparently, frigtard engineering includes any methodology that should qualify simply as engineering.</p>
<p>From there, he goes on to invoke a number of false dilemmas that usually go along with this myth cluster. It&#8217;s often referred to as the &#8220;build it ugly&#8221; philosophy. This dichotomy of opinion seems so to be as old as software engineering itself. It&#8217;s embodied particularly well in the differences between how Apple and Microsoft release products. Both companies release product on a relatively stable schedule. Both companies are successful at shipping and selling a lot of product. But whereas Microsoft has to chuck out every other operating system it releases and start over from scratch, Apple consistently releases robust operating systems that build on previous accomplishments. And while Microsoft still has more market share, even diehard PC users would be hard pressed to say that Microsoft produces a higher quality product than Apple. Why? Because Apple polishes its code to perfection before releasing it, instead of &#8220;building it ugly&#8221;. And they build their code to last. Objective-C has been the underlying language for mac development for a quarter of a century. Yet they don&#8217;t seem to be plagued with the perennial delays that Microsoft suffers. So much for building ugly.</p>
<p>An ugly build is just that: it&#8217;s ugly. Eventually, it will either have to be completely chucked out and re-written from scratch or tolerated and become an endless patching nightmare. Understand also that &#8220;building it ugly&#8221; isn&#8217;t the same as something like TDD. Refactoring will always be a fact of life for developers; it&#8217;s just not possible to put out a perfectly optimal app with the first release on most projects. There isn&#8217;t enough time, and hey, developers are human. Sometimes the optimal solution doesn&#8217;t occur to you until your baby is released into the wild and you see how it really interacts with the environment. But refactoring stable code to a more optimal pattern is different from just cranking out some crap and dumping it on your users, then rebuilding entire portions of it from scratch because they are so buggy or poorly performing that half of your user base commits ritual suicide after using your product for the first time.</p>
<p>Yet the build it ugly myth persists. Like DTP code thats gets grandfathered into an app because the feature it touches is too sensitive in production even to risk a refactor—or a cockroach—it just won&#8217;t die, no matter how many times you stomp on it. Here are the false dilemmas that it consists of, both in Joel&#8217;s post and in the world at large:</p>
<p><strong>False dilemma 1: quality versus timeliness</strong></p>
<p>This dilemma is pretty much the crux of the build it ugly ethos, and hence receives the lengthiest attention in this article. The argument goes something like this:</p>
<p><em>Premise 1: Ensuring quality takes a long time.<br />
Premise 2: Being lazy does not take a long time.<br />
Premise 3: We don&#8217;t have very much time, and we&#8217;re good at being lazy.</em></p>
<p><em>Conclusion: Therefore, we have to sacrifice quality to release on time.</em></p>
<p>To be valid, a deductive argument&#8217;s conclusion must be necessitated by its premises. In other words, its conclusion must follow from the premises. If any other conclusions are possible, or the premises can be proven to be incorrect, it can be said to be invalid. If premise 3 were able to stand on its own, the argument might be valid, but it&#8217;s purely a derivative from the first two premises, both of which can be demonstrated to be incorrect.</p>
<p>The first premise is wrong for a couple of reasons. First of all, to reiterate this point once again, all of the methodologies attributed to frigtard engineering were created with the intention of improving productivity in the first place, not impeding it with unnecessary structure. TDD, for instance, while reviled in Joel&#8217;s article, is specifically structured to produce the simplest solution in the briefest period of time possible. The solution of the design is then evolved in future iterations of the code. Design patterns are intended to solve known issues with a known solution, rather than requiring the engineer to reinvent the wheel every time he encounters the same problem. It&#8217;s true that the first time you use any of these methodologies there is a little bit of additional ramp up time, just as there is when learning any new technical skill or process. However, once you know the methodology and are in the habit of using it, the initial ramp up more than pays for itself in the time saved performing quotidian tasks.</p>
<p>I have often also heard the argument that using these methodologies doesn&#8217;t make sense with regard to a particular project because its lifecycle is only intended to be a year or so. I call this the lifecycle fallacy. This isn&#8217;t really an honest argument. For starters, modern coding practices are designed to scale to whatever size the developer requires. There isn&#8217;t any particular penalty incurred on a small application for using them, and their benefit doesn&#8217;t fail to kick in until some particular economy of scale has been reached. Secondly, even these short-lived and small projects occasionally need updates, whether that be in the form of changes, bug-fixes, repurposing, porting to a new platform or so on. And even when the latter is not the case, small projects, because they are less complex, are more likely than large projects to benefit from code reuse, because they are more likely to resemble, in whole or in part, applications that have already been written. Also, while one or two small applications written in a duct tape fashion might not be that difficult to manage, if you work in an environment where dozens or hundreds of small applications need to be managed, lack of standards, best practices and reuse can be a particularly large pain in the ass. Having worked at an ad agency, I have experienced just this situation firsthand. A corollary to this argument is that with such small applications, it&#8217;s just too expensive to employ all of these fancy techniques. This too is fallacious. When you have to spend 4 or 5 hours familiarizing yourself with some spaghetti code to do something that should take half an hour, I fail to see how this is more cost effective.</p>
<p>The second premise is also wrong. To demonstrate why, I&#8217;d like to invoke an analogy I call the &#8220;reverse snowball effect&#8221;. This analogy also reinforces my position on the first premise. When you start a project, being lazy—i.e. building it ugly, or duct tape programming—is indeed very easy, and yields quick returns. As the project progresses however, the application becomes more and more Byzantine and you start to experience exponential slowdowns in productivity. Eventually it gets to the point where the codebase is so fragile that it isn&#8217;t feasible to introduce even basic features without a substantial investment of new time. At this point, old bugs often reappear and/or new bugs are introduced into the system very easily when a new feature is added. Instead of gathering speed as it increases in size, like the proverbial snowball, your project gets slower and slower as it gets bogged down with the unnecessary complexity created by all of that spaghetti code. A well-managed project, on the other hand, starts slow, but picks up steam as more and more mundane tasks are encapsulated in a fashion that allows developers to focus on developing new features. New modules are easily added with a little bit of cut-and-paste. So, ultimately, laziness does take its toll, while quality pays increasing dividends over time.</p>
<p><strong>False dilemma 2: quality versus elegance</strong></p>
<p>Another argument levied against modern coding practices is that they are gold-plated. Sure, you could use MVC to separate your data and logic from your view, but why do that when you can just munge it all together into a single, 10,000-line class? Isn&#8217;t a single class more minimal, more elegant? The short answer is no. There are certainly several trade-offs invoked when using best practices to create quality code. For instance, while design patterns solve known problems with known solutions, they also require your team to be fluent in which design patterns are appropriate to which situation, how they work, et cetera. Likewise, a highly structured OOD that is broken up into 10 classes instead of one giant class will require your developer to potentially be familiar with all of those classes and their relationships to one another. There is a point when OOP can become overkill. There are some OOP fanatics who believe in one line methods. I think most developers, DTPs and the rest of us, would agree that is overkill.</p>
<p>However, fewer classes does not automagically equal elegance, simplicity or ease of use. Sifting through a 10,000-line document to find the one method you need to modify isn&#8217;t the most developer-friendly process. On the other hand, if naming conventions are well-utilized in your 10-class design, and a developer knows she needs to modify, say, the text formatting logic in the view where new bands are listed, then she can easily hone in on the code she needs by browsing the codebase. &#8220;Oh look, there&#8217;s a NewBandListView with a method called formatViewText(). Guess that&#8217;s what I&#8217;m looking for.&#8221; She doesn&#8217;t even need to know who calls the method; she&#8217;ll probably want to check just to be safe, but she can be relatively confident that she&#8217;s in the right place. Compare this to CTRL-K&#8217;ing through the call stack in your 10,000-line mega class written by a former Perl slinger to find the right code, because the code is so confusing and the class is so lengthy you don&#8217;t even know where to begin. &#8220;Let&#8217;s see, init() calls doOtherStuff(), which calls formatUpdate(), which calls newBand(), which is also called in like seven other places embedded in massive nested conditional logic statement. Hm. I guess that&#8217;s what I want, but I&#8217;m not really too sure. Fuuuuuuuck.&#8221; Both approaches require implicit knowledge. One kind of implicit knowledge can be learned by any developer with a quick web search or reading a couple of pages in a programming manual. The other kind can only be found in the head of a single crack-smoking DTP who is probably too busy or too smug to give you the time of day.</p>
<p><strong>False dilemma 3: quality versus function</strong></p>
<p>Another fallacy leveled at quality coding is that, &#8220;Hey man, it just needs to, like, fucking woooork, okay? The user doesn&#8217;t care if I use design pattern X or not.&#8221; That&#8217;s true: your users don&#8217;t give a tenth of a damn whether or not you used some technique or other to write the application they&#8217;re interacting with, just that it does what they expect it to, reliably. However, it has been my experience that duct tape applications are much more prone to defects and slow performance. And that&#8217;s something users definitely do care about. And while they may not care whether you use a specific technique, they probably would like to know that the product they are using is well-built and reliable. This is true of any product, digital or not. For instance, when someone buys a dresser, they probably don&#8217;t care whether the carpenter used a biscuit joint or a miter joint. But they know poor quality when they see it. &#8220;Damn, these drawers are just banged together with finishing nails. They didn&#8217;t even use any glue!&#8221; Of course, the inner workings of your application aren&#8217;t exposed to your user the way they are with physical products. That is, until it doesn&#8217;t do something they expect or crashes the browser because of a defect or poor optimization. Once again, applications are not written for computers. Computers just run whatever set of instructions they are given, even if the instructions are flawed. Applications are written for humans: developers and users. And while a banged-together application might function, writing it in that fashion is essentially like shitting in your co-workers&#8217; (and your users&#8217; and client&#8217;s) corn flakes.</p>
<p><strong>False dilemma 4: testability versus function</strong></p>
<p>Another false dilemma, which is sort of a corollary to the last one, is that gee, testable applications sure are nice, but it just doesn&#8217;t matter as long as it functions. Again, that&#8217;s true, but writing testable applications helps your team deliver quality products.</p>
<p><strong>False dilemma 5: maintainability versus function</strong></p>
<p>The last false dichotomy is between maintainability and function. This is another corollary to the third false dilemma. Writing code that is easy to maintain means that your co-workers can quickly address defects and changes, and spend the time saved writing new applications and features.</p>
<p><strong>Spock versus duct tape</strong></p>
<p>In the final analysis, the choice presented by Joel Spolsky and the advocates of Duct Tape Programming is between Spock and the rest of us. As is usually the case with reality, in actuality there is a spectrum of choices between those two poles. Yes, the Spock option is always available, and in some situations it is appropriate. But design patterns and TDD—or anything even slightly complicated—hardly constitute rocket science or brain surgery for a talented developer. I would agree with Uncle Bob:</p>
<p>&#8220;I found myself annoyed at Joel’s notion that most programmers aren’t smart enough to use templates, design patterns, multi-threading, COM, etc. I don’t think that’s the case. I think that any programmer that’s not smart enough to use tools like that is probably not smart enough to be a programmer period.&#8221;</p>
<p>These sorts of concepts are just part of being a developer. If you don&#8217;t want to learn them, then pick another career. It&#8217;s that simple.</p>
<p>I would also agree with Uncle Bob that the specific suggestion in the Spolsky article can be ignored, but that the spirit of simplicity should be embraced. But again, that doesn&#8217;t mean hacking together a piece of crap. Simple and intelligent are not mutually exclusive categories. And simple means as simple as possible; sometimes abstraction is called for and simplicity is defined in the context of multiple requirements.</p>
<p><strong>Duct-tape programmers: smart or not? … or: Duct-tape programming: hard or not?</strong></p>
<p>Ultimately the Joel on Software post on DTPs is confusing. He starts off singing the praises of DTPs as down-to-earth, no-nonsense guys, not too brainy—the sort of guys you might go on a pub-crawl with, but would never expect to hold their own in a conversation comparing the existentialism of Sartre to that of Kierkegaard—sort of a geek version of frat boys. And he specifically opposes them to frigtard engineering and Spock. But he ends the article by positing them as some sort of genius supermen:</p>
<p>&#8220;Duct tape programmers have to have a lot of talent to pull off this shtick. They have to be good enough programmers to ship code, and we’ll forgive them if they never write a unit test, or if they xor the “next” and “prev” pointers of their linked list into a single DWORD to save 32 bits, because they’re pretty enough, and smart enough, to pull it off.&#8221;</p>
<p>Wait a minute? A linked list? Doesn&#8217;t that qualify as more than slightly complicated? And isn&#8217;t xor&#8217;ing pointers into a single DWORD kind of frigtardish? So which is it? Are DTPs smart or aren&#8217;t they? Is duct tape programming hard or not? Maybe they&#8217;re smart enough to use Spock-frigtard-ineering, but they choose not to. They&#8217;re like the Autobots: they are powerful enough to destroy us, but instead use their power to protect us from evil. Those evil Decepticon engineers, meanwhile, led by the nefarious Frigtardotron, are plotting how they can bury us in unnecessary gold-plating and odious over-engineering. The rest of us are just helpless humans. Golly, I hope the Autobots save us.</p>
<p>Fuck the Autobots; we can save ourselves. I certainly won&#8217;t say that DTPs are unintelligent, although I think it&#8217;s difficult to argue intelligence from a position of being opposed to anything remotely complicated because, &#8220;It&#8217;s just too dang hard, man.&#8221;—a paraphrase of which I&#8217;ve heard actual DTPs actually utter. I will say that duct tape programming is not difficult. Anyone can do it. Most developers don&#8217;t choose a particular technique just because it&#8217;s cool or makes them feel brainy. They choose it for a reason. That reason usually has to do with scalability, or maintainability, or something else. Sometimes it&#8217;s not a good reason, which is why teams are important. A dirty little secret about coding is that it&#8217;s not that hard. Most of the people intelligent enough to work in a professional trade could probably do it if they set their minds to it. What redeems this dirty secret is that coding well—which we call programming, development or engineering—is hard.</p>
<p><strong>Programming iz hard</strong></p>
<p>Programming is hard. That&#8217;s why they pay us the big bucks. Why is it hard? To answer that, I&#8217;d like to address the meaning of a few words we tend to use synonymously but which, I think, have much more specific meanings in the real-world sense. Those words are: coder; programmer; and developer.</p>
<p>What is a coder? That word is fairly easy to define, I think. Without looking it up, I would define a coder simply as one who codes. If you wanted to be a little more descriptive, you could say a coder is someone who authors code in a particular programming language, but that&#8217;s about as complicated as it needs to be. More or less anyone can be a coder if they choose to. A high degree of competence isn&#8217;t necessarily required beyond basic syntax. This is the category I would put DTPs in whether out of inherent talent or due to a conscious choice. The only thing that differentiates them a little from a coder is that they are a little more clever; they know some cute tricks.</p>
<p>Up next is programmer. Programmer is a little more complicated. I would say a programmer is someone who authors software applications that run on a particular platform by authoring code in a particular programming language or languages. Notice that the concept of a programmer is a superset of the concept of a coder. It is implied that a programmer codes, and a certain degree of competence is also implied.</p>
<p>What is a developer then? I was asked this question recently in an interview, and it put me off a little. I&#8217;ve never been asked that, and I was hard-pressed to define it briefly, because I don&#8217;t think it can be. To define what it means to be a developer requires paragraphs or pages, I think, regardless of what the dictionary definition is. Being a developer is comprised of everything in this article, for a start, and much more besides. For instance, knowing how to code isn&#8217;t going to help you when you have a shotgun deadline and you have to deal with a senior DTP who refuses to go along with the team because he&#8217;s butt-hurt that he isn&#8217;t the lead developer, even though he was hired explicitly as an extra set of hands, albeit a senior one. That&#8217;s something that can&#8217;t even be taught; it has to be learned on the job. Being a developer is a complex daily balancing act that requires you to continually make, evaluate and re-make hundreds of little decisions based on multiple variables. Some of those variables are fixed; some of them change several times in the course of the project, only to end up where they started. That constant state of flux is what most of us both love and hate about the job.</p>
<p>So if you want a coder, follow Joel&#8217;s advice and take it to heart. If you are looking for a developer, ignore it. And if you absolutely, positively have to oversimplify things, or simply can&#8217;t afford many resources, I &#8216;d wager good money on a hacker and an architectural astronaut against a pair of DTPs any day.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ssedlmayr.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ssedlmayr.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ssedlmayr.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ssedlmayr.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ssedlmayr.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ssedlmayr.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ssedlmayr.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ssedlmayr.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ssedlmayr.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ssedlmayr.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ssedlmayr.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ssedlmayr.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ssedlmayr.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ssedlmayr.wordpress.com/9/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ssedlmayr.wordpress.com&amp;blog=10089208&amp;post=9&amp;subd=ssedlmayr&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ssedlmayr.wordpress.com/2009/11/11/duct-tape-programming-sucks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7fac3e8b7cb80686e1f49d969b36679a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ssedlmayr</media:title>
		</media:content>
	</item>
		<item>
		<title>Inaugural post</title>
		<link>http://ssedlmayr.wordpress.com/2009/10/24/hello-world/</link>
		<comments>http://ssedlmayr.wordpress.com/2009/10/24/hello-world/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 06:09:58 +0000</pubDate>
		<dc:creator>ssedlmayr</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[This is my first blog post&#8230; well, not my very first, as I briefly shared a blog with my girlfriend, but my first ever solo post. Guess you can&#8217;t say I&#8217;m an early adopter. I&#8217;ve started this blog primarily as a repository for things I&#8217;ve learned, am learning and will learn as a Flash Platform [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ssedlmayr.wordpress.com&amp;blog=10089208&amp;post=1&amp;subd=ssedlmayr&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This is my first blog post&#8230; well, not my very first, as I briefly shared a blog with my girlfriend, but my first ever solo post. Guess you can&#8217;t say I&#8217;m an early adopter. I&#8217;ve started this blog primarily as a repository for things I&#8217;ve learned, am learning and will learn as a Flash Platform UI developer. I&#8217;m interested in iPhone development, so if I ever get around to actually doing something on that platform, I&#8217;ll share that as well, and anything else remotely geeky in nature.</p>
<p>A point of clarification regarding the title of the blog: it is entirely for comic effect. For instance, I am not Bavarian, although my name is. The &#8216;cream&#8217; comes from a saying I made up at a previous job: &#8220;That code is creamy,&#8221; meaning: &#8220;That&#8217;s some smooth code. It works the way it&#8217;s supposed to, is well encapsulated, easy to extend, and low on defects. Delicous. Goes down easy.&#8221; Hence, Bavarian Cream. Even though I&#8217;m not Bavarian. I am proud that although I don&#8217;t know any of my German relatives, which surely I must have, but from whom I am entirely estranged like a typical US native, the Sedlmayr family is a significant part of the operation of Spaten Brau, one of the finest German beers I know (Spaten Oktoberfest is the official beer of the actual Oktoberfest in Munich, and the first beer tapped to open the event), and for a time in the 17th century, even owned it.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ssedlmayr.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ssedlmayr.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ssedlmayr.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ssedlmayr.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ssedlmayr.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ssedlmayr.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ssedlmayr.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ssedlmayr.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ssedlmayr.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ssedlmayr.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ssedlmayr.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ssedlmayr.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ssedlmayr.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ssedlmayr.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ssedlmayr.wordpress.com&amp;blog=10089208&amp;post=1&amp;subd=ssedlmayr&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ssedlmayr.wordpress.com/2009/10/24/hello-world/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7fac3e8b7cb80686e1f49d969b36679a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ssedlmayr</media:title>
		</media:content>
	</item>
		<item>
		<title>Up next</title>
		<link>http://ssedlmayr.wordpress.com/2009/10/24/up-next/</link>
		<comments>http://ssedlmayr.wordpress.com/2009/10/24/up-next/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 07:22:23 +0000</pubDate>
		<dc:creator>ssedlmayr</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ssedlmayr.wordpress.com/?p=6</guid>
		<description><![CDATA[I plan to post something here about recent experience with Ant builds in Flex Builder 3, including using the script engine and the javac task to compile custom Java classes that perform additional tasks for your build.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ssedlmayr.wordpress.com&amp;blog=10089208&amp;post=6&amp;subd=ssedlmayr&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I plan to post something here about recent experience with Ant builds in Flex Builder 3, including using the script engine and the javac task to compile custom Java classes that perform additional tasks for your build.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ssedlmayr.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ssedlmayr.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ssedlmayr.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ssedlmayr.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ssedlmayr.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ssedlmayr.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ssedlmayr.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ssedlmayr.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ssedlmayr.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ssedlmayr.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ssedlmayr.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ssedlmayr.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ssedlmayr.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ssedlmayr.wordpress.com/6/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ssedlmayr.wordpress.com&amp;blog=10089208&amp;post=6&amp;subd=ssedlmayr&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ssedlmayr.wordpress.com/2009/10/24/up-next/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7fac3e8b7cb80686e1f49d969b36679a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ssedlmayr</media:title>
		</media:content>
	</item>
	</channel>
</rss>
