<?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&#039;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>Thu, 26 Apr 2012 18:48:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<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> <a href="http://eriwen.com/productivity/compare-linux-and-mac/">Continue reading <span class="meta-nav">&#8594;</span></a>


Related posts:<ol><li><a href='http://eriwen.com/firefox/firefox-add-ons-for-productivity/' rel='bookmark' title='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='8 steps to my personal Firefox setup for productivity'>8 steps to my personal Firefox setup for productivity</a></li>
<li><a href='http://eriwen.com/productivity/crontab-for-automation/' rel='bookmark' title='Start using crontab for automation'>Start using crontab for automation</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/firefox/firefox-add-ons-for-productivity/' rel='bookmark' title='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='8 steps to my personal Firefox setup for productivity'>8 steps to my personal Firefox setup for productivity</a></li>
<li><a href='http://eriwen.com/productivity/crontab-for-automation/' rel='bookmark' title='Start using crontab for automation'>Start using crontab for automation</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://eriwen.com/productivity/compare-linux-and-mac/feed/</wfw:commentRss>
		<slash:comments>20</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.
 <a href="http://eriwen.com/opinion/follow-up-why-programmers-should-twitter/">Continue reading <span class="meta-nav">&#8594;</span></a>


Related posts:<ol><li><a href='http://eriwen.com/groovy/groovy-shell-scripts/' rel='bookmark' title='Get groovy for better shell scripts'>Get groovy for better shell scripts</a></li>
<li><a href='http://eriwen.com/interview/andres-almiray/' rel='bookmark' title='Interview with Andres Almiray'>Interview with Andres Almiray</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/groovy/groovy-shell-scripts/' rel='bookmark' title='Get groovy for better shell scripts'>Get groovy for better shell scripts</a></li>
<li><a href='http://eriwen.com/interview/andres-almiray/' rel='bookmark' title='Interview with Andres Almiray'>Interview with Andres Almiray</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-cdn.s3.amazonaws.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. 
 <a href="http://eriwen.com/opinion/why-programmers-should-twitter/">Continue reading <span class="meta-nav">&#8594;</span></a>


Related posts:<ol><li><a href='http://eriwen.com/groovy/groovy-shell-scripts/' rel='bookmark' title='Get groovy for better shell scripts'>Get groovy for better shell scripts</a></li>
<li><a href='http://eriwen.com/interview/andres-almiray/' rel='bookmark' title='Interview with Andres Almiray'>Interview with Andres Almiray</a></li>
<li><a href='http://eriwen.com/bash/effective-shorthand/' rel='bookmark' title='Effective bash shorthand'>Effective bash shorthand</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-cdn.s3.amazonaws.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/groovy/groovy-shell-scripts/' rel='bookmark' title='Get groovy for better shell scripts'>Get groovy for better shell scripts</a></li>
<li><a href='http://eriwen.com/interview/andres-almiray/' rel='bookmark' title='Interview with Andres Almiray'>Interview with Andres Almiray</a></li>
<li><a href='http://eriwen.com/bash/effective-shorthand/' rel='bookmark' title='Effective bash shorthand'>Effective bash shorthand</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://eriwen.com/opinion/why-programmers-should-twitter/feed/</wfw:commentRss>
		<slash:comments>11</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> <a href="http://eriwen.com/opinion/programming-lamentations/">Continue reading <span class="meta-nav">&#8594;</span></a>


Related posts:<ol><li><a href='http://eriwen.com/python/update-feedburner-count/' rel='bookmark' title='Using Python to update your FeedBurner stats'>Using Python to update your FeedBurner stats</a></li>
<li><a href='http://eriwen.com/groovy/introducing-groovyrtm/' rel='bookmark' title='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/java/how-not-to-pass-the-scjp-exam/' rel='bookmark' title='How not to pass the SCJP exam'>How not to pass the SCJP exam</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/python/update-feedburner-count/' rel='bookmark' title='Using Python to update your FeedBurner stats'>Using Python to update your FeedBurner stats</a></li>
<li><a href='http://eriwen.com/groovy/introducing-groovyrtm/' rel='bookmark' title='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/java/how-not-to-pass-the-scjp-exam/' rel='bookmark' title='How not to pass the SCJP exam'>How not to pass the SCJP exam</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>What I wanted to know before I left college: A programmer reflects</title>
		<link>http://eriwen.com/opinion/what-i-wanted-to-know/</link>
		<comments>http://eriwen.com/opinion/what-i-wanted-to-know/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 22:09:32 +0000</pubDate>
		<dc:creator>Eric Wendelin</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[career]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://eriwen.com/?p=43</guid>
		<description><![CDATA[A couple months ago I was at my Alma Mater <a href="http://www.adams.edu" target="_blank">Adams State College</a> to talk about what I would have wanted to know if I was a student. I've been out of college for 3 years now, and held 3 VERY different programming jobs since graduating with my Bachelor's Degree. I am hoping to shed some light on what I have learned about the &#34;real world&#34; and clear up some misconceptions. 

<h3>Quick background</h3>
<p>I just want to give you enough information about where I'm coming from here. Obviously, your experiences will be different but I think there are several things common to almost all workplaces and that is what this post will focus on.</p>
<p>I have done data-oriented programming, back-end programming, and web programming for a couple small companies and one quite large company. All of these positions were around Northern Colorado/Wyoming so we're not exactly in Silicon Valley. If you really care about the details you can check out <a href="http://www.linkedin.com/in/emwendelin">my LinkedIn page</a>.</p>
 <a href="http://eriwen.com/opinion/what-i-wanted-to-know/">Continue reading <span class="meta-nav">&#8594;</span></a>


Related posts:<ol><li><a href='http://eriwen.com/tools/wikify-yourself/' rel='bookmark' title='Why every programmer should have a Tiddlywiki'>Why every programmer should have a Tiddlywiki</a></li>
<li><a href='http://eriwen.com/java/how-not-to-pass-the-scjp-exam/' rel='bookmark' title='How not to pass the SCJP exam'>How not to pass the SCJP exam</a></li>
<li><a href='http://eriwen.com/java/scwcd-lessons/' rel='bookmark' title='Lessons learned from the SCWCD'>Lessons learned from the SCWCD</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>A couple months ago I was at my Alma Mater <a href="http://www.adams.edu" target="_blank">Adams State College</a> to talk about what I would have wanted to know if I was a student. I&#8217;ve been out of college for 3 years now, and held 3 VERY different programming jobs since graduating with my Bachelor&#8217;s Degree. I am hoping to shed some light on what I have learned about the &quot;real world&quot; and clear up some misconceptions.</p>
<h2>Quick background</h2>
<p>I just want to give you enough information about where I&#8217;m coming from here. Obviously, your experiences will be different but I think there are several things common to almost all workplaces and that is what this post will focus on.</p>
<p>I have done data-oriented programming, back-end programming, and web programming for a couple small companies and one quite large company. All of these positions were around Northern Colorado/Wyoming so we&#8217;re not exactly in Silicon Valley. If you really care about the details you can check out <a href="http://www.linkedin.com/in/eriwen">my LinkedIn page</a>.</p>
<h2>What I would&#8217;ve done differently</h2>
<p>There are a few things that I would go back and do if I could:</p>
<ul>
<li>Work with other OSes &#8211; I mostly used Windows because that was what we had in most of our labs. I would have been more prepared for the workplace if I had done more stuff in a shell. Go try out Mac or <a href="http://www.ubuntu.com/">Ubuntu</a>! <strong>Most of the candidates I see nowadays don&#8217;t have non-Windows experience, and it is really frickin&#8217; valuable, I promise!</strong>
<li>More research classes and internships &#8211; Do something outside your comfort zone! You can explore things that noone else has and that experience is absolutely invaluable. I really wish I had done the facial-recognition programming class or an internship at a bigger company. Don&#8217;t make my mistake.</li>
<li>Consider taking the SCJA or SCJP exams &#8211; My college program was Java-based but there were so many parts of the Java language that I really did not understand. <a href="http://eriwen.com/java/how-not-to-pass-the-scjp-exam/">I really learned a lot from passing the SCJP</a> and I seriously recommend taking it as the knowledge WILL set you apart.</li>
<li>Connect with more people &#8211; I had what I would consider a rougher entrance into the programming world, and I may not have gotten a good programming job ever if I had not met some good companies at university job fairs. <strong>Take advantage of college job fairs outside your college</strong></li>
</ul>
<h2>What I wish I&#8217;d known about the workplace</h2>
<p><img alt="Eric Wendelin job resume" src="http://eriwen.com/images/resume.png" style="float: left; margin: 0px 12px 4px 0px;" />
<p>It was certainly different working on the same type of thing for many hours a day instead of the great diversity I had in school. My brain felt tired every day at about 4pm for the first month in the &quot;real world&quot;, but I think it&#8217;s just because I was learning so much. </p>
<p>Another thing I was surprised by is that <strong>people in the workplace seemed more easygoing than I would have thought</strong> and <strong>socialization (face-time) is an important part of working</strong>. All of the places I have worked I would guess that people tend to spend <strong>about 3 hours per week socializing in one way or another</strong>.</p>
<p>I have not had to work more than 50 hours per week during most weeks at any of my jobs, but I have friends that do have short periods where they work 80 hours/wk or more. <strong>You should definitely ask about this during your interviews</strong>, since you don&#8217;t want to be surprised by this.</p>
<p><strong>Company/workgroup attitude is the most important factor in how much I succeeded in my work.</strong> One major part of the attitude is trust: the managers/tech leads that trusted their engineers (including newer ones) to produce good work got it so much more than those that did not. Similarly, the groups that recognized that their <strong>engineers are an investment</strong>, and put money toward training etc., got higher quality work and probably more profit. <strong>When you interview with an engineer, ask how long it was since the company paid for training.</strong></p>
<p><strong>The best job is not usually the best-paying job</strong>. You need to factor in benefits as well as intangibles (e.g. can I work from home? etc.) and really think hard about it because it affects your happiness significantly.</p>
<h2>What I didn&#8217;t expect to help me</h2>
<p>Things that I didn&#8217;t think would matter so much but ended up driving a lot of my success:</p>
<ul>
<li>Joined clubs <strong>outside</strong> of engineering &#8211; this helped me with my social skills a LOT and helped me become a better team member.</li>
<li>Summer internship that forced me to use computing languages that I had not touched before: Perl, PHP, and other <abbr title="Command Line">CL</abbr> tools in a mostly command-line Linux environment &#8211; Going outside your comfort zone ended up being HUGE in my career because I realized how to pick up technologies and try to build something useful with them.</li>
</ul>
<h2>What I thought mattered and didn&#8217;t</h2>
<ul>
<li>GPA? &#8211; nope, except that it will allow you to go to graduate school</li>
<li>General eduation classes? &#8211; do matter somewhat, because you have to be able to think like your diverse user base and this helps you put you in someone else&#8217;s shoes.</li>
<li>Who you know? &#8211; Yes! I had no idea how much knowing someone from a company would really boost your chances of succeeding.</li>
</ul>
<h2>Summary: Do these things to prepare yourself</h2>
<ul>
<li>Go download another <abbr title="Operating System">OS</abbr> like <a href="http://opensolaris.org/index.html">OpenSolaris</a> or <a href="http://www.ubuntu.com/">Ubuntu</a></li>
<li>Connect with others. Go to your local <abbr title="Java Users Group">JUG</abbr>. Join <a href="http://www.linkedin.com/" title="LinkedIn Social Networking">LinkedIn</a>.</li>
<li>Make a good list of questions to ask potential employers</li>
<li>Take extra classes in technology</li>
<li>Apply for an internship, even if you don&#8217;t get it or want it</li>
<li>Learn something outside of the required courses</li>
<li>Consider blogging and/or mentoring</li>
</ul>
<p>I have compiled a random list of <a href="http://del.icio.us/emwendelin/jobs" title="My job links">job links</a> that I think are helpful. Hope they are!</p>
<p>If you are a professional now, share what helped you or what you didn&#8217;t expect. I&#8217;ve only shared my views and yours would be extra helpful to those who need it!</p>


<p>Related posts:<ol><li><a href='http://eriwen.com/tools/wikify-yourself/' rel='bookmark' title='Why every programmer should have a Tiddlywiki'>Why every programmer should have a Tiddlywiki</a></li>
<li><a href='http://eriwen.com/java/how-not-to-pass-the-scjp-exam/' rel='bookmark' title='How not to pass the SCJP exam'>How not to pass the SCJP exam</a></li>
<li><a href='http://eriwen.com/java/scwcd-lessons/' rel='bookmark' title='Lessons learned from the SCWCD'>Lessons learned from the SCWCD</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://eriwen.com/opinion/what-i-wanted-to-know/feed/</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
		<item>
		<title>How to suck at software development</title>
		<link>http://eriwen.com/productivity/how-to-suck-at-software-development-part-1/</link>
		<comments>http://eriwen.com/productivity/how-to-suck-at-software-development-part-1/#comments</comments>
		<pubDate>Thu, 27 Sep 2007 06:00:00 +0000</pubDate>
		<dc:creator>Eric Wendelin</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://eriwen.com/2007/09/how-to-suck-at-software-development-part-1/</guid>
		<description><![CDATA[<h4>1. Don't create prototypes</h4>
Clients do not know what they want. Managers do not know what they want. When you prototype, you learn about the constraints you are going to face and your audience learns what they can have and what is impossible. NOTE: Try not to use your prototypes for production code, they are meant to be prototypes. Learn from them and don't just....
<h4>2. Copy the code</h4>
<span style="float: right"><img src="http://eriwen.com/images/copycode.jpg" alt="Stop Copying Code" id="copycode" /></span>When you copy code one of these scenarios is likely to occur: either you don't fully understand what it does or you may know but don't think about refactoring it to be better because you expect it to just work. I know many of you out there see this all day long: someone copies code because they are lazy and don't correctly create an abstraction, and they end up violating the DRY (Don't Repeat Yourself) principle. Now when rules change, you have multiple pieces of code to change. Unfortunately, it seems that people who copy code also tend to believe that they should...
 <a href="http://eriwen.com/productivity/how-to-suck-at-software-development-part-1/">Continue reading <span class="meta-nav">&#8594;</span></a>


Related posts:<ol><li><a href='http://eriwen.com/bash/pushd-and-popd/' rel='bookmark' title='Use pushd and popd for faster CLI navigation'>Use pushd and popd for faster CLI navigation</a></li>
<li><a href='http://eriwen.com/productivity/multiple-desktops-to-get-things-done/' rel='bookmark' title='How I use multiple desktops to get things done'>How I use multiple desktops to get things done</a></li>
<li><a href='http://eriwen.com/productivity/find-is-a-beautiful-tool/' rel='bookmark' title='Find is a beautiful tool'>Find is a beautiful tool</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<h2>1. Don&#8217;t create prototypes</h2>
<p>Clients do not know what they want. Managers do not know what they want. When you prototype, you learn about the constraints you are going to face and your audience learns what they can have and what is impossible. NOTE: Try not to use your prototypes for production code, they are meant to be prototypes. Learn from them and don&#8217;t just&#8230;.</p>
<h2>2. Copy the code</h2>
<p><span style="float: right"><img src="http://eriwen.com/images/copycode.jpg" alt="Stop Copying Code" id="copycode" /></span>When you copy code one of these scenarios is likely to occur: either you don&#8217;t fully understand what it does or you may know but don&#8217;t think about refactoring it to be better because you expect it to just work. I know many of you out there see this all day long: someone copies code because they are lazy and don&#8217;t correctly create an abstraction, and they end up violating the DRY (Don&#8217;t Repeat Yourself) principle. Now when rules change, you have multiple pieces of code to change. Unfortunately, it seems that people who copy code also tend to believe that they should&#8230;</p>
<h2>3. Leave working code alone</h2>
<p>If you ignore old working code it will come back to haunt you. First of all, no code is perfect and when things change, anything that depends on those things could break if your code is any less than perfectly abstract. Second, you will (hopefully) gain knowledge and will be able to make that working code less resource intensive among other things. Don&#8217;t live with stale code it will only get moldy.</p>
<h2>4. Write all code manually</h2>
<p>Why not have that powerful machine in front of you do some of your work for you? Do not waste time writing the same type of code multiple times, either generate that code with a code generator or re-design your code so that you don&#8217;t even have to do that. It will make you more productive and you will be able to spend more of your day on interesting tasks.</p>
<h2>5. Follow formal methodologies to the letter</h2>
<p>No formal methodology will fit with all of the types of development you will do. You must be flexible enough to fit your methodology into the context of the problem you are solving or you are wasting time. Being unstructured is usually worse, so find your happy-ish medium :). Finally, the best way to suck at programming (well anything really)&#8230;</p>
<h2>6. Don&#8217;t care about what you do</h2>
<p>DO NOT WASTE YOUR LIFE PROGRAMMING UNLESS YOU CARE ABOUT DOING IT WELL. It&#8217;s a win-win for those who subscribe to this paradigm. While this can be taken the same way for many professions, I think it is especially important for software developers. Lucky for you it looks like you don&#8217;t suffer from this because you&#8217;re reading all this means that you intend to keep improving.</p>
<p>Maybe these were obvious to you, actually, I hope they were. I have seen too many in my field that are too busy &#8220;writing code and getting things done&#8221; to really step back and look at what they are really doing. Share this with them if you can, it really will be better in the end.</p>


<p>Related posts:<ol><li><a href='http://eriwen.com/bash/pushd-and-popd/' rel='bookmark' title='Use pushd and popd for faster CLI navigation'>Use pushd and popd for faster CLI navigation</a></li>
<li><a href='http://eriwen.com/productivity/multiple-desktops-to-get-things-done/' rel='bookmark' title='How I use multiple desktops to get things done'>How I use multiple desktops to get things done</a></li>
<li><a href='http://eriwen.com/productivity/find-is-a-beautiful-tool/' rel='bookmark' title='Find is a beautiful tool'>Find is a beautiful tool</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://eriwen.com/productivity/how-to-suck-at-software-development-part-1/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

