<?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/"
	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/"
	>

<channel>
	<title>Compulsivo</title>
	<atom:link href="http://compulsivoco.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://compulsivoco.wordpress.com</link>
	<description>Smart Web software for you and other people too.</description>
	<lastBuildDate>Fri, 05 Aug 2011 18:08:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='compulsivoco.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Compulsivo</title>
		<link>http://compulsivoco.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://compulsivoco.wordpress.com/osd.xml" title="Compulsivo" />
	<atom:link rel='hub' href='http://compulsivoco.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Make Your Friends and Family Pay for Your Product</title>
		<link>http://compulsivoco.wordpress.com/2008/09/22/make-your-friends-and-family-pay-for-your-products/</link>
		<comments>http://compulsivoco.wordpress.com/2008/09/22/make-your-friends-and-family-pay-for-your-products/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 22:17:06 +0000</pubDate>
		<dc:creator>Justin</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Flashlight]]></category>

		<guid isPermaLink="false">http://compulsivoco.wordpress.com/?p=97</guid>
		<description><![CDATA[&#8220;Sorry, Dad.  No freebies.&#8220; I created Flashlight for my dad and his fine art photography business, William Britten Photography.  He has been using Flashlight to track his sales and inventory for the past four months.  At first, he was providing &#8230; <a href="http://compulsivoco.wordpress.com/2008/09/22/make-your-friends-and-family-pay-for-your-products/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=compulsivoco.wordpress.com&amp;blog=3746275&amp;post=97&amp;subd=compulsivoco&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&#8220;<em>Sorry, Dad.  No freebies.</em>&#8220;</p>
<p>I created <a href="http://www.flashlightapp.com" target="_blank">Flashlight</a> for my dad and his fine art photography business, <a href="http://www.williambritten.com/" target="_blank">William Britten Photography</a>.  He has been using Flashlight to track his sales and inventory for the past four months.  At first, he was providing valuable feedback.  But, as the site exited the beta stage and became a real product, I placed an expiration date on his rather lengthy free trial.  The day it ended he emailed me asking for a free account.  I turned him down.</p>
<p>The sales revenue from friends and family is inconsequential.  However, their decision whether to purchase your product, or subscribe to your service, is priceless.</p>
<p>Most feedback is worthless when there&#8217;s no money at stake.  Ask a bunch of people whether they like your product and would pay for it.  Many will say yes.  Now, ask them to pull out their credit card and actually buy it.  Most will change their mind</p>
<p>Your free-loading friends and family are just casual users of your product or service.  They are not invested at all.  However, if you ask them to pay up, and there&#8217;s real money at stake, then they are forced to really evaluate whether your offering is something worth paying for.  If their decision is to not pay, then you must take a step back and analyze why.  You need this validation.</p>
<p>So, tell your friends and family the free trip is over and you want some moolah.  Promise them you won&#8217;t be offended if they are not willing to pay.  Go ahead.  See what they really think.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/compulsivoco.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/compulsivoco.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/compulsivoco.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/compulsivoco.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/compulsivoco.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/compulsivoco.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/compulsivoco.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/compulsivoco.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/compulsivoco.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/compulsivoco.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/compulsivoco.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/compulsivoco.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/compulsivoco.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/compulsivoco.wordpress.com/97/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=compulsivoco.wordpress.com&amp;blog=3746275&amp;post=97&amp;subd=compulsivoco&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://compulsivoco.wordpress.com/2008/09/22/make-your-friends-and-family-pay-for-your-products/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">justin</media:title>
		</media:content>
	</item>
		<item>
		<title>TableSorter: Filter Results Based on Search Query</title>
		<link>http://compulsivoco.wordpress.com/2008/08/22/tablesorter-filter-results-based-on-search-string/</link>
		<comments>http://compulsivoco.wordpress.com/2008/08/22/tablesorter-filter-results-based-on-search-string/#comments</comments>
		<pubDate>Fri, 22 Aug 2008 22:13:44 +0000</pubDate>
		<dc:creator>Justin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://compulsivoco.wordpress.com/?p=79</guid>
		<description><![CDATA[So, you want to use the TableSorter jQuery plugin and you want to be able to search the table and filter the results.  Attached is a companion plugin we&#8217;ve written, called tablesorterFilter, which will extend tablesorter to provide real-time filtering &#8230; <a href="http://compulsivoco.wordpress.com/2008/08/22/tablesorter-filter-results-based-on-search-string/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=compulsivoco.wordpress.com&amp;blog=3746275&amp;post=79&amp;subd=compulsivoco&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>So, you want to use the <a href="http://tablesorter.com/docs/" target="_blank">TableSorter jQuery plugin</a> and you want to be able to search the table and filter the results.  Attached is a companion plugin we&#8217;ve written, called tablesorterFilter, which will extend tablesorter to provide real-time filtering of rows which match a search query!</p>
<h3>Usage</h3>
<pre class="brush: jscript;">

&lt;script type=&quot;text/javascript&quot;&gt;
    jQuery(document).ready(function() {
        $(&quot;#myTable&quot;)
        .tablesorter({debug: false, widgets: ['zebra'], sortList: [[0,0]]})
        .tablesorterFilter({filterContainer: $(&quot;#filter-box&quot;),
                            filterClearContainer: $(&quot;#filter-clear-button&quot;),
                            filterColumns: [0],
                            filterCaseSensitive: false});
    });

&lt;/script&gt;
</pre>
<pre class="brush: xml;">
Search: &lt;input name=&quot;filter&quot; id=&quot;filter-box&quot; value=&quot;&quot; maxlength=&quot;30&quot; size=&quot;30&quot; type=&quot;text&quot;&gt;
&lt;input id=&quot;filter-clear-button&quot; type=&quot;submit&quot; value=&quot;Clear&quot;/&gt;

&lt;table id=&quot;myTable&quot;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Last Name&lt;/th&gt;
      &lt;th&gt;First Name&lt;/th&gt;
      &lt;th&gt;Email&lt;/th&gt;
      &lt;th&gt;Web Site&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Smith&lt;/td&gt;
      &lt;td&gt;John&lt;/td&gt;
      &lt;td&gt;jsmith@gmail.com&lt;/td&gt;
      &lt;td&gt;http://www.jsmith.com&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Doe&lt;/td&gt;
      &lt;td&gt;Jason&lt;/td&gt;
      &lt;td&gt;jdoe@hotmail.com&lt;/td&gt;
      &lt;td&gt;http://www.jdoe.com&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
</pre>
<h3>Configuration</h3>
<p>tablesorterFilter takes four parameters:</p>
<ul>
<li><strong>filterContainer</strong> &#8211; The DOM id of the input box where the user will type the search string.</li>
<li><strong>filterClearContainer</strong> &#8211; (optional) The DOM id of the button, image, or whatever which will clear the search string and reset the table to it&#8217;s original, unfiltered state.</li>
<li><strong>filterColumns</strong> &#8211; An array of columns, starting at 0, which will be searched.</li>
<li><strong>filterCaseSensitive</strong> &#8211; (optional) Boolean stating whether the search string is case sensitive.  The default is false.</li>
</ul>
<h3>Requirements</h3>
<p>jQuery version 1.2.1 or higher and a slightly modified jquery.tablesorter.js version 2.0.3.</p>
<p>The modification to the original tablesorter plugin is the addition of a few lines which will cache all of the rows so they can be searched.  You can download the modified jquery.tablesorter.js code below.</p>
<h3>Download</h3>
<p><a href="http://github.com/jbritten/jquery-tablesorter-filter/tree/master/tablesorter_filter.js" target="_blank">jquery.tablesorter.filter.js</a></p>
<p><a href="http://github.com/jbritten/jquery-tablesorter-filter/tree/master/tablesorter.js" target="_blank">jquery.tablesorter.js 2.0.3</a> (modified for tablesorterFilter)</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/compulsivoco.wordpress.com/79/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/compulsivoco.wordpress.com/79/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/compulsivoco.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/compulsivoco.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/compulsivoco.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/compulsivoco.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/compulsivoco.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/compulsivoco.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/compulsivoco.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/compulsivoco.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/compulsivoco.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/compulsivoco.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/compulsivoco.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/compulsivoco.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/compulsivoco.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/compulsivoco.wordpress.com/79/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=compulsivoco.wordpress.com&amp;blog=3746275&amp;post=79&amp;subd=compulsivoco&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://compulsivoco.wordpress.com/2008/08/22/tablesorter-filter-results-based-on-search-string/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">justin</media:title>
		</media:content>
	</item>
		<item>
		<title>Crowdsourced Design with 99designs and Crowdspring</title>
		<link>http://compulsivoco.wordpress.com/2008/08/20/crowdsourced-design-with-99designs-and-crowdspring/</link>
		<comments>http://compulsivoco.wordpress.com/2008/08/20/crowdsourced-design-with-99designs-and-crowdspring/#comments</comments>
		<pubDate>Wed, 20 Aug 2008 20:04:28 +0000</pubDate>
		<dc:creator>Justin</dc:creator>
				<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://compulsivoco.wordpress.com/?p=68</guid>
		<description><![CDATA[We recently crowdsourced the design of the Flashlight logo, as well as a postcard sized publicity flier. We ran the logo design content on 99designs and the postcard advertisement on Crowdspring, the two leading players in the crowdsourced design space. &#8230; <a href="http://compulsivoco.wordpress.com/2008/08/20/crowdsourced-design-with-99designs-and-crowdspring/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=compulsivoco.wordpress.com&amp;blog=3746275&amp;post=68&amp;subd=compulsivoco&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We recently <a title="crowdsourced" href="http://en.wikipedia.org/wiki/Crowdsourcing" target="_blank">crowdsourced</a> the design of the <a title="Flashlight" href="http://www.flashlightapp.com" target="_blank">Flashlight</a> logo, as well as a postcard sized publicity flier. We ran the logo design content on <a title="99designs" href="http://www.99designs.com" target="_blank">99designs</a> and the postcard advertisement on <a title="Crowdspring" href="http://www.crowdspring.com" target="_blank">Crowdspring</a>, the two leading players in the crowdsourced design space.</p>
<p>For those of you unfamiliar with crowdsourced design, here&#8217;s how it works in a nutshell. Basically, we used 99designs and Crowdspring to run a design contest where many contributors from around the world submitted entries over a seven day period.  At the end of the contest we picked a winning entry and paid out a bounty.  Throughout the whole process we gave constant feedback to the designers to ensure the designs were moving in the desired direction.  And, it worked!  We ended up with two outstanding designs.</p>
<h4>99designs</h4>
<p>We ran a contest with a $175 bounty for the <a title="Flashlight" href="http://www.flashlightapp.com" target="_blank">Flashlight</a> logo design.  Over a seven day period we got 64 entries from 20 different designers.</p>
<p>99designs charges a flat $39USD to post a contest.  They do not act as a middle-man and handle the transaction between buyer and designer.  At the end of the contest, it&#8217;s up to the parties involved to exchange emails and swap the design for money via PayPal or some other means.</p>
<p>The site is, ironically, bland in design, but its both very usable and fast.  It appears that the site is run by a team of three out of Australia.  At the time of this writing there have been about 17,000 contests run on 99designs, yielding an assumed half-million in revenue for the small company.  Not bad for the short period they&#8217;ve been in business (less than a year we believe).  Plus, from the looks of things, they are bootstrapping their company.  Best of luck and keep up the excellent work!</p>
<h4>Crowdspring</h4>
<p>We posted a $150 bounty for the design of a postcard-sized publicity flier for Flashlight.  Over a week we got 36 entries from 11 different designers.</p>
<p>Crowdspring charges a flat 15% listing fee to run a design contest.  So, we paid them $22.50 to run the contest, and gave $150 to the winning designer.  Unlike 99designs, Crowdspring does act as the middle-man in the transaction and places the bounty in escrow.  This helps the designer feel confident they will get paid, and to ease the minds of contest holders Crowdspring offers a money-back guarantee if you don&#8217;t get at least 25 entries.  We much preferred having this buffer &#8212; it made the entire process of closing the transaction run smoother.</p>
<p>The site is beautifully designed; however, it is very slow.  We&#8217;ll cut them some slack since they&#8217;re new and growing pains are expected.  It appears they&#8217;ve only been around for five months or so, and they definitely don&#8217;t attract the same number of contests or designers &#8230; yet.  The founders handled all of our support tickets.  While they&#8217;re also a small team &#8212; of about six &#8212; they have received a round of funding and it shows.  Everything seems very professional.  Let&#8217;s hope there&#8217;s room for both them and 99designs.</p>
<h4>Closing thoughts</h4>
<p>We got a logo designed for well below what most (decent) design firms would have charged &#8212; and we got to pick from many different creative options.  We got the postcard advertisement for a steal, saving possibly hundreds of dollars.  In both cases we saved money and got better results.  Plus, the money goes directly to the designer, supporting an independent entrepreneur, which makes us feel good.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/compulsivoco.wordpress.com/68/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/compulsivoco.wordpress.com/68/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/compulsivoco.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/compulsivoco.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/compulsivoco.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/compulsivoco.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/compulsivoco.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/compulsivoco.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/compulsivoco.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/compulsivoco.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/compulsivoco.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/compulsivoco.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/compulsivoco.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/compulsivoco.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/compulsivoco.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/compulsivoco.wordpress.com/68/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=compulsivoco.wordpress.com&amp;blog=3746275&amp;post=68&amp;subd=compulsivoco&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://compulsivoco.wordpress.com/2008/08/20/crowdsourced-design-with-99designs-and-crowdspring/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">justin</media:title>
		</media:content>
	</item>
		<item>
		<title>Introducing Flashlight: Business Intelligence for the Artist, Craftsperson, and Hobbyist</title>
		<link>http://compulsivoco.wordpress.com/2008/07/29/introducing-flashlight-business-intelligence-for-the-artist-craftsperson-and-hobbyist/</link>
		<comments>http://compulsivoco.wordpress.com/2008/07/29/introducing-flashlight-business-intelligence-for-the-artist-craftsperson-and-hobbyist/#comments</comments>
		<pubDate>Tue, 29 Jul 2008 17:55:12 +0000</pubDate>
		<dc:creator>Justin</dc:creator>
				<category><![CDATA[Flashlight]]></category>
		<category><![CDATA[Announcements]]></category>

		<guid isPermaLink="false">http://compulsivoco.wordpress.com/?p=33</guid>
		<description><![CDATA[Flashlight (www.flashlightapp.com) offers simple and affordable sales trending and inventory management for artists, craftspeople, hobbyists, and other small business owners who need to monitor inventory on hand and track sales trends across product lines. Quickly input your product lines and &#8230; <a href="http://compulsivoco.wordpress.com/2008/07/29/introducing-flashlight-business-intelligence-for-the-artist-craftsperson-and-hobbyist/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=compulsivoco.wordpress.com&amp;blog=3746275&amp;post=33&amp;subd=compulsivoco&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h4><a title="Flashlight" href="http://www.flashlightapp.com" target="_blank">Flashlight</a> (<a title="www.flashlightapp.com" href="http://www.flashlightapp.com" target="_blank">www.flashlightapp.com</a>) offers simple and affordable sales trending and inventory management for artists, craftspeople, hobbyists, and other small business owners who need to monitor inventory on hand and track sales trends across product lines.</h4>
<p><a href="http://compulsivoco.files.wordpress.com/2008/07/montage.png"><img class="aligncenter size-full wp-image-38" src="http://compulsivoco.files.wordpress.com/2008/07/montage.png?w=450&#038;h=78" alt="" width="450" height="78" /></a></p>
<p>Quickly input your product lines and corresponding inventory values.  As sales occur, Flashlight maintains inventory amounts and alerts you to inventory shortfalls. Flashlight also tracks sales across product lines and produces a custom set of charts and tables that provide a visual explanation of sales data.  So, whether it&#8217;s clothes, art, jewelry, or something else you&#8217;re creating, Flashlight will show you which products are selling and when. Use this knowledge to make tweaks to your business and become more efficient and profitable!</p>
<p>Spreadsheets are a pain to write and maintain, especially if you&#8217;ve written any formulas, and other inventory management software is expensive and overly complicated.  Flashlight is a perfect replacement for these undesirable solutions.</p>
<p>Flashlight is intuitive and easy to learn.  Flashlight is streamlined and simple, targeted to do a clearly defined task very efficiently.</p>
<p>Flashlight is internet-based and always accessible, online.  You can adjust your inventory or view your sales trends from anywhere: home, retail store, or on the road.</p>
<p>To learn more, visit <a title="www.flashlightapp.com" href="http://www.flashlightapp.com" target="_blank">www.flashlightapp.com</a>.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/compulsivoco.wordpress.com/33/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/compulsivoco.wordpress.com/33/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/compulsivoco.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/compulsivoco.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/compulsivoco.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/compulsivoco.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/compulsivoco.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/compulsivoco.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/compulsivoco.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/compulsivoco.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/compulsivoco.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/compulsivoco.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/compulsivoco.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/compulsivoco.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/compulsivoco.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/compulsivoco.wordpress.com/33/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=compulsivoco.wordpress.com&amp;blog=3746275&amp;post=33&amp;subd=compulsivoco&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://compulsivoco.wordpress.com/2008/07/29/introducing-flashlight-business-intelligence-for-the-artist-craftsperson-and-hobbyist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">justin</media:title>
		</media:content>

		<media:content url="http://compulsivoco.files.wordpress.com/2008/07/montage.png" medium="image" />
	</item>
		<item>
		<title>Inline jQuery datePicker and Rails</title>
		<link>http://compulsivoco.wordpress.com/2008/06/26/inline-jquery-datepicker-and-rails/</link>
		<comments>http://compulsivoco.wordpress.com/2008/06/26/inline-jquery-datepicker-and-rails/#comments</comments>
		<pubDate>Thu, 26 Jun 2008 14:52:26 +0000</pubDate>
		<dc:creator>Justin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://compulsivoco.wordpress.com/?p=16</guid>
		<description><![CDATA[This post describes how to use the jQuery datePicker plugin (found here) to display an inline calendar and post the selected date back to your Rails app. I&#8217;m simply going to put a hidden text_field on the page and use a &#8230; <a href="http://compulsivoco.wordpress.com/2008/06/26/inline-jquery-datepicker-and-rails/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=compulsivoco.wordpress.com&amp;blog=3746275&amp;post=16&amp;subd=compulsivoco&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This post describes how to use the jQuery datePicker plugin (found <a href="http://plugins.jquery.com/project/datepicker">here</a>) to display an inline calendar and post the selected date back to your Rails app.  I&#8217;m simply going to put a hidden text_field on the page and use a bit of javascript to populate the field with the selected date.</p>
<p>Grab the datePicker plugin from <a href="http://plugins.jquery.com/project/datepicker">http://plugins.jquery.com/project/datepicker</a>, and include it in your Rails app.</p>
<p>Get an inline datePicker set up by following the author&#8217;s instructions at <a href="http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/inlineDatePicker.html">http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/inlineDatePicker.html</a>.  Quite simply, you only need to do two things.</p>
<p>One: Add this to your .html.erb page:</p>
<pre class="brush: xml;">
&lt;div id=&quot;date-picker&quot;&gt;&lt;/div&gt;
</pre>
<p>Two: To the same .html.erb page, add this bit of jQuery to turn the the div into an inline datePicker:</p>
<pre class="brush: jscript;">
&lt;script type=&quot;text/javascript&quot;&gt;
    $('#date-picker').datePicker({inline:true});
&lt;/script&gt;
</pre>
<p>At this point you should see the datePicker on your page.  It should look something like:<br />
<a href="http://compulsivoco.files.wordpress.com/2008/06/datepicker.png"><img class="alignnone size-medium wp-image-19" src="http://compulsivoco.files.wordpress.com/2008/06/datepicker.png?w=180&#038;h=170" alt="Example of datePicker" width="180" height="170" /></a></p>
<p>Now, let&#8217;s put a text_field in your form to keep the date.  Here&#8217;s what I&#8217;ve got:</p>
<pre class="brush: ruby;">
	&lt;% form_for(@event) do |f| %&gt;
		&lt;fieldset&gt;
			&lt;label for=&quot;occurred_on&quot;&gt;Date event occurred:&lt;/label&gt;
			&lt;%= f.text_field 'occurred_on' %&gt;

			&lt;%= f.submit &quot;Save&quot; %&gt;
		&lt;/fieldset&gt;
	&lt;% end %&gt;
</pre>
<p>We need to catch the user&#8217;s selected date and populate our text_field.  To do this, we need to modify the bit of jQuery we used to set up the inline datePicker.  We need to bind the action of selecting a date to a javascript function which will populate the text_field.  Return to your .html.erb file and replace the jQuery with:</p>
<pre class="brush: jscript;">
&lt;script type=&quot;text/javascript&quot;&gt;
  $('#date-picker').datePicker({inline:true})
  .bind(
         'dateSelected',
         function(e, selectedDate, $td)
         {
           $('#event_occurred_on').val(selectedDate.asString());
         }
         );
&lt;/script&gt;
</pre>
<p>Finally, since you probably don&#8217;t want your users to see the text_field, just change it to a hidden_field.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/compulsivoco.wordpress.com/16/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/compulsivoco.wordpress.com/16/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/compulsivoco.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/compulsivoco.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/compulsivoco.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/compulsivoco.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/compulsivoco.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/compulsivoco.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/compulsivoco.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/compulsivoco.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/compulsivoco.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/compulsivoco.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/compulsivoco.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/compulsivoco.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/compulsivoco.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/compulsivoco.wordpress.com/16/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=compulsivoco.wordpress.com&amp;blog=3746275&amp;post=16&amp;subd=compulsivoco&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://compulsivoco.wordpress.com/2008/06/26/inline-jquery-datepicker-and-rails/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">justin</media:title>
		</media:content>

		<media:content url="http://compulsivoco.files.wordpress.com/2008/06/datepicker.png?w=180" medium="image">
			<media:title type="html">Example of datePicker</media:title>
		</media:content>
	</item>
		<item>
		<title>Installing Trac on CentOS 5</title>
		<link>http://compulsivoco.wordpress.com/2008/05/16/installing-trac-on-centos-5/</link>
		<comments>http://compulsivoco.wordpress.com/2008/05/16/installing-trac-on-centos-5/#comments</comments>
		<pubDate>Fri, 16 May 2008 16:22:38 +0000</pubDate>
		<dc:creator>Justin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[slicehost]]></category>

		<guid isPermaLink="false">http://compulsivoco.wordpress.com/?p=5</guid>
		<description><![CDATA[I&#8217;m using Slicehost, but these instructions should work for any hosting provider running CentOS 5. I am not using Subversion (because it sucks and has been slain by Git). If you need SVN support, check out the posts by Nick &#8230; <a href="http://compulsivoco.wordpress.com/2008/05/16/installing-trac-on-centos-5/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=compulsivoco.wordpress.com&amp;blog=3746275&amp;post=5&amp;subd=compulsivoco&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m using <a href="http://www.slicehost.com">Slicehost</a>, but these instructions should work for any hosting provider running CentOS 5.  I am not using Subversion (because it sucks and has been slain by Git).  If you need SVN support, check out the posts by <a href="http://www.techyouruniverse.com/software/installing-trac-with-subversion-on-cent-os-5-with-neon-and-quicksilver">Nick</a> or <a href="http://www.daniel-skinner.co.uk/setup-subversion-and-trac-on-centos-5/06/01/2008">Daniel Skinner</a>.</p>
<ol>
<li>Install python and mod_python (for Apache)
<ol>
<li><em>yum install python mod_python</em></li>
</ol>
</li>
<li>Install MySQL-python
<ol>
<li>Download the tarball from http://sourceforge.net/projects/mysql-python</li>
<li>Compile the package:<br />
<em>python setup.py build &amp;&amp; python setup.py install</em></li>
</ol>
</li>
<li>Install Clearsilver, a templating package needed by Trac
<ol>
<li>Download Clearsilver from http://www.clearsilver.net/downloads/</li>
<li>Compile Clearsilver:<br />
<em>./configure &#8211;with-python=/path/to/python &amp;&amp; make &amp;&amp; make install</em></li>
<li>Note: My path to python is /usr/lib/python2.4</li>
</ol>
</li>
<li>Install Trac
<ol>
<li>Download Trac from http://trac.edgewall.org/wiki/TracDownload</li>
<li>Setup Trac:<br />
<em>python ./setup.py install</em></li>
</ol>
</li>
<li>Create a Trac project
<ol>
<li>I&#8217;m going to keep all of my Trac projects in /var/www/apps/trac, and for this example, I&#8217;ll call my project MyTracProject</li>
<li><em>trac-admin /var/www/apps/trac/MyTracProject initenv</em></li>
<li>Give your project a name of your choosing, but accept the default for all other settings.</li>
</ol>
</li>
<li>Install TracWebAdmin
<ol>
<li>Note: This is an optional step, if you would like to administer Trac from within Trac itself. Also, installation of this plugin is only necessary if you&#8217;re running Trac version 0.10 or earlier as 0.11 has integrated this plugin into the core Trac package.</li>
<li>In a temporaty directory, grab the TracWebAdmin package:<br />
<em>svn co http://svn.edgewall.com/repos/trac/sandbox/webadmin/</em></li>
<li><em>cd webadmin</em></li>
<li><em>python setup.py egg_info</em></li>
<li><em>cp dist/TracWebAdmin-0.1.2dev_r5753-py2.4.egg /var/www/apps/trac/MyTracProject/plugins</em> (Note: the actual filename may be different, depending on the build)</li>
<li>Enable the plugin by adding the following to your trac.ini found at /var/www/apps/trac/MyTracProject/conf/trac.in
<pre class="brush: xml;">
[components]
webadmin.* = enabled
</pre>
</li>
</ol>
</li>
<li>Define some Trac users
<ol>
<li>Create a file to store your authorized users:<br />
<em>touch /var/www/apps/trac/auth-file</em></li>
<li>Add a user to the file:<br />
<em>htpasswd -m /var/www/apps/trac/auth-file &lt;username&gt;</em></li>
</ol>
</li>
<li>Give admin permissions to the Trac user
<ol>
<li><em> trac-admin /var/www/apps/trac/MyTracProject permission add &lt;username&gt; TRAC_ADMIN</em></li>
</ol>
</li>
<li>Configure Apache
<ol>
<li>Load mod_python by editing your httpd.conf (for me this is /etc/httpd/conf/httpd.conf) and add &#8220;LoadModule python_module modules/mod_python.so&#8221;</li>
<li>I want to access Trac via http://trac.mytrackproject.com</li>
<li>You&#8217;ll need a CNAME record in your DNS to support the trac.mytrackproject.com subdomain.</li>
<li>You&#8217;ll also need to create a VirtualHost section in Apache&#8217;s httpd.conf file.  For example:
<pre class="brush: xml;">
    &lt;VirtualHost *:80&gt;

      ServerName trac.mytrackproject.com

      &lt;Location /&gt;
        SetHandler mod_python
        PythonHandler trac.web.modpython_frontend
        PythonOption TracEnv /var/www/apps/trac/mytrackproject
        PythonOption TracUriRoot /
      &lt;/Location&gt;
      &lt;Location &quot;/login&quot;&gt;
        AuthType Basic
        AuthName &quot;trac&quot;
        AuthUserFile /var/www/apps/trac/auth-file
        Require valid-user
      &lt;/Location&gt;

    &lt;/VirtualHost&gt;
</pre>
</li>
</ol>
</li>
<li>Restart Apache: <em>service httpd restart</em></li>
<li>Go to http://trac.mytrackproject.com and start using Trac</li>
</ol>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/compulsivoco.wordpress.com/5/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/compulsivoco.wordpress.com/5/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/compulsivoco.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/compulsivoco.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/compulsivoco.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/compulsivoco.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/compulsivoco.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/compulsivoco.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/compulsivoco.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/compulsivoco.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/compulsivoco.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/compulsivoco.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/compulsivoco.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/compulsivoco.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/compulsivoco.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/compulsivoco.wordpress.com/5/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=compulsivoco.wordpress.com&amp;blog=3746275&amp;post=5&amp;subd=compulsivoco&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://compulsivoco.wordpress.com/2008/05/16/installing-trac-on-centos-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">justin</media:title>
		</media:content>
	</item>
		<item>
		<title>How to Change or Reset your Password with RESTful_authentication</title>
		<link>http://compulsivoco.wordpress.com/2008/03/24/how-to-change-or-reset-your-password-with-restful_authentication/</link>
		<comments>http://compulsivoco.wordpress.com/2008/03/24/how-to-change-or-reset-your-password-with-restful_authentication/#comments</comments>
		<pubDate>Mon, 24 Mar 2008 14:58:33 +0000</pubDate>
		<dc:creator>Justin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://compulsivoco.wordpress.com/?p=4</guid>
		<description><![CDATA[I have used the acts_as_authenticated plugin for quite some time. It works well, and there&#8217;s lots of documentation. I&#8217;ve been happy with it. Mostly. I say mostly because it has always bothered me that acts_as_authenticated generates unRESTful code, which is &#8230; <a href="http://compulsivoco.wordpress.com/2008/03/24/how-to-change-or-reset-your-password-with-restful_authentication/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=compulsivoco.wordpress.com&amp;blog=3746275&amp;post=4&amp;subd=compulsivoco&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have used the acts_as_authenticated plugin for quite some time.  It works well, and there&#8217;s lots of documentation.  I&#8217;ve been happy with it.  Mostly.  I say mostly because it has always bothered me that acts_as_authenticated generates unRESTful code, which is tainting my perfectly RESTful application.</p>
<p>So, I recently evaluated the restful_authentication plugin.  The plugin works great, but it is lacking the same breadth of documentation.  I needed to add the ability handle a lost password and to change a password.  Here&#8217;s what I did:</p>
<p>1.  Create a new Passwords controller.</p>
<p>The new/create actions equate to a lost password (user wants to get a new password).  The edit/update actions equate to changing a password (user wants to update their password).</p>
<p>When a user forgets their password and requests a new one, both their login and email will be required.  If this login and email pair exists, then a new, random password will be generated and emailed.</p>
<p>When a user desires a new password, they are required to enter their old password in addition to typing and confirming a new password.  The old password is required for security sake.</p>
<pre class="brush: ruby;">
class PasswordsController &lt; ApplicationController
  before_filter :login_from_cookie
  before_filter :login_required, :except =&gt; [:create]

  # Don't write passwords as plain text to the log files
  filter_parameter_logging :old_password, :password, :password_confirmation

  # GETs should be safe
  verify :method =&gt; :post, :only =&gt; [:create], :redirect_to =&gt; { :controller =&gt; :site }
  verify :method =&gt; :put, :only =&gt; [:update], :redirect_to =&gt; { :controller =&gt; :site }

  # POST /passwords
  # Forgot password
  def create
    respond_to do |format|

      if user = User.find_by_email_and_login(params[:email], params[:login])
        @new_password = random_password
        user.password = user.password_confirmation = @new_password
        user.save_without_validation
        UserNotifier.deliver_new_password(user, @new_password)

        format.html {
          flash[:notice] = &quot;We sent a new password to #{params[:email]}&quot;
          redirect_to signin_path
        }
      else
        flash[:notice] =  &quot;We can't find that account.  Try again.&quot;
        format.html { render :action =&gt; &quot;new&quot; }
      end
    end
  end  

  # GET /users/1/password/edit
  # Changing password
  def edit
    @user = current_user
  end

  # PUT /users/1/password
  # Changing password
  def update
    @user = current_user

    old_password = params[:old_password]

    @user.attributes = params[:user]

    respond_to do |format|
      if @user.authenticated?(old_password) &amp;&amp; @user.save
        format.html { redirect_to user_path(@user) }
      else
        format.html { render :action =&gt; 'edit' }
      end
    end
  end

  protected 

  def random_password( len = 20 )
    chars = ((&quot;a&quot;..&quot;z&quot;).to_a + (&quot;1&quot;..&quot;9&quot;).to_a )- %w(i o 0 1 l 0)
    newpass = Array.new(len, '').collect{chars[rand(chars.size)]}.join
  end

end
</pre>
<p>2.  Here is the change password view (edit.html.erb):</p>
<pre class="brush: xml;">
&lt;div class=&quot;form_container&quot;&gt;
    &lt;%= error_messages_for :user %&gt;

    &lt;% form_for(:user, :url =&gt; user_password_path(@user), :html =&gt; { :method =&gt; :put }) do |f| %&gt;
      &lt;fieldset&gt;
&lt;div class=&quot;form_row&quot;&gt;
          &lt;label for=&quot;password&quot;&gt;Old password&lt;/label&gt;
&lt;%= password_field_tag :old_password %&gt;&lt;/div&gt;
&lt;div class=&quot;form_row&quot;&gt;
          &lt;label for=&quot;password&quot;&gt;New password&lt;/label&gt;
          &lt;%= f.password_field :password %&gt;&lt;/div&gt;
&lt;div class=&quot;form_row&quot;&gt;
          &lt;label for=&quot;password_confirmation&quot;&gt;Retype the new password&lt;/label&gt;
          &lt;%= f.password_field :password_confirmation %&gt;&lt;/div&gt;
&lt;div class=&quot;submit_row&quot;&gt;
          &lt;%= f.submit &quot;Update&quot;, :class =&gt; &quot;submit&quot; %&gt; or &lt;%= link_to 'Cancel', home_path %&gt;&lt;/div&gt;
&lt;/fieldset&gt;
    &lt;% end %&gt;&lt;/div&gt;
</pre>
<p>3.  Here is the new password view (new.html.erb):</p>
<pre class="brush: xml;">
&lt;div class=&quot;form_container&quot;&gt;
    &lt;% form_for(:password, :url =&gt; passwords_path) do |f| %&gt;
      &lt;fieldset&gt;
&lt;div class=&quot;form_row&quot;&gt;
          &lt;label for=&quot;login&quot;&gt;Username&lt;/label&gt;
          &lt;%= text_field_tag 'login' %&gt;&lt;/div&gt;
&lt;div class=&quot;form_row&quot;&gt;
          &lt;label for=&quot;email&quot;&gt;Email&lt;/label&gt;
          &lt;%= text_field_tag 'email' %&gt;&lt;/div&gt;
&lt;div class=&quot;submit_row&quot;&gt;
          &lt;%= submit_tag 'Send Password', :class =&gt; &quot;button-to&quot; %&gt;&lt;/div&gt;
&lt;/fieldset&gt;
    &lt;% end %&gt;&lt;/div&gt;
</pre>
<p>4.  Here&#8217;s the user notifier (emailer) code:</p>
<p>You&#8217;ll need a user_notifier.rb file and a view template (app/views/user_notifier/new_password.html.erb) which will just contain the text of the email you want to send.</p>
<p>app/models/user_notifier.rb:</p>
<pre class="brush: ruby;">
class UserNotifier &lt; ActionMailer::Base
  def new_password(user, new_password)
    setup_email(user)
    @subject    += 'Your new password'
    @body[:new_password]  = new_password
  end

  protected

  def setup_email(user)
    @recipients  = &quot;#{user.email}&quot;
    @from        = &quot;Support&quot; &quot;&lt;support@yoursite.com&gt;&quot;
    @subject     = &quot;&quot;
    @sent_on     = Time.now
    @body[:user] = user
  end
end
</pre>
<p>app/views/user_notifier/new_password.html.erb:</p>
<p style="padding-left:30px;"><em>We&#8217;re sorry to hear your lost your password.  But, there&#8217;s no need to worry, because we&#8217;ve created a new, temporary password for you.</em></p>
<p style="padding-left:30px;"><em>Your new password is: &lt;%=h @new_password %&gt;</em></p>
<p style="padding-left:30px;"><em>You can change this password to something more memorable once you log into your account.</em></p>
<p>5.  Here&#8217;s the modified routes.rb file:</p>
<pre class="brush: ruby;">
  map.resources :passwords
  map.resources :users, :has_one =&gt; [:password]
</pre>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/compulsivoco.wordpress.com/4/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/compulsivoco.wordpress.com/4/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/compulsivoco.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/compulsivoco.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/compulsivoco.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/compulsivoco.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/compulsivoco.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/compulsivoco.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/compulsivoco.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/compulsivoco.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/compulsivoco.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/compulsivoco.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/compulsivoco.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/compulsivoco.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/compulsivoco.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/compulsivoco.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=compulsivoco.wordpress.com&amp;blog=3746275&amp;post=4&amp;subd=compulsivoco&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://compulsivoco.wordpress.com/2008/03/24/how-to-change-or-reset-your-password-with-restful_authentication/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">justin</media:title>
		</media:content>
	</item>
		<item>
		<title>Our name in print!  Things are going to start happening to us now.</title>
		<link>http://compulsivoco.wordpress.com/2008/02/20/our-name-in-print-things-are-going-to-start-happening-to-us-now/</link>
		<comments>http://compulsivoco.wordpress.com/2008/02/20/our-name-in-print-things-are-going-to-start-happening-to-us-now/#comments</comments>
		<pubDate>Thu, 21 Feb 2008 00:31:09 +0000</pubDate>
		<dc:creator>Justin</dc:creator>
				<category><![CDATA[Press]]></category>

		<guid isPermaLink="false">http://compulsivoco.wordpress.com/?p=7</guid>
		<description><![CDATA[Today we got a double-dosage of our first press! First, AustinStartup.com featured us in a question and answer segment where we were given the opportunity to talk in detail about our first product, Prefinery, and our experience with bootstrapping Compulsivo. &#8230; <a href="http://compulsivoco.wordpress.com/2008/02/20/our-name-in-print-things-are-going-to-start-happening-to-us-now/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=compulsivoco.wordpress.com&amp;blog=3746275&amp;post=7&amp;subd=compulsivoco&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Today we got a double-dosage of our first press!</p>
<p>First, <a href="http://www.austinstartup.com/2008/02/20/qa-prefinery/">AustinStartup.com featured us in a question and answer segment</a> where we were given the opportunity to talk in detail about our first product, Prefinery, and our experience with bootstrapping Compulsivo.</p>
<p>Later in the day, <a href="http://www.texasstartupblog.com/2008/02/20/austin-startup-compulsivo-inc-prefinery/">TexasStartupBlog.com ran a brief bit on us</a> as well.</p>
<p>We&#8217;re very happy that both of these local blogs have chosen to spotlight Compulsivo!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/compulsivoco.wordpress.com/7/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/compulsivoco.wordpress.com/7/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/compulsivoco.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/compulsivoco.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/compulsivoco.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/compulsivoco.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/compulsivoco.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/compulsivoco.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/compulsivoco.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/compulsivoco.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/compulsivoco.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/compulsivoco.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/compulsivoco.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/compulsivoco.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/compulsivoco.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/compulsivoco.wordpress.com/7/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=compulsivoco.wordpress.com&amp;blog=3746275&amp;post=7&amp;subd=compulsivoco&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://compulsivoco.wordpress.com/2008/02/20/our-name-in-print-things-are-going-to-start-happening-to-us-now/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">justin</media:title>
		</media:content>
	</item>
		<item>
		<title>Prefinery Gets All Done-up for Public Launch</title>
		<link>http://compulsivoco.wordpress.com/2008/02/19/prefinery-gets-all-done-up-for-public-launch/</link>
		<comments>http://compulsivoco.wordpress.com/2008/02/19/prefinery-gets-all-done-up-for-public-launch/#comments</comments>
		<pubDate>Wed, 20 Feb 2008 00:13:18 +0000</pubDate>
		<dc:creator>Justin</dc:creator>
				<category><![CDATA[Prefinery]]></category>
		<category><![CDATA[Announcements]]></category>

		<guid isPermaLink="false">http://compulsivoco.wordpress.com/?p=8</guid>
		<description><![CDATA[Prefinery exited private beta testing last week and, to coincide with our public launch, we decided to give ourselves a makeover. Here&#8217;s what we look like now. Oh, yeah. Here&#8217;s what we looked like before. Bleh. Let us know what &#8230; <a href="http://compulsivoco.wordpress.com/2008/02/19/prefinery-gets-all-done-up-for-public-launch/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=compulsivoco.wordpress.com&amp;blog=3746275&amp;post=8&amp;subd=compulsivoco&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Prefinery exited private beta testing last week and, to coincide with our public launch, we decided to give ourselves a makeover.</p>
<p>Here&#8217;s what we look like now.  Oh, yeah.<br />
<a href="http://www.prefinery.com"><img class="aligncenter size-full wp-image-9" src="http://compulsivoco.files.wordpress.com/2008/05/prefinery_after.png?w=450&#038;h=310" alt="" width="450" height="310" /></a><a href="http://www.prefinery.com"><br />
</a></p>
<p>Here&#8217;s what we looked like before.  Bleh.</p>
<p><a href="http://www.prefinery.com"><img class="aligncenter size-full wp-image-10" src="http://compulsivoco.files.wordpress.com/2008/05/prefinery_before.png?w=450&#038;h=321" alt="" width="450" height="321" /></a><br />
<a href="http://www.prefinery.com"><br />
</a></p>
<p>Let us know what you think of the new site &#8230;</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/compulsivoco.wordpress.com/8/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/compulsivoco.wordpress.com/8/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/compulsivoco.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/compulsivoco.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/compulsivoco.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/compulsivoco.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/compulsivoco.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/compulsivoco.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/compulsivoco.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/compulsivoco.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/compulsivoco.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/compulsivoco.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/compulsivoco.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/compulsivoco.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/compulsivoco.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/compulsivoco.wordpress.com/8/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=compulsivoco.wordpress.com&amp;blog=3746275&amp;post=8&amp;subd=compulsivoco&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://compulsivoco.wordpress.com/2008/02/19/prefinery-gets-all-done-up-for-public-launch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">justin</media:title>
		</media:content>

		<media:content url="http://compulsivoco.files.wordpress.com/2008/05/prefinery_after.png" medium="image" />

		<media:content url="http://compulsivoco.files.wordpress.com/2008/05/prefinery_before.png" medium="image" />
	</item>
		<item>
		<title>S3 rake tasks</title>
		<link>http://compulsivoco.wordpress.com/2008/01/19/s3-rake-tasks/</link>
		<comments>http://compulsivoco.wordpress.com/2008/01/19/s3-rake-tasks/#comments</comments>
		<pubDate>Sat, 19 Jan 2008 23:31:05 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rake]]></category>
		<category><![CDATA[s3]]></category>

		<guid isPermaLink="false">http://compulsivoco.wordpress.com/?p=3</guid>
		<description><![CDATA[Some time ago, we started using S3 from Amazon Web Services for secure online storage, and it&#8217;s been great so far. To help take advantage of the tool, Adam Greene wrote some slick rake tasks that help you backup your &#8230; <a href="http://compulsivoco.wordpress.com/2008/01/19/s3-rake-tasks/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=compulsivoco.wordpress.com&amp;blog=3746275&amp;post=3&amp;subd=compulsivoco&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Some time ago, we started using <a href="http://www.amazon.com/s3">S3 from Amazon Web Services</a> for secure online storage, and it&#8217;s been great so far.  To help take advantage of the tool, Adam Greene wrote some <a href="https://www.sweetspot.dm/code/s3.rake">slick rake tasks</a> that help you backup your code and database.  With some cron jobs, it helps us sleep at night.</p>
<p>We&#8217;re in the process of moving to some more advanced hosting for <a href="http://www.prefinery.com">Prefinery</a>, and Adam&#8217;s rake tasks seemed like a good fit to help with the migration.  They didn&#8217;t quite do everything we were looking for, though, so I extended them a little bit to handle restoring the database from a retrieved backup too.</p>
<p>Here&#8217;s the code that I added:</p>
<pre class="brush: ruby;">
namespace :db do
  desc &quot;repopulate the db from the latest S3 backup, or optionally specify a VERSION=this_archine.tar.gz&quot;
  task :restore do
    # Fetch the backup from S3
    file_name = retrieve_file 'db', ENV['VERSION']

    # Decompress backup
    msg &quot;decompressing backup&quot;
    result = system(&quot;tar -zxvf #{file_name}&quot; )
    raise(&quot;backup decompression failed. msg: #{$?}&quot; ) unless result

    # Extract database information from database.yml
    msg &quot;retrieving db info&quot;
    database, user, password = retrieve_db_info

    msg &quot;restoring db&quot;
    cmd = &quot;mysql -u#{user} &quot;
    puts cmd + &quot;... [password filtered]&quot;
    cmd += &quot; -p'#{password}' &quot; unless password.nil?
    cmd += &quot; #{database} &lt; ./tmp/#{file_name.gsub('.tar.gz', '')}&quot;
    result = system(cmd)
    raise(&quot;mysql restore failed.  msg: #{$?}&quot; ) unless result
  end
end
</pre>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/compulsivoco.wordpress.com/3/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/compulsivoco.wordpress.com/3/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/compulsivoco.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/compulsivoco.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/compulsivoco.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/compulsivoco.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/compulsivoco.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/compulsivoco.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/compulsivoco.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/compulsivoco.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/compulsivoco.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/compulsivoco.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/compulsivoco.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/compulsivoco.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/compulsivoco.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/compulsivoco.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=compulsivoco.wordpress.com&amp;blog=3746275&amp;post=3&amp;subd=compulsivoco&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://compulsivoco.wordpress.com/2008/01/19/s3-rake-tasks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Dan</media:title>
		</media:content>
	</item>
	</channel>
</rss>
