<?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>Eric Wendelin's Blog &#187; Opinion</title>
	<atom:link href="http://eriwen.com/category/opinion/feed/" rel="self" type="application/rss+xml" />
	<link>http://eriwen.com</link>
	<description>Programming productively with open-source tools</description>
	<lastBuildDate>Tue, 13 Jul 2010 13:14:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Why I&#8217;m moving my projects to GitHub</title>
		<link>http://eriwen.com/tools/moving-to-github/</link>
		<comments>http://eriwen.com/tools/moving-to-github/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 11:00:19 +0000</pubDate>
		<dc:creator>Eric Wendelin</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://eriwen.com/?p=1069</guid>
		<description><![CDATA[<img src="http://eriwen.com/images/github-logo.png" alt="GitHub logo" style="float: left; margin: 0 4px 4px 0;"/>With the announcement of the <a href="http://blogs.sun.com/projectkenai/entry/the_future_of_kenai_com">closure of kenai.com</a>, I've decided to move my open-source projects to <a href="http://github.com" title="Social coding">GitHub</a>.

<blockquote>It's with a sad heart that we have to announce that the Kenai.com domain will be shutdown as part of the consolidation of project hosting sites now that Sun is a wholly owned subsidiary of Oracle.</blockquote>

This is sad because I thought Kenai had some really killer features like excellent JIRA and NetBeans integration. Nevertheless, it's not up to me to decide. 

<h2>Software is only as good as it's community</h2>
A great project cannot thrive without people to improve and maintain it. The reason I am choosing GitHub is the number of people (especially friends) already on it. The is it's main advantage over something like <a href="http://bitbucket.org/">bitbucket</a>. Git, in my opinion, has great momentum in the OSS community and is roughly equivalent to mercurial in functionality (with a few differences, obviously). Both <acronym title="Distributed Version Control Systems">DVCS</acronym> are far superior to their non-distributed counterparts. To sum up the biggest benefit in a phrase: "Local commits FTW!" 

Moving to GitHub has <em>already paid off</em> because my recent <a href="http://github.com/emwendelin/javascript-stacktrace" title="Micro-library for getting stack traces in all web browsers">javascript-stacktrace project</a> already has over 50 watchers and a couple forks. 


Related posts:<ol><li><a href='http://eriwen.com/groovy/introducing-groovyrtm/' rel='bookmark' title='Permanent Link: Introducing GroovyRTM: A Groovier way to Remember The Milk'>Introducing GroovyRTM: A Groovier way to Remember The Milk</a></li>
<li><a href='http://eriwen.com/opinion/follow-up-why-programmers-should-twitter/' rel='bookmark' title='Permanent Link: Follow-up: Why programmers should twitter'>Follow-up: Why programmers should twitter</a></li>
<li><a href='http://eriwen.com/interview/andres-almiray/' rel='bookmark' title='Permanent Link: Interview with Andres Almiray'>Interview with Andres Almiray</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img src="http://eriwen.com/images/github-logo.png" alt="GitHub logo" style="float: left; margin: 0 4px 4px 0;"/>With the announcement of the <a href="http://blogs.sun.com/projectkenai/entry/the_future_of_kenai_com">closure of kenai.com</a>, I&#8217;ve decided to move my open-source projects to <a href="http://github.com" title="Social coding">GitHub</a>.</p>
<blockquote><p>It&#8217;s with a sad heart that we have to announce that the Kenai.com domain will be shutdown as part of the consolidation of project hosting sites now that Sun is a wholly owned subsidiary of Oracle.</p></blockquote>
<p>This is sad because I thought Kenai had some really killer features like excellent JIRA and NetBeans integration. Nevertheless, it&#8217;s not up to me to decide. </p>
<h2>Software is only as good as it&#8217;s community</h2>
<p>A great project cannot thrive without people to improve and maintain it. The reason I am choosing GitHub is the number of people (especially friends) already on it. The is it&#8217;s main advantage over something like <a href="http://bitbucket.org/">bitbucket</a>. Git, in my opinion, has great momentum in the OSS community and is roughly equivalent to mercurial in functionality (with a few differences, obviously). Both <acronym title="Distributed Version Control Systems">DVCS</acronym> are far superior to their non-distributed counterparts. To sum up the biggest benefit in a phrase: &#8220;Local commits FTW!&#8221; </p>
<p>Moving to GitHub has <em>already paid off</em> because my recent <a href="http://github.com/emwendelin/javascript-stacktrace" title="Micro-library for getting stack traces in all web browsers">javascript-stacktrace project</a> already has over 50 watchers and a couple forks. </p>
<h2>Follow me</h2>
<p>You should <a href="http://github.com/emwendelin">follow me on GitHub</a> if you are interested in any of my projects, or if you think I might be interested in yours. Only good can come from reaching out. I look forward to seeing your <acronym title="Open Source Software">OSS</acronym> projects. </p>
<p>New links for my other projects (update your bookmarks or whatever):</p>
<ul>
<li><a href="http://github.com/emwendelin/cheqlist" title="JavaFX desktop application for Remember The Milk">Cheqlist</a> &#8211; JavaFX desktop application for Remember The Milk</li>
<li><a href="http://github.com/emwendelin/groovyrtm" title="Groovy API for Remember The Milk">GroovyRTM</a> &#8211; Groovy API for Remember The Milk</li>
</ul>
<p>Agree about GitHub? Chime in on the &#8220;preferred version control system&#8221; poll and tell me if I&#8217;m full of crap in the comments.</p>


<p>Related posts:<ol><li><a href='http://eriwen.com/groovy/introducing-groovyrtm/' rel='bookmark' title='Permanent Link: Introducing GroovyRTM: A Groovier way to Remember The Milk'>Introducing GroovyRTM: A Groovier way to Remember The Milk</a></li>
<li><a href='http://eriwen.com/opinion/follow-up-why-programmers-should-twitter/' rel='bookmark' title='Permanent Link: Follow-up: Why programmers should twitter'>Follow-up: Why programmers should twitter</a></li>
<li><a href='http://eriwen.com/interview/andres-almiray/' rel='bookmark' title='Permanent Link: Interview with Andres Almiray'>Interview with Andres Almiray</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://eriwen.com/tools/moving-to-github/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Stupid productivity comparisons between Linux and Mac</title>
		<link>http://eriwen.com/productivity/compare-linux-and-mac/</link>
		<comments>http://eriwen.com/productivity/compare-linux-and-mac/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 11:00:13 +0000</pubDate>
		<dc:creator>Eric Wendelin</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://eriwen.com/?p=1000</guid>
		<description><![CDATA[If you've been <a href="http://twitter.com/eriwen" title="Eric Wendelin on Twitter">following me on twitter</a>, you've already been tipped off that I recently got an older MacBook Pro. Since it came with Mac OS installed, I decided I would give it a fair, 30-day trial before I move it to Linux. I'm about 3 weeks in, and I'm logging my thoughts publicly so you can hopefully see benefit.

<h2>What I'm NOT comparing</h2>
In a word: speed. This was a significant hardware upgrade from my last computer, so I'm not going to say anything how everything is so much faster, smoother blah blah because it would've been anyway and that's not useful to you or anyone. Also, virtualization: I know that I can get X or Y if I just use <a href="http://www.virtualbox.org/" title="Virtualization software">VirtualBox</a>. I'm going to ignore that here for simplicity. 

<h2>Tools</h2>
Before I make stupid lists, I should note that I was working on an Ubuntu Karmic Koala, so I had all of the pre-packaged nice-ities that come with that. 

Now, in no order whatsoever:
<ul style="margin-left: 2em;"><li><strong>Dock</strong> - Mac has a built-in dock, Linux has <a href="https://launchpad.net/awn" title="Avant Window Navigator">AWN</a> and <a href="http://do.davebsd.com/wiki/index.php?title=Docky">Gnome-Do Docky</a>. IMO, <em>Linux wins barely</em> because you have more options for customization.</li>
<li><strong>Terminal</strong> - Both systems have a built-in terminal. I'm a <abbr title="Bourne Again SHell">bash</abbr> user and that came with both. One part where <em>Linux shines</em> is that a lot more tools build themselves to be launched by the Terminal <em>by default</em>. For example, try typing "which firefox" in the Mac terminal. Nope.</li></ul>


Related posts:<ol><li><a href='http://eriwen.com/linux/easy-ways-try-linux/' rel='bookmark' title='Permanent Link: Mindlessly easy ways try out Linux or Solaris'>Mindlessly easy ways try out Linux or Solaris</a></li>
<li><a href='http://eriwen.com/firefox/firefox-add-ons-for-productivity/' rel='bookmark' title='Permanent Link: Firefox add-ons for productivity'>Firefox add-ons for productivity</a></li>
<li><a href='http://eriwen.com/firefox/my-firefox-setup/' rel='bookmark' title='Permanent Link: 8 steps to my personal Firefox setup for productivity'>8 steps to my personal Firefox setup for productivity</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;ve been <a href="http://twitter.com/eriwen" title="Eric Wendelin on Twitter">following me on twitter</a>, you&#8217;ve already been tipped off that I recently got an older MacBook Pro. Since it came with Mac OS installed, I decided I would give it a fair, 30-day trial before I move it to Linux. I&#8217;m about 3 weeks in, and I&#8217;m logging my thoughts publicly so you can hopefully see benefit.</p>
<h2>What I&#8217;m NOT comparing</h2>
<p>In a word: speed. This was a significant hardware upgrade from my last computer, so I&#8217;m not going to say anything how everything is so much faster, smoother blah blah because it would&#8217;ve been anyway and that&#8217;s not useful to you or anyone. Also, virtualization: I know that I can get X or Y if I just use <a href="http://www.virtualbox.org/" title="Virtualization software">VirtualBox</a>. I&#8217;m going to ignore that here for simplicity. </p>
<h2>Tools</h2>
<p>Before I make stupid lists, I should note that I was working on an Ubuntu Karmic Koala, so I had all of the pre-packaged nice-ities that come with that. </p>
<p>Now, in no order whatsoever:</p>
<ul style="margin-left: 2em;">
<li><strong>Dock</strong> &#8211; Mac has a built-in dock, Linux has <a href="https://launchpad.net/awn" title="Avant Window Navigator">AWN</a> and <a href="http://do.davebsd.com/wiki/index.php?title=Docky">Gnome-Do Docky</a>. IMO, <em>Linux wins</em> because you have more options for customization.</li>
<li><strong>Terminal</strong> &#8211; Both systems have a built-in terminal. I&#8217;m a <abbr title="Bourne Again SHell">bash</abbr> user and that came with both. One part where <em>Linux shines</em> is that a lot more tools build themselves to be launched by the Terminal <em>by default</em>. <span style="text-decoration: line-through;">For example, try typing &#8220;which firefox&#8221; in the Mac terminal. Nope.</span> On Mac, you can use &#8220;open -a [application]&#8221; to do this. I&#8217;ll reluctantly say <em>tie</em> here then ;)</li>
<li><strong>Browsers</strong> &#8211; Oh sweet! I can get Safari on a Mac without any hacks. Don&#8217;t care. Long as you have <a href="http://www.google.com/chrome" title="Google Chrome web browser">Google Chrome</a> you basically have Safari with a faster Javascript engine as far as I&#8217;m concerned. <em>No winner</em></li>
<li><strong>Code editing</strong> &#8211; All the dev. tools I had in Linux, I still have on Mac. Same vim. Same <a href="http://netbeans.org">NetBeans</a> (well, as far as you care). Same IntelliJ. BUT&#8230; I now have access to <a href="http://macromates.com/" title="Mac text editor">TextMate</a> and <a href="http://www.panic.com/coda/">Coda</a>. So far I suck with both but a bunch of cool people say they rock so I&#8217;m going to <em>give Mac the win here</em>. Oh, and XCode tools which I&#8217;d need if I ever wanted to write an iPhone app. That, too.</li>
<li><strong>Window organization/effects</strong> &#8211; I&#8217;m a <a href="http://eriwen.com/productivity/multiple-desktops-to-get-things-done/">big fan of multiple desktops</a>. Both OSes have this, but I&#8217;d argue that <a href="http://www.compiz.org/">Compiz</a> on Linux has way more customization options. Both have cool the  exposé. On Mac, though, you can&#8217;t move windows between desktops with a keyboard shortcut (Are you kidding me? There has GOT to be a Mac tool that allows this). <em>Linux wins here</em>.</li>
<li><strong>Multiple monitor support</strong> &#8211; I&#8217;m breaking out the cliché phrase &#8220;It just works&#8221; here and I <em>bow humbly to Mac OS here</em>. No more messing with xorg.conf files or dealing with the crappy NVidia tools.</li>
<li><strong>Notifications</strong> &#8211; <em>Should die</em> anyway because they kill productivity, but if you care more stuff on Mac (that I&#8217;ve seen) integrates with <a href="http://growl.info/" title="Mac notifier utility">Growl</a> than those that integrate with libnotify on Linux. Whatever.</li>
<li><strong>App launching</strong> &#8211; <a href="http://do.davebsd.com/" title="Linux app launcher">Gnome-Do</a> is pretty much a really good rip-off of Mac&#8217;s <a href="http://www.macupdate.com/info.php/id/14831" title="Mac app launcher">Quicksilver</a>. <em>Love both.</em> To me they&#8217;re pretty much equivalent except that I&#8217;m seeing more plugins/customization options for Gnome-Do.</li>
<li><strong>Backups and scheduling</strong> &#8211; Both systems have <a href="http://eriwen.com/productivity/crontab-for-automation/">cron</a>, so that&#8217;s not an issue. Both integrate well with <a href="http://getdropbox.com" title="Online storage service">Dropbox</a> (&lt;3 that service). One thing <em>Mac has over Linux</em> here is built-in Time Machine. It integrates really well with my Time Capsule at home, and most of you (except <a href="http://css-tricks.com">Chris Coyier</a>, sorry dude that sucks) have shared good experiences with it. It does annoy me that I can&#8217;t configure when backups run, but I&#8217;m not going to whine until it bites me harder.</li>
<li><strong>Dashboard</strong> &#8211; Not much of a comparison, really. One thing Linux has that I can&#8217;t seem to find a good replacement for is <a href="http://conky.sourceforge.net/">conky</a>. Only sorta-not-really replacement is the Mac dashboard, which does look sweet granted.</li>
<li><strong>App updates</strong> &#8211; The Synaptic package manager pretty much kicks the crap out of all other app management systems. That said, I&#8217;ve found the Mac <a href="http://metaquark.de/appfresh/" title="Mac app updater">AppFresh</a> to be marginally useful for keeping stuff up-to-date. <em>Linux still wins here, though.</em></li>
<li><strong>Presentations</strong> &#8211; I didn&#8217;t buy Keynote, so I can&#8217;t compare it with Linux offerings. Only reason I put it here is that I <em>do</em> care about it and if anyone has any insights that&#8217;d rock.</li>
<li class="update"><strong>UPDATE: VPN</strong> &#8211; I forgot how cool the built-in VPN is on Macs. It is much more painful in Linux (in my experience) <em>Score +1 for Mac there</em>.</li>
</ul>
<p>I&#8217;m sure I forgot or don&#8217;t know about some tools. Leave a comment and I&#8217;ll answer.</p>
<h2>Keyboard shortcuts</h2>
<p>I&#8217;ll start by saying that switching to a mac keyboard still f***s me up often. I&#8217;ve installed <a href="http://doublecommand.sourceforge.net/">DoubleCommand</a> to help alleviate some of my problems, but this whole &#8220;Home not being start of line&#8221; stuff really messes with me. If someone could point me to a good guide on with keyboard shortcuts for editing (like selecting a single word) I&#8217;ll buy you a beer or something equivalent.</p>
<p>Other than my initial whining, most everything can be hooked to a keyboard action and I hardly have to touch my sweet multi-touch touchpad. I&#8217;d say Mac OS generally equivalent to Linux other than the whole can&#8217;t move windows to workspaces (seriously, WTF). <em>A beer if you can help me figure out how to do that, too.</em> On second thought, Linux wins because it does have a lot more places you can configure shortcuts (good), but they&#8217;re often duplicated and could be conflicting and confuing. Ok, on third thought nobody wins.</p>
<h2>Other random carp</h2>
<p>This multi-touch thingy is pretty sweet. I know Linux has some multi-touch libs but I haven&#8217;t tried them out. More on that later, but I&#8217;m <em>betting Mac wins</em>.</p>
<p>I know I omitted a lot of stuff. Probably because I don&#8217;t care about it, but maybe I do and I just didn&#8217;t think of it. This is my setup and won&#8217;t work for you. That said, advice welcome. :)</p>
<p>At this point, there are <strong>no winners, just differences</strong>. That&#8217;ll change once I feel like I&#8217;ve given Mac OS a fair shot. <strong>FWIW, this is good news for Linux</strong>. Even if I switch to Mac, right now I can&#8217;t find that much more sweetness here (unless I have to write iPhone apps). Good work Linux community, you&#8217;re getting there. Keep it up.</p>
<p>Oh, one more thing&#8230; I don&#8217;t normally do this, but this video was the best review of Mac OS &#8220;Snow Leopard&#8221; and probably the funniest thing I&#8217;ve seen in 2009. Enjoy!</p>
<p><object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/1W-ygu6_aDc&#038;hl=en_US&#038;fs=1&#038;"/><param name="allowFullScreen" value="true"/><param name="allowscriptaccess" value="always"/><embed src="http://www.youtube.com/v/1W-ygu6_aDc&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"/></object></p>


<p>Related posts:<ol><li><a href='http://eriwen.com/linux/easy-ways-try-linux/' rel='bookmark' title='Permanent Link: Mindlessly easy ways try out Linux or Solaris'>Mindlessly easy ways try out Linux or Solaris</a></li>
<li><a href='http://eriwen.com/firefox/firefox-add-ons-for-productivity/' rel='bookmark' title='Permanent Link: Firefox add-ons for productivity'>Firefox add-ons for productivity</a></li>
<li><a href='http://eriwen.com/firefox/my-firefox-setup/' rel='bookmark' title='Permanent Link: 8 steps to my personal Firefox setup for productivity'>8 steps to my personal Firefox setup for productivity</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://eriwen.com/productivity/compare-linux-and-mac/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Follow-up: Why programmers should twitter</title>
		<link>http://eriwen.com/opinion/follow-up-why-programmers-should-twitter/</link>
		<comments>http://eriwen.com/opinion/follow-up-why-programmers-should-twitter/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 11:00:37 +0000</pubDate>
		<dc:creator>Eric Wendelin</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://eriwen.com/?p=897</guid>
		<description><![CDATA[Last week, I wrote about <a href="http://eriwen.com/opinion/why-programmers-should-twitter/">why programmers should twitter</a>. My article met with heavy criticism at <a href="http://www.dzone.com/links/why_programmers_should_twitter.html">DZone</a>. Today, I intend to answer people's doubts and try to approach the subject from a slightly different angle.

<h2>Not just small talk</h2>
A lot of people seem to think that <a href="http://twitter.com">Twitter</a> is all about "sitting on patios" or "my MBP did these things", and that's understandable. There is a lot of generally useless stuff and <strong>a lot of people just use it for that</strong>. You don't have to. You don't have to follow anyone that only posts that and you certainly don't have to tweet that way. It is what you make of it.



Related posts:<ol><li><a href='http://eriwen.com/opinion/why-programmers-should-twitter/' rel='bookmark' title='Permanent Link: Why programmers should twitter'>Why programmers should twitter</a></li>
<li><a href='http://eriwen.com/groovy/groovy-shell-scripts/' rel='bookmark' title='Permanent Link: Get groovy for better shell scripts'>Get groovy for better shell scripts</a></li>
<li><a href='http://eriwen.com/opinion/resolutions-2009/' rel='bookmark' title='Permanent Link: A programmer&#8217;s 2009 resolutions'>A programmer&#8217;s 2009 resolutions</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Last week, I wrote about <a href="http://eriwen.com/opinion/why-programmers-should-twitter/">why programmers should twitter</a>. My article met with heavy criticism at <a href="http://www.dzone.com/links/why_programmers_should_twitter.html">DZone</a>. Today, I intend to answer people&#8217;s doubts and try to approach the subject from a slightly different angle.</p>
<h2>Not just small talk</h2>
<p>A lot of people seem to think that <a href="http://twitter.com">Twitter</a> is all about &#8220;sitting on patios&#8221; or &#8220;my MBP did these things&#8221;, and that&#8217;s understandable. There is a lot of generally useless stuff and a lot of people just use it for that. <strong>You don&#8217;t have to.</strong> You don&#8217;t have to follow anyone that only posts that and you certainly don&#8217;t have to tweet that way. It is what you make of it.</p>
<h2>Only one piece of the puzzle</h2>
<p>Twitter is great, but it&#8217;s not a good replacement for anything except for the questions you might have asked on IRC. You still should be subscribing and reading DZone and individual programming blogs. You still need to try to make it to your local programming group meetings. You will still need to check out Google Groups or random forums for some answers. If you do it right, though, you can enhance your experience by engaging others who <em>choose</em> to be in community with you.</p>
<div style="float:left;"><image src="http://eriwen.com/images/puzzle_piece.jpg" alt="Puzzle Piece" class="img-left" />
<div xmlns:cc="http://creativecommons.org/ns#" about="http://www.flickr.com/photos/walkn/3812703999/" style="font-size: 0.6em;"><a rel="cc:attributionURL" href="http://www.flickr.com/photos/walkn/">http://www.flickr.com/photos/walkn/</a> / <a rel="license" href="http://creativecommons.org/licenses/by/2.0/">CC BY 2.0</a></div>
</div>
<p>It requires extra effort on your part to sift through posts to find stuff you&#8217;re really interested in. I usually spend <strong>about 20 minutes a day</strong> reading and tweeting. This time doesn&#8217;t come from my work time, but my personal time at home or my lunch break. You might not have that kind of time. You may not have an iWhatever to check it while you&#8217;re waiting for your coffee to brew. Or maybe you just don&#8217;t like people and have no intention of interacting with anything without a screen.</p>
<h2>Don&#8217;t just consume, engage</h2>
<p>I find that a lot of programmers tweet about what they&#8217;re working on and give sneak peeks (because they want opinions) to twitter before any of their stuff hits the mainstream aggregators (<a href="http://dzone.com">DZone</a>, <a href="http://www.reddit.com/r/programming/">Proggit</a>, whatever). The big advantage here is that <strong>this is the point of &#8220;involvement&#8221;</strong>. You tend to play a more active role in the programming community when you have access to things in early stages. Furthermore, you open yourself up to more joint projects because you share a greater connection to mutual followers.</p>
<p><strong>I&#8217;m not saying that you can&#8217;t engage on DZone or whatever, but I am saying that it&#8217;s harder to do so.</strong> For me, all those &#8220;stupid fluff&#8221; tweets get me more in tune with a larger variety of programmers habits and abilities. </p>
<h2>Conclusion</h2>
<p>Obviously, <strong>Twitter is not for everyone.</strong> The bottom line is that <strong>you can&#8217;t knock Twitter until you&#8217;ve given it an honest try</strong>. Like a whole week, not just a skim through someone&#8217;s tweets. It&#8217;s not going to be what you expect but I think most of you can find a way to make it valuable. </p>
<h2>Now, a poll</h2>
<p>I&#8217;m introducing polls (requiring Javascript for you subscribers out there ;) to this blog, starting with &#8220;How useful is twitter to you as a programmer?&#8221;. I want you all to come vote and then comment on why you voted the way you did. <strong>Be specific</strong>, too. This is not going to be a flame war, and I reserve the right to re-word all mean-spirited comments to sound like toddler temper tantrums. </p>


<p>Related posts:<ol><li><a href='http://eriwen.com/opinion/why-programmers-should-twitter/' rel='bookmark' title='Permanent Link: Why programmers should twitter'>Why programmers should twitter</a></li>
<li><a href='http://eriwen.com/groovy/groovy-shell-scripts/' rel='bookmark' title='Permanent Link: Get groovy for better shell scripts'>Get groovy for better shell scripts</a></li>
<li><a href='http://eriwen.com/opinion/resolutions-2009/' rel='bookmark' title='Permanent Link: A programmer&#8217;s 2009 resolutions'>A programmer&#8217;s 2009 resolutions</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://eriwen.com/opinion/follow-up-why-programmers-should-twitter/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Why programmers should twitter</title>
		<link>http://eriwen.com/opinion/why-programmers-should-twitter/</link>
		<comments>http://eriwen.com/opinion/why-programmers-should-twitter/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 10:00:54 +0000</pubDate>
		<dc:creator>Eric Wendelin</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://eriwen.com/?p=883</guid>
		<description><![CDATA[I recently read a poll about why people use <a href="http://twitter.com">twitter</a>. It was very interesting seeing the reasons people gave and I'd like to share my thoughts on why you should, too.

You might be laughing to yourself if you already do tweet, but you'd be surprised at how many don't.

<h2>Network with other programmers</h2>
I've <a href="http://eriwen.com/opinion/key-to-programmer-success/">said before</a> that networking is one of the best things you can do for your career. Not only can networking help you find a job, but I've found that programmers are generally very helpful and accessible on twitter. <strong>Programmers love it when you ask about a project they are involved with.</strong> Call it an ego thing.

<img src="http://eriwen.com/images/twitterlogo.png" class="img-left" alt="Twitter Logo" />One other really cool networking use for twitter: <strong>having something to talk about</strong> when you meet at JUGs or conferences. A follow request is an instant icebreaker and gets the networking process started for you. 



Related posts:<ol><li><a href='http://eriwen.com/opinion/follow-up-why-programmers-should-twitter/' rel='bookmark' title='Permanent Link: Follow-up: Why programmers should twitter'>Follow-up: Why programmers should twitter</a></li>
<li><a href='http://eriwen.com/opinion/resolutions-2009/' rel='bookmark' title='Permanent Link: A programmer&#8217;s 2009 resolutions'>A programmer&#8217;s 2009 resolutions</a></li>
<li><a href='http://eriwen.com/java/take-advantage-of-javaone/' rel='bookmark' title='Permanent Link: 5 great ways to take advantage of JavaOne'>5 great ways to take advantage of JavaOne</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I recently read a poll about why people use <a href="http://twitter.com">twitter</a>. It was very interesting seeing the reasons people gave and I&#8217;d like to share my thoughts on why you should, too.</p>
<p>You might be laughing to yourself if you already do tweet, but you&#8217;d be surprised at how many don&#8217;t.</p>
<h2>Network with other programmers</h2>
<p>I&#8217;ve <a href="http://eriwen.com/opinion/key-to-programmer-success/">said before</a> that networking is one of the best things you can do for your career. Not only can networking help you find a job, but I&#8217;ve found that programmers are generally very helpful and accessible on twitter. <strong>Programmers love it when you ask about a project they are involved with.</strong> Call it an ego thing.</p>
<p><img src="http://eriwen.com/images/twitterlogo.png" class="img-left" alt="Twitter Logo" />One other really cool networking use for twitter: <strong>having something to talk about</strong> when you meet at JUGs or conferences. A follow request is an instant icebreaker and gets the networking process started for you. </p>
<h2>Keep up on trends</h2>
<p>You already know that software engineering is a constantly changing field. Twitter is a great way to learn <strong>how and when to branch out</strong> from your areas of focus. Even better, if you have a question about a new technology you can ask your posse without fear. </p>
<p>Be careful, though, there are a TON of cool things out there. Pursuing all of them is idiotic, you&#8217;ll just end up burning yourself out. Trust me ;) </p>
<h2>Promote yourself</h2>
<p>Networking in today&#8217;s world seems to be just as much about <strong>building your personal brand</strong> as meeting others. Hiring managers love to find passionate and honest programmers. There is little better proof than tweets that show you&#8217;re thinking in the programming world (the best proof, though, is open-source code IMO). </p>
<p>Why do you use twitter? Share with a comment or a tweet!</p>
<p><strong>WARNING! Shameless plug:</strong> Don&#8217;t forget to <a href="http://twitter.com/eriwen">follow me on twitter</a>. If you show passion for programming, it&#8217;s likely I&#8217;ll follow you back :)</p>


<p>Related posts:<ol><li><a href='http://eriwen.com/opinion/follow-up-why-programmers-should-twitter/' rel='bookmark' title='Permanent Link: Follow-up: Why programmers should twitter'>Follow-up: Why programmers should twitter</a></li>
<li><a href='http://eriwen.com/opinion/resolutions-2009/' rel='bookmark' title='Permanent Link: A programmer&#8217;s 2009 resolutions'>A programmer&#8217;s 2009 resolutions</a></li>
<li><a href='http://eriwen.com/java/take-advantage-of-javaone/' rel='bookmark' title='Permanent Link: 5 great ways to take advantage of JavaOne'>5 great ways to take advantage of JavaOne</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://eriwen.com/opinion/why-programmers-should-twitter/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Programming lamentations to learn from</title>
		<link>http://eriwen.com/opinion/programming-lamentations/</link>
		<comments>http://eriwen.com/opinion/programming-lamentations/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 13:00:51 +0000</pubDate>
		<dc:creator>Eric Wendelin</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://eriwen.com/?p=530</guid>
		<description><![CDATA[I was reflecting on some of the things I've experienced while in the software engineering field. There are some big mistakes I've witnessed and made. I'm going to share what they were and I hope you gain insights of how to approach some situations... especially if you are new to the industry.

<h2>Clever code</h2>
During my first job, I was helping to write a generic report builder application. We needed a method to parse a Date out of an oddly formatted string. Being fresh out of college, I was excited to show that I could write something that would parse immensely fast -- and I did. There was one major problem, no one else understood it. When it came time to refactor, a senior engineer said this to me and I'll never forget it:

<blockquote>Programming languages are designed to be understood by humans.</blockquote>

If your code is good enough to stick around it will have to be maintained and probably by someone else. There are exceptional cases of course, but remember that compilers often make the same optimizations (or better) than the ones you cleverly devised. <strong>Learn from my mistake, don't be clever.</strong>


Related posts:<ol><li><a href='http://eriwen.com/productivity/how-to-suck-at-software-development-part-1/' rel='bookmark' title='Permanent Link: How to suck at software development'>How to suck at software development</a></li>
<li><a href='http://eriwen.com/opinion/key-to-programmer-success/' rel='bookmark' title='Permanent Link: The unsung key to programmer success'>The unsung key to programmer success</a></li>
<li><a href='http://eriwen.com/opinion/resolutions-2009/' rel='bookmark' title='Permanent Link: A programmer&#8217;s 2009 resolutions'>A programmer&#8217;s 2009 resolutions</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I was reflecting on some of the things I&#8217;ve experienced while in the software engineering field. There are some big mistakes I&#8217;ve witnessed and made. I&#8217;m going to share what they were and I hope you gain insights of how to approach some situations&#8230; especially if you are new to the industry.</p>
<h2>Clever code</h2>
<p>During my first job, I was helping to write a generic report builder application. We needed a method to parse a Date out of an oddly formatted string. Being fresh out of college, I was excited to show that I could write something that would parse immensely fast &#8212; and I did. There was one major problem, no one else understood it. When it came time to refactor, a senior engineer said this to me and I&#8217;ll never forget it:</p>
<blockquote><p>Programming languages are designed to be understood by humans.</p></blockquote>
<p>If your code is good enough to stick around it will have to be maintained and probably by someone else. There are exceptional cases of course, but remember that compilers often make the same optimizations (or better) than the ones you cleverly devised. <strong>Learn from my mistake, don&#8217;t be clever.</strong></p>
<h2>Neglect your users</h2>
<p>You are neglecting to involve your users if you: only gather and change requirements before coding, show no prototypes (or even storyboards) to your clients, or only have a few people &#8220;see what they think&#8221;. Requirements tend to change as soon as a user uses. Plan for this and make something that your user actually needs instead of what they thought they needed.</p>
<p>In this instance, it was my company at fault here. We often got new tasks because the user wanted something different than what we gave them. I desperately wanted to call a customer directly and ask what they wanted. In fact, this is one of the reasons (of many) that I left and moved on to Sun. <strong>Your career and project depend on your users. If red tape prevents you from involving them, leave.</strong></p>
<h2>Stick to what you know</h2>
<p>So often, a programmer may know of a technology that will that exists that fits the problem domain, but often they are unwilling to make the leap and just learn it. This doesn&#8217;t always have to be another language, but sometimes different frameworks or even just classes that hasn&#8217;t been used before. </p>
<p>Programmers that don&#8217;t really know what they&#8217;re doing will simply copy someone else&#8217;s code through trial and error until it &#8220;works&#8221;. Reading someone else&#8217;s code is a good way to learn, but there must be effort put in to understand it. Only when it is understood should it be copied, then of course you really ought to stay <abbr title="Do not Repeat Yourself">DRY</abbr>. <strong>Take that time to make yourself a polyglot. Soon enough, your career will depend on it</strong>. </p>
<h2>Conclusion</h2>
<p>Choose to be better. You have a good start reading blogs, but I encourage you to apply all that you can for the benefit of learning. </p>
<p>These are just a few things I&#8217;ve seen so far. I&#8217;m sure you can come up with more examples of your own. Please share. </p>


<p>Related posts:<ol><li><a href='http://eriwen.com/productivity/how-to-suck-at-software-development-part-1/' rel='bookmark' title='Permanent Link: How to suck at software development'>How to suck at software development</a></li>
<li><a href='http://eriwen.com/opinion/key-to-programmer-success/' rel='bookmark' title='Permanent Link: The unsung key to programmer success'>The unsung key to programmer success</a></li>
<li><a href='http://eriwen.com/opinion/resolutions-2009/' rel='bookmark' title='Permanent Link: A programmer&#8217;s 2009 resolutions'>A programmer&#8217;s 2009 resolutions</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://eriwen.com/opinion/programming-lamentations/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>The unsung key to programmer success</title>
		<link>http://eriwen.com/opinion/key-to-programmer-success/</link>
		<comments>http://eriwen.com/opinion/key-to-programmer-success/#comments</comments>
		<pubDate>Thu, 08 Jan 2009 14:00:23 +0000</pubDate>
		<dc:creator>Eric Wendelin</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://eriwen.com/?p=435</guid>
		<description><![CDATA[A <a href="http://blogs.sun.com/eric" title="Eric Arseneau's Weblog">new friend</a> reminded me that one of the major keys to success as a programmer has nothing to do with programming. Your professional network.

I've blogged about this before in <a href="http://eriwen.com/opinion/what-i-wanted-to-know/">things I wanted to know before I left college</a>, but this topic <strong>cannot be stressed enough</strong> and warrants it's own post. In these troubled times (drink Buzz crew), it is all-important to further secure your professional position. The BEST way to do that is to maximize your opportunities.



Related posts:<ol><li><a href='http://eriwen.com/opinion/what-i-wanted-to-know/' rel='bookmark' title='Permanent Link: What I wanted to know before I left college: A programmer reflects'>What I wanted to know before I left college: A programmer reflects</a></li>
<li><a href='http://eriwen.com/tools/wikify-yourself/' rel='bookmark' title='Permanent Link: Why every programmer should have a Tiddlywiki'>Why every programmer should have a Tiddlywiki</a></li>
<li><a href='http://eriwen.com/microformats/what-are-microformats-and-why-do-you-care/' rel='bookmark' title='Permanent Link: What are microformats and why do you care?'>What are microformats and why do you care?</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>A <a href="http://blogs.sun.com/eric" title="Eric Arseneau's Weblog">new friend</a> reminded me that one of the major keys to success as a programmer has nothing to do with programming. <strong>Your professional network.</strong></p>
<p>I&#8217;ve blogged about this before in <a href="http://eriwen.com/opinion/what-i-wanted-to-know/">things I wanted to know before I left college</a>, but this topic <strong>cannot be stressed enough</strong> and warrants it&#8217;s own post. In these troubled times (drink Buzz crew), it is all-important to further secure your professional position. The BEST way to do that is to maximize your opportunities.</p>
<h2>Lessons I&#8217;ve learned</h2>
<p class="update">NOTE: I will not claim that I am &quot;successful&quot; or even that I&#8217;m all that smart, but I&#8217;ve had good experiences with people helping me.</p>
<p>I was (very) anti-social when I started college, but that changed when I met an actually popular Computer Science major. He encouraged me to get involved on campus and helped me fit in. Because of that first step, I ended up becoming one of the most influential guys on campus by my Junior year. That same person would&#8217;ve gladly hired me at his workplace, and we still keep in contact. <br/><strong>LESSON: knowing influential people helps you get to know more influential people</strong>. </p>
<p>Other contacts I made after getting into the workforce encouraged me to attend, Java User Group meetings. Through these I regularly met really bright guys that can help me out with open-source projects, job-hunting (hopefully not), or making up my own tech talks. I met <a href="http://blog.fredjean.net">Fred Jean</a> at a JUG meeting and he recommended me for my current job @ Sun, for which I&#8217;m forever grateful. <br/><strong>LESSON: I wasn&#8217;t sure I was smart enough then, but I never would&#8217;ve gotten anywhere without attending a group</strong>.</p>
<p>When I started blogging, my articles got no attention for awhile because I did not have any contacts that would help me promote them or give me advice on what to write. Contacting <a href="http://davidwalsh.name">David Walsh</a> changed that because we could use each other for ideas, or just to help promote each other. I probably would still be nowhere (not that I&#8217;m THAT far) without him and <a href="http://css-tricks.com" title="CSS tips">Chris Coyier</a>. <br/><strong>LESSON: Making that contact was invaluable to me, and I hope they benefited as well</strong>.</p>
<p>One last note: these connections are meant to be reciprocal. <strong>Be willing to help people in your network for their benefit only</strong>. Maybe someday they&#8217;ll get to return the favor.</p>
<p>Those are just 3 good examples of how my programming life was blessed by having good contacts. <strong>Take the first step&#8230; NOW!</strong></p>
<h2>Your new homework</h2>
<p>Now that you know how important your professional network is, it&#8217;s time to grow it. Do <strong>at least 2</strong> of the following within the next month:</p>
<ul style="margin-left: 2em; list-style-type: upper-roman;">
<li>Attend a local developer&#8217;s group meeting (like a <a href="http://java.sun.com/community/usergroups/index.jsp">Java Users Group</a>)</li>
<li>Chat with your co-workers for 2 hrs/wk. You never know what opportunities could be right under your nose</li>
<li>Contact some of your favorite bloggers, or at least <a href="http://twitter.com/eriwen">follow them on twitter</a></li>
<li>Re-connect with 3 old friends or co-workers</li>
<li>Start a blog if you don&#8217;t have one, even if you can&#8217;t post that often</li>
<li>Seriously this list could go on and on&#8230; you get the idea!</li>
</ul>
<p>What is your best way to grow your network? What didn&#8217;t work for you? How do you plan to keep it going strong? Share!</p>


<p>Related posts:<ol><li><a href='http://eriwen.com/opinion/what-i-wanted-to-know/' rel='bookmark' title='Permanent Link: What I wanted to know before I left college: A programmer reflects'>What I wanted to know before I left college: A programmer reflects</a></li>
<li><a href='http://eriwen.com/tools/wikify-yourself/' rel='bookmark' title='Permanent Link: Why every programmer should have a Tiddlywiki'>Why every programmer should have a Tiddlywiki</a></li>
<li><a href='http://eriwen.com/microformats/what-are-microformats-and-why-do-you-care/' rel='bookmark' title='Permanent Link: What are microformats and why do you care?'>What are microformats and why do you care?</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://eriwen.com/opinion/key-to-programmer-success/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>A programmer&#8217;s 2009 resolutions</title>
		<link>http://eriwen.com/opinion/resolutions-2009/</link>
		<comments>http://eriwen.com/opinion/resolutions-2009/#comments</comments>
		<pubDate>Thu, 01 Jan 2009 14:00:56 +0000</pubDate>
		<dc:creator>Eric Wendelin</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[resolutions]]></category>

		<guid isPermaLink="false">http://eriwen.com/?p=409</guid>
		<description><![CDATA[I'm generally not a fan of new year's resolutions, but I think that it's important to make time specifically for setting some short-term and long-term goals. I'd like to share some of my more major goals for 2009. 

I'm hoping that posting them here might keep me accountable. You can pummel <a href="http://twitter.com/emwendelin" title="Eric Wendelin on Twitter">me on twitter</a> if I'm not keeping good on my promises if you like.



Related posts:<ol><li><a href='http://eriwen.com/opinion/what-i-wanted-to-know/' rel='bookmark' title='Permanent Link: What I wanted to know before I left college: A programmer reflects'>What I wanted to know before I left college: A programmer reflects</a></li>
<li><a href='http://eriwen.com/opinion/key-to-programmer-success/' rel='bookmark' title='Permanent Link: The unsung key to programmer success'>The unsung key to programmer success</a></li>
<li><a href='http://eriwen.com/tools/wikify-yourself/' rel='bookmark' title='Permanent Link: Why every programmer should have a Tiddlywiki'>Why every programmer should have a Tiddlywiki</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m generally not a fan of new year&#8217;s resolutions, but I think that it&#8217;s important to make time specifically for setting some short-term and long-term goals. I&#8217;d like to share some of my more major goals for 2009. </p>
<p>I&#8217;m hoping that posting them here might keep me accountable. You can pummel <a href="http://twitter.com/emwendelin" title="Eric Wendelin on Twitter">me on twitter</a> if I&#8217;m not keeping good on my promises if you like.</p>
<h2>My goals</h2>
<ul style="margin-left: 3em; list-style-type: upper-roman;">
<li><strong>Learn 2 languages</strong>. It&#8217;s our job to stay on top of new technology. Personally, I&#8217;d really like to learn (J?)Ruby and perhaps Python or JavaFX. Of course I&#8217;ll be learning new bits of what I already know, too. The point is to learn as much as possible without spreading yourself too thin, but <strong>keep learning</strong>.</li>
<li><strong>Acquire a soft skill</strong> like speaking, management, or marketing. Being good at programming can only get you so far if that&#8217;s all you know. Learning to speak will be a valuable skill should I want to communicate to other audiences or perhaps if I&#8217;m marketing my own project.</li>
<li><strong>Exercise</strong>. I see so many techies (including myself) that don&#8217;t stick to a regimen and their bodies take a major toll. Getting into those good habits now will certainly pay off. I think my indoor soccer team will appreciate an even speedier Eric, too ;)</li>
<li><strong>Do something good</strong>. It&#8217;s a programmer&#8217;s <strong>responsibility</strong> to use their powers for good. Blog. Write open-source software. Promote other good programmers. <strong>You don&#8217;t need a reason to help people.</strong> I&#8217;m hoping to do all 3 of these and hopefully make someone&#8217;s life a bit easier.</li>
</ul>
<h2>Thank you!</h2>
<p>Thank you, readers, for making it a great 2008. YOU have taken this blog from nothing to where it is in 1 year. Here&#8217;s to a productive 2009! If you have resolutions or suggestions for mine, share! Happy new year!!</p>


<p>Related posts:<ol><li><a href='http://eriwen.com/opinion/what-i-wanted-to-know/' rel='bookmark' title='Permanent Link: What I wanted to know before I left college: A programmer reflects'>What I wanted to know before I left college: A programmer reflects</a></li>
<li><a href='http://eriwen.com/opinion/key-to-programmer-success/' rel='bookmark' title='Permanent Link: The unsung key to programmer success'>The unsung key to programmer success</a></li>
<li><a href='http://eriwen.com/tools/wikify-yourself/' rel='bookmark' title='Permanent Link: Why every programmer should have a Tiddlywiki'>Why every programmer should have a Tiddlywiki</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://eriwen.com/opinion/resolutions-2009/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>What spaghetti code looks like</title>
		<link>http://eriwen.com/opinion/what-spaghetti-code-looks-like/</link>
		<comments>http://eriwen.com/opinion/what-spaghetti-code-looks-like/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 13:30:52 +0000</pubDate>
		<dc:creator>Eric Wendelin</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[good-practice]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://eriwen.com/?p=284</guid>
		<description><![CDATA[Spaghetti code is a term we seem to hear a lot in the programming realm, but I'm not convinced that we all really know how to recognize it we're poring through our code.

<img src="http://eriwen.com/images/spaghetti.jpg" alt="Just like grandpa used to make..." style="float:left; margin: 0 12px 4px 0;"/>This last week I had the pleasure of helping someone with a web development problem on a certain new developer focused site. While I was able to solve this person's issue for now, what I saw saddened and angered me. The code that this person posted was THE essence of spaghetti code.

<h2>Example of Spaghetti Code</h2>

First I want to say that I do not mean to call out the poster, I have total faith that he is not the original author. In general, <strong>it does not matter WHO wrote the code, a good programmer will take responsibility and fix this <strike>broken window</strike> unpinned grenade without a finger of blame</strong>. 



Related posts:<ol><li><a href='http://eriwen.com/productivity/how-to-suck-at-software-development-part-1/' rel='bookmark' title='Permanent Link: How to suck at software development'>How to suck at software development</a></li>
<li><a href='http://eriwen.com/css/color-palette-with-css-and-moo/' rel='bookmark' title='Permanent Link: Create a Color Palette Using CSS and MooTools 1.2'>Create a Color Palette Using CSS and MooTools 1.2</a></li>
<li><a href='http://eriwen.com/javafx/javafx-syntaxhighlighter/' rel='bookmark' title='Permanent Link: How to add JavaFX to SyntaxHighlighter'>How to add JavaFX to SyntaxHighlighter</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Spaghetti code is a term we seem to hear a lot in the programming realm, but we need to make sure we know how to recognize it when we&#8217;re scanning code.</p>
<p><img src="http://eriwen.com/images/spaghetti.jpg" alt="Just like grandpa used to make..." style="float:left; margin: 0 12px 4px 0;"/>This last week I had the pleasure of helping someone with a web development problem on a certain new developer focused site. While I was able to solve this person&#8217;s issue for now, what I saw saddened and angered me. The code that this person posted was THE essence of spaghetti code.</p>
<h2>Example of Spaghetti Code</h2>
<p>First I want to say that I do not mean to call out the poster, I have total faith that he is not the original author. In general, <strong>it does not matter WHO wrote the code, a good programmer will take responsibility and fix this <strike>broken window</strike> unpinned grenade without a finger of blame</strong>. </p>
<p>Here is the <a href="http://pastebin.com/f70d584d3">code</a>, you can see it in action <a href="http://eriwen.com/extras/spaghetti.html">here</a>. This page has a bug needing solving&#8230; a &lt;div&gt; containing to total cost is not properly updated when the second &lt;select&gt; box is changed. Not a tough sounding bug, right? View the source and see if you can you spot it. It&#8217;s OK take your time&#8230; it took me all too long. This, my friend, is <strong>why spaghetti code is bad: it&#8217;s difficult to maintain.</strong></p>
<h2>What makes it &quot;spaghetti code&quot;</h2>
<p>Sadly, to the untrained eye, this code might not look THAT bad. Notice at line 8 we see declarations for &quot;Constant Variables used to identify array locations&quot;. If only there was some way for something to have properties which have values&#8230; instead we see everything bound to an array index. We haven&#8217;t made pasta yet, though.</p>
<p>The three deadly sins in this case are:</p>
<ul style="list-style-type: upper-roman; padding-left: 2em;">
<li>Scripting logic is strewn throughout the page instead of being kept in one place</li>
<li>The code is difficult to extend</li>
<li>It is difficult to reverse-engineer, making it a maintenance nightmare</li>
</ul>
<p>Another real problem is that there doesn&#8217;t seem to be any structure to how and when functions are called. <em>updateFields()</em> is explicitly called in every &lt;input&gt; except for one, can you find which one? You also may have missed the random &lt;script&gt; tag at line 252 as well. Just try following one of the change event handlers in either &lt;select&gt;.</p>
<h2>What to do about it</h2>
<p>In this case, frankly, I would hardly bother with refactoring. I&#8217;d be re-writing it, keeping it simple. Proper use of a map and one controlling function that delegated calculations would do wonders. That&#8217;s not the point of this article, though, so I&#8217;m not going to waste any more time on it. </p>
<p>It&#8217;s important that you don&#8217;t waste time deciding who&#8217;s at fault. It&#8217;s petty and it will not solve anything. <strong>As a good programmer, it is your job to recognize code like this, take responsibility for fixing it correctly, and setting up tests to make sure it (almost) never breaks.</strong> If your manager doesn&#8217;t want to fix &quot;what&#8217;s not broken&quot;, ask which is worse, spend a bit of time now refactoring into something maintainable, or spending twice the effort <em>when</em> a bug is found. </p>
<p>You can wear a guard now or feel the pain and wear a band-aid later. Anyone else care to share any WTF spaghetti code?</p>


<p>Related posts:<ol><li><a href='http://eriwen.com/productivity/how-to-suck-at-software-development-part-1/' rel='bookmark' title='Permanent Link: How to suck at software development'>How to suck at software development</a></li>
<li><a href='http://eriwen.com/css/color-palette-with-css-and-moo/' rel='bookmark' title='Permanent Link: Create a Color Palette Using CSS and MooTools 1.2'>Create a Color Palette Using CSS and MooTools 1.2</a></li>
<li><a href='http://eriwen.com/javafx/javafx-syntaxhighlighter/' rel='bookmark' title='Permanent Link: How to add JavaFX to SyntaxHighlighter'>How to add JavaFX to SyntaxHighlighter</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://eriwen.com/opinion/what-spaghetti-code-looks-like/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>
