<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Doug Clark</title>
	<atom:link href="http://www.dougclarkonline.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dougclarkonline.com</link>
	<description></description>
	<lastBuildDate>Mon, 14 May 2012 18:46:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>iPhone Feeling Sluggish?  Battery Life Bites?  Here&#8217;s A New Suggestion.</title>
		<link>http://www.dougclarkonline.com/iphone-feeling-sluggish-battery-life-bites-heres-a-new-suggestion/</link>
		<comments>http://www.dougclarkonline.com/iphone-feeling-sluggish-battery-life-bites-heres-a-new-suggestion/#comments</comments>
		<pubDate>Mon, 14 May 2012 18:46:40 +0000</pubDate>
		<dc:creator>Doug Clark</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.dougclarkonline.com/?p=772</guid>
		<description><![CDATA[A few weeks ago, I was talking with my girlfriend. Something came up, and I tried to pull up a text message from months and months ago. However, we text. A lot. Not 15-year old girl-a-lot, or college student with ADHD-a-lot, but&#8230; a pretty fair amount. As I kept hitting that &#8220;Show Previous Messages&#8221; button, [...]]]></description>
			<content:encoded><![CDATA[<p>A few weeks ago, I was talking with my girlfriend. Something came up, and I tried to pull up a text message from months and months ago. However, we text. A lot. Not 15-year old girl-a-lot, or college student with ADHD-a-lot, but&#8230; a pretty fair amount. As I kept hitting that &#8220;Show Previous Messages&#8221; button, I noticed each time I hit it, it was slower. And slower. And slooooowwweeeerrrr. 1 year&#8217;s worth of text messages is a lot.</p>
<p>After doing a bit of researching, I stumbled across an app called <a title="PhoneView" href="http://www.ecamm.com/mac/phoneview/" target="_blank">PhoneView</a>. It&#8217;s something like $20, but it&#8217;ll archive and backup all over your texts, phone logs, etc. It also lets you download your voicemails and manage your application files. Pretty powerful little tool. I figured I&#8217;d give the trial a spin. Now, my girlfriend is not the only person I text, but she is the only person that I never delete a message for. So I knew when the total text message count came up, I knew it was all us.</p>
<h2>22,000+ messages.</h2>
<p>Sure, some of you might think &#8220;that&#8217;s it?&#8221;  But, unlike most techies in the world, I have no problem with picking up the phone and/or not responding to every single notification that comes up on my phone.</p>
<div class="woo-sc-box note   "><strong>Geeky Stuff Alert: </strong>The geeky side of me knows the iPhone uses a SQLite database for things like your texts, MMS, etc.  Being a rails developer, I also know that SQLite is a great, file-based database system&#8230; for small projects with small datasets.  A file system is not nearly as fast as a managed SQL application, or a distributed or NoSQL solution.  But&#8230; it&#8217;s a phone.  You don&#8217;t need multiple servers housing your data.  It&#8217;s a phone.  And Apple was smart enough to know that running something like PostreSQL or MySQL would have simply been overkill.</div>
<p>PhoneView offers not only their archiving, but also allows you to export an entire conversation, with attachments, to a folder of your choice.  You can get a TXT, CSV, XML, or PDF version of your conversation too.  Pretty nifty.  So I exported it to a PDF (which, by the way, was a 950+ page, 60+ MB file&#8230;), crossed my fingers, and hoped deleting all of her previous texts wouldn&#8217;t be the end of the world later on.  So I swiped across and hit delete on her conversation.  It took a couple minutes for it to actually delete everything (and&#8230; well&#8230; if it takes that much time to delete something&#8230; yikes), but when it did, I noticed texting felt instantly more responsive.  Swiping a text message notification responds instantly, instead of a 2 or 3 second pause each time.</p>
<p>As I&#8217;ve been using my phone for the last day or so, I&#8217;ve noticed my phone as a whole is significantly more responsive.  Usually after my morning check of Facebook, Twitter, my RSS feeds, text messages, emails, Groupon, Livingsocial, catching up on Scrabble, Words With Friends, Scramble With Friends, and, my new addiction, Snoopy&#8217;s Fair, my battery life is down below 80%.  Granted, that&#8217;s how I start off my day &#8211; I get all of that out of the way and I don&#8217;t worry about anything until later on.  But it&#8217;s a lot of content to take in.  Between being groggy and actually getting through all of that, it&#8217;s probably about an hour out of my day. Today, at 2:30, my battery is at 85%.  Normally by now, it&#8217;s in the 60&#8242;s.</p>
<p><strong>So was it worth it?</strong> The $20 to pull everything off my phone into my DropBox?  Definitely.  I&#8217;ve got an awesome account of meeting my girlfriend via text messages, and all of our conversations, in one nice, neat folder.  And my phone&#8217;s running much, much better.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dougclarkonline.com/iphone-feeling-sluggish-battery-life-bites-heres-a-new-suggestion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RubyMotion &#8211; A Great Idea With Poor Execution</title>
		<link>http://www.dougclarkonline.com/rubymotion-a-great-idea-with-poor-execution/</link>
		<comments>http://www.dougclarkonline.com/rubymotion-a-great-idea-with-poor-execution/#comments</comments>
		<pubDate>Sun, 06 May 2012 06:11:33 +0000</pubDate>
		<dc:creator>Doug Clark</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.dougclarkonline.com/?p=759</guid>
		<description><![CDATA[There&#8217;s been a lot of buzz in the Ruby world about RubyMotion this week. After looking at their getting started tutorials, documentation (what little there is), and more, and reading up on what it is and where is comes from, i&#8217;ve come to the conclusion that it&#8217;s a great idea, but it&#8217;s truly poorly executed. [...]]]></description>
			<content:encoded><![CDATA[<p style="float:right; margin:0 0 10px 15px; width:240px;">
		<img src="http://www.dougclarkonline.com/wp-content/uploads/2012/05/rubymoytion.png" width="240" />
		</p><p>There&#8217;s been a lot of buzz in the Ruby world about <a title="RubyMotion" href="http://www.rubymotion.com" target="_blank">RubyMotion</a> this week. After looking at their getting started tutorials, documentation (what little there is), and more, and reading up on what it is and where is comes from, i&#8217;ve come to the conclusion that it&#8217;s a great idea, but it&#8217;s truly poorly executed.</p>
<p>As a developer that primarily works with Ruby on Rails, I was very excited when I first heard about the prospect of being able to write my apps in Ruby. But after looking at the implementation, I&#8217;m thoroughly disappointed.</p>
<ol>
<li>
<p>I know some basics of Objective C, but I feel like you have to really know Objective C in order to use this. Which begs the following question: &#8220;Why would I even want to learn something that does something that&#8217;s already been done?&#8221; Sure, I prefer Ruby&#8217;s beautiful syntax over Objective C any day of the week (and twice on Sunday). I also prefer TextMate over XCode. But interface aside, you&#8217;re learning how to write Objective C in another syntax.</p>
</li>
<li>
<p>XIBs and NIBs. For those that don&#8217;t know, these are the files generated by XCode&#8217;s Interface Builder &#8211; it&#8217;s your interface into the application, much like a Rails (or Sinatra, or, or, or&#8230;) app has layouts and views. This is one of those &#8220;make or break&#8221; points, which the developer of RubyMotion states that it makes more sense to write the interface in code.</p>
<p><strong>Wrong.  Wrongy wrong wrong wrong wrong.</strong></p>
<p>There are far too many Ruby programmers so focused on writing beautiful, elegant, and expressive code that&#8217;s DRY that they forget about what&#8217;s most important &#8211; the user experience. And when you really sit down and think about it, are you more likely to design an app in a language where you have to code every. single. detail. of every. single. element, or in one where you can set up the interface in a few minutes per page (obviously more if you&#8217;re using custom graphics, but there&#8217;s always exceptions)?  This also leads people down the path of throwing buttons up that aren&#8217;t placed correctly, interface elements that don&#8217;t belong, or custom interface elements that look&#8230; quite frankly&#8230; bad.  Ever opened a free app only to feel like it didn&#8217;t really look right?  I see every single RubyMotion app like this.</p>
</li>
<li>
<p>Cost. While I would <strong>love</strong> to start screwing around with this, if only as an experiment in another language, I can&#8217;t. Well, unless I shell out $150, that is. For a language that&#8217;s purely open source, with frameworks that are purely open source, what would make me want to pay a team of 1 person $150 for an application that&#8217;s closed and doesn&#8217;t guarantee sustainability, reliability, and fast updates? If this were built by a team (implying more than 1) of ex-Apple employees dedicated to this, then I&#8217;d be more than happy to pick it up. But what&#8217;s the guarantee that this won&#8217;t sit on a shelf untouched for months?</p>
</li>
<li>
<p>Lack of MVC. I mean, come. on. Looking at the file structure makes me want to cry all the way back to my days of learning Java classes and basic PHP code sans frameworks. It&#8217;s simply archaic. Heck, you can&#8217;t even write a view if you wanted. Isn&#8217;t that the point of ObjC, is to have an <abbr title="Object Oriented">OO</abbr> implementation of C, complete with MVC? What good is that if you can&#8217;t define models and views separate from your controllers?</p>
</li>
<li>
<p>Poor documentation. What&#8217;s provided is a great &#8220;how to get started&#8221; guide, and a few tips about configuration settings. When it gets down to turning your ObjC code into Ruby&#8230; good luck. It seems pretty intuitive if you know the API like the back of your hand, but if you don&#8217;t, I feel like you&#8217;re going to be doing a lot of guess work. And guess what &#8211; increased development time.</p>
</li>
</ol>
<p>So, all that said, it really does look like a promising product, but due to the issues above, I would rather take a class and learn ObjC well, and invest my time in the tools Apple uses to create beautiful and powerful iOS apps. And in the end, XCode&#8217;s that that bad, Mr. Sansonetti.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dougclarkonline.com/rubymotion-a-great-idea-with-poor-execution/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upcoming Classes At 804RVA!</title>
		<link>http://www.dougclarkonline.com/upcoming-classes-at-804rva/</link>
		<comments>http://www.dougclarkonline.com/upcoming-classes-at-804rva/#comments</comments>
		<pubDate>Wed, 02 May 2012 21:48:48 +0000</pubDate>
		<dc:creator>Doug Clark</dc:creator>
				<category><![CDATA[RVA]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.dougclarkonline.com/?p=747</guid>
		<description><![CDATA[I will be teaching a series of paid classes at 804RVA in Richmond, VA on WordPress &#8211; taking your site from the planning stage up to a production site.  For this 8-class series, we will be developing the RVA WordPress Meetup site, and if you participate, you get to be part of the discussion and [...]]]></description>
			<content:encoded><![CDATA[<p style="float:right; margin:0 0 10px 15px; width:240px;">
		<img src="http://www.dougclarkonline.com/wp-content/uploads/2012/04/430046_313501262030669_144774348903362_836898_1147183873_n.jpeg" width="240" />
		</p><p>I will be teaching a series of paid classes at <a title="804rva" href="http://www.804rva.com" target="_blank">804RVA</a> in Richmond, VA on WordPress &#8211; taking your site from the planning stage up to a production site.  For this 8-class series, we will be developing the RVA WordPress Meetup site, and if you participate, you get to be part of the discussion and help build it yourself!<br />
<span id="more-747"></span><br />
<em>Aside: While the focus of these classes is on WordPress, many of these classes can be applicable to anyone wanting to learn more about web development or certain techniques.</em></p>
<p>I promoted a few weeks ago that the first class would be tonight; however, it&#8217;s been pushed back two weeks. We&#8217;ve also added three additional classes to Eventbrite for ticket purchasing.  <strong>You can click on the title of any of the classes to find out more details about each class.</strong></p>
<h3><a href="http://www.eventbrite.com/event/3293682493?ref=etckt" target="_blank">Starting With WordPress: Strategically Planning Your Site (Details)</a></h3>
<div style="width: 100%; text-align: left;"><iframe src="https://www.eventbrite.com/tickets-external?eid=3293682493&amp;ref=etckt" frameborder="0" marginwidth="5" marginheight="5" scrolling="auto" width="100%" height="224"></iframe></p>
<div style="font-family: Helvetica, Arial; font-size: 10px; padding: 5px 0 5px; margin: 2px; width: 100%; text-align: left;"><a style="color: #ddd; text-decoration: none;" href="http://www.eventbrite.com/r/etckt" target="_blank">Event management</a><span style="color: #ddd;"> for </span><a style="color: #ddd; text-decoration: none;" href="http://www.eventbrite.com/event/3293682493?ref=etckt" target="_blank">Starting With WordPress: Strategically Planning Your Site</a> <span style="color: #ddd;">powered by</span> <a style="color: #ddd; text-decoration: none;" href="http://www.eventbrite.com?ref=etckt" target="_blank">Eventbrite</a></div>
</div>
<hr/>
<h3><a target="_blank" href="http://www.eventbrite.com/event/3483085001?ref=etckt">Installation &amp; Basic Setup Of Your WordPress Site (Details)</a></h3>
<div style="width:100%; text-align:left;" ><iframe  src="https://www.eventbrite.com/tickets-external?eid=3483085001&#038;ref=etckt" frameborder="0" height="224" width="100%" vspace="0" hspace="0" marginheight="5" marginwidth="5" scrolling="auto" allowtransparency="true"></iframe>
<div style="font-family:Helvetica, Arial; font-size:10px; padding:5px 0 5px; margin:2px; width:100%; text-align:left;" ><a style="color:#ddd; text-decoration:none;" target="_blank" href="http://www.eventbrite.com/r/etckt">Event registration</a><span style="color:#ddd;"> for </span><a style="color:#ddd; text-decoration:none;" target="_blank" href="http://www.eventbrite.com/event/3483085001?ref=etckt">Installation &amp; Basic Setup Of Your WordPress Site</a> <span style="color:#ddd;">powered by</span> <a style="color:#ddd; text-decoration:none;" target="_blank" href="http://www.eventbrite.com?ref=etckt">Eventbrite</a></div>
</div>
<hr/>
<h3><a target="_blank" href="http://www.eventbrite.com/event/3483452099?ref=etckt">WordPress Theming and Customization (Details)</a></h3>
<div style="width:100%; text-align:left;" ><iframe  src="https://www.eventbrite.com/tickets-external?eid=3483452099&#038;ref=etckt" frameborder="0" height="224" width="100%" vspace="0" hspace="0" marginheight="5" marginwidth="5" scrolling="auto" allowtransparency="true"></iframe>
<div style="font-family:Helvetica, Arial; font-size:10px; padding:5px 0 5px; margin:2px; width:100%; text-align:left;" ><a style="color:#ddd; text-decoration:none;" target="_blank" href="http://www.eventbrite.com/r/etckt">Online Ticketing</a><span style="color:#ddd;"> for </span><a style="color:#ddd; text-decoration:none;" target="_blank" href="http://www.eventbrite.com/event/3483452099?ref=etckt">WordPress Theming and Customization</a> <span style="color:#ddd;">powered by</span> <a style="color:#ddd; text-decoration:none;" target="_blank" href="http://www.eventbrite.com?ref=etckt">Eventbrite</a></div>
</div>
<hr/>
<h3><a target="_blank" href="http://www.eventbrite.com/event/3483488207?ref=etckt">Better Content Makes Your Google Page Rank Go Up (Details)</a></h3>
<div style="width:100%; text-align:left;" ><iframe  src="https://www.eventbrite.com/tickets-external?eid=3483488207&#038;ref=etckt" frameborder="0" height="224" width="100%" vspace="0" hspace="0" marginheight="5" marginwidth="5" scrolling="auto" allowtransparency="true"></iframe>
<div style="font-family:Helvetica, Arial; font-size:10px; padding:5px 0 5px; margin:2px; width:100%; text-align:left;" ><a style="color:#ddd; text-decoration:none;" target="_blank" href="http://www.eventbrite.com/r/etckt">Online event registration</a><span style="color:#ddd;"> for </span><a style="color:#ddd; text-decoration:none;" target="_blank" href="http://www.eventbrite.com/event/3483488207?ref=etckt">Better Content Makes Your Google Page Rank Go Up</a> <span style="color:#ddd;">powered by</span> <a style="color:#ddd; text-decoration:none;" target="_blank" href="http://www.eventbrite.com?ref=etckt">Eventbrite</a></div>
</div>
<hr/>
<p>Hope to see you all at one (or all!) of the meetings!</p>
<p>Also, as a reminder, the next RVA WordPress Meetup is scheduled for May 23, also at <a href="http://www.804rva.com" target="_blank">804RVA</a>.  The community meetups are (and always will be) free, but if you&#8217;d like to help, feel free to leave me a comment below and I&#8217;ll pass it on to the appropriate people.  We could always use speakers/presenters, sponsors, volunteers, and food.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dougclarkonline.com/upcoming-classes-at-804rva/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Starting With WordPress: Strategically Planning Your Site</title>
		<link>http://www.dougclarkonline.com/starting-with-wordpress-strategically-planning-your-site/</link>
		<comments>http://www.dougclarkonline.com/starting-with-wordpress-strategically-planning-your-site/#comments</comments>
		<pubDate>Thu, 19 Apr 2012 20:24:50 +0000</pubDate>
		<dc:creator>Doug Clark</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.dougclarkonline.com/?p=620</guid>
		<description><![CDATA[...As part of the WordPress RVA meetup group (that meets every fourth Wednesday at <a href="http://www.804richmond.com" target="_blank">804Richmond</a>), we are starting a course to learn WordPress in 8 classes.  I will be teaching the first class, titled <strong>Starting With WordPress: Strategically Planning Your Site</strong>.]]></description>
			<content:encoded><![CDATA[<p style="float:right; margin:0 0 10px 15px; width:240px;">
		<img src="http://www.dougclarkonline.com/wp-content/uploads/2012/04/430046_313501262030669_144774348903362_836898_1147183873_n.jpeg" width="240" />
		</p><p>Whoa.  Two posts in one day.  Holy moly.<a href="http://www.dougclarkonline.com/wp-content/uploads/2012/04/430046_313501262030669_144774348903362_836898_1147183873_n.jpeg"><img src="http://www.dougclarkonline.com/wp-content/uploads/2012/04/430046_313501262030669_144774348903362_836898_1147183873_n-150x150.jpg" alt="" title="430046_313501262030669_144774348903362_836898_1147183873_n" width="150" height="150" class="alignright size-thumbnail wp-image-645" /></a></p>
<p>I wanted to let you all know that as part of the WordPress RVA meetup group (that meets every fourth Wednesday at <a href="http://www.804richmond.com" target="_blank">804Richmond</a>), we are starting a course to learn WordPress in 8 classes.  I will be teaching the first class, titled <strong>Starting With WordPress: Strategically Planning Your Site</strong>.  While the focus is on WordPress, it&#8217;s available to anyone that wants to learn how to better plan out their site <em>before</em> starting to build it.  In my years of development, I&#8217;ve learned that it is an essential key to cranking out websites faster and with less confusion.</p>
<p>The class is $39, $29 for 804RVA members, and following classes will be on the first and third Wednesdays until this series runs out.  We&#8217;ll see how this goes and probably spin up a follow up series afterwards.</p>
<p>You can find out more details on the EventBrite web page: <a href="http://www.eventbrite.com/event/3293682493" target="_blank">http://www.eventbrite.com/event/3293682493</a> or you can order tickets right here:</p>
<div style="width:100%; text-align:left;" ><iframe  src="https://www.eventbrite.com/tickets-external?eid=3293682493&#038;ref=etckt" frameborder="0" height="224" width="100%" vspace="0" hspace="0" marginheight="5" marginwidth="5" scrolling="auto" allowtransparency="true"></iframe>
<div style="font-family:Helvetica, Arial; font-size:10px; padding:5px 0 5px; margin:2px; width:100%; text-align:left;" ><a style="color:#ddd; text-decoration:none;" target="_blank" href="http://www.eventbrite.com/r/etckt" >Online Ticketing</a><span style="color:#ddd;" > for </span><a style="color:#ddd; text-decoration:none;" target="_blank" href="http://www.eventbrite.com/event/3293682493?ref=etckt" >Starting With WordPress: Strategically Planning Your Site</a><span style="color:#ddd;" > powered by </span><a style="color:#ddd; text-decoration:none;" target="_blank" href="http://www.eventbrite.com?ref=etckt" >Eventbrite</a></div>
</div>
<p>Hope to see you there!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dougclarkonline.com/starting-with-wordpress-strategically-planning-your-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making Your Capistrano Tasks Pretty!</title>
		<link>http://www.dougclarkonline.com/making-your-capistrano-tasks-pretty/</link>
		<comments>http://www.dougclarkonline.com/making-your-capistrano-tasks-pretty/#comments</comments>
		<pubDate>Thu, 19 Apr 2012 20:18:30 +0000</pubDate>
		<dc:creator>Doug Clark</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Server]]></category>

		<guid isPermaLink="false">http://www.dougclarkonline.com/?p=616</guid>
		<description><![CDATA[The problem I&#8217;ve always had with Capistrano is it&#8217;s tedious to set up for the first time, and depending on how your tasks are written, can cause all kinds of weird, wonky errors.  But sorting through the output of cap deploy can be tricky. It literally prints out EVERY. SINGLE. THING. I&#8217;m working on setting [...]]]></description>
			<content:encoded><![CDATA[<p>The problem I&#8217;ve always had with Capistrano is it&#8217;s tedious to set up for the first time, and depending on how your tasks are written, can cause all kinds of weird, wonky errors.  But sorting through the output of <code>cap deploy</code> can be tricky.  It literally prints out EVERY. SINGLE. THING.<br />
<span id="more-616"></span><br />
I&#8217;m working on setting up a server with <a href="http://www.godrb.com" title="GOD" target="_blank">GOD</a> for process managing (which could be a whole other blog post in itself), and Capistrano for deployment of a Rails 3.2 app.  The other day, I was doing a search for some Capistrano command nonsense, and ended up running into this post with details on how to clean up that nasty <code>cap deploy</code> output.  Give it a look:</p>
<p><a href="http://jondavidjohn.com/blog/2012/04/cleaning-up-capistrano-deployment-output" target="_blank">http://jondavidjohn.com/blog/2012/04/cleaning-up-capistrano-deployment-output</a></p>
<p>I took his ideas and put everything in a separate recipe file that I can now drop into any application I want to use Capistrano with.  Below is my &#8220;cleanup.rb&#8221; code.  Thanks Jon!</p>
<p>At the top of <code>deploy.rb</code>, I added the following:</p>
<pre>
logger.level = Logger::IMPORTANT # or Capistrano::Logger::IMPORTANT
...
load 'config/recipes/cleanup'
</pre>
<p>And then pulled out some of the generic tasks from <code>deploy.rb</code>, such as those that will run on any install (such as <code>after "deploy", 'deploy: cleanup'</code>, post-deploy tasks, and rebooting the server (not necessary, but I like to do it to keep things fresh)).</p>
<p><code>/config/recipes/cleanup.rb</code></p>
<pre>
# PERSONAL NOTE: don't forget to add the following line to the top of deploy.rb:
# logger.level = Logger::IMPORTANT # or Capistrano::Logger::IMPORTANT
#
# PERSONAL NOTE: and don't forget to require this file:
# load 'config/recipes/cleanup'
#
# Ideas from:
# http://jondavidjohn.com/blog/2012/04/cleaning-up-capistrano-deployment-output

# Colored Output
# add 'colored' to your Gemfile under the :development group
# for some reason, Capistrano didn't pick this gem up, so I had
# to require it manually if not found.

if !defined?(Colored)
	require 'colored'
end

# Direct spinner code from http://jondavidjohn.com/blog/2012/04/cleaning-up-capistrano-deployment-output
@spinner_running = false
@chars = ['|', '/', '-', '\\']
@spinner = Thread.new do
  loop do
    unless @spinner_running
      Thread.stop
    end
    print @chars[0]
    sleep(0.1)
    print "\b"
    @chars.push @chars.shift
  end
end

def start_spinner
  @spinner_running = true
  @spinner.wakeup
end

# stops the spinner and backspaces over last displayed character
def stop_spinner
  @spinner_running = false
  print "\b"
end

# Sync Standard Output
STDOUT.sync

# Here's the tasks
before 'deploy', 'stop_server'

before 'stop_server' do
	print "Stopping Server......"
	start_spinner()
end

after 'stop_server' do
	stop_spinner()
	puts "Done.".green
end	

before 'deploy:setup' do
	puts "Running Deploy:Setup"
	print "Installing RVM......."
	start_spinner()
	rvm.install_rvm
	stop_spinner()
	puts "Done.".green
	print "Deploy:Setup "
	puts "Done.".green
end

before "deploy:update_code" do
	print "Updating Code........"
	start_spinner()
end

after "deploy:update_code" do
	stop_spinner()
	puts "Done.".green
end

after "deploy", 'deploy:cleanup'

before "deploy:cleanup" do
	print "Cleaning Up.........."
	start_spinner()
end

after "deploy:cleanup" do
	stop_spinner()
	puts "Done.".green
end

after "deploy", "deploy:migrate"

before "deploy:migrate" do
	print "Migrating Database..."
	start_spinner()
end

after "deploy:migrate" do
	stop_spinner()
	puts "Done.".green
end

after "deploy", "deploy:post_deploy"

before "deploy:post_deploy" do
	print "Starting Post Deploy Tasks..."
	start_spinner()
end

after "deploy:post_deploy" do
	stop_spinner()
	puts "Done.".green
end

after "deploy", "deploy:reboot"

before "deploy:reboot" do
	puts "Rebooting Server Now!".red
end
</pre>
<p>Hope this helps some people out to clean things up a bit.  I&#8217;m really happy with the output (except for a deprecation warning that pops up on the Resque gem that screws up the formatting, but I can&#8217;t really do anything about that until they update their gem).  Just be sure to modify the tasks or add your own for your own particular deployment.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dougclarkonline.com/making-your-capistrano-tasks-pretty/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Giving DJing A Spin (Free Mix Download!)</title>
		<link>http://www.dougclarkonline.com/giving-djing-a-spin-free-mix/</link>
		<comments>http://www.dougclarkonline.com/giving-djing-a-spin-free-mix/#comments</comments>
		<pubDate>Thu, 01 Mar 2012 17:07:58 +0000</pubDate>
		<dc:creator>Doug Clark</dc:creator>
				<category><![CDATA[DJing]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[dubstep]]></category>
		<category><![CDATA[electro]]></category>
		<category><![CDATA[house]]></category>

		<guid isPermaLink="false">http://www.dougclarkonline.com/?p=361</guid>
		<description><![CDATA[I've had a copy of <a href="http://www.algoriddim.com/djay-ipad" target="_blank">algoriddim djay</a> for iPad for a few months now, and besides the occasional playing around, it's basically been shelved.  However, in the last few days, I feel like I've had a renewed interest in DJing (could be the lack of decent DJs in the area anymore, or could be simply because I've already worked close to 40 hours in 3 days this week), so I thought I'd give it a shot, and put myself up to a challenge: record a mix and release it to the world.  So here it is.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had a copy of <a href="http://www.algoriddim.com/djay-ipad" target="_blank">algoriddim djay</a> for iPad for a few months now, and besides the occasional playing around, it&#8217;s basically been shelved.  However, in the last few days, I feel like I&#8217;ve had a renewed interest in DJing (could be the lack of decent DJs in the area anymore, or could be simply because I&#8217;ve already worked close to 40 hours in 3 days this week), so I thought I&#8217;d give it a shot, and put myself up to a challenge: record a mix and release it to the world.  So here it is.</p>
<p>Now, I will warn you &#8211; I&#8217;m no pro DJ.  I&#8217;m hardly an amateur DJ.  There are screw-ups in this mix (<a href="http://soundcloud.com/dougc84/i-tried" target="_blank">check the full post over at the SoundCloud page</a> for issues and set list).  But I had fun doing it and I want to continue learning.  And what better way to force better quality than to just put yourself out there and get critiqued?</p>
<p>I know DJing on an iPad is doable (look at <a href="http://rana.co/" target="_blank">Rana Sobhany</a>), but not having tactical control over the tools, faders, and dials has quickly driven me a little crazy.  There&#8217;s a moment in this mix where I start playing around with effects and all of a sudden everything stops.  My palm of my right hand had ever-so-tenderly grazed the play button, ceasing all sound and leading me into a big ?!?!?? moment.  I&#8217;m going to keep playing around for a while, but eventually, I&#8217;m going to upgrade to something along the lines of a <a href="http://www.numark.com/product/ns6" target="_blank">Numark NS6</a> controller so I can continue using the iPad.  Or, even use my MacBook Pro.  Or, heck, I could probably use both.</p>
<p>Anyway, enjoy the mix.  Leave a comment either here or on the SoundCloud page with your thoughts.</p>
<p><a href='http://www.dougclarkonline.com/wp-content/uploads/2012/03/Recording-2-29-12-9.00.47-PM.m4a'>Download m4a File</a></p>
<p><iframe width="100%" height="166" scrolling="no" frameborder="no" src="http://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F38302506&amp;auto_play=false&amp;show_artwork=true&amp;color=ff7700"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dougclarkonline.com/giving-djing-a-spin-free-mix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.dougclarkonline.com/wp-content/uploads/2012/03/Recording-2-29-12-9.00.47-PM.m4a" length="119338185" type="audio/mpeg" />
		</item>
		<item>
		<title>Goodbye Site5, Hello Rackspace!</title>
		<link>http://www.dougclarkonline.com/goodbye-site5-hello-rackspace/</link>
		<comments>http://www.dougclarkonline.com/goodbye-site5-hello-rackspace/#comments</comments>
		<pubDate>Wed, 29 Feb 2012 08:55:47 +0000</pubDate>
		<dc:creator>Doug Clark</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[rackspace]]></category>

		<guid isPermaLink="false">http://www.dougclarkonline.com/?p=359</guid>
		<description><![CDATA[As of today, I have made the switch from Site5 to Rackspace! Why? Let me state this up front: I have nothing against Site5.  They&#8217;ve provided exceptional service over the last 4 years I&#8217;ve had hosting with them.  Their Backstage and SiteAdmin administration systems are next to none as far as quality.  However, their customer [...]]]></description>
			<content:encoded><![CDATA[<p>As of today, I have made the switch from Site5 to Rackspace!</p>
<p><strong>Why?</strong></p>
<p>Let me state this up front: I have nothing against Site5.  They&#8217;ve provided exceptional service over the last 4 years I&#8217;ve had hosting with them.  Their Backstage and SiteAdmin administration systems are next to none as far as quality.  However, their customer service is lacking, and when it came to renewing my hosting after originally purchasing 4 years of service up front, they wanted to increase my rates 70% by only renewing for 1 year instead of for 4.</p>
<p>In addition, RackSpace offers me:</p>
<ul>
<li>monthly pricing and a much better way to scale my servers if needed</li>
<li>their outstanding Cloud Files CDN</li>
<li>full root access.  Unsurprisingly, Site5 had &#8220;limited&#8221; root access &#8211; if I needed to make a change to the server, it was usually a couple days of waiting for a ticket to be completed.</li>
<li>the ability to choose between many different *nix flavors.  I chose Ubuntu 11.10.  But I could set up a new server with CentOS, OpenSUSE, and many others if I decided to change.</li>
<li>(what I consider) an easier ability to run Rails applications.  Running them on Site5 was a hackfest.  Because I have full access to the server, I can do whatever I want.</li>
<li>their &#8220;fanatical customer support.&#8221;  This is ultimately what sold me.</li>
<li>no contracts and pay for what I use.  If I need to save $10, I can simply disable my server.  No harm, no foul.</li>
<li>the ability to add an additional server or load balancing at any time.  Meaning I can now become a hosting retailer instead of depending on someone else&#8217;s servers and a different set of hosting restrictions.  Most recently, I built a site using some of PHP 5.3&#8242;s functionality but had to deploy it on a server using PHP 5.2.  I had to rewrite several classes to have the functionality.  Pssshh&#8230; no longer an issue!</li>
</ul>
<p>The only downsides I&#8217;ve seen thus far:</p>
<ul>
<li>I had to set up a server from scratch.  That includes installing a LAMP stack, Virtualmin/Webmin (for easy administration, which I&#8217;m used to from running several sites on Joyent servers, but it did require some hackwork on my behalf), PHPMyAdmin, etc.  None of it is provided, but, in the end, I get FULL customization.  I can do whatever I want here.  I just need to not screw anything up! <img src='http://c340244.r44.cf1.rackcdn.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>Overall, it will cost more monthly than Site5.  However, by paying month to month, I have a bit more flexibility than a lump payment up front, and there are no problems if I choose to cancel my service early.</li>
<li>No domain services.  Not a deal breaker by any means &#8211; just point your DNS to the new server.  However, this did cause a few hours of downtime and having to reconfigure some server settings after it was finally pointed.  No longer an issue.</li>
<li>Their backend is lacking a bit.  I feel it could provide more options and be a bit speedier.</li>
</ul>
<p>So, if you&#8217;re thinking about making the switch, I&#8217;d recommend it.  I&#8217;ve used RackSpace with Ops Group (www.corspecops.com, www.uscsog.com, www.natccso.com, www.uscsoa.org), and while their backend isn&#8217;t the greatest, it&#8217;s been nothing but a great experience.</p>
<p>If you&#8217;ve got a little more coin or you do more specific applications (Rails only, for example), Joyent or EngineYard are exceptional, but for what I do, I&#8217;m very happy with my choice.  Yaaaayyyyy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dougclarkonline.com/goodbye-site5-hello-rackspace/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Published!</title>
		<link>http://www.dougclarkonline.com/published/</link>
		<comments>http://www.dougclarkonline.com/published/#comments</comments>
		<pubDate>Tue, 28 Feb 2012 07:24:58 +0000</pubDate>
		<dc:creator>Doug Clark</dc:creator>
				<category><![CDATA[Photography]]></category>
		<category><![CDATA[RVA]]></category>

		<guid isPermaLink="false">http://dougclarkonline.com/?p=341</guid>
		<description><![CDATA[Late post, sure, but some of my photography was published a few weeks ago on local Richmond, VA blog West Of The Boulevard News. Snow! ‹ West of the Boulevard News]]></description>
			<content:encoded><![CDATA[<p style="float:right; margin:0 0 10px 15px; width:240px;">
		<img src="http://www.dougclarkonline.com/wp-content/uploads/2012/02/snow-520x5201.jpg" width="240" />
		</p><p>Late post, sure, but some of my photography was published a few weeks ago on local Richmond, VA blog <a title="West Of The Boulevard News" href="http://wotbn.net/" target="_blank">West Of The Boulevard News</a>.</p>

<a href='http://www.dougclarkonline.com/published/snow-2-2/' title='RVA Snow!'><img width="150" height="150" src="http://www.dougclarkonline.com/wp-content/uploads/2012/02/snow-21-150x150.jpg" class="attachment-thumbnail" alt="RVA Snow!" title="RVA Snow!" /></a>
<a href='http://www.dougclarkonline.com/published/snow-520x520-2/' title='RVA Snow!'><img width="150" height="150" src="http://www.dougclarkonline.com/wp-content/uploads/2012/02/snow-520x5201-150x150.jpg" class="attachment-thumbnail" alt="RVA Snow!" title="RVA Snow!" /></a>

<p><a title="Snow! ‹ West of the Boulevard News" href="http://www.wotbn.com/snow" target="_blank">Snow! ‹ West of the Boulevard News</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dougclarkonline.com/published/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stop SOPA Now!</title>
		<link>http://www.dougclarkonline.com/stop-sopa-now/</link>
		<comments>http://www.dougclarkonline.com/stop-sopa-now/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 17:08:00 +0000</pubDate>
		<dc:creator>Doug Clark</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://dougclarkonline.com/archives/335</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>http://www.dougclarkonline.com/stop-sopa-now/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>carrierwave_securefile 0.2.0 out!</title>
		<link>http://www.dougclarkonline.com/carrierwave_securefile-0-2-0-out/</link>
		<comments>http://www.dougclarkonline.com/carrierwave_securefile-0-2-0-out/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 21:39:00 +0000</pubDate>
		<dc:creator>Doug Clark</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[blowfish]]></category>
		<category><![CDATA[carrierwave]]></category>
		<category><![CDATA[carrierwave_securefile]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[file]]></category>
		<category><![CDATA[gost]]></category>
		<category><![CDATA[rijndael]]></category>
		<category><![CDATA[secure]]></category>
		<category><![CDATA[securefile]]></category>
		<category><![CDATA[upload]]></category>

		<guid isPermaLink="false">http://dougclarkonline.com/?p=325</guid>
		<description><![CDATA[Hey all, carrierwave_securefile 0.1 was&#8230; buggy, to say the least. Realistically, it only worked on one of my own projects. So, today, I released 0.2.0, which now gives you the option to select a different encryption algorithm (defaults to Blowfish, but you can select Rijndael and GOST as well &#8211; please read the article linked [...]]]></description>
			<content:encoded><![CDATA[<p>Hey all,</p>
<p>carrierwave_securefile 0.1 was&#8230; buggy, to say the least. Realistically, it only worked on one of my own projects.</p>
<p>So, today, I released 0.2.0, which now gives you the option to select a different encryption algorithm (defaults to Blowfish, but you can select Rijndael and GOST as well &#8211; please read the article linked below before changing the algorithm), as well as changing the download code syntax slightly.</p>
<p>Read through the usage <a title="GitHub" href="https://github.com/dougc84/carrierwave_securefile/wiki/Usage">here</a>, and check out this small article on encryption types <a title="GitHub" href="https://github.com/dougc84/carrierwave_securefile/wiki/v0.2-Encryption-Types-and-A-Bit-About-Encryption">here</a>.</p>
<p>As always, if you notice a bug or any problems, don&#8217;t hesitate to let me know. Thanks!</p>
<p><a title="GitHub" href="https://github.com/dougc84/carrierwave_securefile">GitHub Project Page For carrierwave_securefile Gem</a></p>
<p><a title="RubyGems" href="https://rubygems.org/gems/carrierwave_securefile">RubyGems Page</a></p>
<div class="woo-sc-box alert   full"><strong>Update:</strong> Looks like 0.2.x is just as buggy as 0.1.x, at least when it comes to using a :file store. I&#8217;m working on it.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.dougclarkonline.com/carrierwave_securefile-0-2-0-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using apc (Feed is rejected)
Page Caching using apc
Database Caching 7/65 queries in 0.047 seconds using apc
Object Caching 1536/1667 objects using apc
Content Delivery Network via Rackspace Cloud Files: c340244.r44.cf1.rackcdn.com

Served from: www.dougclarkonline.com @ 2012-05-20 03:04:36 -->
