<?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; Productivity</title>
	<atom:link href="http://eriwen.com/category/productivity/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>Why every programmer should have a Tiddlywiki</title>
		<link>http://eriwen.com/tools/wikify-yourself/</link>
		<comments>http://eriwen.com/tools/wikify-yourself/#comments</comments>
		<pubDate>Wed, 10 Dec 2008 14:00:42 +0000</pubDate>
		<dc:creator>Eric Wendelin</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[wiki]]></category>

		<guid isPermaLink="false">http://eriwen.com/?p=33</guid>
		<description><![CDATA[A year ago, my good friend <a href="http://casedogdesigns.com">Casey Watson</a> suggested that I try using a personal wiki to keep track of my programming knowledge. This turned out to be great advice, so I'll be sharing how I use one and how to start your own.

<h2>Why would a personal wiki make you productive?</h2>
In a phrase: to keep a your web of knowledge accessible from one place. You need a place to put your meeting agenda, important project/server links, and even a to-do or waiting-for list. Not only can you store a lot, you can tag it, search it and otherwise customize the crap out of <a href="http://www.tiddlywiki.com/">Tiddlywiki</a>.

<img src="http://static.eriwen.com/images/eriki.gif" alt="Eric's Tiddlywiki" style="float:left; margin: 0 12px 12px 0;" width="222" height="202"/>You are not going to be able to remember everything you need, <strong>keeping links and information in email folders just doesn't cut it</strong>. You can easily keep track of your meeting notes, DB schema diagrams, bug lists, blah blah blah... <a href="http://eriwen.com/tools/wikify-yourself/">Continue reading <span class="meta-nav">&#8594;</span></a>


Related posts:<ol><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>
<li><a href='http://eriwen.com/tools/get-sed-savvy-2/' rel='bookmark' title='Get sed savvy &#8211; part 2'>Get sed savvy &#8211; part 2</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>
</ol>]]></description>
			<content:encoded><![CDATA[<p>A year ago, my good friend <a href="http://casedogdesigns.com">Casey Watson</a> suggested that I try using a personal wiki to keep track of my programming knowledge. This turned out to be great advice, so I&#8217;ll be sharing how I use one and how to start your own.</p>
<h2>Why would a personal wiki make you productive?</h2>
<p>In a phrase: to keep a your web of knowledge accessible from one place. You need a place to put your meeting agenda, important project/server links, and even a to-do or waiting-for list. Not only can you store a lot, you can tag it, search it and otherwise customize the crap out of <a href="http://www.tiddlywiki.com/">Tiddlywiki</a>.</p>
<p><img src="http://static.eriwen.com/images/eriki.gif" alt="Eric's Tiddlywiki" style="float:left; margin: 0 12px 12px 0;" width="222" height="202"/>You are not going to be able to remember everything you need, <strong>keeping links and information in email folders just doesn&#8217;t cut it</strong>. You can easily keep track of your meeting notes, DB schema diagrams, bug lists, blah blah blah&#8230;</p>
<p>In other news, great programmers <a href="http://www.agiledeveloper.com/blog/">Venkat Subramaniam</a> and Mark Richards called Tiddlywiki their favorite technical tool. <strong>Favorite.</strong> As in more valuable than their IDE. </p>
<h2>Roll your own&#8230; now!</h2>
<p>It&#8217;s really stinkin&#8217; easy! Just grab my favorite flavor of Tiddlywiki, <a href="http://www.dcubed.ca/Welcome_to_d-cubed.html">d-cubed</a>, and save it somewhere you can access easily. The first time you use it your browser will ask you to confirm that you can edit your HTML file through it (standard security check). </p>
<p>You will probably want to theme it so it fits you, and I found a bunch of nice themes at <a href="http://tiddlythemes.com/" title="Themes for TiddlyWiki">TiddlyThemes</a>. It&#8217;s just CSS and JavaScript anyway, dowhatyouwant! whatyouwant!!</p>
<p>Once you have customized your wiki&#8217;s look-and-feel etc., it&#8217;s time to grab some slick plugins. Here are a few I use and recommend:</p>
<ul style="list-style-type: upper-roman; margin-left: 3em;">
<li><a href="http://www.tiddlytools.com/#CheckboxPlugin">Checkbox plugin</a> &#8211; So you can manage your tasks with checkbox style</li>
<li><a href="http://www.tiddlytools.com/#CalendarPlugin">Calendar plugin</a> and <a href="http://www.tiddlytools.com/#DatePlugin">Date plugin</a> &#8211; Manage your calendar in your wiki!</li>
<li><a href="http://tiddlywiki.abego-software.de/#YourSearchPlugin">Your Search plugin</a> &#8211; Really, really sweet search upgrade. A must-grab!</li>
</ul>
<p>To install a plugin, just make a new Tiddler (wiki page) with the same title, content, and tags. So easy!</p>
<h2>Next steps</h2>
<p>I recommend starting by creating tiddlers for all your projects and just putting links to other resources in there. After awhile, copy bits of emails you need to remember to relevant places so you can search it anytime. Baby steps, but <strong>stick to it</strong>. The setup cost will be returned in cases (as in the beer others will buy you for rocking)!</p>
<p>You&#8217;re now well on your way to wiki-fying yourself. Share your experiences and have fun!</p>
<p class='update'><strong>Oh, hai Hacker News!</strong> You should note that this article is almost 3 years old but nevertheless I still use Tiddlywiki! I sync it with my <a href='http://db.tt/uTTF6nk'>Dropbox</a> account, which syncs it across all of my environments as well as keeps the last few versions. I recommend that, too.</p>


<p>Related posts:<ol><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>
<li><a href='http://eriwen.com/tools/get-sed-savvy-2/' rel='bookmark' title='Get sed savvy &#8211; part 2'>Get sed savvy &#8211; part 2</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>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://eriwen.com/tools/wikify-yourself/feed/</wfw:commentRss>
		<slash:comments>58</slash:comments>
		</item>
		<item>
		<title>Start using crontab for automation</title>
		<link>http://eriwen.com/productivity/crontab-for-automation/</link>
		<comments>http://eriwen.com/productivity/crontab-for-automation/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 15:00:19 +0000</pubDate>
		<dc:creator>Eric Wendelin</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[command-line]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://eriwen.com/?p=342</guid>
		<description><![CDATA[I seem to preach a lot about automation for productivity, and with good reason. You should not have to perform mundane tasks repeatedly. Crontab is a fantastic tool for simply running exactly what you want at times you specify.

Fire up your terminal or <a href="http://cygwin.com" title="Unix terminal for Windows">Cygwin</a> now. 

<h2>crontab tutorial</h2>

Suppose I want to copy my personal wiki to my website every other hour between 8:30 and 18:30 on weekdays only. This only takes a couple minutes to setup with a bit of cron-fu. 

I'm going to go ahead and use FTP to put my wiki where I want, so I wrote a quick bash script (<em>backup_wiki.sh</em>) for this purpose:
[code language="bash"]
#!/bin/bash
# File: backup_wiki.sh
HOST='mysite.com'
USER='myuser'
PASS='mypassword'

ftp -n ${HOST} <<END_SCRIPT
quote USER ${USER}
quote PASS ${PASS}
put path/to/my/wikifile.html wikifile.html
bye
END_SCRIPT
exit 0
[/code]

Sweet, so now we can just use <em>backup_wiki.sh</em>

Let's edit (or create) our new crontab file:
[code language="bash"]
crontab -e
[/code]

This brings up <em>vi</em> (by default) with a file that may have a comment or may be empty. I don't feel like using <em>vi</em> right now, so I'll change it to <em>jEdit</em> by adding the following to my .bashrc file:
[code language="bash"]
export EDITOR="[/path/to/jedit.bat (windows) or 'jedit' (*nix)]"
[/code]

Ah, that's better. Now that we can open it up in our fav. text editor, let's learn how to create an entry in our crontab file. <a href="http://eriwen.com/productivity/crontab-for-automation/">Continue reading <span class="meta-nav">&#8594;</span></a>


Related posts:<ol><li><a href='http://eriwen.com/productivity/aliases-and-functions/' rel='bookmark' title='Using aliases and command-line functions for speed'>Using aliases and command-line functions for speed</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>
<li><a href='http://eriwen.com/tools/get-sed-savvy-2/' rel='bookmark' title='Get sed savvy &#8211; part 2'>Get sed savvy &#8211; part 2</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I seem to preach a lot about automation for productivity, and with good reason. You should not have to perform mundane tasks repeatedly. Crontab is a fantastic tool for simply running exactly what you want at times you specify.</p>
<p>Fire up your terminal or <a href="http://cygwin.com" title="Unix terminal for Windows">Cygwin</a> now. </p>
<h2>crontab tutorial</h2>
<p>Suppose I want to copy my personal wiki to my website every other hour between 8:30 and 18:30 on weekdays only. This only takes a couple minutes to setup with a bit of cron-fu. </p>
<p>I&#8217;m going to go ahead and use FTP to put my wiki where I want, so I wrote a quick bash script (<em>backup_wiki.sh</em>) for this purpose:</p>
<pre class="brush: bash; title: ; notranslate">
#!/bin/bash
# File: backup_wiki.sh
HOST='mysite.com'
USER='myuser'
PASS='mypassword'

ftp -n ${HOST} &lt;&lt;END_SCRIPT
quote USER ${USER}
quote PASS ${PASS}
put path/to/my/wikifile.html wikifile.html
bye
END_SCRIPT
exit 0
</pre>
<p>Sweet, so now we can just use <em>backup_wiki.sh</em></p>
<p>Let&#8217;s edit (or create) our new crontab file:</p>
<pre class="brush: bash; title: ; notranslate">
crontab -e
</pre>
<p>This brings up <em>vi</em> (by default) with a file that may have a comment or may be empty. I don&#8217;t feel like using <em>vi</em> right now, so I&#8217;ll change it to <em>jEdit</em> by adding the following to my .bashrc file:</p>
<pre class="brush: bash; title: ; notranslate">
export EDITOR=&quot;[/path/to/jedit.bat (windows) or 'jedit' (*nix)]&quot;
</pre>
<p>Ah, that&#8217;s better. Now that we can open it up in our fav. text editor, let&#8217;s learn how to create an entry in our crontab file.</p>
<h2>crontab file structure</h2>
<p>Lets break down a sample command that we&#8217;ll be putting into our crontab file</p>
<pre class="brush: bash; title: ; notranslate">
#min hour dom month dow command
30 8-18/2 * * 1-5 ./path/to/backup_wiki.sh
</pre>
<p>This command will run our <em>backup_wiki.sh</em> script at 8:30, 10:30, &#8230; 18:30 every Monday(1) through Friday(5). The crontab file basically has one command per line in the following format with the following separated by a space:</p>
<ul style="list-style-type: upper-roman; margin-left: 2em;">
<li>Minutes [0-59]</li>
<li>Hour [0-23]</li>
<li>Day of Month [1-31]</li>
<li>Month [1-12] &#8211; January is 1, obviously</li>
<li>Day of Week [0-6] &#8211; Sunday is 0</li>
<li>Command to run (can have spaces)</li>
</ul>
<p>An asterisk (*) means all possible values, so in our example above we mean all days of all months. You can specify a range by using a dash (-). Also, using a slash and then a number (like /2) after a command means only run on increments divisible by 2, so 8-19/2 means 8, 10, 12, 14, 16, 18. </p>
<p>Now suppose we just want to </p>
<pre class="brush: bash; title: ; notranslate">
# view our crontab entries without editing them
crontab -l

# remove your crontab file and start fresh
crontab -r

# on *some* systems (not Cygwin), view the last edit time of crontab
crontab -v
</pre>
<h2>example crontab entries</h2>
<p>You&#8217;d be surprised what you can automate. Here are some simple examples to give you ideas:</p>
<pre class="brush: bash; title: ; notranslate">
# Run backup at 3am every night
0 3 * * * ./nightly_backup.sh &gt;&gt; /logs/dir/backups.log

# Mail me feedburner subscribers every weekday
0 6 * * 1-5 mail -s &quot;Daily Subscriber Report&quot; myemail@gmail.com &lt; `get_subscribers.sh`

# Download meeting agenda wiki page every Tues/Thurs in Dec. 1st-24th
30 8 1-24 12 2,4 ./path/to/curl_get_agenda.sh
</pre>
<p>Friend Mark Sanborn has another <a href="http://www.marksanborn.net/linux/learning-cron-by-example/" title="Learning Cron by example">post about cron</a> that has other useful bits I may not have covered here. </p>
<p>I hope you found this intro. to crontab useful. Please share your ideas for automating with it in the comments!</p>


<p>Related posts:<ol><li><a href='http://eriwen.com/productivity/aliases-and-functions/' rel='bookmark' title='Using aliases and command-line functions for speed'>Using aliases and command-line functions for speed</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>
<li><a href='http://eriwen.com/tools/get-sed-savvy-2/' rel='bookmark' title='Get sed savvy &#8211; part 2'>Get sed savvy &#8211; part 2</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://eriwen.com/productivity/crontab-for-automation/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>How I use multiple desktops to get things done</title>
		<link>http://eriwen.com/productivity/multiple-desktops-to-get-things-done/</link>
		<comments>http://eriwen.com/productivity/multiple-desktops-to-get-things-done/#comments</comments>
		<pubDate>Fri, 14 Nov 2008 17:05:19 +0000</pubDate>
		<dc:creator>Eric Wendelin</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://eriwen.com/?p=66</guid>
		<description><![CDATA[I've been getting questions from co-workers and friends about how I have my desktop setup so I can get to any application I need quickly. I've been flattered by a few people adopting variations of my setup, and realized that I should share it just in case it might benefit some of my readers.

I know that your needs are different than mine, so pick off what you like. I'm happy to give quick setup guides for anyone that asks. 

<h2>First things first: 2 Monitors</h2>

<img src="http://eriwen.com/images/desktop.jpg" alt="" style="float:left; margin: 0 8px 8px 0;"/>For as small of a cost as an additional monitor is, I'm disappointed that more employers don't provide a multi-monitor setup for their developers. 

Do the math: if you get an extra monitor for $250US and it increases your efficiency by even 1%, it pays for itself in 6 months or less!

Anyway, I have a somewhat typical laptop + monitor setup, and the extra screen real estate is quite helpful, especially since I can keep my browser on one monitor always and then move to all my other applications with a keystroke. Nothing too special there, but the point here is <strong>play the smart money card to get a multi-monitor setup if you can.</strong>


<h2>Desktops: 4-5 wide, 1 deep</h2>

Linux definitely makes it easier on me since I get multiple desktops built-in. Obviously, you can use Spaces on a Mac or <a href="http://virtuawin.sourceforge.net/downloads.php">VirtuaWin</a> on Windows (and I do) to get the ability.  <a href="http://eriwen.com/productivity/multiple-desktops-to-get-things-done/">Continue reading <span class="meta-nav">&#8594;</span></a>


Related posts:<ol><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>
<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/firefox/howto-tweak-chrome-for-a-cleaner-firefox/' rel='bookmark' title='Tweak chrome for a cleaner Firefox'>Tweak chrome for a cleaner Firefox</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been getting questions from co-workers and friends about how I have my desktop setup so I can get to any application I need quickly. I&#8217;ve been flattered by a few people adopting variations of my setup, and realized that I should share it just in case it might benefit some of my readers.</p>
<p>I know that your needs are different than mine, so pick off what you like. I&#8217;m happy to give quick setup guides for anyone that asks. </p>
<h2>First things first: 2 Monitors</h2>
<p><img src="http://eriwen.com/images/desktop.jpg" alt="" style="float:left; margin: 0 8px 8px 0;"/>For as small of a cost as an additional monitor is, I&#8217;m disappointed that more employers don&#8217;t provide a multi-monitor setup for their developers. </p>
<p>Do the math: if you get an extra monitor for $250US and it increases your efficiency by even 1%, it pays for itself in 6 months or less!</p>
<p>Anyway, I have a somewhat typical laptop + monitor setup, and the extra screen real estate is quite helpful, especially since I can keep my browser on one monitor always and then move to all my other applications with a keystroke. Nothing too special there, but the point here is <strong>play the smart money card to get a multi-monitor setup if you can.</strong></p>
<h2>Desktops: 4-5 wide, 1 deep</h2>
<p>Linux definitely makes it easier on me since I get multiple desktops built-in. Obviously, you can use Spaces on a Mac or <a href="http://virtuawin.sourceforge.net/downloads.php">VirtuaWin</a> on Windows (and I do) to get the ability. </p>
<p>I use 5 desktops (VirtuaWin can only assign hotkeys for 4, unfortunately) and assign a hotkey (Ctrl + 6 to Ctrl + 0) to immediately switch to the appropriate one:</p>
<ul style="list-style-type: upper-roman; margin-left: 2em;">
<li>IM clients and chat windows</li>
<li>E-mail</li>
<li>Browser(s)</li>
<li>Shell(s)</li>
<li>IDE/Text editors</li>
</ul>
<p>The advantage I see here is that I never have to think to get to any window, <strong>I can seamlessly move between exactly what I want all the time.</strong> I never have to search through an expose-like interface or alt-tab through a giant list. However, I don&#8217;t have the ability to open up a ton of windows or it degrades quickly. I&#8217;m also lucky in that I don&#8217;t need a whole lot open all the time. </p>
<p>If you don&#8217;t need to keep a ton of different things open constantly, you might give this a shot.</p>
<h2>Why it works for me</h2>
<p>Any possible time-saving aside, I like to keep complete focus on what I&#8217;m doing. I don&#8217;t want to have to think about where that IM window is. I like to think that <string>keeping everything easily accessible saves me brain cycles</strong> that can quickly go toward the task at hand. </p>
<p>I&#8217;m hoping this will inspire some of you to consider how you can setup your screen real estate for maximum productivity. </p>
<p>Do you have any suggestions, or perhaps you think your desktop setup is better? Hey, I&#8217;d like to hear it so share in the comments!</p>
<p class="update">UPDATE: I should have probably mentioned that I use Gnome-Do (Linux) and Launchy (Windows) as a launcher. I also use Compiz&#8217;s Place Windows plugin to put all my windows on their respective desktops. I have most everything I need automatically started at boot time, so I just boot up, login, and go get coffee while my computer sets itself up :)</p>


<p>Related posts:<ol><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>
<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/firefox/howto-tweak-chrome-for-a-cleaner-firefox/' rel='bookmark' title='Tweak chrome for a cleaner Firefox'>Tweak chrome for a cleaner Firefox</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://eriwen.com/productivity/multiple-desktops-to-get-things-done/feed/</wfw:commentRss>
		<slash:comments>31</slash:comments>
		</item>
		<item>
		<title>Using aliases and command-line functions for speed</title>
		<link>http://eriwen.com/productivity/aliases-and-functions/</link>
		<comments>http://eriwen.com/productivity/aliases-and-functions/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 12:00:28 +0000</pubDate>
		<dc:creator>Eric Wendelin</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[aliases]]></category>
		<category><![CDATA[command-line]]></category>

		<guid isPermaLink="false">http://eriwen.com/?p=258</guid>
		<description><![CDATA[There are two main aspects to enhancing programming productivity, and they are what I like to call physical (decrease actual human activity) and mental (knowing the smartest way to accomplish a task) types. Humans are slow, so I want to help you prevent that slowness from killing your face-melting programming dreams.

<h2>Stop typing so much!</h2>

One great way to <strong>enhance your physical productivity is, obviously, to type less</strong>. You know what you want to do and it should take no time for you to tell your computer to do it. On the command-line, we can do this most easily with smart aliases, and perhaps creating functions that streamline our tasks for us so that we can accomplish this. 

I'm going to share with you a few techniques I use to cut the number of keystrokes I type significantly while boosting my efficiency, so break out <a href="http://www.cygwin.com" title="Cygnus + Windows">Cygwin</a> or your favorite terminal and let's get started.

<h2>Find out what commands you use most frequently</h2>

Here is a quick command you can use to figure out the 10 most used commands in your history (learned from <a href="http://lifehacker.com/software/unix/review-your-most-oftused-unix-commands-202712.php" title="Most used UNIX utilities">lifehacker's post</a>):
 <a href="http://eriwen.com/productivity/aliases-and-functions/">Continue reading <span class="meta-nav">&#8594;</span></a>


Related posts:<ol><li><a href='http://eriwen.com/groovy/crush-images-with-groovy/' rel='bookmark' title='Crush images on the command-line with Groovy'>Crush images on the command-line with Groovy</a></li>
<li><a href='http://eriwen.com/css/use-the-table-layout-css-property-to-speed-up-table-rendering/' rel='bookmark' title='Use the table-layout CSS property to speed up table rendering'>Use the table-layout CSS property to speed up table rendering</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>There are two main aspects to enhancing programming productivity, and they are what I like to call physical (decrease actual human activity) and mental (knowing the smartest way to accomplish a task) types. Humans are slow, so I want to help you prevent that slowness from killing your face-melting programming dreams.</p>
<h2>Stop typing so much!</h2>
<p>One great way to <strong>enhance your physical productivity is, obviously, to type less</strong>. You know what you want to do and it should take no time for you to tell your computer to do it. On the command-line, we can do this most easily with smart aliases, and perhaps creating functions that streamline our tasks for us so that we can accomplish this. </p>
<p>I&#8217;m going to share with you a few techniques I use to cut the number of keystrokes I type significantly while boosting my efficiency, so break out <a href="http://www.cygwin.com" title="Cygnus + Windows">Cygwin</a> or your favorite terminal and let&#8217;s get started.</p>
<h2>Find out what commands you use most frequently</h2>
<p>Here is a quick command you can use to figure out the 10 most used commands in your history (learned from <a href="http://lifehacker.com/software/unix/review-your-most-oftused-unix-commands-202712.php" title="Most used UNIX utilities">lifehacker&#8217;s post</a>):</p>
<pre class="brush: bash; title: ; notranslate">
# Get most used commands from your history
history|awk '{print $2}'|awk 'BEGIN {FS=&quot;|&quot;} {print $1}'|sort|uniq -c|sort -r
</pre>
<p>My top list included <em>cd ..</em>, <em>ls</em>, <em>grep</em>, and <em>ant</em> just to name a few. Your list will differ. I probably use each at least a dozen to a hundred times per day. If we do some stupid averaging of time spent with those extra characters, we could make some completely unscientific guess that we can save about 20 minutes a day if we only had to type two or three characters (including enter) for each of these commands. </p>
<h2>Create aliases smartly</h2>
<p>Now we can take this list and create some aliases to shorten those commands most frequently used. I use <abbr title="Bourne Again SHell">bash</abbr> so I&#8217;ll edit my ~/.bashrc file (create in your home directory, if it doesn&#8217;t exist), and you can edit the file pertaining to your shell adding something like the following:</p>
<pre class="brush: bash; title: ; notranslate">
# Simple Commands
alias ..='cd ..'
alias ...='cd ../..'
alias a='ant'
alias c='cd'
alias f='find'
alias g='grep'
alias h='history'
alias l='ls -l'
alias o='popd'
alias p='pushd'

# Alias directories for quick access - links often work better but these are helpful
alias myproj='/path/to/myproject/'
alias otherproj='/other/path/directory/'

# More complex commands
alias mybox='ssh myusername@mybox.blah.com'
alias vpn='sudo vpnstuff -l connectstr &amp;&amp; sudo morevpnstuff'
</pre>
<p>You get the idea. There are obviously a lot more, but it&#8217;d get boring if I shared ALL of mine. I recommend aliasing many commands to just one character. Over time, it will become second nature and your command-line will burst in flames from your speed (I still owe Casey a new monitor&#8230; sorry buddy&#8230; forgive me?)</p>
<h2>When an alias just won&#8217;t do</h2>
<p>Now there are obviously times where you really don&#8217;t want to put it all in one command, you might not want <em>cd &#038;&#038; blah &#038;&#038; stuff || mkdir -p foo/bar</em> as an alias. Unfortunately, I see so so few people use command-line functions to their advantage, but they really help you automate tasks.</p>
<p>Suppose you want to grab a certain file off of FTP, but you&#8217;ll need to do it often as the file changes. Setup a function so you don&#8217;t have to do it physically:</p>
<pre class="brush: bash; title: ; notranslate">
# Create variables
HOST=myhostname
PASSWD=mypass
FILE=myfile.out

function getmyfile() {
  ftp -n $HOST &lt;&lt;END_SCRIPT
  user ${USER} ${PASSWD}
  cd ~/the/file/path
  get $FILE
  quit
  END_SCRIPT
}

# To invoke on the command-line:
getmyfile
</pre>
<p>You can put whatever sequence of commands you want in a function to automate your task. This can get much more complex if you like, using variables and output from other commands, <a href="http://eriwen.com/feed/">stay tuned</a>. <strong>The more you automate, the better you get at it.</strong></p>
<h2>Conclusion</h2>
<p>The point here is to <strong>express as much as you can with the least amount of effort</strong>. Keep building on your automation in this way and you&#8217;ll find yourself with much more time for more important tasks. Now go melt some faces!</p>
<p>Please share your favorite alias or function in the comments!</p>


<p>Related posts:<ol><li><a href='http://eriwen.com/groovy/crush-images-with-groovy/' rel='bookmark' title='Crush images on the command-line with Groovy'>Crush images on the command-line with Groovy</a></li>
<li><a href='http://eriwen.com/css/use-the-table-layout-css-property-to-speed-up-table-rendering/' rel='bookmark' title='Use the table-layout CSS property to speed up table rendering'>Use the table-layout CSS property to speed up table rendering</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/productivity/aliases-and-functions/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Find is a beautiful tool</title>
		<link>http://eriwen.com/productivity/find-is-a-beautiful-tool/</link>
		<comments>http://eriwen.com/productivity/find-is-a-beautiful-tool/#comments</comments>
		<pubDate>Thu, 10 Jul 2008 05:19:15 +0000</pubDate>
		<dc:creator>Eric Wendelin</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[command-line]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[scripting]]></category>

		<guid isPermaLink="false">http://eriwen.com/?p=59</guid>
		<description><![CDATA[I have <a href="http://eriwen.com/opinion/what-i-wanted-to-know/">blogged before</a> that <strong>knowledge of command-line tools is essential to take the next step in programming productivity</strong>. I think it would be useful to provide simple tutorials for these powerful tools, starting with <em>find</em>. I hope you agree, and would appreciate your feedback via the <a href="http://eriwen.com/contact/" title="Contact Eric">contact page</a> or in the comments. 

<h2>Tutorial</h2>

If you're on Windows, I would recommend installing <a href="http://www.cygwin.com/" title="Cygnus + Windows = Cygwin">Cygwin</a> to bring the power of a real shell to your OS. Let us start with a simple example and build upon it <a href="http://eriwen.com/productivity/find-is-a-beautiful-tool/">Continue reading <span class="meta-nav">&#8594;</span></a>


Related posts:<ol><li><a href='http://eriwen.com/tools/grep-is-a-beautiful-tool/' rel='bookmark' title='grep is a beautiful tool'>grep is a beautiful tool</a></li>
<li><a href='http://eriwen.com/tools/awk-is-a-beautiful-tool/' rel='bookmark' title='awk is a beautiful tool'>awk is a beautiful tool</a></li>
<li><a href='http://eriwen.com/tools/vim-is-a-beautiful-tool/' rel='bookmark' title='Vim is a beautiful tool'>Vim is a beautiful tool</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I have <a href="http://eriwen.com/opinion/what-i-wanted-to-know/">blogged before</a> that <strong>knowledge of command-line tools is essential to take the next step in programming productivity</strong>. I think it would be useful to provide simple tutorials for these powerful tools, starting with <em>find</em>. I hope you agree, and would appreciate your feedback via the <a href="http://eriwen.com/contact/" title="Contact Eric">contact page</a> or in the comments. </p>
<h2>Tutorial</h2>
<p>If you&#8217;re on Windows, I would recommend installing <a href="http://www.cygwin.com/" title="Cygnus + Windows = Cygwin">Cygwin</a> to bring the power of a real shell to your OS. Let us start with a simple example and build upon it:</p>
<pre class="brush: bash; title: ; notranslate">
find . -name &quot;*.css&quot;
</pre>
<p>This will recurse all directories and list all <abbr title="Cascading Style Sheet">CSS</abbr> files (and directories ending with &#8220;.css&#8221;) under the current directory (represented by &#8220;.&#8221;). We only want to match files so we&#8217;ll go ahead and change it to this:</p>
<pre class="brush: bash; title: ; notranslate">
find . -type f -name &quot;*.css&quot;
</pre>
<p>Now we will only match <abbr title="Cascading Style Sheet">CSS</abbr> files (case-sensitively). Nothing special? Fine, I see how it is. Let&#8217;s find all CSS files that do something with your HTML ID #content next:</p>
<pre class="brush: bash; title: ; notranslate">
find . -name &quot;*.css&quot; -exec grep -l &quot;#content&quot; {} \;
</pre>
<p>Here we combine <em>find</em> with <a href="http://eriwen.com/tools/grep-is-a-beautiful-tool/">grep</a> using the <em>-exec</em> option, allowing us to do some processing on every match.</p>
<p>We&#8217;re starting to get productive now, so let&#8217;s keep going. Suppose now we want to change every reference to the color #FF0000 (red) to #00FF00 (green). Normally you would have to have your editor search and replace them, if it even has that capability. Even then it&#8217;s slow, this statement is fast:</p>
<pre class="brush: bash; title: ; notranslate">
find . -name &quot;*.css&quot; -exec sed -i -r 's/#(FF0000|F00)\b/#0F0/' {} \;
</pre>
<p>Gasp! Wait a minute, I just searched for both ways to specify red and replaced it with green in my CSS!! How long would that have taken otherwise? Do you see now how you can code faster by automating it and combining powerful tools? Let&#8217;s look at some other cool search options <em>find</em> has to offer:</p>
<h2>Other Examples</h2>
<pre class="brush: bash; title: ; notranslate">
# find files changed in the last 1 day
find . -mtime -1 -type f 

# find CSS files, omitting results containing &quot;CVS&quot;
find . \! -path &quot;*CVS*&quot; -type f -name &quot;*.css&quot;

# find files newer than main.css in ~/src
find ~/src -newer main.css 

# combine with xargs for more power than -exec
find . -name \*.css -print0 | xargs -0 grep -nH foo
</pre>
<h2>Conclusion</h2>
<p>By itself, <em>find</em> is only as good as say&#8230; Google Desktop. The real power, as with other shell tools, is the ability to combine with other tools seamlessly. Effective use of tools like <em>find</em> very often make the difference between an average programmer and one that is 10x more effective (actual multiples up for debate). </p>
<p>These are just <strong>some</strong> of the basic features of <em>find</em>. Take advice from <a href="http://www.css-tricks.com/" title="CSS Tricks">Chris Coyier</a> and use your new power responsibly. Find is a beautiful tool.</p>
<p class="update">Welcome to Eric Wendelin&#8217;s Blog! You&#8217;re guaranteed to get more quality tutorials like this one easily if you <a href="http://eriwen.com/feed/">subscribe via RSS</a></p>


<p>Related posts:<ol><li><a href='http://eriwen.com/tools/grep-is-a-beautiful-tool/' rel='bookmark' title='grep is a beautiful tool'>grep is a beautiful tool</a></li>
<li><a href='http://eriwen.com/tools/awk-is-a-beautiful-tool/' rel='bookmark' title='awk is a beautiful tool'>awk is a beautiful tool</a></li>
<li><a href='http://eriwen.com/tools/vim-is-a-beautiful-tool/' rel='bookmark' title='Vim is a beautiful tool'>Vim is a beautiful tool</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://eriwen.com/productivity/find-is-a-beautiful-tool/feed/</wfw:commentRss>
		<slash:comments>104</slash:comments>
		</item>
		<item>
		<title>8 steps to my personal Firefox setup for productivity</title>
		<link>http://eriwen.com/firefox/my-firefox-setup/</link>
		<comments>http://eriwen.com/firefox/my-firefox-setup/#comments</comments>
		<pubDate>Sat, 24 May 2008 13:31:42 +0000</pubDate>
		<dc:creator>Eric Wendelin</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[about-config]]></category>
		<category><![CDATA[userChrome]]></category>
		<category><![CDATA[userContent]]></category>

		<guid isPermaLink="false">http://eriwen.com/?p=51</guid>
		<description><![CDATA[I need to give you a bit a background so you can see what my priorities are when setting up my favorite browser. I am a computer programmer that deals with web stuff as well as back-end stuff. I am NOT a designer in general, mostly a coder. I am running Firefox 3 beta 5 (not RC1 yet) since it is compatible with almost all of my extensions. 

<img src="http://eriwen.com/images/ff-top.png" alt="Firefox 3 top bar" style="border: 0px none; padding: 0px;"/>

<h3>Step 1: My Theme</h3>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/4908" target="_blank">NASA Night Launch</a> - This has little effect on my productivity but I get asked about this more than anything else. I like the cool blackness and the fact that this theme is Firefox 3 compatible.</p> <a href="http://eriwen.com/firefox/my-firefox-setup/">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/backup-firefox/' rel='bookmark' title='A quick way to backup a Firefox extension or profile'>A quick way to backup a Firefox extension or profile</a></li>
<li><a href='http://eriwen.com/firefox/firefox-3-aboutconfig-hacks/' rel='bookmark' title='Cutting Edge: Exclusive Firefox 3 about:config hacks'>Cutting Edge: Exclusive Firefox 3 about:config hacks</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I need to give you a bit a background so you can see what my priorities are when setting up <a href="http://getfirefox.com" target="_blank">my favorite browser</a>. I am a computer programmer that deals with web stuff as well as back-end stuff. I am NOT a designer in general, mostly a coder. I am running <a href="http://www.mozilla.com/en-US/firefox/all-beta.html" target="_blank">Firefox 3 beta 5</a> (not RC1 yet) since it is compatible with almost all of my extensions. </p>
<p><img src="http://eriwen.com/images/ff-top.png" alt="Firefox 3 top bar" style="border: 0px none; padding: 0px;"/></p>
<h2>Step 1: My Theme</h2>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/4908" target="_blank">NASA Night Launch</a> &#8211; This has little effect on my productivity but I get asked about this more than anything else. I like the cool blackness and the fact that this theme is Firefox 3 compatible.</p>
<h2>Step 2: Get Extensions</h2>
<p><img src="http://eriwen.com/images/ff-sidebar-sm.png" alt="Firefox extension list" style="float:left; margin: 4px 20px 4px 0px;" />
<ul>
<li><s><a href="https://addons.mozilla.org/en-US/firefox/addon/1136" target="_blank">Adblock Filterset.G Updater</a> &#8211; Update ad killer</s></li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/1865" target="_blank">Adblock Plus</a> &#8211; Kill ads</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/1027" target="_blank">All-in-One Sidebar</a> &#8211; Really, really slick sidebar</li>
<li><a href="http://blog.delicious.com/blog/2008/04/firefox-3-delicious-and-you.html" target="_blank">Delicious Bookmarks</a> &#8211; I use <a href="http://del.icio.us/emwendelin" target="_blank">del.icio.us</a> for bookmarking <strong>everything</strong> so having this is a must. I basically switched to FF3 once this extension was compatible.</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/6622" target="_blank">DOM Inspector</a> &#8211; For all those tricky userChrome.css questions you give me ;)</li>
<li><a href="http://getfirebug.com" target="_blank">Firebug 1.2 Beta</a> &#8211; In case you haven&#8217;t heard there is a new beta with some more cool features!</li>
<li><a href="http://www.softwareishard.com/blog/?p=8" target="_blank">Firecookie 0.5beta</a> &#8211; Firebug extension that is now essential for cookie debugging</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/6366" target="_blank">FireGestures</a> &#8211; Simple mouse gestures extension. Compatible with FF3 unlike many others</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/1951" target="_blank">Fission</a> &#8211; Not a productivity enhancer, just cool to put my progress bar behind my address bar like Safari</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/6105" target="_blank">Keyconfig</a> &#8211; Configure everything to be a simple key command away! OK, you got me, the latest keyconfig is not compatible with FF3b5. Wait, what&#8217;s <a href="http://eriwen.com/downloads/keyconfig-20071212.2-fx+tb.xpi" target="_blank">this I made for you</a>?</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/3829" target="_blank'>Live HTTP Headers</a> &#8211; Analyze traffic. Useful to see <strong>exactly</strong> what is being POSTed and where.</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/60" target="_blank">Web Developer</a> &#8211; Another staple for anyone doing web development work. </li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/5239" target="_blank">XUL/Migemo</a> &#8211; Enhances search by allowing regex search with nice highlighting. Way better than I can describe in this one-liner.</li>
<li><a href-"https://addons.mozilla.org/en-US/firefox/addon/5369" target="_blank">YSlow</a> &#8211; Web performance analytics tool that works through Firebug. Another must-have.</li>
</ul>
<p>I also plan on using this extension when they are compatible with Firefox 3:</p>
<ul>
<li><a href="http://www.google.com/tools/firefox/browsersync/" target="_blank">Google Browser Sync</a> &#8211; Sync history, bookmarks, cookies, etc. across my many Firefox instances.</li>
</ul>
<h2>Step 3: Menu &amp; Interface Customization</h2>
<p>I right click and customize my top toolbar by dragging the back, forward, etc. buttons to the top, as well as the address bar and the search bar. <strong>I remove pretty much everything else and am left with only the Menu Bar and the Web Developer Toolbar on top.</strong></p>
<p>I first configure All-in-One Sidebar by making basically everything except &quot;Page Source&quot; open in the sidebar. I leave the hotkeys at their default values and enable the thin sidebar switch. I put a few buttons for things on my sidebar but really I use hotkeys to access everything on the sidebar. Ctrl-B gets me my searchable del.icio.us bookmarks, Ctrl-H for searchable history etc. More on that in <a href="http://eriwen.com/firefox/my-firefox-setup/#step7">Step 7</a></p>
<p>Last but not least, my status bar with Firebug, YSlow and Greasemonkey sits on the bottom. I also use the XUL/Migemo extension to freshen up my search, allowing it to use regular expressions and highlighting the text just like Safari. A lot of you have specific questions about this, so keep &#8216;em coming by <a href="http://eriwen.com/contact/" target="_blank">contacting me</a>.</p>
<h2>Step 4: userChrome.css</h2>
<p>You have probably already seen most of my userChrome.css file posted in a couple <a href="http://eriwen.com/firefox/firefox-3-chrome-tweaks/" target="_blank">earlier</a> <a href="http://eriwen.com/firefox/howto-tweak-chrome-for-a-cleaner-firefox/" target="_blank">posts</a>, you can just grab the <a href="http://eriwen.com/downloads/userChrome.css" target="_blank">file I use here</a> (Right-click to Save Link As&#8230;). Here are <a href="http://support.mozilla.com/en-US/kb/Editing+configuration+files#userChrome_css" target="_blank">instructions</a> just in case ;)</p>
<h2>Step 5: userContent.css</h2>
<p><img src="http://eriwen.com/images/ff-blank.png" alt="Firefox 3 about:blank" style="float:right; margin: 0px 0px 4px 8px;" />
<p>I am not going to post the thousands of lines of code in my userContent.css file, but you can download my personal <a href="http://eriwen.com/downloads/userContent.css" target="_blank">userContent.css here</a> (Right-click to Save Link As&#8230;). Allow me to give you the important bits &#8211; the titles are pretty self-explanatory:</p>
<ul>
<li><a href="http://userstyles.org/styles/1559" target="_blank">Digg.com &#8211; Dark gray design</a></li>
<li><a href="http://userstyles.org/styles/5867" target="_blank">GMail Redesigned</a></li>
<li><a href="http://userstyles.org/styles/6689" target="_blank">Dark Gray Google</a></li>
<li><a href="http://userstyles.org/styles/2433" target="_blank">about:blank &#8211; Dark Firefox</a></li>
</ul>
<p>Just like editing userChrome.css, and <a href="http://support.mozilla.com/en-US/kb/Editing+configuration+files#userContent_css" target="_blank">instructions are here</a>.
</p>
<h2>Step 6: about:config</h2>
<p>You might be surprised to learn that I don&#8217;t use all of the about:config entries that <a href="http://eriwen.com/firefox/firefox-3-aboutconfig-hacks/" target="_blank">I have posted</a>. Let&#8217;s go through the ones I DO use:</p>
<pre>
browser.cache.disk.capacity &raquo; 150000
browser.cache.offline.capacity &raquo; 20480
browser.download.manager.closeWhenDone &raquo; true
browser.search.openintab &raquo; true
browser.tabs.loadDivertedInBackground &raquo; true
browser.tabs.opentabfor.middleclick &raquo; false
browser.urlbar.hideGoButton &raquo; true
browser.urlbar.maxRichResults &raquo; 5
network.http.pipelining &raquo; true
network.http.proxy.pipelining &raquo; true
zoom.maxPercent &raquo; 400
</pre>
<p>I seem to remember there being more that I used with Firefox 2 but Firefox 3s interface just suits my needs more so I don&#8217;t have to do so much :) <a name="step7"></a></p>
<h2>Step 7: Special bookmarks</h2>
<p>Lifehacker provided me with some <a href="http://lifehacker.com/software/firefox/hack-attack-quick-access-firefox-settings-146031.php" target="_blank">really cool chrome bookmarks</a> that I use to quickly get to pretty much any Firefox setting quickly. Let me give you some examples: Ctrl-L goes to the URL bar, then I type &quot;opt&quot; to access Firefox options. Similarly, I can type &quot;gmonkey&quot; to access my greasemonkey scripts. <strong>You can also set this up yourself to access Live HTTP Headers and friends.</strong> Cool, huh?</p>
<h2>Step 8: Hotkeys etc.</h2>
<p>The point of many of these tweaks is to make everything available with few keystrokes. Of course, I set hotkeys for pretty much everything. Another really important part of my setup is <strong>bookmark keywords</strong>. I use this alongside del.icio.us to make my browsing super-efficient. When you hit Ctrl-D to enter a bookmark, make sure you have a short &quot;keyword&quot; so that you only have to type &quot;g&quot; and hit Enter to go to Google. </p>
<p>Use all these things and I think you will be a master web browser. What do you do to optimize your browsing? Which extensions? Let&#8217;s hear it!</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/backup-firefox/' rel='bookmark' title='A quick way to backup a Firefox extension or profile'>A quick way to backup a Firefox extension or profile</a></li>
<li><a href='http://eriwen.com/firefox/firefox-3-aboutconfig-hacks/' rel='bookmark' title='Cutting Edge: Exclusive Firefox 3 about:config hacks'>Cutting Edge: Exclusive Firefox 3 about:config hacks</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://eriwen.com/firefox/my-firefox-setup/feed/</wfw:commentRss>
		<slash:comments>14</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>

