<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>The Flying Developer</title>
	
	<link>http://theflyingdeveloper.com</link>
	<description>The daring adventures of an aspiring software developer</description>
	<lastBuildDate>Sat, 19 May 2012 14:09:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/theflyingdeveloper" /><feedburner:info uri="theflyingdeveloper" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Why I Contribute to Stack Overflow</title>
		<link>http://feedproxy.google.com/~r/theflyingdeveloper/~3/donpJkp4xd8/why-i-contribute-to-stack-overflow</link>
		<comments>http://theflyingdeveloper.com/why-i-contribute-to-stack-overflow#comments</comments>
		<pubDate>Sat, 19 May 2012 14:00:04 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://theflyingdeveloper.com/?p=1015</guid>
		<description><![CDATA[Recently I&#8217;ve been getting into Stack Overflow, after dabbling with it once or twice over the last couple of years. Now, I&#8217;ve been using SO almost constantly since it started. It&#8217;s probably the best general resource for answering programming questions on &#8230; <a href="http://theflyingdeveloper.com/why-i-contribute-to-stack-overflow">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Recently I&#8217;ve been getting into Stack Overflow, after dabbling with it once or twice over the last couple of years.</p>
<p><a href="http://stackoverflow.com/users/131066/david-underwood"><img class="aligncenter size-full wp-image-1016" title="Stack Overflow screenshot" src="http://theflyingdeveloper.com/blog/wp-content/uploads/2012/05/Screen-Shot-2012-05-19-at-9.53.26-AM.png" alt="" width="989" height="251" /></a></p>
<p>Now, I&#8217;ve been <em>using</em> SO almost constantly since it started. It&#8217;s probably the best general resource for answering programming questions on the internet. What I haven&#8217;t really been doing until recently is <em>contributing.<span id="more-1015"></span></em></p>
<p>Why contribute? Well first off, I have legitimate answers to some of the questions on there. Helping other people out with understanding their code is lots of fun. But there&#8217;s more to it than that.</p>
<p>Answering questions on SO helps my code review skills. There&#8217;s a big gap between knowing the answer to a question and clearly explaining it, especially without speaking about it in person. It&#8217;s really hard to leave a good answer without going over 10 lines.</p>
<p><a href="http://stackoverflow.com/questions/10653680/datetime-select-define-hours-range/10654085#10654085"><img class="aligncenter size-full wp-image-1017" title="Stack Overflow Comment Screenshot" src="http://theflyingdeveloper.com/blog/wp-content/uploads/2012/05/Screen-Shot-2012-05-19-at-9.55.19-AM.png" alt="" width="672" height="115" /></a></p>
<p>I wasn&#8217;t initially expecting this, but I also get my code reviewed. People will comment on my answers to suggest optimizations, point out mistakes, or just agree with my solution. All of these help me to write better code.</p>
<p>It also helps me learn. Because I want to give good answers, I commonly double-check my solutions before submitting my responses. I spend about as much time in the Rails docs as I do writing text. This reinforces my own skills and often teaches me something new that I didn&#8217;t know before.</p>
<p><a href="http://stackoverflow.com/questions/7375024/building-a-rails3-app-with-shopify-api-where-to-place-the-session-filter/7378089#7378089"><img class="aligncenter size-full wp-image-1019" title="Stack Overflow Answer Screenshot" src="http://theflyingdeveloper.com/blog/wp-content/uploads/2012/05/Screen-Shot-2012-05-19-at-10.01.00-AM.png" alt="" width="735" height="298" /></a></p>
<p>The last thing I do is pick questions that I don&#8217;t know the solution to, and then try to solve them. I&#8217;ll create a new Rails project, add the code from the question, and then work through it until the problem is resolved. This is pure learning for me, with the bonus that I can pass my findings onto others.</p>
<p>If you do any kind of coding, I&#8217;d recommend contributing to Stack Overflow. Not only will you be helping others, it&#8217;ll make you a better programmer.</p>
<img src="http://feeds.feedburner.com/~r/theflyingdeveloper/~4/donpJkp4xd8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://theflyingdeveloper.com/why-i-contribute-to-stack-overflow/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://theflyingdeveloper.com/why-i-contribute-to-stack-overflow</feedburner:origLink></item>
		<item>
		<title>What is an App?</title>
		<link>http://feedproxy.google.com/~r/theflyingdeveloper/~3/kuPDwqy1y_8/what-is-an-app</link>
		<comments>http://theflyingdeveloper.com/what-is-an-app#comments</comments>
		<pubDate>Mon, 14 May 2012 14:00:39 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[rants]]></category>

		<guid isPermaLink="false">http://theflyingdeveloper.com/?p=1000</guid>
		<description><![CDATA[About a week before I published my last blogpost on Who Goes First the first version of the app was posted on Reddit by a friend of mine. His title was &#8216;App made by a colleague of mine&#8216;. I was &#8230; <a href="http://theflyingdeveloper.com/what-is-an-app">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://whogoesfirst.herokuapp.com"><img class="aligncenter  wp-image-1006" title="The player with the most apps goes first" src="http://theflyingdeveloper.com/blog/wp-content/uploads/2012/04/Screen-Shot-2012-05-12-at-9.47.31-AM.png" alt="" width="1173" height="308" /></a></p>
<p>About a week before I published my last blogpost on <a href="http://whogoesfirst.herokuapp.com/" target="_blank">Who Goes First</a> the first version of the app was posted on Reddit by a friend of mine. His title was &#8216;<a href="http://www.reddit.com/r/boardgames/comments/s1tuc/who_goes_first_an_app_made_by_a_colleague_of_mine/" target="_blank">App made by a colleague of mine</a>&#8216;.</p>
<p>I was surprised by the comments. Here are a couple of them:</p>
<blockquote><p>Is this an app? It seems just like a website.</p>
<p>Well, the new cool thing is to call a page in &#8220;the cloud&#8221; that does one specific thing a &#8220;web app&#8221;&#8230;</p>
<p>Yeah, it&#8217;s annoying. I was expecting a link to iTunes or one of the Android markets.</p></blockquote>
<p><span id="more-1000"></span></p>
<p>I have no doubt that Who Goes First is a (web)app, not just a website. It also runs well on mobile devices thanks to Bootstrap&#8217;s responsive design, so there&#8217;s no need for a native app. Nevertheless, it still didn&#8217;t fit these commenters&#8217; definition of &#8216;app&#8217;.</p>
<p>We have similar problems with the Shopify App Store. I think the name is fine, but on more than one occasion merchants have been confused when going there because they&#8217;re expecting mobile apps, not webapps. We&#8217;ve been considering changing the name to &#8216;plugin store&#8217;, &#8216;extension store&#8217;, or something similar to combat this.</p>
<p>Where does this disconnect happen? I think the problem is context. I, my friends, and my colleagues are all deeply involved in technology and so have a fundamental understanding of how software is designed, developed, and distributed. On the other hand you have the people who consume the software we make. They don&#8217;t know the first thing about APIs, application frameworks, software patterns, or anything else that goes into making an app and what differentiates an app from &#8216;just a website&#8217;. They shouldn&#8217;t have to, either. The whole point of software is to abstract the complicated parts away from the user so that they don&#8217;t have to deal with them.</p>
<img src="http://feeds.feedburner.com/~r/theflyingdeveloper/~4/kuPDwqy1y_8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://theflyingdeveloper.com/what-is-an-app/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://theflyingdeveloper.com/what-is-an-app</feedburner:origLink></item>
		<item>
		<title>Who Goes First? An App to Entertain Boardgamers</title>
		<link>http://feedproxy.google.com/~r/theflyingdeveloper/~3/OiZfB8QH0Qg/who-goes-first-an-app-to-entertain-boardgamers</link>
		<comments>http://theflyingdeveloper.com/who-goes-first-an-app-to-entertain-boardgamers#comments</comments>
		<pubDate>Tue, 24 Apr 2012 16:00:24 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[projects]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://theflyingdeveloper.com/?p=981</guid>
		<description><![CDATA[I still consider myself to be a relative ruby/rails novice, so every now and again I build &#8216;toy&#8217; projects to teach myself more about the framework. Usually these don&#8217;t end up going anywhere, but my latest attempt over about 3 &#8230; <a href="http://theflyingdeveloper.com/who-goes-first-an-app-to-entertain-boardgamers">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I still consider myself to be a relative ruby/rails novice, so every now and again I build &#8216;toy&#8217; projects to teach myself more about the framework. Usually these don&#8217;t end up going anywhere, but my latest attempt over about 3 evenings of coding turned out rather well.</p>
<p style="text-align: center;"><a href="http://whogoesfirst.herokuapp.com"><img class="aligncenter  wp-image-988" title="Rule 1" src="http://theflyingdeveloper.com/blog/wp-content/uploads/2012/04/Screen-Shot-2012-04-24-at-12.24.26-PM-1024x269.png" alt="" width="584" height="153" /></a></p>
<p><a href="http://whogoesfirst.herokuapp.com/">Who Goes First</a> is a super-simple web app that spits out a random rule to decide who takes the first turn in a board game. It supports user submissions and has a contact form. That&#8217;s it.<span id="more-981"></span></p>
<h2>Gems Used</h2>
<ul>
<li><a href="https://github.com/spilliton/randumb">randumb</a></li>
<li><a href="https://github.com/pluginaweek/state_machine">state_machine</a></li>
<li><a href="http://activeadmin.info">activeadmin</a></li>
<li><a href="https://github.com/decioferreira/bootstrap-generators">bootstrap-generators</a></li>
</ul>
<p>The backbone of this app is <a href="http://activeadmin.info/">Active Admin</a>. I love this gem. The documentation took a little while to decipher but once I had a general idea of what was going on it was a pleasure to use. Before using activeadmin I&#8217;d always used the console to &#8216;administer&#8217; my site &#8211; creating objects, updating state, that sort of thing. Activeadmin bypasses all of that by providing a proper web interface complete with authentication thanks to devise. It&#8217;s just customizable enough to allow complex actions like triggering state changes on objects so it was perfect for Who Goes First as all user submissions need to be moderated before going live.</p>
<p style="text-align: center;"><a href="http://whogoesfirst.herokuapp.com"><img class="aligncenter  wp-image-990" title="Rule 2" src="http://theflyingdeveloper.com/blog/wp-content/uploads/2012/04/Screen-Shot-2012-04-24-at-12.26.08-PM-1024x269.png" alt="" width="584" height="153" /></a></p>
<p><a href="https://github.com/spilliton/randumb">Randumb</a> is a brilliant little gem that adds a <code>random</code> method to ActiveRelation that does exactly what you&#8217;d expect: Pulls and returns a random object from the current relation. I&#8217;m using it to grab a single object but you can specify a count if you want more. Very useful.</p>
<p><a href="https://github.com/decioferreira/bootstrap-generators">Bootstrap-Generators</a> provided my layouts. <a href="http://twitter.github.com/bootstrap/">Bootstrap</a> (from Twitter) is a godsend for developers such as myself who hate spending time (and suck at) designing layouts. The generators gem gets everything set up for you and provides basic rails-y templates to get started with. One note if you&#8217;re planning on using this gem though: At the time of writing the current release on rubygems.org does not contain the responsive templates, so grab it from the github repo instead. The responsive aspect was paramount for me as I envision people using the app on a smartphone, tablet or whatever at the gaming table.</p>
<p>Finally, there&#8217;s <a href="https://github.com/pluginaweek/state_machine">state_machine</a>. I used this gem to provide the basis of my moderation mechanism. New user-submitted rules start in a &#8216;pending&#8217; state and only appear once I move them to &#8216;approved&#8217;. There&#8217;s also a &#8216;denied&#8217; state for rules I don&#8217;t want published.</p>
<p style="text-align: center;"><a href="http://whogoesfirst.herokuapp.com"><img class="aligncenter  wp-image-991" title="Rule 3" src="http://theflyingdeveloper.com/blog/wp-content/uploads/2012/04/Screen-Shot-2012-04-24-at-12.27.07-PM-1024x270.png" alt="" width="584" height="153" /></a></p>
<h2>Other things I learned</h2>
<p><a href="http://heroku.com">Heroku</a> has really good mail support thanks to <a href="http://sendgrid.com/">Sendgrid</a>. I was able to hook up my contact form really easily (although my webhost&#8217;s mail server bounced the first few messages as the domains didn&#8217;t match up. D&#8217;oh!).</p>
<p>Activeadmin doesn&#8217;t play well with the asset pipeline. The styles and js are hidden away in the gem so I had to explicitly load them in the initializer. Easy once you know how, but it was a pain when I deployed to production for the first time and found that my styles were broken.</p>
<p style="text-align: center;"><a href="http://whogoesfirst.herokuapp.com"><img class="aligncenter  wp-image-992" title="Rule 4" src="http://theflyingdeveloper.com/blog/wp-content/uploads/2012/04/Screen-Shot-2012-04-24-at-12.28.00-PM-1024x270.png" alt="" width="584" height="153" /></a></p>
<h2>What&#8217;s next?</h2>
<p>I&#8217;m pretty pleased with the site as-is at the moment, but I do have some ideas for improvements. The first thing I want to do is add some normalization to new submissions so that they&#8217;re all correctly capitalized and punctuated. Right now about half of the submissions have full stops at the end and half don&#8217;t which and it&#8217;s a pain to go in and edit them all manually.</p>
<p>I&#8217;m also considering adding modifiers to the rules. A lot of them refer to the &#8216;most&#8217;, &#8216;biggest&#8217;, or &#8216;largest&#8217; of something. Detecting these and randomly replacing them with the opposite version (&#8216;least&#8217;, &#8216;smallest&#8217;, etc.) would add some free variety to the ruleset.</p>
<img src="http://feeds.feedburner.com/~r/theflyingdeveloper/~4/OiZfB8QH0Qg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://theflyingdeveloper.com/who-goes-first-an-app-to-entertain-boardgamers/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://theflyingdeveloper.com/who-goes-first-an-app-to-entertain-boardgamers</feedburner:origLink></item>
		<item>
		<title>The Flying Developer Learns To Write</title>
		<link>http://feedproxy.google.com/~r/theflyingdeveloper/~3/GoHhTBGf5I8/the-flying-developer-learns-to-write</link>
		<comments>http://theflyingdeveloper.com/the-flying-developer-learns-to-write#comments</comments>
		<pubDate>Mon, 02 Apr 2012 14:00:55 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://theflyingdeveloper.com/?p=864</guid>
		<description><![CDATA[Coming from a background in Computer Science and Software engineering, some of the tasks I have to do in my current role are daunting. I used to write code 100% of the time but now I&#8217;m more likely to be &#8230; <a href="http://theflyingdeveloper.com/the-flying-developer-learns-to-write">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Coming from a background in Computer Science and Software engineering, some of the tasks I have to do in my current role are daunting. I used to write code 100% of the time but now I&#8217;m more likely to be putting together a presentation or writing public documentation. Even worse, app developers look to me for advice on copywriting and content for their app&#8217;s promotional video. Nightmare!</p>
<p>Actually, it&#8217;s not that bad. One of the reasons I took my job was because I enjoy these &#8216;right brain&#8217; problems. Applying flair and creativity to something as rigid and mathematical as software is incredibly rewarding.</p>
<p><a href="http://adsoftheworld.com/media/print/mercedes_benz_left_brain_right_brain_paint"><img class="alignnone" title="Mercedes Bens Brain" src="http://adsoftheworld.com/files/images/paint-72dpi.jpg" alt="" width="1663" height="1176" /></a></p>
<p><span id="more-864"></span>It&#8217;s definitely not easy to switch over from left brain to right brain mode. Thankfully, there are some really great resources for software developers like me who are dabbling in unfamiliar territory. Here are a couple that I&#8217;ve found useful.</p>
<h2>Presentation is Everything</h2>
<p><a href="http://zachholman.com/posts/slide-design-for-developers/">Slide design for developers</a> is a fantastic guide to giving better presentations. I still default to &#8216;bullet lists and pictures&#8217; way too often when I&#8217;m presenting. After reading this article I resolved to start putting some visual punch into my slides cut down on the text as much as possible. From the article:</p>
<blockquote><p>My slides are not designed for people who didn’t see the talk in person. They’re designed to support my words, not some online audience.</p></blockquote>
<p>This is something that is easy to forget when writing slides. I never used to write slide notes which resulted in my constantly turning round to <em>read my own slides</em> while presenting them. If you need to read your own slides, you&#8217;re doing it wrong. My colleague <a href="http://twitter.com/edwardog">Edward</a> recently gave an internal presentation rooted in the principles introduced in the article and it was stellar.</p>
<h2>Copywriting</h2>
<p>We recently designed the <a href="http://apps.shopify.com">Shopify App Store</a>, and part of that involved writing guidelines for developers who are publishing their apps there. After being the App Store custodian for six months I&#8217;ve seen my fair share of good and bad attempts at listings. It&#8217;s easy to tell them apart, but harder to quantify exactly what a good listing has that a bad one doesn&#8217;t. Furthermore, we have to explain these concepts (once we&#8217;ve figured out what they are) to developers.</p>
<p>I&#8217;ve found <a href="http://copywritingforgeeks.com/" target="_blank">Copywriting for Geeks</a> to be a great resource for figuring these things out. It&#8217;s got a great guide for doing precisely the kind of writing we&#8217;re encouraging our developers to do with their app listings, and helped me to pin down the points I wanted to make. Right now you can get it for free (in exchange for signing up for the author&#8217;s mailing list), so I definitely recommend taking a look.</p>
<img src="http://feeds.feedburner.com/~r/theflyingdeveloper/~4/GoHhTBGf5I8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://theflyingdeveloper.com/the-flying-developer-learns-to-write/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://theflyingdeveloper.com/the-flying-developer-learns-to-write</feedburner:origLink></item>
		<item>
		<title>Dashboard Update</title>
		<link>http://feedproxy.google.com/~r/theflyingdeveloper/~3/27kt5Cz3-a8/951</link>
		<comments>http://theflyingdeveloper.com/951#comments</comments>
		<pubDate>Mon, 27 Feb 2012 15:00:29 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[news]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[dashboard]]></category>
		<category><![CDATA[ferrets]]></category>
		<category><![CDATA[flickr]]></category>
		<category><![CDATA[geckoboard]]></category>

		<guid isPermaLink="false">http://theflyingdeveloper.com/?p=951</guid>
		<description><![CDATA[Previously I wrote about creating a weather widget for Geckoboard. Here&#8217;s the current state of things: Calendar: Built in widget, with custom text size to make it more readable Date and Time: Another built in widget. Weather: Covered last time, &#8230; <a href="http://theflyingdeveloper.com/951">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a title="Geckoboard Weather Widget (Wot I Made)" href="http://theflyingdeveloper.com/geckoboard-weather-widget-wot-i-made">Previously</a> I wrote about creating a weather widget for <a title="Geckoboard" href="http://geckoboard.com">Geckoboard</a>. Here&#8217;s the current state of things:<a href="http://theflyingdeveloper.com/blog/wp-content/uploads/2012/02/Default-dashboard-Sousbois-Read-Only-Mode.jpg"><img class="aligncenter size-full wp-image-954" title="Dashboard" src="http://theflyingdeveloper.com/blog/wp-content/uploads/2012/02/Default-dashboard-Sousbois-Read-Only-Mode.jpg" alt="" width="1010" height="746" /></a></p>
<ol>
<li><strong>Calendar</strong>: Built in widget, with custom text size to make it more readable</li>
<li><strong>Date and Time</strong>: Another built in widget.</li>
<li><strong>Weather</strong>: Covered <a title="Geckoboard Weather Widget (Wot I Made)" href="http://theflyingdeveloper.com/geckoboard-weather-widget-wot-i-made">last time</a>, it takes weather info from Yahoo and displays it.</li>
<li><strong>ToDo List</strong>: A placeholder for now, but will display a particular shared note from Evernote that we can fill with important things we need to do.</li>
<li><strong>Weasels!</strong>: Geckoboard has an image widget, so I wrote an endpoint that looks like a  jpeg but fetches a random image from a person&#8217;s Flickr photostream and returns it. Every time the board refreshes, Tada! New image. In our case, it&#8217;s usually <a title="Kim's Flickr Page" href="http://www.flickr.com/photos/kimstitch">embroidery or ferrets</a>.</li>
</ol>
<p>&nbsp;</p>
<img src="http://feeds.feedburner.com/~r/theflyingdeveloper/~4/27kt5Cz3-a8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://theflyingdeveloper.com/951/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://theflyingdeveloper.com/951</feedburner:origLink></item>
		<item>
		<title>Reddit Advertising: It Went Okay</title>
		<link>http://feedproxy.google.com/~r/theflyingdeveloper/~3/vy5b2VfQ-Zw/reddit-advertising-it-went-okay</link>
		<comments>http://theflyingdeveloper.com/reddit-advertising-it-went-okay#comments</comments>
		<pubDate>Mon, 06 Feb 2012 15:00:40 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://theflyingdeveloper.com/?p=940</guid>
		<description><![CDATA[Back at the start of January I promised a follow-up post on how my dogfooding experiment went. Sadly, the business model I went with (taking pre-orders to fund a print run) didn&#8217;t work out as well as I hoped. Even &#8230; <a href="http://theflyingdeveloper.com/reddit-advertising-it-went-okay">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Back at the start of January <a title="The Flying Developer Eats His Own Dogfood" href="http://theflyingdeveloper.com/the-flying-developer-eats-his-own-dogfood">I promised a follow-up post on how my dogfooding experiment went</a>. Sadly, the business model I went with (taking pre-orders to fund a print run) didn&#8217;t work out as well as I hoped. Even though I avoided the up-front cost of getting the shirts printed, I hadn&#8217;t factored in how much I would have to reasonably spend on publicity/advertising to make the project a success. Seeing as it was an all-or-nothing deal, spending hundreds on advertising that I might not see anything back from turned out to be too much of a risk. I did run one campaign though, and I think it&#8217;s worth talking about here.</p>
<p><span id="more-940"></span></p>
<p>A quick recap: My plan was to sell t-shirts to Starcraft 2 fans. My primary audience for this was <a href="http://reddit.com/r/starcraft">/r/starcraft</a>, which has 80,000 members. To this end, I looked into Reddit&#8217;s self-serve advertising service.</p>
<p><a href="http://theflyingdeveloper.com/blog/wp-content/uploads/2012/02/Screen-shot-2012-02-04-at-10.12.36-.png"><img class="aligncenter size-full wp-image-944" title="Reddit Ad" src="http://theflyingdeveloper.com/blog/wp-content/uploads/2012/02/Screen-shot-2012-02-04-at-10.12.36-.png" alt="" width="1117" height="90" /></a></p>
<p>Reddit advertising works on a proportional bidding system. On any given day, you can place a bid to get your ad shown. 48 hours before the start of that day, they total up all the bids and give your ad a proportion of pageviews equal to your bid&#8217;s fraction of that day&#8217;s total from all advertisers. So if I bid $50 for a day and so does one other person, we get half of the pageviews each. It&#8217;s good in that you get to set your own budget, but the downside is that you don&#8217;t know the totals and therefore can&#8217;t predict how much exposure your ad will get beforehand.</p>
<p>For my own part, I decided to set up a campaign that ran over a weekend on /r/starcraft with a budget of $50 a day. Here&#8217;s how it went:</p>
<div id="attachment_941" class="wp-caption aligncenter" style="width: 672px"><img class=" wp-image-941" title="Reddit Ad Stats" src="http://theflyingdeveloper.com/blog/wp-content/uploads/2012/02/Screen-shot-2012-02-04-at-9.42.03-.png" alt="" width="662" height="220" /><p class="wp-caption-text">Ad Stats. The orange line = uniques, blue = total.</p></div>
<p>You can see from the graph on the left that I got on average 5k unique impressions every hour. Not bad! What&#8217;s more interesting is the number of clicks. Initially the clicks were very high indeed, but each subsequent day they decreased. I imagine this is because the same redditors come back every day, and so the ones that have already clicked on an ad won&#8217;t do so again next time. I don&#8217;t know if this pans out for a longer campaign, but I&#8217;m inclined to stick to the short format to combat the risk of stagnation.</p>
<p>I got 12 full coversions (i.e. people placing orders) from the campaign, which if I&#8217;d actually converted to sales would have covered the costs of the advertising and netted me some profit to boot. Overall, definitely worth my money.</p>
<p>I have some plans for reviving my shop in the next few months, and when I do I&#8217;ll definitely be advertising it on Reddit again. I&#8217;ll be posting about it on here if everything goes well.</p>
<p>&nbsp;</p>
<img src="http://feeds.feedburner.com/~r/theflyingdeveloper/~4/vy5b2VfQ-Zw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://theflyingdeveloper.com/reddit-advertising-it-went-okay/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://theflyingdeveloper.com/reddit-advertising-it-went-okay</feedburner:origLink></item>
		<item>
		<title>Geckoboard Weather Widget (Wot I Made)</title>
		<link>http://feedproxy.google.com/~r/theflyingdeveloper/~3/DaHSQGmqAvc/geckoboard-weather-widget-wot-i-made</link>
		<comments>http://theflyingdeveloper.com/geckoboard-weather-widget-wot-i-made#comments</comments>
		<pubDate>Mon, 30 Jan 2012 15:00:28 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[projects]]></category>
		<category><![CDATA[geckoboard]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[weather]]></category>

		<guid isPermaLink="false">http://theflyingdeveloper.com/?p=913</guid>
		<description><![CDATA[Back in December, this happened: I&#8217;ve been wanting to do something &#8216;cool&#8217; with it since then, but until now I hadn&#8217;t found the right project. Then earlier this week I came across Geckoboard, a neat app that allows you to create Panic-like &#8230; <a href="http://theflyingdeveloper.com/geckoboard-weather-widget-wot-i-made">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Back in December, this happened:</p>
<blockquote class="twitter-tweet" width="550"><p><a href="https://twitter.com/search/%2523shopify">#shopify</a> Christmas party was a blast. As evidence, I am typing this on my new iPad 2</p>&mdash; David Underwood (@davefp) <a href="https://twitter.com/davefp/status/148284001541554176" data-datetime="2011-12-18T06:10:35+00:00">December 18, 2011</a></blockquote>
<script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<p>I&#8217;ve been wanting to do something &#8216;cool&#8217; with it since then, but until now I hadn&#8217;t found the right project. Then earlier this week I came across <a href="http://www.geckoboard.com/" target="_blank">Geckoboard</a>, a neat app that allows you to create <a href="http://www.panic.com/blog/2010/03/the-panic-status-board/" target="_blank">Panic-like status boards</a> to monitor all sorts of interesting stats.</p>
<p style="text-align: center;"><a href="http://geckoboard.com"><img class="aligncenter size-full wp-image-933" title="geckoboardLogo_500_53" src="http://theflyingdeveloper.com/blog/wp-content/uploads/2012/01/geckoboardLogo_500_53.png" alt="" width="500" height="53" /></a></p>
<p>I decided I wanted to use it to create a living room dashboard that pulls in my calendar events, the current time, the weather, and maybe a todo/shopping list. I would then place my iPad somewhere prominent and have all the info available at a glance.</p>
<p><span id="more-913"></span></p>
<h2>Mixing Business and Pleasure</h2>
<p>Unfortunately for me, most of Geckoboard&#8217;s built in widgets are integrations with business oriented services: <a href="http://github.com" target="_blank">Github</a>, <a href="http://basecamphq.com/" target="_blank">Basecamp</a>, <a href="http://www.pingdom.com/" target="_blank">Pingdom</a>, that sort of thing. Whilst these would look great in an office lobby, I don&#8217;t think my wife would appreciate live uptime stats in our living room. Time to improvise!</p>
<p>Geckoboard has this concept of custom widgets which allows you to shoehorn any data you can get your hands on into various predefined templates for display. There are a range of different <a href="http://support.geckoboard.com/entries/274940-custom-chart-widget-type-definitions" target="_blank">chart types</a> available, as well as <a href="http://support.geckoboard.com/entries/231507-custom-widget-type-definitions" target="_blank">maps, numerical displays, and plain text</a>.</p>
<p>I decided I was going to get my feet wet by creating a weather widget that would display the current temperature along with the conditions. This would be represented in a custom plain text widget.</p>
<p>Sourcing the weather data turned out to be really easy. Yahoo has a <a href="http://developer.yahoo.com/weather/" target="_blank">fantastic weather API</a> which is free to use for non-commercial purposes that works by simply sending a request with your location to a particular endpoint. The hardest part (which is still dead simple) is looking up your &#8216;WOEID&#8217; (short for <a href="http://developer.yahoo.com/geo/geoplanet/guide/concepts.html" target="_blank">Where On Earth ID</a>), a numeric ID for your location.</p>
<h2>WOE Is Me</h2>
<p>With my WOEID in hand, it was time to wrangle the data. I created a new Rails project with a simple endpoint that took an ID and spat out the weather data for that location. With a little help from the <a href="http://xml-simple.rubyforge.org/" target="_blank">xml-simple gem</a> I then refined the response to include only the data I needed (The temperature and the condition text) before re-wrapping the response in json to be returned. This was maybe half a dozen lines of code in my controller. In fact, Rails is probably way over the top for something like this but it&#8217;s what I have the most experience with so I went with it anyway.</p>
<p>I created an app on Heroku to host everything, and then tried it out. Here&#8217;s what the widget looks like (excuse the boring Ottawa weather):</p>
<p><a href="http://theflyingdeveloper.com/blog/wp-content/uploads/2012/01/geckoboard_weather_widget1.png"><img class="aligncenter size-full wp-image-931" title="geckoboard_weather_widget" src="http://theflyingdeveloper.com/blog/wp-content/uploads/2012/01/geckoboard_weather_widget1.png" alt="" width="230" height="230" /></a></p>
<p>Really simple, but exactly what I wanted. I liked it so much that I decided to share it. Head over to the app on Heroku for instructions on how to use it yourself: <a href="http://gecko-weather.heroku.com/" target="_blank">Gecko-Weather</a>.</p>
<p>I&#8217;m planning on adding a couple of extra features soon, namely the ability to specify Fahrenheit/Celsius and some error handling in case the weather info is unavailable for some reason. I&#8217;m also open to suggestions, so please post any requests in the comments!</p>
<p>&nbsp;</p>
<img src="http://feeds.feedburner.com/~r/theflyingdeveloper/~4/DaHSQGmqAvc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://theflyingdeveloper.com/geckoboard-weather-widget-wot-i-made/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://theflyingdeveloper.com/geckoboard-weather-widget-wot-i-made</feedburner:origLink></item>
		<item>
		<title>The Flying Developer Eats His Own Dogfood</title>
		<link>http://feedproxy.google.com/~r/theflyingdeveloper/~3/Oq5qbXJk548/the-flying-developer-eats-his-own-dogfood</link>
		<comments>http://theflyingdeveloper.com/the-flying-developer-eats-his-own-dogfood#comments</comments>
		<pubDate>Fri, 06 Jan 2012 03:51:51 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[The Noble Pony]]></category>
		<category><![CDATA[dogfooding]]></category>
		<category><![CDATA[e-commerce]]></category>
		<category><![CDATA[job]]></category>
		<category><![CDATA[shopify]]></category>
		<category><![CDATA[t-shirts]]></category>

		<guid isPermaLink="false">http://theflyingdeveloper.com/?p=884</guid>
		<description><![CDATA[There&#8217;s a term in the software industry called &#8216;Dogfooding&#8217;, or &#8220;To eat one&#8217;s own Dogfood&#8221;. It refers to the practice of using the products you develop. The term was coined in 1988 when: &#8220;Microsoft manager Paul Maritz sent Brian Valentine, test manager for Microsoft &#8230; <a href="http://theflyingdeveloper.com/the-flying-developer-eats-his-own-dogfood">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a term in the software industry called &#8216;Dogfooding&#8217;, or &#8220;To eat one&#8217;s own Dogfood&#8221;. It refers to the practice of using the products you develop. The term was coined in 1988 when:</p>
<blockquote><p>&#8220;Microsoft manager <a title="Paul Maritz" href="http://en.wikipedia.org/wiki/Paul_Maritz">Paul Maritz</a> sent <a title="Brian Valentine" href="http://en.wikipedia.org/wiki/Brian_Valentine">Brian Valentine</a>, test manager for <a title="Microsoft LAN Manager" href="http://en.wikipedia.org/wiki/Microsoft_LAN_Manager">Microsoft LAN Manager</a>, an email titled &#8220;Eating our own Dogfood&#8221;, challenging him to increase internal usage of the company&#8217;s product.&#8221; &#8211; <a href="http://en.wikipedia.org/wiki/Eating_your_own_dog_food">Wikipedia</a></p></blockquote>
<p>I&#8217;ve been at <a href="http://shopify.com">Shopify</a> for the better part of a year now, so I thought it was about time that I engaged in some dogfooding of my own. The result has just gone live: <a href="http://thenoblepony.com">The Noble Pony</a></p>
<p><span id="more-884"></span></p>
<h2>Giving Myself a Crash Course In E-Commerce</h2>
<p>Setting this up was a bit trickier than if I worked at, say, Facebook. Shopify is not a service unto itself, but rather an tool that forms part of a much larger chain: running an online shop. Before I even signed up for a Shopify account I needed several things:</p>
<ol>
<li>An audience</li>
<li>A product</li>
<li>A business plan</li>
<li>Funding</li>
</ol>
<p>After considering some alternatives I decided that I would sell T-shirts with my own designs on them. This was because all the creative work could be done by one person (me) at my computer using free software (<a title="Inskacpe" href="http://inkscape.org" target="_blank">Inkscape</a>). I could then take the designs I came up with to a local printer who would handle the manufacturing. As for an audience, I was primarily designing for myself. However, I knew that I would have to publicize my products somehow and so picked interests of mine that had strong communities I thought I could market to.</p>
<p>My business and funding plan are very closely linked. Due to the way T-shirts are printed, it only makes sense to order them in bulk. <a title="Economies of scale" href="http://en.wikipedia.org/wiki/Economies_of_scale" target="_blank">Economies of scale</a> and all that. Putting my own money up to fund an initial printing run would be too risky, so I&#8217;m running the shop on a pre-order basis: People promise to pay for shirts, and if enough people are interested then I do the print run and ship the shirts. If not, oh well. I cancel the orders and no-one loses out (except my hopes and dreams of striking it rich).</p>
<h2>Getting Set Up With Shopify</h2>
<p>Once I had a design for a shirt, investigated the production costs, and decided on the business plan I got to work and set up <a href="http://thenoblepony.com" target="_blank">The Noble Pony</a>, my very own Shopify shop. The actual mechanics of doing this I&#8217;ll cover another time, but the main elements I needed were:</p>
<ol>
<li>A storefront design</li>
<li>A payment processor</li>
<li>A fulfillment/shipping solution</li>
</ol>
<p>I went as bare-bones as possible by tweaking a <a href="http://themes.shopify.com">Shopify theme</a> called <a href="http://themes.shopify.com/themes/solo/styles/solo">Solo</a> for the storefront and setting up <a href="https://merchant.paypal.com/us/cgi-bin/?cmd=_render-content&amp;content_ID=merchant/express_checkout">PayPal Express Checkout</a> for my payment processor. I&#8217;ll be handling the fulfillment side of things myself so I did some research into <a href="http://www.canadapost.ca/cpo/mc/default.jsf">Canada Post</a> rates and set a couple of weight-based flat rates accordingly. The shipping setup was the hardest part by far as I initially went through the process of setting up an account with UPS only to find out that shipping really small/light packages with them was way too expensive (Shipping the shirts would have cost more than the shirts themselves).</p>
<h2>The Finished Product</h2>
<p>So what have I actually created? I threw around a couple of ideas about <a href="http://reddit.com">Reddit</a>-related shirts as well as <a href="http://us.battle.net/sc2/en/" target="_blank">Starcraft</a>-related shirts. Then I played with Inkscape until I finally came up with this:</p>
<p><a href="http://theflyingdeveloper.com/blog/wp-content/uploads/2012/01/vet_detail_web.png"><img class="aligncenter size-full wp-image-889" title="vet_detail_web" src="http://theflyingdeveloper.com/blog/wp-content/uploads/2012/01/vet_detail_web.png" alt="" width="600" height="400" /></a></p>
<p>If you&#8217;ve ever played Starcraft 2 you&#8217;ll recognize this instantly: It&#8217;s a group of the <a title="Battle.net leagues on Liquipedia" href="http://wiki.teamliquid.net/starcraft2/Battle.net_Leagues#The_Leagues" target="_blank">battle.net league icons</a>. There&#8217;s a little more to it than that though. The shirt itself looks like this:</p>
<p><a href="http://theflyingdeveloper.com/blog/wp-content/uploads/2012/01/veteran_shirt_template.png"><img class="aligncenter size-full wp-image-891" title="veteran_shirt_template" src="http://theflyingdeveloper.com/blog/wp-content/uploads/2012/01/veteran_shirt_template.png" alt="" width="668" height="670" /></a></p>
<p>The design is supposed to mimic the way a soldier wears his or her medals or <a href="http://en.wikipedia.org/wiki/Ribbon_bar" target="_blank">ribbon bar</a>. Plus I think it looks cool.</p>
<h2>What&#8217;s Next?</h2>
<p>My goal is to have 100 pre-orders by the end of January. Since opening the shop and announcing it on <a href="http://reddit.com/r/starcraft" target="_blank">/r/starcraft</a> two days ago I&#8217;ve pre-sold a grand total of&#8230; 2 shirts. Clearly the age of &#8216;If they build it, they will come&#8217; is long over. My next task (and the subject of my next blog post) is to learn as much as I can about publicity and advertising and sell the hell out of the shirts. I&#8217;ll report back with my findings.</p>
<p>&nbsp;</p>
<p>Note: Mad props to ~<a href="http://jovdaripper.deviantart.com/" target="_blank">JovDaRipper</a> for creating the brilliant <a href="http://jovdaripper.deviantart.com/art/Vector-T-shirt-Template-143230813" target="_blank">T-shirt templates</a>. Go check out his gallery on DeviantArt.</p>
<img src="http://feeds.feedburner.com/~r/theflyingdeveloper/~4/Oq5qbXJk548" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://theflyingdeveloper.com/the-flying-developer-eats-his-own-dogfood/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://theflyingdeveloper.com/the-flying-developer-eats-his-own-dogfood</feedburner:origLink></item>
		<item>
		<title>Mailing Lists FTW</title>
		<link>http://feedproxy.google.com/~r/theflyingdeveloper/~3/ZzevsYpDLpE/mailing-lists-ftw</link>
		<comments>http://theflyingdeveloper.com/mailing-lists-ftw#comments</comments>
		<pubDate>Mon, 28 Nov 2011 15:00:19 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://theflyingdeveloper.com/?p=860</guid>
		<description><![CDATA[Part of my job is to interact with third-party developers and help them out when they have issues with the Shopify API. This used to be done on our forums and was, in no uncertain terms, terrible. Pull The trouble &#8230; <a href="http://theflyingdeveloper.com/mailing-lists-ftw">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Part of my job is to interact with third-party developers and help them out when they have issues with the <a href="http://api.shopify.com" target="_blank">Shopify API</a>. This used to be done on our forums and was, in no uncertain terms, <em>terrible</em>.</p>
<h2><span id="more-860"></span>Pull</h2>
<p>The trouble with forums generally is that they&#8217;re not designed to push topics to you; You have to go to them to get updates. This is great if you&#8217;re a casual user but when you&#8217;re an administrator who needs to read <strong>everything</strong> that gets posted, it&#8217;s a hassle. I had to remember to check the forums constantly. It also meant that regular users weren&#8217;t engaging one another as much as we wanted: More often than not initial responses were provided by admins rather than other users.</p>
<h2>Push</h2>
<p>That&#8217;s why we ditched the Shopify developer forums and redirected them to a new <a href="https://groups.google.com/forum/#!forum/shopify-api" target="_blank">Google Group for developers</a>. Mailing lists are by design inherently push-based, so now the messages come to me. There are options to reduce or turn off notifications all together but judging by the number of times a community developer comes to the aid of another it seems that they prefer to get notified immediately.</p>
<h2>User Land</h2>
<p>I recently had the opportunity to see things from the other side when I delved into the Dropbox developer forums. It only supports RSS updates (boo!) so once I&#8217;d posted I had to remember to go back and check for updates. That took me 3 days. The responses I found on my return were great, but if I had been able to track the thread via email I&#8217;d have known a lot sooner. I also find myself with no desire to go back and read through topics to answer them.</p>
<h2>Alternatives</h2>
<p><a href="http://groups.google.com" target="_blank">Google Groups</a> are fantastic, but they&#8217;re not for everyone. The Ottawa Android group that I attend uses <a href="http://librelist.com/" target="_blank">Libre List</a> which is a far lighter weight solution. A quick google search reveals many more possibilities.</p>
<img src="http://feeds.feedburner.com/~r/theflyingdeveloper/~4/ZzevsYpDLpE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://theflyingdeveloper.com/mailing-lists-ftw/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://theflyingdeveloper.com/mailing-lists-ftw</feedburner:origLink></item>
		<item>
		<title>How To Examine POST Requests Using PostCatcher</title>
		<link>http://feedproxy.google.com/~r/theflyingdeveloper/~3/5vhjMqJo9U0/how-to-examine-post-requests-using-postcatcher</link>
		<comments>http://theflyingdeveloper.com/how-to-examine-post-requests-using-postcatcher#comments</comments>
		<pubDate>Mon, 21 Nov 2011 15:00:28 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[tutorials]]></category>

		<guid isPermaLink="false">http://theflyingdeveloper.com/?p=851</guid>
		<description><![CDATA[A little while back I wrote about Localtunnel, a tool I use to test webhooks. Today I&#8217;d like to talk about PostCatcher, which is a superb service for examining POST requests easily. PostCatcher allows you to create a url that serves &#8230; <a href="http://theflyingdeveloper.com/how-to-examine-post-requests-using-postcatcher">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A little while back <a title="Testing Webhooks" href="http://theflyingdeveloper.com/testing-webhooks">I wrote about Localtunnel</a>, a tool I use to test webhooks. Today I&#8217;d like to talk about <a href="http://postcatcher.in/">PostCatcher</a>, which is a superb service for examining POST requests easily.</p>
<p><a href="http://theflyingdeveloper.com/blog/wp-content/uploads/2011/11/Screen-shot-2011-11-20-at-10.49.10-.png"><img class="aligncenter size-full wp-image-853" title="Screen shot 2011-11-20 at 10.49.10" src="http://theflyingdeveloper.com/blog/wp-content/uploads/2011/11/Screen-shot-2011-11-20-at-10.49.10-.png" alt="" width="839" height="236" /><span id="more-851"></span></a>PostCatcher allows you to create a url that serves two purposes:</p>
<ol>
<li>When you POST to it, PostCatcher will record the request</li>
<li>When you GET the page in a browser, it displays the previous requests for you to examine</li>
</ol>
<p>Investigating an unfamiliar webhook is as easy as registering your PostCatcher url to receive updates and then generating some requests. The PostCatcher page will update in real-time with the new data, allowing you to see and examine out the structure easily.</p>
<h2>Alternatives</h2>
<p>Before PostCatcher I used a similar service called <a href="http://www.postbin.org/">PostBin</a>. It&#8217;s written by <a href="https://github.com/progrium">progrium</a>, who is also responsible for Localtunnel. Unfortunately I&#8217;ve found that PostBin is unavailable more often than not due to being over quota, hence the switch to PostCatcher. The latter also benefits from a slicker ui as well as login via. Github allowing you to keep track of your previously created &#8216;catchers&#8217;.</p>
<img src="http://feeds.feedburner.com/~r/theflyingdeveloper/~4/5vhjMqJo9U0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://theflyingdeveloper.com/how-to-examine-post-requests-using-postcatcher/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://theflyingdeveloper.com/how-to-examine-post-requests-using-postcatcher</feedburner:origLink></item>
	</channel>
</rss>

