<?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>The Flying Developer &#187; projects</title>
	<atom:link href="http://theflyingdeveloper.com/category/projects/feed" rel="self" type="application/rss+xml" />
	<link>http://theflyingdeveloper.com</link>
	<description>The daring adventures of an aspiring software developer</description>
	<lastBuildDate>Mon, 30 Jan 2012 15:00:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Geckoboard Weather Widget (Wot I Made)</title>
		<link>http://theflyingdeveloper.com/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>
]]></content:encoded>
			<wfw:commentRss>http://theflyingdeveloper.com/geckoboard-weather-widget-wot-i-made/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Flying Developer Eats His Own Dogfood</title>
		<link>http://theflyingdeveloper.com/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>
]]></content:encoded>
			<wfw:commentRss>http://theflyingdeveloper.com/the-flying-developer-eats-his-own-dogfood/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Limelight Now Open Source</title>
		<link>http://theflyingdeveloper.com/limelight-now-open-source</link>
		<comments>http://theflyingdeveloper.com/limelight-now-open-source#comments</comments>
		<pubDate>Fri, 10 Dec 2010 21:22:23 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[limelight]]></category>

		<guid isPermaLink="false">http://theflyingdeveloper.com/?p=356</guid>
		<description><![CDATA[I&#8217;ve had a couple of queries about the lighthouse ticket exporter tool (Limelight) that I wrote a while back. Seeing as I have no further plans to develop the project, I&#8217;ve put the source code up on github. Feel free &#8230; <a href="http://theflyingdeveloper.com/limelight-now-open-source">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had a couple of queries about the lighthouse ticket exporter tool (Limelight) that I wrote a while back. Seeing as I have no further plans to develop the project, I&#8217;ve put the source code up on github. Feel free to fork it or browse the code.</p>
<p>Here&#8217;s a link to the repo: <a href="https://github.com/davefp/Limelight">https://github.com/davefp/Limelight</a></p>
]]></content:encoded>
			<wfw:commentRss>http://theflyingdeveloper.com/limelight-now-open-source/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reactions plugin end-of-year update</title>
		<link>http://theflyingdeveloper.com/reactions-plugin-end-of-year-update</link>
		<comments>http://theflyingdeveloper.com/reactions-plugin-end-of-year-update#comments</comments>
		<pubDate>Mon, 28 Dec 2009 18:25:21 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[projects]]></category>
		<category><![CDATA[wp-reactions]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[reactions]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://theflyingdeveloper.com/?p=214</guid>
		<description><![CDATA[Last time I posted about the wp-reactions plugin, I said that I planned on having a new version released by the end of the year. The good news is that I&#8217;ve made considerable progress over the last six weeks overhauling &#8230; <a href="http://theflyingdeveloper.com/reactions-plugin-end-of-year-update">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Last time I posted about the wp-reactions plugin, I said that I planned on having a new version released by the end of the year.</p>
<p>The good news is that I&#8217;ve made considerable progress over the last six weeks overhauling the back-end to make it easier to maintain and expand. I&#8217;ve also learned a lot more about relational databases in the process, which is good for me if not the plugin users.</p>
<p>The bad news is that this process isn&#8217;t finished yet, so it&#8217;ll be a little while longer before there is a new version available. I hope that anyone out there who is waiting for a new release isn&#8217;t too disappointed.</p>
]]></content:encoded>
			<wfw:commentRss>http://theflyingdeveloper.com/reactions-plugin-end-of-year-update/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Limelight v0.3</title>
		<link>http://theflyingdeveloper.com/limelight-v0-3</link>
		<comments>http://theflyingdeveloper.com/limelight-v0-3#comments</comments>
		<pubDate>Fri, 27 Nov 2009 01:27:41 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[limelight]]></category>
		<category><![CDATA[adobe AIR]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[lighthouse]]></category>

		<guid isPermaLink="false">http://theflyingdeveloper.com/?p=197</guid>
		<description><![CDATA[Here&#8217;s a new version of the Limelight app! The name is now changed, and it has a new icon. In terms of functionality, I&#8217;ve updated the API requests to grab all the tickets for a project, instead of just the &#8230; <a href="http://theflyingdeveloper.com/limelight-v0-3">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a new version of the Limelight app! The name is now changed, and it has a new icon.</p>
<p>In terms of functionality, I&#8217;ve updated the API requests to grab all the tickets for a project, instead of just the first &#8216;page&#8217;:</p>
<a href="http://theflyingdeveloper.com/downloadslimelight.air" title="Downloaded 421 times">Limelight version 0.3</a>
]]></content:encoded>
			<wfw:commentRss>http://theflyingdeveloper.com/limelight-v0-3/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lighthouse Keeper is now called Limelight!</title>
		<link>http://theflyingdeveloper.com/lighthouse-keeper-is-now-called-limelight</link>
		<comments>http://theflyingdeveloper.com/lighthouse-keeper-is-now-called-limelight#comments</comments>
		<pubDate>Mon, 23 Nov 2009 02:29:29 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[limelight]]></category>
		<category><![CDATA[adobe AIR]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[bug tracking]]></category>
		<category><![CDATA[lighthouse]]></category>

		<guid isPermaLink="false">http://theflyingdeveloper.com/?p=192</guid>
		<description><![CDATA[As stated in the update on my previous blog post, there is already a Lighthouse-related app called Lighthouse Keeper. Bummer. Still, not to worry. To avoid confusion and general awkwardness, I&#8217;m going to change the name of the app to &#8230; <a href="http://theflyingdeveloper.com/lighthouse-keeper-is-now-called-limelight">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>As stated in the update on my previous blog post, there is already a Lighthouse-related app called Lighthouse Keeper. Bummer.</p>
<p>Still, not to worry. To avoid confusion and general awkwardness, I&#8217;m going to change the name of the app to Limelight. I&#8217;m pretty sure that there are no existing apps in the same domain with that name. Pretty sure. Not 100%. So if there are any app developers out there developing a Lighthouse app called Limelight&#8230; I&#8217;m sorry in advance. Hopefully I&#8217;ll be ok this time though.</p>
<p>I&#8217;m going to release a new version of the app with the changed name in the next couple of days.</p>
]]></content:encoded>
			<wfw:commentRss>http://theflyingdeveloper.com/lighthouse-keeper-is-now-called-limelight/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing: Lighthouse Keeper</title>
		<link>http://theflyingdeveloper.com/introducing-lighthouse-keeper</link>
		<comments>http://theflyingdeveloper.com/introducing-lighthouse-keeper#comments</comments>
		<pubDate>Fri, 20 Nov 2009 00:58:13 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[limelight]]></category>
		<category><![CDATA[adobe AIR]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[bug tracking]]></category>
		<category><![CDATA[entp]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[lighthouse]]></category>
		<category><![CDATA[REST]]></category>

		<guid isPermaLink="false">http://theflyingdeveloper.com/?p=179</guid>
		<description><![CDATA[Update: Oops! It looks like there is already a Lighthouse-related app called Lighthouse Keeper (it can be found here). Future versions of my app will have a different name to avoid confusion. Lighthouse is a lightweight hosted bug-tracker produced by &#8230; <a href="http://theflyingdeveloper.com/introducing-lighthouse-keeper">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong><em>Update: Oops! It looks like there is already a Lighthouse-related app called Lighthouse Keeper (it can be found <a href="http://www.mcubedsw.com/software/lighthousekeeper">here</a>). Future versions of my app will have a different name to avoid confusion</em></strong>.</p>
<p><a href="http://lighthouseapp.com/">Lighthouse</a> is a lightweight hosted bug-tracker produced by <a href="http://entp.com/">entp</a>. It&#8217;s advertised as &#8220;Beautifully Simple Issue Tracking&#8221;.</p>
<p>Lighthouse Keeper is a small AIR app produced by me. It allows you to export Lighthouse ticket info to a csv file.</p>
<h2>Background</h2>
<p>I learned about the existence of Lighthouse earlier this week at a job interview. I&#8217;ve used a couple of bug-trackers before, but Lighthouse had never appeared on my radar. The two guys interviewing me got into a spirited conversation with each other about the various pros and cons of different bug tracking solutions, but Lighthouse in particular. One of their comments was</p>
<blockquote><p>I wish there was a way to export my tickets as a csv file.</p>
<p>Maybe someone will come up with something using the API.</p></blockquote>
<p>That&#8217;s a challenge if I&#8217;ve ever heard one.<span id="more-179"></span></p>
<h2>Implementation</h2>
<p>I&#8217;m a big fan of Flash/Flex, so I set to work that evening on a small app that would grab Lighthouse projects for a given domain then allow you to perform searches on the tickets in an individual project and export the results. Fortunately, flex is designed around tasks just like this.</p>
<p>Lighthouse has a fairly comprehensive REST API available for developers. Using either your regular login info or a generated API key, you have access to (as far as I can tell) all of the functionality you get from the regular web interface.</p>
<p>Thanks to this, retrieving data from the API was achieved in less than an hour, and then the rest of the time (about 6 more hours) was spent wrangling it and tweaking the interface.</p>
<p>The current incarnation is still very much an experimental product, but I want to release it to let people (and prospective employers) test it out and see what they think.</p>
<h2>Download</h2>
<p>So, without further ado, here it is:</p>
<p><a href="http://theflyingdeveloper.com/misc/lighthousekeeper.air">Lighthouse Keeper version 0.1</a></p>
<p>As always: Questions, comments, suggestions and criticism are welcomed and encouraged.</p>
]]></content:encoded>
			<wfw:commentRss>http://theflyingdeveloper.com/introducing-lighthouse-keeper/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>wp-reactions Project Update</title>
		<link>http://theflyingdeveloper.com/wp-reactions-project-update</link>
		<comments>http://theflyingdeveloper.com/wp-reactions-project-update#comments</comments>
		<pubDate>Sun, 08 Nov 2009 16:21:36 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[news]]></category>
		<category><![CDATA[wp-reactions]]></category>

		<guid isPermaLink="false">http://theflyingdeveloper.com/?p=165</guid>
		<description><![CDATA[I&#8217;m sad to admit that I&#8217;ve somewhat neglected my wp-reactions WordPress Plugin over the last few months. All the usual reasons apply: Work, real life, laziness. It seems though that there is still interest in the plugin, so over the &#8230; <a href="http://theflyingdeveloper.com/wp-reactions-project-update">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m sad to admit that I&#8217;ve somewhat neglected <a href="http://wordpress.org/extend/plugins/wp-reactions/">my wp-reactions WordPress Plugin</a> over the last few months. All the usual reasons apply: Work, real life, laziness.</p>
<p>It seems though that there is still interest in the plugin, so over the next few weeks I&#8217;m going to give it an overhaul. It&#8217;s been a long time coming, and since I first wrote the original code I&#8217;ve learned a lot about the &#8216;correct&#8217; way to program web apps.</p>
<p>The current code is not very flexible: In order to implement the new features that are in the roadmap, I&#8217;m going to have to start again from scratch. This time I&#8217;m going to give the plugin a proper DB back-end, so that reaction text can be updated without resetting the count, and so that posts in different categories can have different reaction options (and a lot of other things, too!). This should also make it a lot easier to maintain and add further features to.</p>
<p>So, if you use wp-reactions, or are holding off until some of the features you want are available, rejoice! I expect to have a new version available by the end of the year.</p>
]]></content:encoded>
			<wfw:commentRss>http://theflyingdeveloper.com/wp-reactions-project-update/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Flying Developer Role Plays</title>
		<link>http://theflyingdeveloper.com/fhe-flying-developer-role-plays</link>
		<comments>http://theflyingdeveloper.com/fhe-flying-developer-role-plays#comments</comments>
		<pubDate>Tue, 03 Nov 2009 03:50:41 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[projects]]></category>
		<category><![CDATA[D&D]]></category>
		<category><![CDATA[role playing]]></category>

		<guid isPermaLink="false">http://theflyingdeveloper.com/?p=120</guid>
		<description><![CDATA[I think my inner nerd has finally taken full control of me. I recently started playing Dungeons &#38; Dragons (4th Edition) after listening to the podcasts Penny Arcade did at Wizards of the Coast (who publish D&#38;D). I&#8217;m DMing the &#8230; <a href="http://theflyingdeveloper.com/fhe-flying-developer-role-plays">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I think my inner nerd has finally taken full control of me.</p>
<p>I recently started playing Dungeons &amp; Dragons (4th Edition) after listening to the<a href="http://www.wizards.com/DnD/Article.aspx?x=dnd/4pod/20080530"> podcasts Penny Arcade</a> did at Wizards of the Coast (who publish D&amp;D). I&#8217;m DMing the <a href="http://www.wizards.com/dnd/TryDnD.aspx">Keep on the Shadowfell campaign</a> for a bunch of other new players. We&#8217;re all thoroughly enjoying it. And yes, that makes us all thoroughly nerdy.</p>
<p>I don&#8217;t have very many miniatures, which is a problem because 4th Edition relies heavily on moving characters and monsters around on a grid during combat. There are many alternatives (such as Lego men, dice, or other small objects), but I wanted something a little slicker. I wanted my game pieces to have a uniform look and feel, and not break the immersion by forcing the players to think too much about what each item represented:</p>
<blockquote><p>&#8220;Ok, so the quarter is a goblin, and the dime is an orc. No wait, the dime is the goblin, and the quarter is the orc. Got that? Oh, and 3 more goblins appear from around the corner. Does anyone have any change?</p></blockquote>
<p>I had a look round online for ideas for replacements, and found several people had made their own tokens using images found around the web. To be honest I was disappointed by these, as they were usually mismatched and of dubious quality. I needed a better solution.<span id="more-120"></span></p>
<p>This is how I came to design my own tokens to use in place of miniatures for D&amp;D. I spent some time learning how to use <a href="http://inkscape.org/" target="_blank">Inkscape</a> (which is an excellent piece of software, btw) and came up with some generic token designs that can be adapted to represent many different monsters. Here are some samples:</p>
<p style="text-align: center;">
<a href="http://theflyingdeveloper.com/blog/wp-content/uploads/2009/11/tokens-sampler.png"><img class="aligncenter size-medium wp-image-122" title="tokens-sampler" src="http://theflyingdeveloper.com/blog/wp-content/uploads/2009/11/tokens-sampler-300x300.png" alt="tokens-sampler" width="300" height="300" /></a></p>
<p>The basic design is this: The monster&#8217;s name is printed round the edge of the token, their race is represented by the upper icon, and the monster&#8217;s role is the lower icon. The roles in the sample are (clockwise from top left) Soldier, Swarm, Minion and Artillery.</p>
<p>Interestingly, some experienced players I&#8217;ve recieved feedback from already have said that I&#8217;m providing <em>too much</em> information to players by putting the monster names and roles on the tokens. I would definitely like to hear from anyone who plays D&amp;D or other role playing games what they think about this.</p>
<p>Once I have finished running my current campaign, I plan on putting together a pdf with all the tokens in and releasing it under a Creative Commons license. This would just be a first stage, however. Eventually, I want to have an online generation wizard that allows people to create their own tokens from the templates, put them in a pdf and print them for their own use. This may take some time, as I have no idea how to programatically create/edit svg files. Cross your fingers, and maybe a few months down the line you&#8217;ll see something along these lines appear.</p>
]]></content:encoded>
			<wfw:commentRss>http://theflyingdeveloper.com/fhe-flying-developer-role-plays/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flex 3 Bouncing Marquee</title>
		<link>http://theflyingdeveloper.com/flex-3-bouncing-marquee</link>
		<comments>http://theflyingdeveloper.com/flex-3-bouncing-marquee#comments</comments>
		<pubDate>Sun, 03 May 2009 03:02:38 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[projects]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://theflyingdeveloper.com/?p=73</guid>
		<description><![CDATA[I was working on a secret flex project (Shh!) the other week that required some scrolling text. &#8220;I wonder how to implement that in flex?&#8221; I thought. I&#8217;ve been working with flex at work for about 9 months now, but &#8230; <a href="http://theflyingdeveloper.com/flex-3-bouncing-marquee">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I was working on a secret flex project (Shh!) the other week that required some scrolling text. &#8220;I wonder how to implement that in flex?&#8221; I thought. I&#8217;ve been working with flex <a href="http://macadamian.com">at work</a> for about 9 months now, but I&#8217;ve never encountered the need for such a component before.<span id="more-73"></span></p>
<p>A quick Google search revealed this: <a href="http://butterfliesandbugs.wordpress.com/2007/09/06/marquee-component/">Marquee Component</a>. Fantastic! One of my favourite things about working with flex is that there&#8217;s a huge community out there who have already written the component you need in 90% of cases.</p>
<p>Still, I needed to adapt the component to fit my needs. The &#8216;secret project&#8217; involves a media player, and the marquee was for the song title. I wanted it to display the artist and title at a fixed width, but scroll back and forth if the text was too long. I call it a &#8216;bounce&#8217; marquee. <a href="http://theflyingdeveloper.com/code_examples/bounce_marquee/BounceMarqueeDemo.html">Here&#8217;s the demo</a>.</p>
<p>The first modification I made was to change the way in which the component defined the movement. The original marquee had a property defining the duration of the scrolling. This was unsuitable because it meant that longer text scrolled faster. Make the string long enough, and the text would scroll past too fast to read. Instead, the bouncing marquee has a scrollSpeed property that defines the speed in pixels per second. The length of the string (in pixels) is divided by this number to produce the duration of the scroll, which is then passed to the Move effect.</p>
<p>Secondly I changed the effects to match my desired behaviour. I simply defined to Move effects with Pause effects between inside a Sequence. The first move takes the text from it&#8217;s initial position to and scrolls it until the end of the string can be seen. The second move takes it back. The length of the pauses can be changed by overriding the pauseDuration property on the component.</p>
<p>This was all well and good, but there was still a problem. Updating the properties of an Effect whilst it&#8217;s playing does not take effect until the effect is stopped and restarted. Therefore I needed a public update() method to be called that would reset the effects and allow the changes to take place.</p>
<p>All in all I&#8217;m pretty pleased with how the component turned out. The hardest part was figuring out why the effects weren&#8217;t updating properly when I changed the text. It seems there was a timing issue that judicious application of the validateNow() method fixed. For the curious, here&#8217;s the code for both the component and the demo:</p>
<ul>
<li><a href="http://theflyingdeveloper.com/downloadsBounceMarquee.mxml.html" title="Downloaded 928 times">Bounce Marquee version 1</a></li>
<li><a href="http://theflyingdeveloper.com/downloadsBounceMarqueeDemo.mxml.html" title="Downloaded 873 times">Bounce Marquee Demo version 1</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://theflyingdeveloper.com/flex-3-bouncing-marquee/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

