<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Tom Purl's Web Site</title>
	
	<link>http://tompurl.com</link>
	<description>My '83 Datsun On The Side Of The Information Superhighway</description>
	<lastBuildDate>Fri, 28 Oct 2011 01:38:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain="tompurl.com" port="80" path="/?rsscloud=notify" registerProcedure="" protocol="http-post" />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Tom Purl's Web Site</title>
		<link>http://tompurl.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://tompurl.com/osd.xml" title="Tom Purl's Web Site" />
	
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/TomPurlsWebSite" /><feedburner:info uri="tompurlswebsite" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://tompurl.com/?pushpress=hub" /><feedburner:browserFriendly></feedburner:browserFriendly><item>
		<title>Exim + Gmail On Ubuntu</title>
		<link>http://tompurl.com/2011/09/17/exim-gmail-on-ubuntu/</link>
		<comments>http://tompurl.com/2011/09/17/exim-gmail-on-ubuntu/#comments</comments>
		<pubDate>Sat, 17 Sep 2011 16:10:32 +0000</pubDate>
		<dc:creator>Tom Purl</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[exim]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://tompurl.com/?p=357</guid>
		<description><![CDATA[This tutorial shows you how to set up a light-weight mail server on your Ubuntu system that can send mail to host-only (e.g. tom) and remote (e.g. tom@tompurl.com) addresses using Gmail as your SMTP server. So what the heck does that mean? We’re making it possible for you (and various programs on your computer) do the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tompurl.com&amp;blog=3216699&amp;post=357&amp;subd=tompurl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span class="Apple-style-span" style="font-size:13px;font-weight:normal;">This tutorial shows you how to set up a light-weight mail server on your Ubuntu system that can send mail to host-only (e.g. tom) and remote (e.g. <a href="mailto:tom%40tompurl.com">tom@tompurl.com</a>) addresses using Gmail as your SMTP server.</span></p>
<p>So what the heck does that mean? We’re making it possible for you (and various programs on your computer) do the following:</p>
<div>
<pre>$ echo "Hello!" | mail -s "This is cool" tom # Sent to /var/mail/tom spool
$ echo "Hello!" | mail -s "This is cool" tom@tompurl.com # Sent to my Gmail account</pre>
</div>
<p>So now you may be asking yourself “why anyone would want to so something like this on a desktop machine that isn’t a mail server? Can’t you just send email using programs like the Gmail web client and Thunderbird?”. You certainly can, but it’s not always the best choice.</p>
<p>For example, it you wanted to send an email message from a shell script, the easiest way to do that is to use the <strong>mail</strong> command above. Also, <strong>your system</strong> may want to send you a message if something weird happens, like a failed cronjob. Without a working mail server like Exim installed and configured, those messages are going to end up in <tt>/dev/null</tt>.</p>
<p>So let’s get started <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div id="prerequisites">
<h2>Prerequisites</h2>
<p>This tutorial is designed to work with <strong>Ubuntu Linux 11.04</strong>, but it <em>may</em> work with other versions of Ubuntu and Debian Linux.</p>
<p>Here’s all of the pertinent software versions that I’m using:</p>
<div>
<pre>exim4-base                4.74-1ubuntu1.2
exim4-config              4.74-1ubuntu1.2
exim4-daemon-light        4.74-1ubuntu1.2
libmailutils2             1:2.1+dfsg1-7build1
mailutils                 1:2.1+dfsg1-7build1
mutt                      1.5.21-2ubuntu3</pre>
</div>
<p>I used <a href="http://wiki.debian.org/GmailAndExim4">this tutorial on using Exim with Gmail</a> to set up outgoing mail. If my instructions below don’t work for you, then that tutorial may be able to help.</p>
</div>
<div id="software-installation">
<h2>Software Installation</h2>
<p>This part is super easy:</p>
<div>
<pre>$ sudo apt-get install exim4-base mailutils mutt</pre>
</div>
<p>Please note that we’re using <strong>exim</strong> (the Debian default) as our mail server instead of <strong>postfix</strong>, which is the default mail server in the Ubuntu world. You probably don’t care, and for 99% of you it shouldn’t matter. I’m just pointing it out because this is an Ubuntu-centric tutorial.</p>
<p>The <tt>mailutils</tt> package gives you a lightweight version of the exim daemon along with the <tt>mail</tt> and <tt>mailx</tt>programs, which are pretty important if you ever want to be notified by your system when something strange happens.</p>
<p>Finally, we’re installing <tt>mutt</tt>, which is a mail reader that you can use in a console. Please note that you will need to install this program (or something similar) if you want to read mail that is sent to you by your system.</p>
<p>Showing you how to use mutt is beyond the scope of this tutorial, but if you need some basic guidance, then I recommend <a href="http://mutt.blackfish.org.uk/">My First Mutt</a>.</p>
</div>
<div id="configuration">
<h2>Configuration</h2>
<p>First, let’s configure <tt>exim</tt> with <tt>debconf</tt> using the following command:</p>
<div>
<pre>$ sudo dpkg-reconfigure exim4-config</pre>
</div>
<p>You will now be presented with a configuration wizard. Here’s what I chose:</p>
<dl>
<dt><strong>Server Type</strong></dt>
<dd>smarthost + smtp</dd>
<dt><strong>System mail name</strong></dt>
<dd>&lt;your host name&gt;</dd>
<dt><strong>listening ip address</strong></dt>
<dd>127.0.0.1 ; ::1</dd>
<dt><strong>Other destinations</strong></dt>
<dd>&lt;your host name&gt;</dd>
<dt><strong>machines to relay for</strong></dt>
<dd>&lt;blank&gt;</dd>
<dt><strong>smarthost ip address</strong></dt>
<dd>smtp.gmail.com::587</dd>
<dt><strong>Hide local mail name</strong></dt>
<dd>No</dd>
<dt><strong>DNS Queries</strong></dt>
<dd>No</dd>
<dt><strong>Delivery method</strong></dt>
<dd>Mbox</dd>
<dt><strong>Split config?</strong></dt>
<dd>Yes</dd>
</dl>
<p>Next, execute the following command:</p>
<div>
<pre>$ chown root:Debian-exim /etc/exim4/passwd.client</pre>
</div>
<p>The only step left is to specify your Gmail password. Open <tt>/etc/exim4/passwd.client</tt> and add something like this at the bottom of the file:</p>
<div>
<pre>*.google.com:tom@tompurl.com:somethingClever</pre>
</div>
<p>Of course, you’ll want to replace the email address and password <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Please note that this config works with normal Gmail accounts and accounts that use Google Apps For Your Domain (like mine).</p>
</div>
<div id="testing">
<h2>Testing</h2>
<p>Now let’s run a couple of simple tests:</p>
<div>
<pre># Please replace "me" with your user account name and verify in mutt
$ echo test | mail -s "test" me # Sends mail to /var/mail/me spool
# Please replace "me@gmail.com" with your actual Gmail address
$ echo test | mail -s "test" me@gmail.com # verify using Gmail</pre>
</div>
</div>
<div id="conclusion">
<h2>Conclusion</h2>
<p>That’s it! I hope that I’ve been able to help a few other people</p>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tompurl.wordpress.com/357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tompurl.wordpress.com/357/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tompurl.wordpress.com/357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tompurl.wordpress.com/357/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tompurl.wordpress.com/357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tompurl.wordpress.com/357/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tompurl.wordpress.com/357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tompurl.wordpress.com/357/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tompurl.wordpress.com/357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tompurl.wordpress.com/357/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tompurl.wordpress.com/357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tompurl.wordpress.com/357/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tompurl.wordpress.com/357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tompurl.wordpress.com/357/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tompurl.com&amp;blog=3216699&amp;post=357&amp;subd=tompurl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tompurl.com/2011/09/17/exim-gmail-on-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b972ff5d62434623ade7ad88b02aa99?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">tpurl</media:title>
		</media:content>
	</item>
		<item>
		<title>Installing Graphite On Ubuntu 10.4 LTS</title>
		<link>http://tompurl.com/2011/08/12/installing-graphite-on-ubuntu-10-4-lts/</link>
		<comments>http://tompurl.com/2011/08/12/installing-graphite-on-ubuntu-10-4-lts/#comments</comments>
		<pubDate>Fri, 12 Aug 2011 02:39:32 +0000</pubDate>
		<dc:creator>Tom Purl</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[apm]]></category>
		<category><![CDATA[graphite]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://tompurl.com/?p=352</guid>
		<description><![CDATA[10/27/11 Update &#8211; The instructions below work with version 0.9.8 of Graphite. A new version (0.9.9) has been released that requires a few more steps. I haven&#8217;t had time to test out the new version myself yet, but I&#8217;ve been told that the following tutorial does a good job of showing you how to install [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tompurl.com&amp;blog=3216699&amp;post=352&amp;subd=tompurl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>10/27/11 Update</strong> &#8211; The instructions below work with version 0.9.8 of Graphite. A new version (0.9.9) has been released that requires a few more steps. I haven&#8217;t had time to test out the new version myself yet, but I&#8217;ve been told that <a title="How-to Install Graphite on Ubuntu" href="http://geek.michaelgrace.org/2011/09/how-to-install-graphite-on-ubuntu/comment-page-1/">the following tutorial</a> does a good job of showing you how to install the latest version.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>This tutorial shows you how I installed Graphite, a fantastic tool for for visualizing time-series data, on an Ubuntu 10.4 LTS system. The process is split up into 4 steps:</p>
<ul>
<li>Installing and testing Graphite and Carbon in “dev” mode</li>
<li>Integrating Graphite with Apache</li>
<li>Making Carbon a managed service</li>
<li>Password-protecting your Graphite site</li>
</ul>
<div id="installing-in-dev-mode">
<h2>Installing In Dev Mode</h2>
<p>By “dev” mode, I mean that we’re going to install, run and test Graphite and Carbon in a “quick-and-dirty” way. You will run all services using your personal account and you won’t integrate it with a web server (yet).</p>
<p>So why am I doing this? Well, usually it takes less time to set up an app this way, which saves me time when evaluating new software. Also, I find that you learn a little more about the “guts” of a new application when you start this way.</p>
<p>Of course, once you have evaluated Graphite and decided to install it on a separate system, you should skip the “Dev Mode” step and just install it as managed service (which I explain later).</p>
<div id="installation">
<h3>Installation</h3>
<p>First, let’s install everything that we can using <tt>apt-get</tt>:</p>
<div>
<pre>$ sudo apt-get install bzr python-cairo python-django</pre>
</div>
<p>The <tt>bzr</tt> program will be used to download the Graphite source files. The other packages will support Graphite at runtime.</p>
<p>Next downloaded the source and compile <strong>Graphite</strong>:</p>
<div>
<pre>$ cd ~/src
$ bzr branch lp:graphite
$ cd graphite
$ python ./setup.py build
$ sudo python ./setup.py install</pre>
</div>
<div>
<p>Note</p>
<p>The last step will install the executables under <tt>/opt/graphite</tt>.</p>
</div>
<p>Next, we’ll install <strong>Whisper</strong>, the custom database that Graphite uses:</p>
<div>
<pre>$ cd ~/src/graphite/whisper
$ python ./setup.py build
$ sudo python ./setup.py install</pre>
</div>
<p>Finally, let’s install <strong>Carbon</strong>. Carbon is a agent that listens for readings and writes them to the Whisper databases:</p>
<div>
<pre>$ cd ~/src/graphite/carbon
$ python ./setup.py build
$ sudo python ./setup.py install</pre>
</div>
<p>Now let’s configure Carbon:</p>
<div>
<pre>$ cd /opt/graphite/conf
$ sudo cp carbon.conf.example carbon.conf
$ sudo cp storage-schemas.conf.example storage-schemas.conf</pre>
</div>
<p>Please note that you will probably want to reconfigure the <tt>storage-schemas.conf</tt> file soon. We are using the defaults now because we just want to get a base system up-and-running.</p>
<p>Now, since we’re still in “dev” mode, let’s make our experience a little bit nicer by making your regular user account the owner of the <tt>/opt/grahite</tt> folder. This will make it easier for you to do things like change config options and restart services. Don’t worry – eventually we’re going to fix this:</p>
<div>
<pre>$ cd /opt
$ sudo chown -R myid:myid grahite</pre>
</div>
<p>Of course, you would replce the <strong>myid</strong> value with <strong>your login name</strong>.</p>
<p>Now we are ready to initialize the Whisper database. Execute the following command:</p>
<div>
<pre>$ cd /opt/graphite
$ PYTHONPATH=`pwd`/webapp:`pwd`/whisper python ./webapp/graphite/manage.py syncdb</pre>
</div>
<p>That last command will generate your initial databases <em>and</em> prompt you to create <strong>Django user</strong>. This user account will allow you to log into Graphite, and it is a web application user that is managed by the Django library. I recommend creating the user, especially if you are not very familiar with Django as a framework.</p>
<div>
<p>Note</p>
<p>Like most Django apps, you can manage this user and add others later by visiting <a href="http://your-graphite-url:8080/admin">http://your-graphite-url:8080/admin</a></p>
</div>
<p>OK, There’s one more configuration step that you need to run. Execute the following:</p>
<div>
<pre>$ echo DEBUG = True &gt; /opt/graphite/webapp/graphite/local_settings.py</pre>
</div>
</div>
<div id="testing">
<h3>Testing</h3>
<p>Now for the fun part. Let’s fire up the web UI:</p>
<div>
<pre>$ cd /opt/graphite
$ PYTHONPATH=`pwd`/whisper ./bin/run-graphite-devel-server.py --libs=`pwd`/webapp/ /opt/graphite/</pre>
</div>
<p>You should now be able to visit <tt>http://localhost:8080</tt> and see a very nice web application. If you’re hosting this application on a VM or separate machine, then simple replace “localhost” with the IP address of that machine.</p>
<p>The web app should now be running, but there’s not really any data yet. To do that, we need to do the following:</p>
<ol>
<li>Start carbon, which listens for data and writes it to the whisper databases</li>
<li>Start feeding it some data using using a test client.</li>
</ol>
<p>Number 1 is pretty easy:</p>
<div>
<pre>$ cd /opt/graphite
$ PYTHONPATH=`pwd`/whisper ./carbon/bin/carbon-cache.py --debug start</pre>
</div>
<p>Now that your web app and data collection daemon are running, let’s start feeding it some data:</p>
<div>
<pre>$ ~/src/graphite/examples/example-client.py</pre>
</div>
<p>This script will write create the following monitors in Graphite:</p>
<ul>
<li>Graphite -&gt; system -&gt; loadavg_15min</li>
<li>Graphite -&gt; system -&gt; loadavg_1min</li>
<li>Graphite -&gt; system -&gt; loadavg_5min</li>
</ul>
<p>Clicking on a monitor shows its values in the graph. Clicking on the same monitor again deselects it.</p>
<div>
<p>Note</p>
<p>If you’re not seeing any data immediately, don’t worry. Check it again in 5 minutes.</p>
</div>
<p>The example client writes data to Graphite once per minute, so you should start seeing results soon.</p>
</div>
</div>
<div id="integrating-with-apache">
<h2>Integrating With Apache</h2>
<p>Now that you know that Graphite and Carbon work, let’s make them both managed services. By that, I mean that I don’t want to have to start any daemons manually when I restart my system. Carbon and Graphite should just work. Also, Graphite will perform much better once it is hosted on an Apache instance.</p>
<div id="configuration">
<h3>Configuration</h3>
<p>First, let’s install the dependencies:</p>
<div>
<pre>$ sudo apt-get install apache2 libapache2-mod-wsgi</pre>
</div>
<p>We’re going to run our Graphite instance as a virtual host. The preferred way of doing this on Debian-based Linux distributions (like Ubuntu) is to create a vhost file and then enable it using the Debian Apache helpers. Lucky for us, there’s an example vhost file called <tt>~/src/grahite/examples/example-graphite-vhost.conf</tt>. Execute the following commands:</p>
<div>
<pre>$ cd ~/src/graphite/examples
$ cp example-graphite-vhost.conf graphite-vhost.conf</pre>
</div>
<p>Now make the following changes:</p>
<ul>
<li>Comment out the <strong>WSGISocketPrefix</strong> line. This value will be set in a different config file.</li>
<li>Change the <strong>@DJANGO_ROOT@</strong> value to <tt>/usr/lib/pymodules/python2.6/django</tt>.</li>
<li>If you don’t know what value to use with your <strong>ServerName</strong> property, then just leave it as <strong>graphite</strong>.</li>
</ul>
<p>Save your <tt>graphite-vhost.conf</tt> file and then deploy it using the following commands:</p>
<div>
<pre>$ sudo cp graphite-vhost.conf /etc/apache2/sites-available
$ sudo a2ensite graphite-vhost.conf</pre>
</div>
<p>That last command creates a symlink to your graphite-vhost.conf file in <tt>/etc/apache2/sites-enabled</tt> and then tells you if you need to restart Apache or simply reload it.</p>
<p>Now let’s take care of setting the <tt>WSGISocketPrefix</tt> value:</p>
<ul>
<li>Open the <tt>/etc/apache2/mods-available/wsgi.conf</tt> file using your favorite text editor.</li>
<li>Uncomment the <tt>WSGISocketPrefix</tt> line an leave the default value.</li>
</ul>
<p>One last thing before we reload Apache. The /opt/graphite directory is still owned by your id. You need to change everything so that is owned by the www-data user, which is the Apache user on Debian-based systems:</p>
<div>
<pre>$ cd /opt
$ sudo chown -R www-data:www-data grahite</pre>
</div>
<p>Now you can finally reload Apache using the following command:</p>
<div>
<pre>$ sudo /etc/init.d/apache reload</pre>
</div>
</div>
<div id="testing-and-a-short-servername-tutorial">
<h3>Testing (And A Short ServerName Tutorial)</h3>
<p>Now you should be able to visit your Graphite site using a URL that looks something like this:</p>
<ul>
<li><a href="http://servername/">http://ServerName</a></li>
</ul>
<p>If you know how the <strong>ServerName</strong> property in an Apache virtual host file works, then you will have no problem visiting the site, and you can jump to the next section. The rest of this section is for everyone else <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>If you <strong>don’t</strong> know how this property works, then you may try to test the Graphite site by visiting one of the following URL’s:</p>
<ul>
<li><a href="http://graphite.ip.address/">http://graphite.ip.address</a> # &lt;= Takes you to the default Apache “it works” page</li>
<li><a href="http://graphite.ip.address/graphite">http://graphite.ip.address/graphite</a> &lt;= 404</li>
</ul>
<p>So why can’t you see your Graphite site? Apache cares about lots of things in your request header, but the following 3 are especially important:</p>
<ul>
<li>The desired server IP address</li>
<li>The desired port</li>
<li>The ServerName value</li>
</ul>
<p>It uses these three values to determine which vhost it will invoke for a request. Your request has parts one and two, but part three is simply <strong>graphite.ip.address</strong>. Your request will therefore be handled by the default vhost in Ubuntu, which displays the “it works” page.</p>
<p>So we need to find a way to add the string <strong>graphite</strong> to our request header. The easiest way to do this is actually make the URL <a href="http://graphite/">http://graphite</a> point at our Graphite server. Here’s how you can do that:</p>
<ol>
<li>Open up your hosts file <strong>on your client running the web browser</strong></li>
<li>Add the word “graphite” as an alias for the machine hosting Graphite</li>
</ol>
<p>So, for example, let’s assume that you’re hosting Graphite on a machine that has IP address of 10.0.0.100, and let’s assume that this machine already has an alias of “web”. Here’s what your host file looks like <strong>before</strong> the change:</p>
<div>
<pre>10.0.0.100  web</pre>
</div>
<p>And here’s what it should look like after the change:</p>
<div>
<pre>10.0.0.100  web graphite</pre>
</div>
<div>
<p>Note</p>
<p>Remember, we’re making these host file changes on the client, NOT the server.</p>
</div>
<p>Now, when you visit <strong>http://graphite</strong>, you should see the proper web site.</p>
</div>
</div>
<div id="making-carbon-a-managed-service">
<h2>Making Carbon A Managed Service</h2>
<p>Now that the web app is running so well, let’s “fix” carbon so that we don’t have to manually start it each time we reboot the server.</p>
<p>Carbon doesn’t come with an init script, so I’ve been using the following crude version:</p>
<div>
<pre>#! /bin/sh
# /etc/init.d/carbon

# Some things that run always
touch /var/lock/carbon

GRAPHITE_HOME=/opt/graphite
CARBON_USER=www-data

# Carry out specific functions when asked to by the system
case "$1" in
    start)
        echo "Starting script carbon "
        su $CARBON_USER -c "cd $GRAPHITE_HOME"; su $CARBON_USR -c "$GRAPHITE_HOME/bin/carbon-cache.py start"
        ;;
    stop)
        echo "Stopping script carbon"
        su $CARBON_USER -c "cd $GRAPHITE_HOME"; su $CARBON_USR -c "$GRAPHITE_HOME/bin/carbon-cache.py stop"
        ;;
    *)
        echo "Usage: /etc/init.d/carbon {start|stop}"
        exit 1
        ;;
esac

exit 0</pre>
</div>
<p>Save this file as <tt>/etc/init.d/carbon</tt>, and then update rc.d using this command:</p>
<div>
<pre>$ sudo update-rc.d carbon defaults</pre>
</div>
<p>That’s it! You can now manage your carbon process using this script, and it will be automatically restarted when you reboot your machine.</p>
</div>
<div id="password-protecting-your-graphite-site">
<h2>Password-Protecting Your Graphite Site</h2>
<p>Let’s take stock of where we are:</p>
<ul>
<li>You installed Graphite and Carbon</li>
<li>You integrated Carbon with Apache</li>
<li>You made Carbon a managed service</li>
</ul>
<p>You now have everything necessary to run a “real” Graphite instance. If you don’t need anything else, then feel free to skip the rest of this tutorial.</p>
<p>For my needs, however, I needed one more thing. I needed to host my Graphite site on the world wide web, and I didn’t want just anyone poking in my system metrics. However, while Graphite may offer a <strong>Login</strong> link, it doesn’t give you the option of setting up a login page that can block non-authenticated access to the site.</p>
<p>Thankfully, there’s an easy way around this limitation. Apache gives you the ability to block non-authenticated access to a web site using the built-in security options. We’re going to manage security on our site using <strong>Basic authentication</strong>.</p>
<p>To do this, you first need to change your <tt>graphite-vhost.conf</tt> file. Add the following lines to the bottom of your file, just above the <strong>&lt;/VirtualHost&gt;</strong> line:</p>
<div>
<pre># Set up .htaccess security so that I can protect the site online.
&lt;Location "/"&gt;
    AuthType Basic
    AuthName "Under Construction"
    AuthUserFile /opt/graphite/sec/.mypasswds
    AuthGroupFile /opt/graphite/sec/.mygroups
    Require group managers
&lt;/Location&gt;</pre>
</div>
<p>Next, let’s create your <strong>AuthUserFile</strong> and your <strong>AuthGroupFile</strong>:</p>
<div>
<pre>$ cd /opt/graphite
$ sudo mkdir sec
$ sudo chown -R www-data:www-data ./sec
$ sudo htpasswd -c ./sec/.mypasswds some_user_name
(enter a strong password)
$ echo 'managers: tom' | sudo tee -a ./sec/.mygroups
$ sudo chmod -R 600 ./sec
$ sudo /etc/init.d/apache reload</pre>
</div>
<p>That’s it! Now restart your browser, and you should see a dialog box asking you to log in when visit your Graphite site.</p>
<div>
<p>Note</p>
<p>This configuration is only good enough to keep out the riff-raff. If you have more robust security needs, then you will want to look into using SSL.</p>
</div>
</div>
<div id="conclusion">
<h2>Conclusion</h2>
<p>I hope that some people find this tutorial to be helpful. If you find any errors or you have any suggestions, then please feel free to point them out in the comments.</p>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tompurl.wordpress.com/352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tompurl.wordpress.com/352/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tompurl.wordpress.com/352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tompurl.wordpress.com/352/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tompurl.wordpress.com/352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tompurl.wordpress.com/352/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tompurl.wordpress.com/352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tompurl.wordpress.com/352/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tompurl.wordpress.com/352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tompurl.wordpress.com/352/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tompurl.wordpress.com/352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tompurl.wordpress.com/352/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tompurl.wordpress.com/352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tompurl.wordpress.com/352/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tompurl.com&amp;blog=3216699&amp;post=352&amp;subd=tompurl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tompurl.com/2011/08/12/installing-graphite-on-ubuntu-10-4-lts/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b972ff5d62434623ade7ad88b02aa99?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">tpurl</media:title>
		</media:content>
	</item>
		<item>
		<title>GNU Screen Sugar</title>
		<link>http://tompurl.com/2011/08/02/gnu-screen-sugar/</link>
		<comments>http://tompurl.com/2011/08/02/gnu-screen-sugar/#comments</comments>
		<pubDate>Tue, 02 Aug 2011 00:52:29 +0000</pubDate>
		<dc:creator>Tom Purl</dc:creator>
				<category><![CDATA[*Cough*Plug*Cough*]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[screen]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://tompurl.com/?p=348</guid>
		<description><![CDATA[I don’t usually advertise my Github projects on this blog, but I thought that this one might actually be kinda useful to you if you like GNU Screen: tompurl/Scrugar Basically, it’s a couple of functions and aliases that I use to make it easier to use Screen. A few of my friends have found them to be [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tompurl.com&amp;blog=3216699&amp;post=348&amp;subd=tompurl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I don’t usually advertise <a href="http://github.com/tompurl">my Github projects</a> on this blog, but I thought that this one might actually be kinda useful to you if you like <a title="GNU Screen on Wikipedia" href="http://en.wikipedia.org/wiki/GNU_Screen">GNU Screen</a>:</p>
<ul>
<li><a href="https://github.com/tompurl/scrugar">tompurl/Scrugar</a></li>
</ul>
<p>Basically, it’s a couple of functions and aliases that I use to make it easier to use Screen. A few of my friends have found them to be pretty useful, so I decided to share them.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tompurl.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tompurl.wordpress.com/348/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tompurl.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tompurl.wordpress.com/348/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tompurl.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tompurl.wordpress.com/348/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tompurl.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tompurl.wordpress.com/348/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tompurl.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tompurl.wordpress.com/348/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tompurl.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tompurl.wordpress.com/348/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tompurl.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tompurl.wordpress.com/348/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tompurl.com&amp;blog=3216699&amp;post=348&amp;subd=tompurl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tompurl.com/2011/08/02/gnu-screen-sugar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b972ff5d62434623ade7ad88b02aa99?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">tpurl</media:title>
		</media:content>
	</item>
		<item>
		<title>Tab Sweep – 6/9/11</title>
		<link>http://tompurl.com/2011/06/10/tab-sweep-6911/</link>
		<comments>http://tompurl.com/2011/06/10/tab-sweep-6911/#comments</comments>
		<pubDate>Fri, 10 Jun 2011 01:43:08 +0000</pubDate>
		<dc:creator>Tom Purl</dc:creator>
				<category><![CDATA[Tab Sweep]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[rsa]]></category>
		<category><![CDATA[syslog]]></category>
		<category><![CDATA[joel-spolsky]]></category>
		<category><![CDATA[coffeescript]]></category>
		<category><![CDATA[hadoop]]></category>
		<category><![CDATA[scalability]]></category>

		<guid isPermaLink="false">https://tompurl.wordpress.com/?p=345</guid>
		<description><![CDATA[RSA finally comes clean: SecurID is compromised To me, this is probably the biggest news is IT and banking so far this year. I sure hope that most banks can start using the new keyfobs before the attackers multiply and become more advanced. tags: security rsa tab-sweep-110609 Logging, Log File Rotation, and Syslog Tutorial Great, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tompurl.com&amp;blog=3216699&amp;post=345&amp;subd=tompurl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<ul class="diigo-linkroll">
<li>
<p class="diigo-link"><a href="http://arstechnica.com/security/news/2011/06/rsa-finally-comes-clean-securid-is-compromised.ars">RSA finally comes clean: SecurID is compromised</a></p>
<p class="diigo-description">To me, this is probably the biggest news is IT and banking so far this year. I sure hope that most banks can start using the new keyfobs before the attackers multiply and become more advanced.</p>
<p class="diigo-tags">tags: <a href="http://www.diigo.com/user/tepurl/security">security</a> <a href="http://www.diigo.com/user/tepurl/rsa">rsa</a> <a href="http://www.diigo.com/user/tepurl/tab-sweep-110609">tab-sweep-110609</a></p>
</li>
<li>
<p class="diigo-link"><a href="http://content.hccfl.edu/pollock/AUnix2/Logging.htm">Logging, Log File Rotation, and Syslog Tutorial</a></p>
<p class="diigo-description">Great, in-depth tutorial on using syslog with your applications. If you are running software on a Unix or Linux-based system, then you definitely need to check this out.</p>
<p class="diigo-tags">tags: <a href="http://www.diigo.com/user/tepurl/logging">logging</a> <a href="http://www.diigo.com/user/tepurl/syslog">syslog</a> <a href="http://www.diigo.com/user/tepurl/administration">administration</a> <a href="http://www.diigo.com/user/tepurl/tab-sweep-110609">tab-sweep-110609</a></p>
</li>
<li>
<p class="diigo-link"><a href="http://www.dbms2.com/2011/06/04/dirty-data-stored-dirt-cheap/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+dbms2%2Ffeed+%28DBMS2+--+DataBase+Management+System+Services%29&amp;utm_content=Google+Reader">Dirty data, stored dirt cheap | DBMS 2 : DataBase Management System Services</a></p>
<p class="diigo-description">This was a very good article on why you would want to use NoSQL databases like Hadoop to manage verbose, &#8220;cheap&#8221; information. I would be interested in seeing what it would take to use it to aggregate logs.</p>
<p class="diigo-tags">tags: <a href="http://www.diigo.com/user/tepurl/logging">logging</a> <a href="http://www.diigo.com/user/tepurl/administration">administration</a> <a href="http://www.diigo.com/user/tepurl/hadoop">hadoop</a> <a href="http://www.diigo.com/user/tepurl/nosql">nosql</a> <a href="http://www.diigo.com/user/tepurl/tab-sweep-110609">tab-sweep-110609</a></p>
</li>
<li>
<p class="diigo-link"><a href="http://teddziuba.com/2008/04/im-going-to-scale-my-foot-up-y.html">I&#8217;m Going To Scale My Foot Up Your Ass</a></p>
<p class="diigo-description">Great article on the basics of performance and scalability, told in a crude in hilarious way.</p>
<p class="diigo-tags">tags: <a href="http://www.diigo.com/user/tepurl/web">web</a> <a href="http://www.diigo.com/user/tepurl/architecture">architecture</a> <a href="http://www.diigo.com/user/tepurl/performance">performance</a> <a href="http://www.diigo.com/user/tepurl/humor">humor</a> <a href="http://www.diigo.com/user/tepurl/tab-sweep-110609">tab-sweep-110609</a></p>
</li>
<li>
<p class="diigo-link"><a href="http://ricardo.cc/2011/06/02/10-CoffeeScript-One-Liners-to-Impress-Your-Friends.html">10 CoffeeScript One Liners to Impress Your Friends</a></p>
<p class="diigo-description">I know it&#8217;s lame to already like CoffeeScript, but it really is pretty cool, and I wouldn&#8217;t be surprised if it becomes significantly more popular very soon.</p>
<p class="diigo-tags">tags: <a href="http://www.diigo.com/user/tepurl/coffeescript">coffeescript</a> <a href="http://www.diigo.com/user/tepurl/programming">programming</a> <a href="http://www.diigo.com/user/tepurl/javascript">javascript</a> <a href="http://www.diigo.com/user/tepurl/tab-sweep-110609">tab-sweep-110609</a></p>
</li>
<li>
<p class="diigo-link"><a href="http://www.joelonsoftware.com/items/2007/09/18.html">Strategy Letter VI &#8211; Joel on Software</a></p>
<p class="diigo-description">Great article that predicts that most apps in the future will be giant and written in javascript.</p>
<p class="diigo-tags">tags: <a href="http://www.diigo.com/user/tepurl/joel-spolsky">joel-spolsky</a> <a href="http://www.diigo.com/user/tepurl/javascript">javascript</a> <a href="http://www.diigo.com/user/tepurl/lotus">lotus</a> <a href="http://www.diigo.com/user/tepurl/tab-sweep-110609">tab-sweep-110609</a></p>
</li>
<li>
<p class="diigo-link"><a href="http://www.joelonsoftware.com/items/2006/06/16.html">My First BillG Review &#8211; Joel on Software</a></p>
<p class="diigo-description">I stumbled across this article when I was looking for something else on Joel&#8217;s site. I read this years ago, and it&#8217;s definitely one of my favorite business stories ever. And if you still believe that non-technical people can run technical organizations, then this is required reading.</p>
<p class="diigo-tags">tags: <a href="http://www.diigo.com/user/tepurl/humor">humor</a> <a href="http://www.diigo.com/user/tepurl/technology">technology</a> <a href="http://www.diigo.com/user/tepurl/bill-gates">bill-gates</a> <a href="http://www.diigo.com/user/tepurl/microsoft">microsoft</a> <a href="http://www.diigo.com/user/tepurl/joel-spolsky">joel-spolsky</a> <a href="http://www.diigo.com/user/tepurl/tab-sweep-110609">tab-sweep-110609</a></p>
</li>
<li>
<p class="diigo-link"><a href="https://github.com/jruby/jruby/wiki/C-Extension-Alternatives">C Extension Alternatives &#8211; GitHub</a></p>
<p class="diigo-description">This is just a great resource for anyone writing an app with Jruby.</p>
<p class="diigo-tags">tags: <a href="http://www.diigo.com/user/tepurl/jruby">jruby</a> <a href="http://www.diigo.com/user/tepurl/ruby">ruby</a> <a href="http://www.diigo.com/user/tepurl/alternative">alternative</a> <a href="http://www.diigo.com/user/tepurl/programming">programming</a> <a href="http://www.diigo.com/user/tepurl/tab-sweep-110609">tab-sweep-110609</a></p>
</li>
</ul>
<p class="diigo-ps">Posted from <a href="http://www.diigo.com">Diigo</a>. The rest of my favorite links are <a href="http://www.diigo.com/user/tepurl">here</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tompurl.wordpress.com/345/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tompurl.wordpress.com/345/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tompurl.wordpress.com/345/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tompurl.wordpress.com/345/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tompurl.wordpress.com/345/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tompurl.wordpress.com/345/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tompurl.wordpress.com/345/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tompurl.wordpress.com/345/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tompurl.wordpress.com/345/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tompurl.wordpress.com/345/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tompurl.wordpress.com/345/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tompurl.wordpress.com/345/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tompurl.wordpress.com/345/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tompurl.wordpress.com/345/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tompurl.com&amp;blog=3216699&amp;post=345&amp;subd=tompurl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tompurl.com/2011/06/10/tab-sweep-6911/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b972ff5d62434623ade7ad88b02aa99?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">tpurl</media:title>
		</media:content>
	</item>
		<item>
		<title>Tab Sweep – Lots Of Stuff, Lots of Themes</title>
		<link>http://tompurl.com/2011/06/03/tab-sweep-lots-of-stuff-lots-of-themes/</link>
		<comments>http://tompurl.com/2011/06/03/tab-sweep-lots-of-stuff-lots-of-themes/#comments</comments>
		<pubDate>Fri, 03 Jun 2011 01:55:00 +0000</pubDate>
		<dc:creator>Tom Purl</dc:creator>
				<category><![CDATA[Tab Sweep]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[nosql]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[trinidad]]></category>

		<guid isPermaLink="false">https://tompurl.wordpress.com/?p=343</guid>
		<description><![CDATA[No Code Is Sometimes Best &#8211; Head First Labs I would always rather write something the easy and elegant way and profile it than write it from scratch by default. tags: programming style tab-sweep-110602 Why you would want an appliance &#8211; and when you wouldn&#8217;t &#124; DBMS&#160;2 : DataBase Management System Services tags: database nosql [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tompurl.com&amp;blog=3216699&amp;post=343&amp;subd=tompurl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<ul class="diigo-linkroll">
<li>
<p class="diigo-link"><a href="http://blogs.oreilly.com/headfirst/2011/05/no-code-is-sometimes-best.html?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+headfirst-oreillymedia+%28Head+First+-+O%27Reilly+Media%2C+Inc.%29&amp;utm_content=Google+Reader">No Code Is Sometimes Best &#8211; Head First Labs</a></p>
<p class="diigo-description">I would always rather write something the easy and elegant way and profile it than write it from scratch by default.</p>
<p class="diigo-tags"><span>tags:</span>                        <a href="http://www.diigo.com/user/tepurl/programming">programming</a>             <a href="http://www.diigo.com/user/tepurl/style">style</a>             <a href="http://www.diigo.com/user/tepurl/tab-sweep-110602">tab-sweep-110602</a></p>
</li>
<li>
<p class="diigo-link"><a href="http://www.dbms2.com/2011/06/02/why-you-would-want-an-appliance-and-when-you-wouldnt/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+dbms2%2Ffeed+%28DBMS2+--+DataBase+Management+System+Services%29&amp;utm_content=Google+Reader">Why you would want an appliance &#8211; and when you wouldn&#8217;t | DBMS&nbsp;2 : DataBase Management System Services</a></p>
<p class="diigo-tags"><span>tags:</span>                        <a href="http://www.diigo.com/user/tepurl/database">database</a>             <a href="http://www.diigo.com/user/tepurl/nosql">nosql</a>             <a href="http://www.diigo.com/user/tepurl/hadoop">hadoop</a>             <a href="http://www.diigo.com/user/tepurl/tab-sweep-110602">tab-sweep-110602</a></p>
</li>
<li>
<p class="diigo-link"><a href="http://ubuntuforums.org/showthread.php?t=263385">HowTo: Remap Caps_Lock as Escape (Nice for Vim) &#8211; Ubuntu Forums</a></p>
<p class="diigo-description">I switched to Xfce from Gnome after upgrading to Ubuntu 11.04, and this tip gives you a great, cross-window-manager way of remapping your keys.</p>
<p class="diigo-tags"><span>tags:</span>                        <a href="http://www.diigo.com/user/tepurl/xfce">xfce</a>             <a href="http://www.diigo.com/user/tepurl/linux">linux</a>             <a href="http://www.diigo.com/user/tepurl/keyboard">keyboard</a>             <a href="http://www.diigo.com/user/tepurl/tab-sweep-110602">tab-sweep-110602</a></p>
</li>
<li>
<p class="diigo-link"><a href="http://www.linux.com/learn/tutorials/442456-how-to-scan-and-ocr-like-a-pro-with-open-source-tools">How to scan and OCR like a pro with open source tools | Linux.com</a></p>
<p class="diigo-description">Outstanding tutorial on converting a &quot;dead-tree&quot; book into a text file. These are some great tips for that can be used for &quot;OCR-ing&quot; any content on Linux.</p>
<p class="diigo-tags"><span>tags:</span>                        <a href="http://www.diigo.com/user/tepurl/project-scan-book">project-scan-book</a>             <a href="http://www.diigo.com/user/tepurl/linux">linux</a>             <a href="http://www.diigo.com/user/tepurl/ocr">ocr</a>             <a href="http://www.diigo.com/user/tepurl/tiff">tiff</a>             <a href="http://www.diigo.com/user/tepurl/tab-sweep-110602">tab-sweep-110602</a></p>
</li>
<li>
<p class="diigo-link"><a href="http://www.dbms2.com/2011/05/29/when-to-use-relational-database-management-system/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+dbms2%2Ffeed+%28DBMS2+--+DataBase+Management+System+Services%29&amp;utm_content=Google+Reader">When it&#8217;s still best to use a relational DBMS | DBMS&nbsp;2 : DataBase Management System Services</a></p>
<p class="diigo-description">Yet another great article from the &quot;DBMS 2&quot; author. I would recommend this article to anyone who wants to gain a basic, high-level understanding of NOSQL databases.</p>
<p class="diigo-tags"><span>tags:</span>                        <a href="http://www.diigo.com/user/tepurl/database">database</a>             <a href="http://www.diigo.com/user/tepurl/nosql">nosql</a>             <a href="http://www.diigo.com/user/tepurl/tab-sweep-110602">tab-sweep-110602</a></p>
</li>
<li>
<p class="diigo-link"><a href="https://agilewarrior.wordpress.com/2011/05/28/how-facebook-pushes-new-code-live">How Facebook pushes new code live &laquo; The Agile Warrior</a></p>
<p class="diigo-tags"><span>tags:</span>                        <a href="http://www.diigo.com/user/tepurl/video">video</a>             <a href="http://www.diigo.com/user/tepurl/to-watch">to-watch</a>             <a href="http://www.diigo.com/user/tepurl/tab-sweep-110602">tab-sweep-110602</a></p>
</li>
<li>
<p class="diigo-link"><a href="http://stevelosh.com/blog/2011/05/paper-free/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+stevelosh+%28Steve+Losh%29&amp;utm_content=Google+Reader">Going Paper-Free for $220 / Steve Losh</a></p>
<p class="diigo-description">Great article for &quot;going paperless&quot; on the cheap. Too bad it doesn&#8217;t work with Linux though.</p>
<p class="diigo-tags"><span>tags:</span>                        <a href="http://www.diigo.com/user/tepurl/scanning">scanning</a>             <a href="http://www.diigo.com/user/tepurl/document-management">document-management</a>             <a href="http://www.diigo.com/user/tepurl/tab-sweep-110602">tab-sweep-110602</a></p>
</li>
<li>
<p class="diigo-link"><a href="http://www.rubyinside.com/tips-hiring-ruby-web-developers-4757.html?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+RubyInside+%28Ruby+Inside%29&amp;utm_content=Google+Reader">Practical Tips for Hiring Ruby Web Developers</a></p>
<p class="diigo-description">This is some great, practical advice for creating job descriptions that appeal to high-quality developers. I&#8217;ve used tips like this numerous times when creating job posts.</p>
<p class="diigo-tags"><span>tags:</span>                        <a href="http://www.diigo.com/user/tepurl/article">article</a>             <a href="http://www.diigo.com/user/tepurl/to-read">to-read</a>             <a href="http://www.diigo.com/user/tepurl/tab-sweep-110602">tab-sweep-110602</a></p>
</li>
<li>
<p class="diigo-link"><a href="http://www.infoq.com/news/2011/05/jruby-ey-jruby-lint">InfoQ: JRuby Roundup: JRuby on EY AppCloud, JRuby-Lint, JRuby Delegates</a></p>
<p class="diigo-description">Wonderful summary of some new developments in the Jruby community. And with Trinidad on EY now, it&#8217;s easier than ever to rapidly develop real Jruby-on-Rails apps.</p>
<p class="diigo-tags"><span>tags:</span>                        <a href="http://www.diigo.com/user/tepurl/jruby">jruby</a>             <a href="http://www.diigo.com/user/tepurl/jruby-lint">jruby-lint</a>             <a href="http://www.diigo.com/user/tepurl/ey">ey</a>             <a href="http://www.diigo.com/user/tepurl/trinidad">trinidad</a>             <a href="http://www.diigo.com/user/tepurl/tab-sweep-110602">tab-sweep-110602</a></p>
</li>
<li>
<p class="diigo-link"><a href="http://www.droidforums.net/forum/droid-audio-video/30269-cant-get-music-show-up-my-music-player.html">Can&#8217;t get music to show up in my music player &#8211; Droid Forum &#8211; Verizon Droid &amp; the Motorola Droid Forum</a></p>
<p class="diigo-description">I can&#8217;t believe that you have to install an app to make your phone recognize the mp3&#8242;s that are stored on it.</p>
<p class="diigo-tags"><span>tags:</span>                        <a href="http://www.diigo.com/user/tepurl/android">android</a>             <a href="http://www.diigo.com/user/tepurl/music">music</a>             <a href="http://www.diigo.com/user/tepurl/tab-sweep-110602">tab-sweep-110602</a></p>
</li>
<li>
<p class="diigo-link"><a href="http://stackoverflow.com/questions/570984/how-can-i-gzip-standard-in-to-a-file-and-also-print-standard-in-to-standard-out">linux &#8211; How can I gzip standard in to a file and also print standard in to standard out? &#8211; Stack Overflow</a></p>
<p class="diigo-description">Yet another stupid Linux trick that *really* came in handy the other day.</p>
<p class="diigo-tags"><span>tags:</span>                        <a href="http://www.diigo.com/user/tepurl/unix">unix</a>             <a href="http://www.diigo.com/user/tepurl/linux">linux</a>             <a href="http://www.diigo.com/user/tepurl/administration">administration</a>             <a href="http://www.diigo.com/user/tepurl/command-line">command-line</a>             <a href="http://www.diigo.com/user/tepurl/tab-sweep-110602">tab-sweep-110602</a></p>
</li>
</ul>
<p class="diigo-ps">Posted from <a href="http://www.diigo.com">Diigo</a>. The rest of my favorite links are <a href="http://www.diigo.com/user/tepurl">here</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tompurl.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tompurl.wordpress.com/343/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tompurl.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tompurl.wordpress.com/343/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tompurl.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tompurl.wordpress.com/343/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tompurl.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tompurl.wordpress.com/343/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tompurl.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tompurl.wordpress.com/343/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tompurl.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tompurl.wordpress.com/343/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tompurl.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tompurl.wordpress.com/343/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tompurl.com&amp;blog=3216699&amp;post=343&amp;subd=tompurl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tompurl.com/2011/06/03/tab-sweep-lots-of-stuff-lots-of-themes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b972ff5d62434623ade7ad88b02aa99?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">tpurl</media:title>
		</media:content>
	</item>
		<item>
		<title>Writing With Mind Maps</title>
		<link>http://tompurl.com/2011/05/27/writing-with-mind-maps/</link>
		<comments>http://tompurl.com/2011/05/27/writing-with-mind-maps/#comments</comments>
		<pubDate>Fri, 27 May 2011 02:46:01 +0000</pubDate>
		<dc:creator>Tom Purl</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[brainstorming]]></category>
		<category><![CDATA[freemind]]></category>
		<category><![CDATA[mind-mapping]]></category>
		<category><![CDATA[writing]]></category>
		<category><![CDATA[xmind]]></category>

		<guid isPermaLink="false">http://tompurl.com/?p=332</guid>
		<description><![CDATA[I&#8217;ve been using mind maps to help me collect my ideas for a couple of years now and I find them to be an invaluable tool. I use them at home and work to do things like create document outlines, plan projects, and brainstorm ideas. However, it always surprises me to see that very few [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tompurl.com&amp;blog=3216699&amp;post=332&amp;subd=tompurl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:left;" align="CENTER">I&#8217;ve been using mind maps to help me collect my ideas for a couple of years now and I find them to be an invaluable tool. I use them at home and work to do things like create document outlines, plan projects, and brainstorm ideas.</p>
<p>However, it always surprises me to see that very few other people use them. I therefore decided to put together a small tutorial on creating mind maps. I hope that it helps a few other people <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>What&#8217;s A Mind Map?</h2>
<p>A mind map is a visualization of a brain dump. Sound weird? Here&#8217;s what I mean.</p>
<p>Often, when we are thinking about a big idea (e.g. how will I write this essay, should I pursue this business opportunity, etc.), we have lots of related ideas floating around in our heads. Trying to evaluate and flesh-out all of these ideas in our heads can be very difficult. First, focusing on one idea for a long time can cause you to forget about the other ideas. Second, it&#8217;s often hard to see the big picture as your big idea gets bigger and bigger.</p>
<p>So it helps if you can actually write all of these ideas down and organize them. The problem is that, in the US, we are trained to do this will a bulleted list. It&#8217;s still better than not writing down your ideas, but the format is not very conducive to organizing lots of little, loosely-related pieces of information.</p>
<p><strong>Mind maps</strong> are a much better tool. They allow you to do the following</p>
<ul>
<li>Record your ideas</li>
<li>Show how the ideas are related in a simple, lightweight and intuitive way</li>
<li>See the big picture of your big idea.</li>
</ul>
<p>So why would you need to use something like this? Here&#8217;s a few examples:</p>
<ul>
<li>Brainstorming Session (either by yourself or with a group)</li>
<li>Writing
<ul>
<li>Mind maps are a <strong>great </strong>way to gather and organize information for an outline.</li>
</ul>
</li>
</ul>
<h2>Mini-Tutorial</h2>
<p>Ok, so how do you do it? Here&#8217;s a quick example. Let&#8217;s assume that you wanted to write a blog post about a great new recipe that you invented. You don&#8217;t know what to include and you don&#8217;t want to miss any important ideas, so you decide to create a mind map.</p>
<p>First, you need some way of recording your mind map. Some of the most useful mind maps that I have every created have been done with a piece of paper and a pencil. However, if I get a choice, I prefer using a program called <a href="http://www.xmind.net/">Xmind</a>. There&#8217;s a free version that is very powerful and easy to use.</p>
<p>Next, you need a <strong>main idea</strong>. This is the idea that is at the center of all of your other ideas. In this example, the main idea would be something like “Pulled Pork Blog Recipe”. You would then record your idea in your mind map like this:</p>
<p><a href="http://tompurl.files.wordpress.com/2011/05/main_idea.png"><img class="aligncenter size-full wp-image-333" title="main_idea" src="http://tompurl.files.wordpress.com/2011/05/main_idea.png?w=256&#038;h=165" alt="" width="256" height="165" /></a></p>
<p>Next, you&#8217;ll want to create some <strong>sub-nodes </strong>or <strong>subtopics</strong>. These are simply “child” nodes of the main idea. Here&#8217;s an example of what you may user for a blog article:</p>
<p><a href="http://tompurl.files.wordpress.com/2011/05/main_idea-with-subnodes.png"><img class="aligncenter size-full wp-image-338" title="main_idea-with-subnodes" src="http://tompurl.files.wordpress.com/2011/05/main_idea-with-subnodes.png?w=594&#038;h=193" alt="" width="594" height="193" /></a></p>
<p>This is the “model” that you can now use to organize your thoughts. As you can see, it&#8217;s basically a stream of conciousness. Your version of this map would probably look a little different.</p>
<p>So now you can just create child nodes of the child nodes and let your mind wander. Here&#8217;s an example of a complete mind map that you might use for this type of blog post:</p>
<p><a href="http://tompurl.files.wordpress.com/2011/05/pulled-pork-blog-recipe-example1.png"><img class="aligncenter size-full wp-image-339" title="Pulled Pork Blog Recipe Example" src="http://tompurl.files.wordpress.com/2011/05/pulled-pork-blog-recipe-example1.png?w=594&#038;h=152" alt="" width="594" height="152" /></a></p>
<p>This format may seem a little strange to you, but that&#8217;s ok. Most of the time, mind maps will only be used by the owner, so they only have to make sense to the owner. So use the structure and format that works best for you.</p>
<p>Ok, so now you have a complete mind map. What can you do with it?</p>
<ul>
<li><strong>Document</strong>: If the goal was to publish a document, then the mind map could either be that document or help you create that document. For example, you could use the <strong>outline</strong> node in the example above to help you write a blog post.</li>
<li><strong>Decision</strong>: Sometimes, the only thing that is “created” by a mind map is a decision. For example, I once had an idea for creating a web application that I would run as a side business. When the idea was in my head, it seemed great. However, once I got all of my ideas down into a mind map, it was clear to me that this idea had been done before and that the market was already saturated.</li>
</ul>
<h2>More On Formatting</h2>
<p>Chances are that your mind is “wired” a little differently than anyone else&#8217;s mind. And since a mind map is usually a brain dump, your structure and format will be unique.</p>
<p>So in other words, don&#8217;t sweat the format <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Besides, if you are using a program like Xmind to create your map, then you have the freedom to move your nodes around if change your mind about the structure.</p>
<p>One final note on formatting. If you are creating a document that has to be published, then it probably isn&#8217;t a mind map, even if you use a mind-mapping tool like Xmind to create it. Mind maps are great for <strong>creating documents and ideas, not for communicating with large groups of people</strong>.</p>
<h2>Resources</h2>
<p>Here&#8217;s some documentation that can help you get started with mind-mapping.</p>
<ul>
<li>The mind map (<a title="Mind Map Image (PNG)" href="http://dl.dropbox.com/u/4368842/Blog-Media/mind-map-article/Writing%20Using%20Mind%20Maps.png" target="_blank">.png</a>, <a title="Mind map xmind file" href="http://dl.dropbox.com/u/4368842/Blog-Media/mind-map-article/Writing%20Using%20Mind%20Maps.xmind" target="_blank">.xmind</a>) that was used to create this blog post.
<ul>
<li>That&#8217;s right, I created a mind map to help me write my blog post about mind-mapping. Feel free to take a look!</li>
</ul>
</li>
<li>Software
<ul>
<li><a href="http://www.xmind.net/">Xmind</a></li>
<li><a title="Freemind home page" href="http://freemind.sourceforge.net/" target="_blank">Freemind</a></li>
<li>There are loads of non-free mind-mapping tools, but I&#8217;ve never used one so I can&#8217;t comment on them.</li>
</ul>
</li>
<li>Web Sites
<ul>
<li><a href="http://www.xmind.net/">Xmind.net</a> has some great examples of mind maps that users have uploaded. Check it out if you want to see what is possible.</li>
</ul>
</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tompurl.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tompurl.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tompurl.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tompurl.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tompurl.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tompurl.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tompurl.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tompurl.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tompurl.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tompurl.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tompurl.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tompurl.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tompurl.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tompurl.wordpress.com/332/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tompurl.com&amp;blog=3216699&amp;post=332&amp;subd=tompurl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tompurl.com/2011/05/27/writing-with-mind-maps/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b972ff5d62434623ade7ad88b02aa99?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">tpurl</media:title>
		</media:content>

		<media:content url="http://tompurl.files.wordpress.com/2011/05/main_idea.png" medium="image">
			<media:title type="html">main_idea</media:title>
		</media:content>

		<media:content url="http://tompurl.files.wordpress.com/2011/05/main_idea-with-subnodes.png" medium="image">
			<media:title type="html">main_idea-with-subnodes</media:title>
		</media:content>

		<media:content url="http://tompurl.files.wordpress.com/2011/05/pulled-pork-blog-recipe-example1.png" medium="image">
			<media:title type="html">Pulled Pork Blog Recipe Example</media:title>
		</media:content>
	</item>
		<item>
		<title>Tab Sweep – Lots of Java With A Dash Of Ruby, JS and KSH</title>
		<link>http://tompurl.com/2011/05/27/tab-sweep-lots-of-java-with-a-dash-of-ruby-js-and-ksh/</link>
		<comments>http://tompurl.com/2011/05/27/tab-sweep-lots-of-java-with-a-dash-of-ruby-js-and-ksh/#comments</comments>
		<pubDate>Fri, 27 May 2011 02:12:08 +0000</pubDate>
		<dc:creator>Tom Purl</dc:creator>
				<category><![CDATA[Tab Sweep]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jrockit]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[ksh]]></category>
		<category><![CDATA[shell-scripting]]></category>
		<category><![CDATA[trinidad]]></category>

		<guid isPermaLink="false">https://tompurl.wordpress.com/?p=329</guid>
		<description><![CDATA[JRuby on AppCloud Available Through Beta Program &#124; Engine Yard Ruby on Rails Blog This is a very cool announcement, and I&#8217;m anxious to see how popular this hosting options becomes. tags: jruby engineyard ruby java hosting tab-sweep-110525 { abrandoned.com } / JRuby 1.6 + Rails 3 + Trinidad =&#62; Awesometown This is a great [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tompurl.com&amp;blog=3216699&amp;post=329&amp;subd=tompurl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<ul class="diigo-linkroll">
<li>
<p class="diigo-link"><a href="http://www.engineyard.com/blog/2011/jruby-on-appcloud-available-through-beta-program">JRuby on AppCloud Available Through Beta Program | Engine Yard Ruby on Rails Blog</a></p>
<p class="diigo-description">This is a very cool announcement, and I&#8217;m anxious to see how popular this hosting options becomes.</p>
<p class="diigo-tags">tags: <a href="http://www.diigo.com/user/tepurl/jruby">jruby</a> <a href="http://www.diigo.com/user/tepurl/engineyard">engineyard</a> <a href="http://www.diigo.com/user/tepurl/ruby">ruby</a> <a href="http://www.diigo.com/user/tepurl/java">java</a> <a href="http://www.diigo.com/user/tepurl/hosting">hosting</a> <a href="http://www.diigo.com/user/tepurl/tab-sweep-110525">tab-sweep-110525</a></p>
</li>
<li>
<p class="diigo-link"><a href="http://abrandoned.com/post/2867736684/jruby-1-6-rails-3-trinidad-awesometown">{ abrandoned.com } / JRuby 1.6 + Rails 3 + Trinidad =&gt; Awesometown</a></p>
<p class="diigo-description">This is a great overview of why some people choose Jruby over Ruby, and it includes a very good example case.</p>
<p class="diigo-tags">tags: <a href="http://www.diigo.com/user/tepurl/article">article</a> <a href="http://www.diigo.com/user/tepurl/to-read">to-read</a> <a href="http://www.diigo.com/user/tepurl/tab-sweep-110525">tab-sweep-110525</a></p>
</li>
<li>
<p class="diigo-link"><a href="http://www.unix.com/shell-programming-scripting/22587-hide-password.html">Hide Password &#8211; The UNIX and Linux Forums</a></p>
<p class="diigo-description">This little tip was a real life-saver for me once. The power and simplicity of the Korn shell never ceases to amaze me.</p>
<p class="diigo-tags">tags: <a href="http://www.diigo.com/user/tepurl/shell">shell</a> <a href="http://www.diigo.com/user/tepurl/scripting">scripting</a> <a href="http://www.diigo.com/user/tepurl/security">security</a> <a href="http://www.diigo.com/user/tepurl/korn">korn</a> <a href="http://www.diigo.com/user/tepurl/unix">unix</a> <a href="http://www.diigo.com/user/tepurl/tab-sweep-110525">tab-sweep-110525</a></p>
</li>
<li>
<p class="diigo-link"><a href="http://bellard.org/jslinux">Javascript PC Emulator</a></p>
<p class="diigo-description">This is just one of the coolest things I have seen in quite a while. You can even run a C compiler and Emacs instance in the Window. Stuff like this really makes you wonder what we&#8217;ll be running in our browsers in the near future.</p>
<p class="diigo-tags">tags: <a href="http://www.diigo.com/user/tepurl/linux">linux</a> <a href="http://www.diigo.com/user/tepurl/javascript">javascript</a> <a href="http://www.diigo.com/user/tepurl/tab-sweep-110525">tab-sweep-110525</a></p>
</li>
<li>
<p class="diigo-link"><a href="http://blogs.oracle.com/henrik/entry/jrockit_is_now_free_and">JRockit is Now Free (and Other Java License Updates) (Henrik on Java)</a></p>
<p class="diigo-description">I&#8217;m not sure if this announcement is pertinent to most Java admins, since the licensing terms are still a little foggy to me. However, what I hope is that this change will give Jboss admins another high-quaility JVM option.</p>
<p class="diigo-tags">tags: <a href="http://www.diigo.com/user/tepurl/java">java</a> <a href="http://www.diigo.com/user/tepurl/jrockit">jrockit</a> <a href="http://www.diigo.com/user/tepurl/tab-sweep-110525">tab-sweep-110525</a></p>
</li>
</ul>
<p class="diigo-ps">Posted from <a href="http://www.diigo.com">Diigo</a>. The rest of my favorite links are <a href="http://www.diigo.com/user/tepurl">here</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tompurl.wordpress.com/329/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tompurl.wordpress.com/329/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tompurl.wordpress.com/329/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tompurl.wordpress.com/329/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tompurl.wordpress.com/329/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tompurl.wordpress.com/329/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tompurl.wordpress.com/329/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tompurl.wordpress.com/329/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tompurl.wordpress.com/329/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tompurl.wordpress.com/329/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tompurl.wordpress.com/329/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tompurl.wordpress.com/329/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tompurl.wordpress.com/329/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tompurl.wordpress.com/329/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tompurl.com&amp;blog=3216699&amp;post=329&amp;subd=tompurl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tompurl.com/2011/05/27/tab-sweep-lots-of-java-with-a-dash-of-ruby-js-and-ksh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b972ff5d62434623ade7ad88b02aa99?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">tpurl</media:title>
		</media:content>
	</item>
		<item>
		<title>HTTPS For Everyone</title>
		<link>http://tompurl.com/2011/05/26/https-for-everyone/</link>
		<comments>http://tompurl.com/2011/05/26/https-for-everyone/#comments</comments>
		<pubDate>Thu, 26 May 2011 02:22:15 +0000</pubDate>
		<dc:creator>Tom Purl</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[wot]]></category>

		<guid isPermaLink="false">http://tompurl.com/?p=320</guid>
		<description><![CDATA[I received the following message from one of my Facebook friends the other day: “Facebook isn&#8217;t using HTTPS by default any more, so your PC might get HACKED!” This message was very useful to many of my friend&#8217;s Facebook friends. Also, I&#8217;m a big fan of using HTTPS, so I&#8217;m glad that she was helping [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tompurl.com&amp;blog=3216699&amp;post=320&amp;subd=tompurl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I received the following message from one of my Facebook friends the other day:</p>
<blockquote><p>“Facebook isn&#8217;t using HTTPS by default any more, so your PC might get HACKED!”</p></blockquote>
<p>This message was very useful to many of my friend&#8217;s Facebook friends. Also, I&#8217;m a big fan of using HTTPS, so I&#8217;m glad that she was helping her friends have a more secure web browsing experience.</p>
<p>Statements like this, however, show that many smart, tech-savy and well-educated people are <strong>very</strong> confused by the concept of HTTPS. They don&#8217;t understand what it can and can&#8217;t do, which causes them to miss out on a lot of its benefits and expose themselves to threats.</p>
<p>I therefore decided to put together a simple, layman&#8217;s guide to using HTTPS. I hope that it will help clear some confusion.</p>
<h2>Caveat</h2>
<p>I am by no means a security expert, and I can&#8217;t guarantee that anything that you do online will be 100% safe. No system is perfect, and that includes HTTPS.</p>
<p>So who am I? I&#8217;m a systems engineer with 11 years of experience running large applications on top of complex systems. During that time, I&#8217;ve worked with a lot of web applications, and I have learned a thing or two about security. My knowledge is incomplete, but it&#8217;s complete enough to help a lot of my friends.</p>
<h2>What Is HTTPS?</h2>
<p><span style="font-size:small;"><em>(The following is the scariest paragraph in this post. If it seems like a foreign language to you, that&#8217;s OK. Just keep reading and everything will be explained in English <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )</em></span></p>
<p>HTTPS stands for <strong>SSL over HTTP</strong>. <strong>HTTP </strong>is the protocol that your web browser uses to talk to web sites. <strong>SSL</strong> is a an application that is used to encrypt data. So HTTPS is a <strong>system for exchanging encrypted data between web browsers and web sites</strong>.</p>
<p>Ok, so what did all of that mean? Well, first let&#8217;s talk about HTTP. This is just the way that web browsers and web sites have agreed to talk to each other. That&#8217;s it. Nothing too fancy.</p>
<p>SSL (pronounced “ess-ess-ehl”) is a program for encryption, but what&#8217;s that? Well you can think of <strong>encryption </strong>as a way of turning data into gibberish that very few other people will be able to read. Encryption can be really simple, like Pig Latin, or incredibly sophisticated, like the encryption that your web browser users.</p>
<p>So HTTPS is the system that allows you to encrypt your secret information so that only you and your target web site (e.g. your bank&#8217;s web site, Facebook) can understand it. If anyone who is between your web browser and your target web site tries to intercept the traffic, they won&#8217;t be able to decipher it. This is the #1 benefit of HTTPS, and if you only read one paragraph in this article, I hope that it&#8217;s this one.</p>
<p>Now this concept really confused me when I first started learning about networking. Who on earth would read my internet traffic while it&#8217;s moving along the network? Well, there are points between your web browser and your target web site where <strong>third-parties could be intercepting your web traffic</strong>. These “points” are called <strong>hops</strong>, and there are an arbitrary number of them between your web browser and any web site that you may visit. The following are examples of hops:</p>
<ul>
<li>Your ISP&#8217;s servers</li>
<li>Your employer&#8217;s firewall</li>
<li>Your email provider</li>
<li>The wireless access point that you&#8217;re using at the coffee house</li>
</ul>
<p>Anyone who has access to any of these hops can potentially intercept your web traffic and read private things like passwords and cookie information. And if this traffic <strong>isn&#8217;t</strong> encrypted using something like SSL, then it&#8217;s <strong>trivially simple</strong> to do.</p>
<p>So that&#8217;s the number one reason why SSL is so awesome. But there&#8217;s one more great feature too. For a web site owner to use SSL, they need  to have a <strong>certificate </strong>installed on their servers that <strong>guarantees their identity.</strong> You can think of it like a driver&#8217;s license for web applications. This driver&#8217;s license ensures that yourbank.com <em>really is</em> yourbank.com <strong>when you use the HTTPS address</strong>. When you use an HTTP address, no certificate is used, so you really don&#8217;t have any way of ensuring that you&#8217;re not using a fake copy of a web site.</p>
<p>So how does your browser know that yourbank.com&#8217;s certificate is legitimate? Well, it&#8217; a fairly complex system, and it&#8217;s not 100% perfect 100% of the time, but the short answer is that there are 3rd-parties that certify <strong>SSL certificates</strong>. And your web browser is configured to use those third parties to double-check the identity of the HTTPS addresses that you visit.</p>
<h2>What Isn&#8217;t HTTPS?</h2>
<p>Ok, so now we know that HTTPS encrypts your communication with web servers and certifies web site owners. So now let&#8217;s talk about what it <em>can&#8217;t </em>do (despite what your friends tell you <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )</p>
<h3>It doesn&#8217;t protect your computer from hackers and viruses</h3>
<p>Remember, HTTPS doesn&#8217;t have anything to do with protecting your <strong>physical computer</strong>. It&#8217;s all about protecting your web traffic and verifying web site owners. Protecting yourself from hackers and viruses is a <strong>big</strong> subject, but here are a few solid recommendations:</p>
<ul>
<li>If you are asked to patch your computer or web browser, do it as quickly as you can. If you have the option of patching automatically, then do it. Also, don&#8217;t forget that you need to regularly patch <strong>Flash and Java</strong>.</li>
<li>Use an anti-virus</li>
<li>Use a hardware-based firewall. Most consumer-grade wireless access points (aka routers) have one of these built-in.</li>
<li>Supervise your children when they use a computer</li>
<li>Use a web browser plugin like <a href="http://www.mywot.com/">Web of Trust (WOT)</a> to help you identify potentially-hazardous web sites.</li>
</ul>
<p>“But wait” you say. “Won&#8217;t using HTTPS help keep my Facebook account from being hacked?”. Yes, it definitely will. What I&#8217;m talking about now is protecting your <strong>physical computer </strong>from bad people, <strong>not your web site accounts</strong>.</p>
<h3>It doesn&#8217;t protect your content once it&#8217;s on a web site</h3>
<p>Ok, here&#8217;s a hypothetical. Let&#8217;s say that you write a very sincere, emotional and (most of all) <strong>private</strong> message to one of your friends using Facebook (or any other messaging account). A few days later, you learn that a bunch of Facebook servers have been hacked, and you worry that someone else might publish your super-personal message for all of the world to see. But you have nothing to worry about, right? HTTPS encrypts all of that stuff, so the bad guys can&#8217;t read it, right?</p>
<p>Well, you would be half right. HTTPS does encrypt your web communication, but it <strong>doesn&#8217;t encrypt the data once it&#8217;s on the web site</strong>. That level of security is handled by the web site administrators, and it varies from great to awful. <strong>Please note </strong>that most web sites do <strong>nothing to encrypt your content </strong>once it&#8217;s on their site. Also, please note that most web sites also do a pretty crappy job of protecting their servers from hackers.</p>
<p>So if this is a concern, what can you do? If you want to store personal information on a web site, one thing you can do is insist that the site administrators encrypt the content on the server. If they don&#8217;t, then find another web site that will listen to you. <a href="http://dropbox.com/">Dropbox.com</a> encrypts the content on their servers, and it&#8217;s reason #47 that they&#8217;re so awesome <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>In the end, the best defense it to think twice before posting something online.</p>
<h2>When Should I Use HTTPS?</h2>
<p>You certainly don&#8217;t need to use HTTPS with every web site, and most sites still don&#8217;t support it. So when should you use it?</p>
<h3>Required</h3>
<p>You simply should not use one of the following web sites unless they support HTTPS.</p>
<ul>
<li>Banking And Finance Sites Including PayPal
<ul>
<li>If your bank makes you do anything involving your password or you personal account information without HTTPS, then get a new bank.</li>
</ul>
</li>
<li>Anything involving your credit card
<ul>
<li>It always surprises me when I see a reputable online shopping site that doesn&#8217;t use HTTPS on the page where I enter my credit card information. When I see this, I either use a competitor who does use HTTPS or call the retailer to make my order.</li>
</ul>
</li>
</ul>
<h3>Recommended</h3>
<ul>
<li>Email and Facebook Passwords
<ul>
<li>It&#8217;s a very good idea to use HTTPS with any email or social networking site, especially if you like to use that site in a public place using a shared WIFI connection. It protects you from having people steal your passwords and your cookies.</li>
<li>It&#8217;s important to secure your email and social network accounts because some of them can be used to obtain bank passwords. Also, people may try to use these accounts to scam money out of your friends and family.</li>
</ul>
</li>
<li>Online Storage Sites</li>
<li>Any site where you exchange personal information</li>
</ul>
<h2>How Do I Know If I&#8217;m Using HTTPS?</h2>
<p>This is a complex and delicate question, so I will need to defer to the experts. Here&#8217;s how you can determine if you are using HTTPS properly in all of the major browsers:</p>
<ul>
<li><a title="IE Security FAQ" href="http://windows.microsoft.com/en-US/windows7/How-to-know-if-an-online-transaction-is-secure" target="_blank">Internet Explorer</a> (see &#8220;How can I tell if I have a secure conneciton?&#8221;)</li>
<li><a title="Firefox Site Identity Button" href="https://support.mozilla.com/en-US/kb/Site%20Identity%20Button" target="_blank">Firefox</a></li>
<li><a title="Google Chrome security help page" href="https://www.google.com/support/chrome/bin/answer.py?hl=en&amp;answer=95617" target="_blank">Chrome</a></li>
</ul>
<h2>Facebook Hacking Threat Revisited</h2>
<p>Ok, so let&#8217;s revisit the statement that I started this article with:</p>
<blockquote><p>“Facebook isn&#8217;t using HTTPS by default any more, so your PC might get HACKED!”</p></blockquote>
<p>Ok, so knowing what we do now, what&#8217;s the risk?</p>
<ol>
<li>
<p align="LEFT">The communication between your web browser and Facebook won&#8217;t be encrypted, so anyone could steal things like your password and cookies (which can be used to spoof your identity).</p>
</li>
<li>
<p align="LEFT">You can&#8217;t be sure that Facebook.com is really Facebook.com because the site isn&#8217;t using a certificate. Someone could therefore trick you into using a fake version of the web site.</p>
</li>
</ol>
<p align="LEFT">Why are these risks? In either case, someone could use your Facebook account to scam your friends and distribute malware. And if you use Facebook as your primary e-mail account (which you can do now), then they may be able to <strong>obtain passwords for web site accounts that are tied to your credit card or bank accounts</strong>.</p>
<h1>Conclusion</h1>
<p>Ok, so I hope this helped de-mystify HTTPS a bit. Good luck staying safe and remember that it pays to be at least a little paranoid about sharing information online.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tompurl.wordpress.com/320/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tompurl.wordpress.com/320/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tompurl.wordpress.com/320/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tompurl.wordpress.com/320/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tompurl.wordpress.com/320/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tompurl.wordpress.com/320/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tompurl.wordpress.com/320/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tompurl.wordpress.com/320/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tompurl.wordpress.com/320/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tompurl.wordpress.com/320/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tompurl.wordpress.com/320/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tompurl.wordpress.com/320/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tompurl.wordpress.com/320/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tompurl.wordpress.com/320/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tompurl.com&amp;blog=3216699&amp;post=320&amp;subd=tompurl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tompurl.com/2011/05/26/https-for-everyone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b972ff5d62434623ade7ad88b02aa99?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">tpurl</media:title>
		</media:content>
	</item>
		<item>
		<title>Tab Sweep – 5/18/11</title>
		<link>http://tompurl.com/2011/05/19/tab-sweep-51811/</link>
		<comments>http://tompurl.com/2011/05/19/tab-sweep-51811/#comments</comments>
		<pubDate>Thu, 19 May 2011 02:54:55 +0000</pubDate>
		<dc:creator>Tom Purl</dc:creator>
				<category><![CDATA[Tab Sweep]]></category>
		<category><![CDATA[11.04]]></category>
		<category><![CDATA[filenet]]></category>
		<category><![CDATA[flexpaper]]></category>
		<category><![CDATA[ibm]]></category>
		<category><![CDATA[p8]]></category>
		<category><![CDATA[plomino]]></category>
		<category><![CDATA[plone]]></category>
		<category><![CDATA[shopify]]></category>
		<category><![CDATA[torqueox]]></category>

		<guid isPermaLink="false">http://tompurl.com/?p=314</guid>
		<description><![CDATA[Career 2.0 at the Minneapolis Java User Group &#124; Eagan, USA &#124; By Jared Richardson (jaredr) I really liked this guys article in the latest PragPub magazine, so I poked around a bit and also found this presentation. It is highly recommended if you hope to make any sort of career out of technology. More [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tompurl.com&amp;blog=3216699&amp;post=314&amp;subd=tompurl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://qik.com/video/1009098"><span style="color:#000000;"><span style="font-family:Arial, sans-serif;"><span style="font-size:small;">Career 2.0 at the Minneapolis Java User Group | Eagan, USA | By Jared Richardson (jaredr)</span></span></span></a>
<ul>
<li><span style="color:#000000;"><span style="font-family:Arial, sans-serif;"><span style="font-size:small;">I really liked this guys <a href="http://agileartisans.com/main/blog/198">article</a> in the latest PragPub magazine, so I poked around a bit and also found this presentation. It is </span></span></span><span style="color:#000000;"><span style="font-family:Arial, sans-serif;"><span style="font-size:small;"><strong>highly recommended </strong></span></span></span><span style="color:#000000;"><span style="font-family:Arial, sans-serif;"><span style="font-size:small;">if you hope to make any sort of career out of technology.</span></span></span></li>
</ul>
</li>
<li><span style="color:#000000;"><span style="font-family:Arial, sans-serif;"><span style="font-size:small;">More great <a href="http://torquebox.org/">Torquebox</a> tutorials. I can&#8217;t wait until I&#8217;m done with my Java perf personal development project so I can play around with this a bit.</span></span></span>
<ul>
<li><a href="https://github.com/bbrowning/beer_tweets"><span style="color:#000000;"><span style="font-family:Arial, sans-serif;"><span style="font-size:small;">bbrowning/beer_tweets – GitHub</span></span></span></a></li>
<li><a href="http://torquebox.org/news/2011/05/11/simplify-your-deployment"><span style="color:#000000;"><span style="font-family:Arial, sans-serif;"><span style="font-size:small;">TorqueBox: Using TorqueBox to Simplify Application Deployment</span></span></span></a></li>
</ul>
</li>
<li><a href="http://www-01.ibm.com/software/support/isa/download.html"><span style="color:#000000;"><span style="font-family:Arial, sans-serif;"><span style="font-size:small;">IBM Software Support &#8211; Which IBM Support Assistant download is right for me?</span></span></span></a>
<ul>
<li><span style="color:#000000;"><span style="font-family:Arial, sans-serif;"><span style="font-size:small;">I just found out about this tool for one of our IBM reps, and it really is amazing. If you support </span></span></span><span style="color:#000000;"><span style="font-family:Arial, sans-serif;"><span style="font-size:small;"><strong>any</strong></span></span></span><span style="color:#000000;"><span style="font-family:Arial, sans-serif;"><span style="font-size:small;"> type of IBM software, including <a href="http://www-01.ibm.com/software/data/content-management/">FileNet</a>, then I </span></span></span><span style="color:#000000;"><span style="font-family:Arial, sans-serif;"><span style="font-size:small;"><strong>highly </strong></span></span></span><span style="color:#000000;"><span style="font-family:Arial, sans-serif;"><span style="font-size:small;">recommend that you install this application immediately.</span></span></span></li>
</ul>
</li>
<li><a href="https://sermoa.wordpress.com/2011/05/17/build-and-launch-a-web-shop-in-a-day"><span style="color:#000000;"><span style="font-family:Arial, sans-serif;"><span style="font-size:small;">Build and launch a web shop in a day « a little place of calm</span></span></span></a>
<ul>
<li><span style="color:#000000;"><span style="font-family:Arial, sans-serif;"><span style="font-size:small;">My wife and I just helped a friend update her web site so that she could take web orders, so this was interesting to me. I can really see how <a href="http://www.shopify.com/">Shopify</a> would be very helpful to a lot of small businesses.</span></span></span></li>
</ul>
</li>
<li><a href="http://stackoverflow.com/questions/5926809/document-management-using-plone4"><span style="color:#000000;"><span style="font-family:Arial, sans-serif;"><span style="font-size:small;">wiki &#8211; Document management using Plone4 &#8211; Stack Overflow</span></span></span></a>
<ul>
<li><span style="color:#000000;"><span style="font-family:Arial, sans-serif;"><span style="font-size:small;">I used to run a small web design business that specialized in <a href="http://plone.org/">Plone</a>-based web sites. I haven&#8217;t done much with it in a while, but since then I have become FileNet P8 administrator. After reading this article, I was surprised to see much Plone has improved and how easy it is to implement a fairly decent document management system on top of it using FOSS tools. Here are some of the relevant links:</span></span></span></li>
<li><a href="http://flexpaper.devaldi.com/demo"><span style="color:#000000;"><span style="font-family:Arial, sans-serif;"><span style="font-size:small;">FlexPaper &#8211; Examples</span></span></span></a></li>
<li><a href="http://www.plomino.net/"><span style="color:#000000;"><span style="font-family:Arial, sans-serif;"><span style="font-size:small;">Plomino, a powerful and flexible web-based application builder — plomino</span></span></span></a></li>
</ul>
</li>
<li><a href="https://github.com/cowboyd/jenkins.rb/blob/ruby-plugin-development/features/plugins/create-new-plugin.feature"><span style="color:#000000;"><span style="font-family:Arial, sans-serif;"><span style="font-size:small;">cowboyd / jenkins.rb</span></span></span></a>
<ul>
<li><span style="font-family:Arial, sans-serif;"><span style="font-size:small;"><span style="color:#000000;">I don&#8217;t think that I will have time to help with this project, but this looks like a good way to learn about the basics of cucumber.</span></span></span></li>
</ul>
</li>
<li><a href="http://www.npr.org/blogs/money/2011/05/14/136279162/an-internet-rock-star-tells-all?ft=1&amp;f=93559255"><span style="color:#000000;"><span style="font-family:Arial, sans-serif;"><span style="font-size:small;">An Internet Rock Star Tells All : Planet Money : NPR</span></span></span></a>
<ul>
<li><span style="font-family:Arial, sans-serif;"><span style="font-size:small;"><span style="color:#000000;">Cool little article about the guy who wrote the “Code Monkey” song. It&#8217;s hard to believe how much the music business has changed in 10 years.</span></span></span></li>
</ul>
</li>
<li><a href="https://groups.google.com/forum/#!topic/xmind/vSutx_eFwlQ"><span style="color:#000000;"><span style="font-family:Arial, sans-serif;"><span style="font-size:small;">Run XMind in Ubuntu 11.04, Natty Narwhale &#8211; Google Groups</span></span></span></a>
<ul>
<li><span style="font-family:Arial, sans-serif;"><span style="font-size:small;"><span style="color:#000000;">If you upgraded to Ubuntu 11.04 and you use Xmind, then this will fix your menu bar.</span></span></span></li>
</ul>
</li>
</ul>
<p><span style="color:#000000;"><span style="font-family:Arial, sans-serif;"><span style="font-size:small;">Posted from <a href="http://www.diigo.com/">Diigo</a>. The rest of my favorite links are <a href="http://www.diigo.com/user/tepurl">here</a>.</span></span></span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tompurl.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tompurl.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tompurl.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tompurl.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tompurl.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tompurl.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tompurl.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tompurl.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tompurl.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tompurl.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tompurl.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tompurl.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tompurl.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tompurl.wordpress.com/314/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tompurl.com&amp;blog=3216699&amp;post=314&amp;subd=tompurl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tompurl.com/2011/05/19/tab-sweep-51811/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b972ff5d62434623ade7ad88b02aa99?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">tpurl</media:title>
		</media:content>
	</item>
		<item>
		<title>Tab Sweep – An Embarrassment Of Riches</title>
		<link>http://tompurl.com/2011/05/09/tab-sweep-an-embarrassment-of-riches/</link>
		<comments>http://tompurl.com/2011/05/09/tab-sweep-an-embarrassment-of-riches/#comments</comments>
		<pubDate>Mon, 09 May 2011 09:04:39 +0000</pubDate>
		<dc:creator>Tom Purl</dc:creator>
				<category><![CDATA[Tab Sweep]]></category>
		<category><![CDATA[career]]></category>
		<category><![CDATA[ec2]]></category>
		<category><![CDATA[google-voice]]></category>
		<category><![CDATA[sip]]></category>
		<category><![CDATA[torquebox]]></category>

		<guid isPermaLink="false">http://tompurl.com/?p=309</guid>
		<description><![CDATA[There&#8217;s a short novel&#8217;s worth of great stuff that I found to read this week, along with a great video on being in control of your technical career. It&#8217;s truly an embarrassment of riches. The Perils of Premature Optimization &#124; Good Math, Bad Math This is an awesome explanation of why you shouldn&#8217;t change things [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tompurl.com&amp;blog=3216699&amp;post=309&amp;subd=tompurl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a short novel&#8217;s worth of great stuff that I found to read this week, along with a great video on being in control of your technical career. It&#8217;s truly an embarrassment of riches.</p>
<ul>
<li><a href="http://scientopia.org/blogs/goodmath/2011/05/03/the-perils-of-premature-optimization">The Perils of Premature Optimization | Good Math, Bad Math</a>
<ul>
<li>This is an <em>awesome </em>explanation of why you shouldn&#8217;t change things in a system unless you have the data to back it up.</li>
</ul>
</li>
<li><a href="http://torquebox.org/news/2011/05/03/judcon-preso">TorqueBox: TorqueBox Slides From JUDCon:2011 Boston</a>
<ul>
<li>Hooray for TorqueBox 1.0! I really can&#8217;t wait to play around with this project myself.</li>
</ul>
</li>
<li><a href="http://www.engineyard.com/blog/2011/the-april-21-amazon-disruption-wrapping-up/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+engineyard+%28Engine+Yard%29">The April 21 Amazon Disruption: Wrapping Up | Engine Yard Ruby on Rails Blog</a></li>
<li><a href="http://teddziuba.com/2011/04/amazon-the-purpose-of-pain.html">Amazon — The Purpose of Pain</a></li>
<li><a href="http://pragprog.com/magazines/2011-05/shady-illuminations">Shady Illuminations </a>
<ul>
<li>These are three links related to the EC2 outage. Long story short, you should avoid putting your entire system into EC2 (or any single data center for that matter). They&#8217;re good reads for people see no disadvantages to cloud computing.</li>
</ul>
</li>
<li><a href="http://www.suryasuravarapu.com/2009/02/career-20-take-control-of-your-life.html">Career 2.0: Take control of Your Life &#8211; Surya Suravarapu&#8217;s Blog</a></li>
<li><a href="http://qik.com/video/1009098">Career 2.0 Preso Video</a>
<ul>
<li>The Career 2.0 video is a really great place to start if you&#8217;re a technologist who is worried about his or her career.</li>
</ul>
</li>
<li><a href="http://diveintomark.org/archives/2011/04/29/the-book-is-dead">The “book” is dead [dive into mark]</a>
<ul>
<li>“The book is dead. Long live content.”</li>
</ul>
</li>
<li><a href="http://blog.kylehasegawa.com/google-voice-voip-on-android-just-got-a-lot-easier-with-pbxes-peering">Google Voice VoIP on Android just got a lot easier with PBXes peering | Kyle Hasegawa</a>
<ul>
<li>This is a pretty old blog post, but I&#8217;m looking for a good way to do SIP on my new Android phone, and this looks like the most promising process so far.</li>
</ul>
</li>
</ul>
<p>Posted from <a href="http://www.diigo.com/">Diigo</a>. The rest of my favorite links are <a href="http://www.diigo.com/user/tepurl">here</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tompurl.wordpress.com/309/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tompurl.wordpress.com/309/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tompurl.wordpress.com/309/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tompurl.wordpress.com/309/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tompurl.wordpress.com/309/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tompurl.wordpress.com/309/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tompurl.wordpress.com/309/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tompurl.wordpress.com/309/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tompurl.wordpress.com/309/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tompurl.wordpress.com/309/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tompurl.wordpress.com/309/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tompurl.wordpress.com/309/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tompurl.wordpress.com/309/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tompurl.wordpress.com/309/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tompurl.com&amp;blog=3216699&amp;post=309&amp;subd=tompurl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tompurl.com/2011/05/09/tab-sweep-an-embarrassment-of-riches/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b972ff5d62434623ade7ad88b02aa99?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">tpurl</media:title>
		</media:content>
	</item>
	</channel>
</rss>

