<?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>ChangeLog - Jon Chase&#039;s blog &#187; Every Single Shot</title>
	<atom:link href="http://www.juliesoft.com/category/every-single-shot/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.juliesoft.com</link>
	<description>solve niche problems, make users happy</description>
	<lastBuildDate>Sun, 18 Jul 2010 06:56:43 +0000</lastBuildDate>
	
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ChangeLog #5: Just working away</title>
		<link>http://www.juliesoft.com/2010/07/changelog-5-just-working-away/</link>
		<comments>http://www.juliesoft.com/2010/07/changelog-5-just-working-away/#comments</comments>
		<pubDate>Sun, 18 Jul 2010 06:56:43 +0000</pubDate>
		<dc:creator>Jon Chase</dc:creator>
				<category><![CDATA[ChangeLog]]></category>
		<category><![CDATA[Every Single Shot]]></category>

		<guid isPermaLink="false">http://www.juliesoft.com/?p=404</guid>
		<description><![CDATA[Hey there!  I have been BUSY since the release of Every Single Shot.  Here&#8217;s a quick recap just to keep you up to date.  I can&#8217;t stay long &#8211; I&#8217;ve got more stuff (marketing, coding, brainstorming, and emailing w/customers) to do!!
First off, I&#8217;ve been adding a ton of user requests to ESS. [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.juliesoft.com%2F2010%2F07%2Fchangelog-5-just-working-away%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.juliesoft.com%2F2010%2F07%2Fchangelog-5-just-working-away%2F" height="61" width="51" /></a></div><p>Hey there!  I have been BUSY since the <a href="http://www.juliesoft.com/2010/06/changelog-4-every-single-shot-1-0-is-out/">release of Every Single Shot</a>.  Here&#8217;s a quick recap just to keep you up to date.  I can&#8217;t stay long &#8211; I&#8217;ve got more stuff (marketing, coding, brainstorming, and emailing w/customers) to do!!</p>
<p>First off, I&#8217;ve been adding <a href="http://everysingleshot.com/blog/new-features-and-cake">a ton</a> <a href="http://everysingleshot.com/blog/get-your-guests-wedding-videos">of user</a> <a href="http://everysingleshot.com/blog/comments-on-photos-and-videos">requests to</a> ESS.  All in all, I&#8217;ve completed/fixed over 100 new features/bugs in the last month and a half.  And that&#8217;s only counting what I bothered to enter into my issue tracker.  That number would probably be somewhere in the four to five hundred range if I were to examine my notepads. <img src='http://www.juliesoft.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>ESS is profitable and humming along nicely.  My customers have been keeping me rather busy with feature requests.  I&#8217;ve been really pleased at how many of the requests they make are for GOOD features &#8211; things that everyone will benefit from having.  </p>
<p>Goals for this month include increasing ESS&#8217;s traffic, increasing the conversion rate (I&#8217;m shooting for 2% conversion to a paid plan), and streamlining things for new users to make it super simple to figure out what they need to do to get all those wedding photos they&#8217;d otherwise miss.  </p>
<p>Here&#8217;s a few screenshots from ESS to wrap up with.  </p>
<p><a href="http://www.juliesoft.com/wp-content/uploads/2010/07/comment_email_small.png"><img src="http://www.juliesoft.com/wp-content/uploads/2010/07/comment_email_small.png" alt="comment_email_small" title="comment_email_small" width="508" height="568" class="aligncenter size-full wp-image-406" /></a></p>
<p><a href="http://www.juliesoft.com/wp-content/uploads/2010/07/ess_home.png"><img src="http://www.juliesoft.com/wp-content/uploads/2010/07/ess_home.png" alt="ess_home" title="ess_home" width="580" height="567" class="aligncenter size-full wp-image-407" /></a></p>
<p>Until next time!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juliesoft.com/2010/07/changelog-5-just-working-away/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ChangeLog #4: Every Single Shot 1.0 is OUT!</title>
		<link>http://www.juliesoft.com/2010/06/changelog-4-every-single-shot-1-0-is-out/</link>
		<comments>http://www.juliesoft.com/2010/06/changelog-4-every-single-shot-1-0-is-out/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 07:57:09 +0000</pubDate>
		<dc:creator>Jon Chase</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[ChangeLog]]></category>
		<category><![CDATA[Every Single Shot]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Grails]]></category>

		<guid isPermaLink="false">http://www.juliesoft.com/?p=394</guid>
		<description><![CDATA[Holla!  I just flipped the switch on Every Single Shot 1.0!  If it&#8217;s on Twitter it must be a fact:

This has been the culmination of a lot of work!  Oh sure, it&#8217;s still a little rough around the edges for now, but isn&#8217;t that part of the charm?  I&#8217;ve got big, [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.juliesoft.com%2F2010%2F06%2Fchangelog-4-every-single-shot-1-0-is-out%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.juliesoft.com%2F2010%2F06%2Fchangelog-4-every-single-shot-1-0-is-out%2F" height="61" width="51" /></a></div><p>Holla!  I just flipped the switch on <a href="http://everysingleshot.com">Every Single Shot 1.0</a>!  If it&#8217;s <a href="http://twitter.com/everysingleshot/status/15161765717">on Twitter</a> it must be a fact:</p>
<p><a href="http://twitter.com/everysingleshot/status/15161765717"><img src="http://www.juliesoft.com/wp-content/uploads/2010/06/ess10tweet.png" alt="ess10tweet" title="ess10tweet" width="586" height="259" class="aligncenter size-full wp-image-395" /></a></p>
<p>This has been the culmination of a <strong>lot</strong> of work!  Oh sure, it&#8217;s still a little rough around the edges for now, but isn&#8217;t that part of the charm?  I&#8217;ve got big, big plans for the future of ESS, and I&#8217;m super excited that I&#8217;ve gotten this far.  I don&#8217;t know how else to say it: it&#8217;s been a lot of work.  Worth it? Definitely!  </p>
<p><a href="http://everysingleshot.com"><img src="http://www.juliesoft.com/wp-content/uploads/2010/06/ess1.0.jpg" alt="ess1.0" title="ess1.0" width="550" height="394" class="aligncenter size-full wp-image-396" /></a></p>
<h3>Technical stuff</h3>
<p>What&#8217;s ESS built on?  What technologies does it use?  What methodologies did I use to build it?  </p>
<h4>The tech</h4>
<h5>Grails</h5>
<p>First and foremost, I used <a href="http://grails.org">Grails</a> for pretty much everything.  I was a Spring MVC veteran for a long time, and let me tell you, I knew my way around that stack inside and out.  There was nothing I couldn&#8217;t accomplish with it, albeit with a bit of elbow grease usually.  I decided to move to Grails for this application b/c it was so similar to Spring MVC in so many ways (it&#8217;s built on top of Spring MVC for one), but different where it really counted (i.e. it made the simple stuff really simple, and the tough stuff, well, less tough).  I have no regrets and I don&#8217;t see myself ever going back.  </p>
<p><strong>Grails report card: A++</strong></p>
<h5>Amazon EC2 and S3</h5>
<p>Can I get another holla!  I love love love working on <a href="http://aws.amazon.com/ec2/">EC2</a> and <a href="https://s3.amazonaws.com/">S3</a>.  Let me put it this way: have you ever used a technology or toolset that just works?  I mean, one that <strong>always</strong> does exactly what it&#8217;s supposed to without fail?  Well, I hadn&#8217;t either until I used EC2 and S3.  They are so damn reliable, so rock solid, so well documented and supported.  <strong>Basically, they&#8217;re awesome.</strong>  I know there are other services out there with more bells and whistles, and I&#8217;ll be honest, I had to build a lot of infrastructure in EC2 myself that I wish I hadn&#8217;t needed to, but AWS&#8217;s stability and predictability more than make up for it.  For 10 cents an hour I get a dedicated (virtual) server with lots of RAM, a huge disk, and some crazy fast connectivity.  Scripting set up and configuration of servers couldn&#8217;t be much easier than with good ol&#8217; <a href="http://alestic.com/2009/08/runurl">runurl</a>.  Management of servers is super easy with the command line tools.  Rawk on.</p>
<p><strong>Amazon AWS report card: A++</strong></p>
<h5>Other tech</h5>
<p>Here are some of the other technologies that various parts of Every Single Shot use in no particular order: <a href="http://en.wikipedia.org/wiki/Advanced_Packaging_Tool">apt</a> (this is one reason that Linux rocks), Apache 2, <a href="http://www.juliesoft.com/2010/05/an-easy-way-to-keep-your-ubuntu-ec2-instances-up-to-date/">apticron</a>, <a href="http://timkay.com/aws/">awstools</a>, <a href="http://alestic.com/2009/09/ec2-consistent-snapshot">ec2-consistent-snapshot</a> (Eric Hammond is the man when it comes to EC2 and Ubuntu), Groovy, <a href="http://www.imagemagick.org">ImageMagick</a>, Java, Jquery, MySQL, <a href="http://www.postfix.org/">postfix</a>, Subversion (I know, I know&#8230;), and Tomcat.  All in all you can see there&#8217;s not a lot of glamour tools in there, just a bunch of stuff that works.  </p>
<h4>Methodologies</h4>
<p>Gosh, I wish I could be more specific, but I pretty much just had a big list of issues, loosely divided into versions, organized in <a href="http://www.atlassian.com/software/jira/">Jira</a> (<a href="http://www.atlassian.com/software/jira/pricing.jsp">I got my Jira license for $10</a>).  That&#8217;s it.  No agile, no scrum, no scragile or whatever.  Just cranked through issues.</p>
<p>Here&#8217;s something interesting:  I used to do a lot of TDD (test driven development).  I&#8217;ve abandoned that lately in favor of writing tests&#8230;never.  Actually, since I&#8217;ve started with Grails I&#8217;ve written a lot fewer tests that I used to with Spring MVC.  Part of this is due to the fact that there&#8217;s a lot less that needs testing in Grails, and part of it is due to the fact that tests in Grails can be a little tough to write (there&#8217;s a lot of meta programming magic happening, and I miss Java autocomplete), and a lot of the tests run kinda slow (the entire container has to start up a lot of the time).  Enough about testing though (let the flame wars begin).  </p>
<h3>I could go on&#8230;</h3>
<p>Believe me, I have lots more to talk about, lots more I want to say about the 1.0 release of Every Single Shot.  But that&#8217;ll have to wait.  I need to get back to work!  2.0 is calling me&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juliesoft.com/2010/06/changelog-4-every-single-shot-1-0-is-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Which form style do you prefer?</title>
		<link>http://www.juliesoft.com/2010/05/which-form-style-do-you-prefer/</link>
		<comments>http://www.juliesoft.com/2010/05/which-form-style-do-you-prefer/#comments</comments>
		<pubDate>Tue, 11 May 2010 12:29:44 +0000</pubDate>
		<dc:creator>Jon Chase</dc:creator>
				<category><![CDATA[Every Single Shot]]></category>

		<guid isPermaLink="false">http://www.juliesoft.com/?p=364</guid>
		<description><![CDATA[I&#8217;ve just been doing a bit of refactoring on the Every Single Shot sign up page.  I started with something that resembled the idea of mad-libs form design:
 (click thumbnail for full size image)
I&#8217;ve since decided to try amore traditional form layout:
 (click thumbnail for full size image)
Do you have a preference?  Vote [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.juliesoft.com%2F2010%2F05%2Fwhich-form-style-do-you-prefer%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.juliesoft.com%2F2010%2F05%2Fwhich-form-style-do-you-prefer%2F" height="61" width="51" /></a></div><p>I&#8217;ve just been doing a bit of refactoring on the Every Single Shot <a href="http://everysingleshot">sign up page</a>.  I started with something that resembled the idea of <a href="http://www.lukew.com/ff/entry.asp?1007">mad-libs form design</a>:</p>
<p><a href="http://www.juliesoft.com/wp-content/uploads/2010/05/short.png"><img src="http://www.juliesoft.com/wp-content/uploads/2010/05/short-300x271.png" alt="short" title="short" width="300" height="271" class="aligncenter size-medium wp-image-367" /></a> (click thumbnail for full size image)</p>
<p>I&#8217;ve since decided to try amore traditional form layout:</p>
<p><a href="http://www.juliesoft.com/wp-content/uploads/2010/05/long.png"><img src="http://www.juliesoft.com/wp-content/uploads/2010/05/long-261x300.png" alt="long" title="long" width="261" height="300" class="aligncenter size-medium wp-image-366" /></a> (click thumbnail for full size image)</p>
<p>Do you have a preference?  Vote below and let me know what you think!</p>
<p><script type="text/javascript" charset="utf-8" src="http://static.polldaddy.com/p/3185109.js"></script><br />
<noscript><br />
	<a href="http://polldaddy.com/poll/3185109/">Which form layout do you prefer?</a><span style="font-size:9px;"><a href="http://polldaddy.com/features-surveys/">Market Research</a></span><br />
</noscript></p>
]]></content:encoded>
			<wfw:commentRss>http://www.juliesoft.com/2010/05/which-form-style-do-you-prefer/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ChangeLog #3: Beta release and the start of something great</title>
		<link>http://www.juliesoft.com/2010/03/changelog-3-beta-release-and-the-start-of-something-great/</link>
		<comments>http://www.juliesoft.com/2010/03/changelog-3-beta-release-and-the-start-of-something-great/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 09:30:44 +0000</pubDate>
		<dc:creator>Jon Chase</dc:creator>
				<category><![CDATA[ChangeLog]]></category>
		<category><![CDATA[Every Single Shot]]></category>

		<guid isPermaLink="false">http://www.juliesoft.com/?p=310</guid>
		<description><![CDATA[Total earnings as of March 18th, 2010: $0
In my last ChangeLog I said things were moving slowly &#8211; much slower than I would have hoped for.  That&#8217;s finally changed!  Development has really picked up over the last couple of weeks and I&#8217;ve been churning out new features and fixing bugs like nobody&#8217;s business. [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.juliesoft.com%2F2010%2F03%2Fchangelog-3-beta-release-and-the-start-of-something-great%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.juliesoft.com%2F2010%2F03%2Fchangelog-3-beta-release-and-the-start-of-something-great%2F" height="61" width="51" /></a></div><h3><strong>Total earnings as of March 18th, 2010: $0</strong></h3>
<p>In <a href="http://www.juliesoft.com/2010/02/changelog-2-storing-photos-and-little-else/">my last ChangeLog</a> I said things were moving slowly &#8211; much slower than I would have hoped for.  That&#8217;s finally changed!  Development has really picked up over the last couple of weeks and I&#8217;ve been churning out new features and fixing bugs like nobody&#8217;s business.  </p>
<h3>Just ship it!</h3>
<p>This week I did just that.  On <a href="http://twitter.com/everysingleshot/status/10466899487">Sunday, March 14th</a>, <strong>I released the very first beta</strong> of <a href="http://www.everysingleshot.com">Every Single Shot</a>.  Hooray!  The feature set is basic at this point, and there&#8217;s still a lot missing, but it&#8217;s up and running and out there for everyone to see and <a href="http://www.everysingleshot.com/prices">request a beta account</a>.  </p>
<p>
<a href="http://www.juliesoft.com/wp-content/uploads/2010/03/essbetatwitter.png"><img src="http://www.juliesoft.com/wp-content/uploads/2010/03/essbetatwitter-300x178.png" alt="It&#039;s out!" title="It&#039;s out!" width="300" height="178" class="aligncenter size-medium wp-image-313" /></a></p>
<p>It&#8217;s always fun <a href="http://www.juliesoft.com/2008/02/sendalong-10-is-out-more-info-coming-soon/">wrapping up the first big release</a> of a project.  There are so many loose ends to tie up that go completely unnoticed until the last minute.  Then it seems like there are 50 little tweaks that need to be made before it&#8217;s ready to ship.  The ESS beta release was no exception.  </p>
<p>On the technical side, I am extremely happy to see how well <a href="http://aws.amazon.com/ec2/">Amazon&#8217;s EC2</a> is working out.  Aside from the ease with which sites can be scaled out, my favorite thing about EC2 might be the fact that starting up a new instance of a server takes it back to a blank slate.  This saved me a lot of time and stress when I was trying to install an SSL certificate.  I think I trashed 3 or 4 servers before getting everything scripted correctly.  After I was done, I just restarted the server, and poof! &#8211; I had a fresh server up and running, with no evidence of all of the experimentation I had to do to get the SSL cert installed correctly.  </p>
<p><strong>Enough with the technical.</strong>  </p>
<p>To all those hopeful entrepreneurs out there, coding away at night after their full time job on their pet project &#8211; <strong><a href="http://37signals.com/svn/archives2/sanaz_ahari_just_ship_it.php">just ship it!</a></strong>  <strong>Get your project out there, let people see it, and don&#8217;t be afraid of their reactions.  If you really believe in what you&#8217;re working on you have nothing to fear.  </strong>Negative responses to your work are not negative responses to you &#8211; they&#8217;re valuable feedback that you can use to make your project better!  Don&#8217;t assume that everyone will love what you&#8217;ve done, or that it will make sense to anyone.  Just get it out there <a href="http://www.ashmaurya.com/2009/12/achieving-flow-in-a-lean-startup">and then iterate like crazy</a>.  Of course, you need to figure out what it is people do or don&#8217;t like about your project, which leads me to&#8230;</p>
<h3>Usability testing&#8230;or Why haven&#8217;t I done this before?</h3>
<p><a href="http://www.sensible.com/">Steve Krug</a> is not a rocket surgeon, just a genius.  If you don&#8217;t know what I&#8217;m talking about, <a href="http://www.sensible.com/">go and find out</a>, I&#8217;ll wait.  If you are a software developer that cares even a little about the user&#8217;s experience (and not just your own), go buy both of his books (<a href="http://www.sensible.com/dmmt.html">Don&#8217;t Make Me Think!</a> and <a href="http://www.sensible.com/rocketsurgery/index.html">Rocket Surgery Made Easy</a>) and read them cover to cover.  </p>
<p><strong>I did my first usability test yesterday and it went great, and here&#8217;s why: I didn&#8217;t take it personally.</strong>  If you have trouble with negative comments about your work, go read Steve&#8217;s books.  Hopefully they&#8217;ll give you some perspective to help you understand that those negative comments can and should be applied positively to your project.  </p>
<p>Anyway, back to my first usability test.  It really opened my eyes.  I&#8217;ve got that classic programmer <a href="http://en.wikipedia.org/wiki/Tunnel_vision">tunnel vision</a>, having worked on ESS day and night for months.  Seeing how someone else works through the app was enlightening &#8211; I came away with a full page of action items.  <strong>The wonderful thing about these todos is that they came from someone NOT ME.</strong>  Someone not invested on the project.  Someone with a fresh perspective.  <strong>They came from a real (potential) user.</strong>  </p>
<p>My advice: usability testing &#8211; do it early, do it often.  </p>
<p>If you want to try it yourself, have a look around <a href="http://www.sensible.com">Steve&#8217;s site</a>.  Especially check out <a href="http://www.sensible.com/rocketsurgery/index.html">the checklists</a> and <a href="http://www.peachpit.com/promotion/137602">the example video</a> of a usability test he conducted.  And then get ready to work on all the action items you collect from your tests. <img src='http://www.juliesoft.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Up next&#8230;</h3>
<p>Every Single Shot&#8217;s future is pretty clear right now: </p>
<ul>
<li>Add features</li>
<li>Run usability tests</li>
<li>Repeat</li>
</ul>
<p>It doesn&#8217;t need to be any more complicated than that&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juliesoft.com/2010/03/changelog-3-beta-release-and-the-start-of-something-great/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ChangeLog #2: Storing photos and little else</title>
		<link>http://www.juliesoft.com/2010/02/changelog-2-storing-photos-and-little-else/</link>
		<comments>http://www.juliesoft.com/2010/02/changelog-2-storing-photos-and-little-else/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 13:09:49 +0000</pubDate>
		<dc:creator>Jon Chase</dc:creator>
				<category><![CDATA[ChangeLog]]></category>
		<category><![CDATA[Every Single Shot]]></category>
		<category><![CDATA[Java & Programming]]></category>

		<guid isPermaLink="false">http://www.juliesoft.com/?p=296</guid>
		<description><![CDATA[Total earnings as of February 11th, 2010: $0
This week was a lot slower than I had hoped it would be.  I don&#8217;t think I made enough progress to be able to launch a beta (remember to sign up) on February 15th (4 days from now!) &#8211; but I&#8217;m still shooting for it.
Safe, secure photo [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.juliesoft.com%2F2010%2F02%2Fchangelog-2-storing-photos-and-little-else%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.juliesoft.com%2F2010%2F02%2Fchangelog-2-storing-photos-and-little-else%2F" height="61" width="51" /></a></div><h3><strong>Total earnings as of February 11th, 2010: $0</strong></h3>
<p>This week was a lot slower than I had hoped it would be.  I don&#8217;t think I made enough progress to be able to launch a beta (<a href="http://www.everysingleshot.com">remember to sign up</a>) on February 15th (4 days from now!) &#8211; but I&#8217;m still shooting for it.</p>
<h3>Safe, secure photo storage</h3>
<p>I&#8217;ve been working on hooking up <a href="http://www.everysingleshot.com">Every Single Shot</a> to <a href="http://aws.amazon.com/s3/">Amazon&#8217;s S3</a> (Simple Storage Service).  This is where all of the photos for Every Single Shot will be stored.  According to Amazon, I&#8217;m using S3 because it&#8217;s secure, reliable, fault tolerant, flexible, competitively priced, and most importantly has something to do with &quot;cloud&quot;.  I use it because it&#8217;s easy to work with, stores data redundantly, cheap, and easy to get started with.  </p>
<p>I&#8217;m using <a href="http://jets3t.s3.amazonaws.com/index.html">JetS3t</a> (of course the <a href="http://jets3t.s3.amazonaws.com/index.html">JetS3t site</a> is completely hosted in S3) to work with S3 from Grails.  I love it and highly recommend it.  That&#8217;s all I have to say about that.  </p>
<p>I&#8217;ve been able to reuse a lot of code that I developed for <a href="http://www.sendalong.com">SendAlong</a>, which was a huge blessing and time saver (let alone a validation (at least in my mind) that I can write some reusable code &#8211; there&#8217;s a first time for everything).  </p>
<h3>If you build it&#8230;the build will fail</h3>
<p><a href="http://www.jetbrains.com/teamcity/">My continuous integration server</a> is great, but it can be a time suck sometimes (when it rains, it pours).  I&#8217;d much rather be working on features for Every Single Shot than futzing around with trying to fix an ArrayIndexOutOfBoundsException, but hey, you gotta keep the builds happy.  </p>
<p>Once I release ESS and get it somewhat stable I&#8217;d love to build in some kind of <a href="http://www.infoq.com/news/2010/01/continuous-deployment-trenches">continuous deployment</a> to my development/release process.  Having a build server is the first step towards that, I guess.</p>
<h3>Next week&#8217;s goals</h3>
<p>There&#8217;s only one goal I&#8217;m focusing on now:</p>
<ul>
<li>Release the Every Single Shot beta on February 15th (stretch)</li>
</ul>
<p>Wish me luck.  See you next week!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juliesoft.com/2010/02/changelog-2-storing-photos-and-little-else/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ChangeLog #1: hacking, branding, and EC2</title>
		<link>http://www.juliesoft.com/2010/02/changelog-1-hacking-branding-and-ec2/</link>
		<comments>http://www.juliesoft.com/2010/02/changelog-1-hacking-branding-and-ec2/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 13:00:14 +0000</pubDate>
		<dc:creator>Jon Chase</dc:creator>
				<category><![CDATA[ChangeLog]]></category>
		<category><![CDATA[Every Single Shot]]></category>
		<category><![CDATA[everysingleshot]]></category>

		<guid isPermaLink="false">http://www.juliesoft.com/?p=271</guid>
		<description><![CDATA[Total earnings as of February 1, 2010: $0
I&#8217;ve been busy the last few weeks working on many of the things it takes to turn Every Single Shot from an idea into an actual product.  
The last few weeks of work have been really, really fun.  Not only have I been coding Every Single [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.juliesoft.com%2F2010%2F02%2Fchangelog-1-hacking-branding-and-ec2%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.juliesoft.com%2F2010%2F02%2Fchangelog-1-hacking-branding-and-ec2%2F" height="61" width="51" /></a></div><h3><strong>Total earnings as of February 1, 2010: $0</strong></h3>
<p>I&#8217;ve been busy the last few weeks working on many of the things it takes to turn <a href="http://www.everysingleshot.com">Every Single Shot</a> from an idea into an actual product.  </p>
<p>The last few weeks of work have been really, really fun.  Not only have I been coding Every Single Shot, I&#8217;ve also worked on branding and setting up hosting.  Every day is a different job and I&#8217;m really digging the variety.  Here&#8217;s what I&#8217;ve been working on lately&#8230;</p>
<h3>Development</h3>
<p>Where would a web app be without code, right?  I&#8217;ve spent a fair amount of time in <a href="http://www.grails.org/STS+Integration">my IDE</a> hacking away to get a basic app up and running (ESS is written in <a href="http://groovy.codehaus.org/">Groovy</a> and <a href="http://grails.org/">Grails</a>).  Here&#8217;s what I&#8217;ve got so far:</p>
<ul>
<li>Public facing marketing site: home page, tour, sign up, contact us</li>
<li>App pages: photo browser, photo uploader, account settings, and a few others</li>
</ul>
<p><strong>I&#8217;ve still got lots of functionality and features to add in &#8211; lots.</strong>  Security is going to be a big one coming up.  Another is integration with <a href="http://aws.amazon.com/s3/">Amazon&#8217;s S3</a> (more on that below).  Oh, and I also need to remember to add in actual features that users care about as well. <img src='http://www.juliesoft.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Here&#8217;s the current LOC (Lines of Code) count for ESS (from running <a href="http://grails.org/doc/latest/ref/Command%20Line/stats.html">grails stats</a>):</p>
<pre>+----------------------+-------+-------+
| Name                 | Files |  LOC  |
+----------------------+-------+-------+
| Controllers          |    14 |   803 |
| Domain Classes       |    15 |   266 |
| Jobs                 |     2 |    59 |
| Services             |     3 |   105 |
| Tag Libraries        |     4 |   205 |
| Groovy Helpers       |     3 |   116 |
| Java Helpers         |     3 |    81 |
| Unit Tests           |    29 |   374 |
| Integration Tests    |     1 |    40 |
+----------------------+-------+-------+
| Totals               |    74 |  2049 |
+----------------------+-------+-------+</pre>
<p>ESS&#8217;s code base is surprisingly small right now &#8211; that&#8217;s part of the beauty of Grails.  </p>
<h3>Branding with a graphic designer</h3>
<p><strong>This marks the first time that I&#8217;ve paid someone to help me with my business, and I couldn&#8217;t be happier</strong> with the job Christine did (and is still doing).  And it was fun.  Really, really fun.  To see an idea go from floating around in my head to something real was a very rewarding experience.  I&#8217;m so glad I decided to pony up the money and pay a professional to help with the branding and UI &#8211; I can guarantee that any design I would have come up with would have scared away any potential customers. <img src='http://www.juliesoft.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   Given my target market (young fiancés), I knew the design for ESS needed to look <em>good</em>.  Mission accomplished!</p>
<p>Here&#8217;s the final logo for ESS that Christine created:</p>
<p><a href="http://www.juliesoft.com/wp-content/uploads/2010/01/esslogo.png"><img src="http://www.juliesoft.com/wp-content/uploads/2010/01/esslogo.png" alt="Every Single Shot logo" title="Every Single Shot logo" width="400" height="198" class="size-full wp-image-274" /></a></p>
<p>See if you can figure out why I didn&#8217;t want to do the graphic design myself from the example below.  </p>
<p>I needed to put up one page at <a href="http://www.everysingleshot.com">www.everysingleshot.com</a> just to collect email addresses for my mailing list.  It needed to be simple, quick, and get the job done.  Here&#8217;s my take (click images for full size screenshots):</p>
<p><a href="http://www.juliesoft.com/wp-content/uploads/2010/01/homebefore.png"><img src="http://www.juliesoft.com/wp-content/uploads/2010/01/homebefore-300x196.png" alt="Before a graphic designer&#039;s touch" title="Before a graphic designer&#039;s touch" width="300" height="196" class="alignnone size-medium wp-image-275" /></a></p>
<p>And here&#8217;s the version I made after some help from Christine:</p>
<p><a href="http://www.juliesoft.com/wp-content/uploads/2010/01/homeafter.png"><img src="http://www.juliesoft.com/wp-content/uploads/2010/01/homeafter-300x223.png" alt="After a graphic designer&#039;s touch" title="After a graphic designer&#039;s touch" width="300" height="223" class="alignnone size-medium wp-image-276" /></a></p>
<p>But Christine didn&#8217;t just whip up some nice graphics, <strong>she also did great work with helping me define and focus ESS&#8217;s brand and marketing message</strong>.  As a developer first and a marketer last, I can&#8217;t understate how important it was to have a creative branding person helping me with this aspect of ESS.  I&#8217;ve been <a href="http://www.juliesoft.com/2009/11/marketing-books-for-small-businesses/">doing a lot of reading on branding and marketing</a> and I recognize their importance in creating a successful product, so I&#8217;m really thankful that Christine was able to help me so much with them.</p>
<p>Contact me (jon at juliesoft dot com) if you&#8217;re interested in having Christine do some work for you (I don&#8217;t want to plaster her email address on here) &#8211; I&#8217;ll forward your contact info to her.</p>
<h3>Hosting on Amazon&#8217;s cloud</h3>
<p>I used a combination of cloud (<a href="http://aws.amazon.com/ec2/">Amazon&#8217;s EC2</a>) and traditional (<a href="http://www.eapps.com/">eApps</a>) hosting platforms for <a href="http://www.sendalong.com">SendAlong</a>.  It worked well enough, but I didn&#8217;t like having to manage the two different environments.  Plus, the apps on the different platforms needed to talk to each other, and getting them to communicate reliably all the time was kind of difficult.  </p>
<p>This time I decided that I wanted to keep the hosting platform homogenous.  I also decided that there were at least a couple of different &#8220;cloud&#8221; services that ESS was going to use such as storage (like <a href="http://aws.amazon.com/s3/">Amazon&#8217;s S3</a>) and a CDN (like <a href="http://aws.amazon.com/cloudfront/">Amazon&#8217;s CloudFront</a>).  I researched a few different cloud hosting providers including <a href="http://aws.amazon.com/ec2/">Amazon EC2</a>, <a href="http://www.slicehost.com/">Slicehost</a>, <a href="http://www.rackspace.com/">Rackspace</a>, and <a href="http://www.joyent.com/">Joyent</a>.  I also found a great <a href="http://journal.uggedal.com/vps-performance-comparison">performance comparison of some cloud hosting providers</a>.  </p>
<p>Amazon and Joyent were the front runners, but I decided to go with Amazon mainly because <a href="http://status.aws.amazon.com/">they&#8217;re stable</a>, they&#8217;ve been around the block a few times, they&#8217;ve got good documentation, they&#8217;re fairly easy to use, the nice integration between all of their services&#8230;the list goes on.  I&#8217;m not saying Amazon&#8217;s services are right for everyone, but they suit my needs for Every Single Shot really well.  </p>
<p>After choosing a hosting provider, I needed to get a server set up.  That&#8217;s where the real fun came in.  (If you didn&#8217;t know I was a geek, the last two sentences are all the proof you need.)  </p>
<p>I&#8217;ve dabbled in Linux and the bulk of my command line experience has been in MS-DOS.  I&#8217;ve had a Mac for the last year and have gotten a little more comfortable with using a real command line, but all of <strong>that experience was nothing when stacked up to what I learned in the last two weeks while trying to build out a server with all the goodies ESS would need on EC2</strong>.  I wouldn&#8217;t have said that I was a command line n00b before two weeks ago, but now I think I can back it up.  Where have <a href="http://en.wikipedia.org/wiki/Pipeline_(Unix)">pipes</a>, <a href="http://www.computerhope.com/unix/ugrep.htm">grep</a>, and shell scripts been all of my life?</p>
<p>While I was working on configuring an Amazon EC2 <a href="http://docs.amazonwebservices.com/AWSEC2/2009-11-30/DeveloperGuide/index.html?ComponentsAMIs.html">AMI</a> to my liking (Apache, Tomcat, MySQL, etc.) I came across a <a href="http://alestic.com/">fantastic EC2 resource</a>.  If you&#8217;re running <a href="http://www.ubuntu.com/">Ubuntu</a> on EC2, or are trying to figure out what OS to use for your EC2 set up, <strong>have a long look at <a href="http://alestic.com">Eric Hammond&#8217;s alestic site</a></strong>.  Not only has Eric provided some top notch Ubuntu server AMIs, but the Canonical team (the people behind Ubuntu) has really embraced Amazon EC2 and provides several <a href="https://help.ubuntu.com/community/EC2StartersGuide#Getting the images">&#8220;official&#8221; Ubuntu AMIs</a> to get started with.  <strong>I feel completely comfortable using these things in production</strong> &#8211; it&#8217;s obvious that the Canonical team has put in a lot of work on their Ubuntu AMIs.  </p>
<p>The coolest thing about these Ubuntu images (I&#8217;m using ami-1515f67c on an EC2 small instance, btw) is that you don&#8217;t have to <a href="http://docs.amazonwebservices.com/AWSEC2/2009-11-30/DeveloperGuide/index.html?PreparingAndCreatingAMIs.html">rebundle</a> your own AMI on top of them (if you&#8217;ve worked with EC2 in the past you know what I&#8217;m talking about, and if you haven&#8217;t, then just trust me that this is a good thing).  This is where I learned about the wonderful world of <a href="http://en.wikipedia.org/wiki/Advanced_Packaging_Tool">apt-get</a>, which handles installing a lot of common software for you.  Having used Windows most of my life, I&#8217;m still not used to this, but <a href="http://en.wikipedia.org/wiki/Package_management_system">package managers</a> are one of the best things about the Linux platform.  Need to install Apache2?  sudo apt-get install apache2.  Need to install Tomcat6?  sudo apt-get install tomcat6.  Of course you&#8217;ll need to customize the installs sometimes, but that&#8217;s just a matter of writing a shell script.  </p>
<p>Since there&#8217;s no need to rebundle your own AMI, there must be a way to configure the base AMI easily, right?  Indeed, and of course <a href="http://alestic.com/2009/08/runurl">Eric Hammond has already taken care of that for me</a>.  <strong>With literally one command</strong>, I can launch an EC2 instance (for test or prod), attach a <a href="http://aws.amazon.com/about-aws/whats-new/2008/03/26/announcing-elastic-ip-addresses-and-availability-zones-for-amazon-ec2/">static IP address</a> to it, <a href="http://alestic.com/2009/05/mysql-ec2-ebs-apparmor-update">attach a persistent EBS volume to it</a> (for storing MySQL data), install every software package I need (Apache, Tomcat, MySQL, etc), check out ESS from source control and build it, and have it up in running in about 5 to 10 minutes.  This means that when I&#8217;m ready to test a new version of ESS, I can issue a command to do all of the above, plus run through all of my <a href="http://seleniumhq.org/">automated tests</a>.  As long as testing takes me less than 60 minutes, <strong>total cost out of pocket is 10 cents</strong>.  </p>
<p>Yes, I&#8217;ve heard that Amazon&#8217;s EC2 isn&#8217;t as fast as some of its competitors.  I&#8217;m willing to live with that for now, especially considering that I can run a new server with <a href="http://aws.amazon.com/ec2/instance-types/">10 times the RAM and CPU power</a> with a single command if I need to.  </p>
<p>(I&#8217;m going to write another post about EC2 and the other Amazon web services in the future that will have lots more helpful information &#8211; so remember to <a href="http://feeds.feedburner.com/changelog_jonchase">subscribe to my blog</a> if you haven&#8217;t already.)</p>
<h3>Timeline and goals</h3>
<p>I need to get a beta out soon.  <strong>I&#8217;ve been developing in a vacuum for too long.</strong>  My goal is for a February 15th beta release, then rapid iterations based on user feedback (<a href="http://www.everysingleshot.com">sign up if you want to help</a>), and then a 1.0 release on April 1st.  That should give ESS some time to get a bit of marketing traction before the heavy wedding season starts in May.</p>
<p>I&#8217;ve got big plans for ESS, so I&#8217;ve set some stretch goals.</p>
<ul>
<li>Goal #1: <strong>10% of income will go straight to charitable causes</strong> (that&#8217;s pre-tax, pre-expense income)</li>
<li>Goal #2: <strong>100 new paying customers per month by July 1st, 2010</strong> </li>
</ul>
<p>Do you have a suggestion on how I can improve these goals?  Leave a comment and help me out!</p>
<p>See you next week!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juliesoft.com/2010/02/changelog-1-hacking-branding-and-ec2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Time for a change</title>
		<link>http://www.juliesoft.com/2009/12/time-for-a-change/</link>
		<comments>http://www.juliesoft.com/2009/12/time-for-a-change/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 06:38:55 +0000</pubDate>
		<dc:creator>Jon Chase</dc:creator>
				<category><![CDATA[ChangeLog]]></category>
		<category><![CDATA[Every Single Shot]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[everysingleshot]]></category>
		<category><![CDATA[juliesoft]]></category>
		<category><![CDATA[SendAlong]]></category>

		<guid isPermaLink="false">http://www.juliesoft.com/?p=242</guid>
		<description><![CDATA[The past
I&#8217;ve been blogging here since December, 2006.  In that time, I&#8217;ve covered lots of random topics, including building my first product.  I haven&#8217;t (yet) blogged about shutting it down, but that topic is on the short list to cover soon.  The last three years have been good, but things are about [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.juliesoft.com%2F2009%2F12%2Ftime-for-a-change%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.juliesoft.com%2F2009%2F12%2Ftime-for-a-change%2F" height="61" width="51" /></a></div><h3>The past</h3>
<p>I&#8217;ve been blogging here <a href="http://www.juliesoft.com/2006/12/starting-up/">since December, 2006</a>.  In that time, I&#8217;ve covered <a href="http://www.juliesoft.com/2007/10/measure-the-marketing-effectiveness-of-your-website/">lots</a> <a href="http://www.juliesoft.com/2007/10/non-invasive-captcha/">of</a> <a href="http://www.juliesoft.com/2007/11/trying-to-decide-on-a-payment-processor-for-credit-cards-on-web-site/">random</a> <a href="http://www.juliesoft.com/2007/07/better-hibernate-logging-with-log4j/">topics</a>, including building <a href="http://www.juliesoft.com/2007/08/ground-control-to-major-tom-close-to-lift-off/">my</a> <a href="http://www.juliesoft.com/2008/02/sendalong-10-is-out-more-info-coming-soon/">first</a> <a href="http://www.juliesoft.com/2008/02/sendalong-got-picked-up/">product</a>.  I haven&#8217;t (yet) blogged about <a href="http://www.sendalong.com">shutting it down</a>, but that topic is on the short list to cover soon.  The last three years have been good, but things are about to change.</p>
<p>During the 3+ years I&#8217;ve been blogging I&#8217;ve never had a plan for the blog.  If something <a href="http://www.juliesoft.com/2007/12/video-games-in-3d/">caught my attention</a>, I wrote about it.  There was no such thing as &#8220;off topic&#8221;, because there was also no such thing as &#8220;on topic&#8221;.  Although it&#8217;s been fun for me to write the blog, the quality of the content has  suffered for want of editorial direction.  </p>
<p>That&#8217;s changing as of now, and here&#8217;s why.  </p>
<h3>The present</h3>
<p>I&#8217;m working full time on a <a href="http://www.everysingleshot.com">new web app</a>.  <a href="http://www.everysingleshot.com">Every Single Shot</a> isn&#8217;t a side project.  Among other things, it&#8217;s my <strong>full time</strong> job.  Some might call this kind of set up a <a href="http://www.ericsink.com/bos/Micro_ISV.html">microISV</a>, some might call it a <a href="http://answers.onstartups.com">start up</a>, some might even call it a mom and pop joint (ok, no one would ever call it that).  I realize that I&#8217;m very, very lucky to have the luxury to be able to work on my business &#8211; my dream &#8211; full time.  I also realize that this is just the kind of thing that a lot of other hackers dream about on a daily basis while they&#8217;re <a href="http://www.imdb.com/title/tt0151804/">stuck at their dead end jobs</a>.  This is why I&#8217;ll be sharing the details of my adventures from now on.  </p>
<p class="aligncenter"><a href="http://www.juliesoft.com/wp-content/uploads/2009/12/797px-Monarch_Butterfly_Cocoon_2.jpg"><img src="http://www.juliesoft.com/wp-content/uploads/2009/12/797px-Monarch_Butterfly_Cocoon_2.jpg" alt="797px-Monarch_Butterfly_Cocoon_2" title="797px-Monarch_Butterfly_Cocoon_2" width="500" height="376" class="aligncenter size-full wp-image-244" /></a></p>
<h3>The future</h3>
<p>I&#8217;ll be chronicling my journey on a weekly basis, talking about what I&#8217;ve been working on, ideas I&#8217;ve had, and changes that have happened.  That&#8217;s why I&#8217;ve renamed the blog to <a href="http://www.juliesoft.com"><strong>ChangeLog</strong></a>.  (Actually, I&#8217;m not renaming it, I&#8217;m naming it.  It hasn&#8217;t had a name until now because it hasn&#8217;t had any direction until now.)  Just as a stereotypical <a href="http://en.wikipedia.org/wiki/Changelog">changelog</a> is to code, this blog is to me and my business: a place to record changes and happenings of interest.</p>
<p>It will be more than just a ChangeLog, though.  I&#8217;ll still be talking about <a href="http://groovy.codehaus.org/">Groovy</a> / <a href="http://grails.org/">Grails</a> (Grails is hands down the best web framework out there IMO, and I&#8217;ll have words with anyone who says otherwise).  I&#8217;ll be talking about small business, <a href="http://www.juliesoft.com/category/marketing/">marketing</a> (lots of marketing), branding, site optimization and testing, e-commerce&#8230;the list goes on.  But instead of talking about this or that with no context, I&#8217;ll filter future posts through the lens of my business and its products.  Less noise, more insight &#8211; that&#8217;s what I&#8217;m shooting for.</p>
<p>Since this post is meant to be a turning point in my blogging journey, I thought I&#8217;d finish by linking to one blog that has influenced me greatly up to this point.  This blog is one of my absolute favorites &#8211; the kind I where I read every post from start to finish, regardless of content, because invariably I learn something.  You should be reading this blog.</p>
<p><a href="http://www.balsamiq.com/blog/">Balsamiq blog</a> &#8211; <strong>READ THIS BLOG!</strong></p>
<p>(I use <a href="http://www.google.com/reader">Google Reader</a> to manage all of my blog subscriptions.  If you&#8217;re not using an RSS reader to keep updated on blogs, I suggest you <a href="http://www.google.com/reader">check out Reader</a>.)</p>
<p>If you haven&#8217;t already, please consider subscribing to the <a href="http://feeds.feedburner.com/changelog_jonchase">ChangeLog RSS feed</a> and/or following me on Twitter (<a href="http://www.twitter.com/jonchase">@jonchase</a>).</p>
<p><strong>Do you prefer blogs that have a specific focus, or those that are a bit more random?  What do you think of the direction I&#8217;m going to take my blog?  Leave a comment below and let me know.</strong></p>
<p class="citation">Cocoon picture courtesy of Greyson Orlando via <a href="http://commons.wikimedia.org/wiki/File:Monarch_Butterfly_Cocoon_2.jpg">Wikimedia</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juliesoft.com/2009/12/time-for-a-change/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->