
<?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>Dan Ruscoe</title>
	<atom:link href="http://ruscoe.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://ruscoe.org</link>
	<description></description>
	<lastBuildDate>Sun, 22 Jan 2012 08:38:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Adventures in Indie Game Development for Android</title>
		<link>http://ruscoe.org/indie-game-development-for-android/</link>
		<comments>http://ruscoe.org/indie-game-development-for-android/#comments</comments>
		<pubDate>Thu, 05 Jan 2012 16:11:20 +0000</pubDate>
		<dc:creator>ruscoe</dc:creator>
				<category><![CDATA[Android Development]]></category>

		<guid isPermaLink="false">http://ruscoe.org/?p=238</guid>
		<description><![CDATA[I started to teach myself Android development towards the end of 2010 by attempting to create a few small games. I'm writing this post at the start of 2012 to share what I learned along the way, as well as my sales and ad revenue figures for the past year. Hopefully this information is helpful [...]]]></description>
			<content:encoded><![CDATA[<p>I started to teach myself Android development towards the end of 2010 by attempting to create a few small games. I'm writing this post at the start of 2012 to share what I learned along the way, as well as my sales and ad revenue figures for the past year.</p>
<p>Hopefully this information is helpful to anyone looking to start Android development.<br />
<span id="more-238"></span></p>
<h2>Getting started</h2>
<p>Android is the first mobile platform I've developed for and getting started was a lot easier than I expected it to be. I've been using Ubuntu Linux, running Eclipse with the ADT Plugin and testing on an HTC Evo 4G as well as several emulators.</p>
<p>The Android emulators, in my experience, perform terribly when testing games. Despite this, they are very useful when testing a game for various screen resolutions. A Motorola Xoom emulator helped me fix an issue in one of my games which a Xoom user had notified me of via Twitter.</p>
<p>The online Android documentation is excellent and plenty of tutorials for specific concepts can be found via a quick trip to Google.</p>
<h2>Graphics and Audio</h2>
<p>As I'd decided to create games, graphical and audio resources were an important part of my applications. To keep production costs down, I created the majority of graphics used in my games myself using the open-source vector editor, <a href="http://inkscape.org/" title="Inkscape" target="_blank">Inkscape</a>. I'll never be an artist, but being able to drag together a few coloured shapes in Inkscape was all I really needed.</p>
<p>To support an assortment of devices and screen resolutions, Android is capable of scaling graphic assets used in your application. I was never happy with the results of scaling and I recommend taking the time to create resolution-specific graphics for your applications. This is <a href="http://developer.android.com/guide/practices/screens_support.html#DesigningResources" title="Android Developers: Supporting Multiple Screens" target="_blank">really well documented</a>.</p>
<p>While I could handle simple graphics, creating audio effects was completely outside of my abilities and so I made the decision to purchase audio from a professional studio. I went with <a href="http://www.soundrangers.com/" title="Soundrangers" target="_blank">Soundrangers</a>, who are a little more expensive than some other options I'd considered, but have an extensive and well indexed library.</p>
<p>Audio purchases contributed the most to my production costs, as I'll show in the cost / revenue chart.</p>
<h2>Installations and Retention</h2>
<p>These figures show total installations and the number of users who still have the game installed. I did some research and my retention figures seem to be <a href="http://blog.flurry.com/bid/30548/Flurry-Smartphone-Industry-Pulse-January-2010" title="Smartphone Industry Pulse" target="_blank">about average</a>.</p>
<table class="stats">
<tr>
<th>Game</th>
<th>Launch Date</th>
<th>Total Installs</th>
<th>Active Installs</th>
<th>Retention (%)</th>
</tr>
<tr>
<td>Submarine</td>
<td>December 30th 2010</td>
<td>6,694</td>
<td>723</td>
<td>10.8</td>
</tr>
<tr>
<td>Radius</td>
<td>April 24th 2011</td>
<td>2,448</td>
<td>309</td>
<td>12.6</td>
</tr>
<tr>
<td>Arcade Fishing</td>
<td>June 13th 2011</td>
<td>19,479</td>
<td>3,611</td>
<td>18.5</td>
</tr>
<tr>
<td>Rock Slots</td>
<td>October 2nd 2011</td>
<td>3,899</td>
<td>521</td>
<td>13.4</td>
</tr>
</table>
<h2>Cost and Revenue</h2>
<p>This is the amount of money I spent producing each game, and the amount of money each game made. I tried both selling a game, then later releasing free games with advertising by AdMob.</p>
<p>The cost of my first game, Submarine, is only the one-time $25 fee required to create an Android Marketplace account. The rest of the money I spent was only on sound effects for my other games.</p>
<table class="stats">
<tr>
<th>Game</th>
<th>Production Cost (USD)</th>
<th>Sale Revenue (USD)</th>
<th>Ad Revenue (USD)</th>
<th>Profit (USD)</th>
</tr>
<tr>
<td>Submarine</td>
<td>25.00</td>
<td>13.85</td>
<td>0</td>
<td>-11.15</td>
</tr>
<tr>
<td>Radius</td>
<td>22.45</td>
<td>0</td>
<td>0.45</td>
<td>-22.00</td>
</tr>
<tr>
<td>Arcade Fishing</td>
<td>11.80</td>
<td>0</td>
<td>61.60</td>
<td>49.80</td>
</tr>
<tr>
<td>Rock Slots</td>
<td>17.15</td>
<td>0</td>
<td>0</td>
<td>-17.15</td>
</tr>
<tr>
<td>Total</td>
<td>76.40</td>
<td>13.85</td>
<td>62.05</td>
<td>-0.50</td>
</tr>
</table>
<p>Submarine was originally released as a paid application, but was later made free. Radius and Arcade Fishing were released as free applications with advertising. Rock Slots was released for free with no advertising.</p>
<h2>Advertisement Stats</h2>
<p>These are some more detailed advertisement stats from AdMob, for anyone who might be interested in ad performance.</p>
<table class="stats">
<tr>
<th>Game</th>
<th>Impressions</th>
<th>CTR (%)</th>
<th>eCPM</th>
<th>Revenue (USD)</th>
</tr>
<tr>
<td>Radius</td>
<td>5,973</td>
<td>0.23</td>
<td>0.08</td>
<td>0.45</tr>
<tr>
<td>Arcade Fishing</td>
<td>82,563</td>
<td>2.1</td>
<td>0.75</td>
<td>61.60</tr>
</table>
<h2>Being Found in the Android Marketplace</h2>
<p>Early in 2011, having an application discovered in the Android Marketplace was fairly easy thanks to the “Just In” list. All new and updated applications would appear in this list for a short time and I consistently saw spikes in installations after every update I released.</p>
<p>Unfortunately, this section of the Marketplace was removed sometime around the middle of the year, almost certainly due to abuse from low quality developers who would release minor updates in order to push their applications to the top of the list.</p>
<p>I can't tell for certain, but I think it's safe to attribute the majority of the installations Arcade Fishing received to the Marketplace search function. Fishing games have proven popular on mobile devices, so it's likely that a steady stream of “fishing” searches delivered users to my game.</p>
<h2>Marketplace Users, Ratings and Comments</h2>
<p>Once you publish an application in the Android Marketplace, users have the opportunity to rate it and leave reviews for other users to read. This is great for all potential users, especially when paid applications are involved, but the current design of the commenting system leads to my biggest problem with the Marketplace; there is no way to communicate with the users.</p>
<p>In the Marketplace, it is impossible for a developer to see the real identity or contact information for any user who comments on their applications. I agree with Google's decision here, but there's a problem when users are under the impression they can receive support from an application developer by leaving a comment in the Marketplace.</p>
<p>Despite a support email address being provided on an application's page, users often ask questions, ask for help and complain about missing features they simply aren't using correctly in Marketplace comments. Their comments go unanswered and the user assumes they are being ignored.</p>
<p>This isn't the fault of the users. They've learned, through blogs, forums, Facebook and Twitter, that the Internet is a medium for discussion with the people who provide their tools, services and entertainment. I'm sure many users see the Marketplace and an extension of this and, very reasonably, expect it to work the same way.</p>
<p>This is something I really hope Google will address, perhaps by including an "allow this developer to contact me" checkbox to the comment submission form.</p>
<p>That said, there are also some great comments. These are my favourites so far:</p>
<p>"Great Indie game. Wonderful idea" - J&atilde;nis, about Radius.</p>
<p>"SGAce CM7 Great idea really well implemented. Easy to learn and just the right amount of frustration. Would play again." - Richard, about Radius.</p>
<p>It's worth pointing out here that Richard started his review with the make and models of his phone, as well as the custom ROM is he using. "SGAce CM7" tells me he is using a Samsung Galaxy Ace running CyanogenMod 7. There are many variations of Android devices out there, so it's helpful when users report which devices an application either works or doesn't work with.</p>
<h2>Future Development</h2>
<p>I am not actively developing any Android games at the moment, but I intend to release more at some point in the future. I'd really like to bring an original point-and-click adventure game to Android eventually.</p>
]]></content:encoded>
			<wfw:commentRss>http://ruscoe.org/indie-game-development-for-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Generating Images from GPS Coordinates in PHP</title>
		<link>http://ruscoe.org/generating-images-from-gps-coordinates/</link>
		<comments>http://ruscoe.org/generating-images-from-gps-coordinates/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 02:10:46 +0000</pubDate>
		<dc:creator>ruscoe</dc:creator>
				<category><![CDATA[PHP Code]]></category>

		<guid isPermaLink="false">http://ruscoe.org/?p=135</guid>
		<description><![CDATA[Since getting a new Android phone, I've been playing around with logging GPS data. I've been using GPSLogger, which can be configured to create KML files right on the phone's SD card. As an experiment, I set up my phone to log my current location hourly and took it with me on vacation to Florida. [...]]]></description>
			<content:encoded><![CDATA[<p>Since getting a new Android phone, I've been playing around with logging GPS data. I've been using GPSLogger, which can be configured to create KML files right on the phone's SD card.<br />
<span id="more-135"></span><br />
As an experiment, I set up my phone to log my current location hourly and took it with me on vacation to Florida. Normal people probably buy souvenirs on vacation; I came back with GPS logs of the entire trip.*</p>
<p>I wanted to do something interesting with the data I had, and generating some kind of image sounded like a fun idea.</p>
<p>I started by writing some PHP code to accept a range of X / Y points and use the GD library to plot them on a blank image. If the same pair of points appeared more than once, the plotted point would increase in size. This way, the size of a point would indicate how much time was spent there.</p>
<p>Once the basic point plotter was working, I wrote some additional code to parse the KML files and interpret the GPS coordinates as points. I fed in the data from Florida and got this image back:</p>
<p><img class="screenshot" src="http://img.ruscoe.org/blog/florida_point_map.png" width="400" height="453" alt="Florida Point Map" /></p>
<p>Pretty cool. The large point is the rented accommodation and the pockets of points are theme parks.</p>
<p>I put the <a href="http://github.com/ruscoe/PointMap" title="PointMap on GitHub">code up on GitHub</a>. Feel free to experiment with it.</p>
<p>* Except for when GPSLogger just stopped working for no reason.</p>
]]></content:encoded>
			<wfw:commentRss>http://ruscoe.org/generating-images-from-gps-coordinates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lessons Learned from my First Business</title>
		<link>http://ruscoe.org/lessons-learned-from-my-first-business/</link>
		<comments>http://ruscoe.org/lessons-learned-from-my-first-business/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 02:29:42 +0000</pubDate>
		<dc:creator>ruscoe</dc:creator>
				<category><![CDATA[Business of Software Development]]></category>

		<guid isPermaLink="false">http://ruscoe.org/?p=126</guid>
		<description><![CDATA[Back in 2008, my wife and I had an idea to create an online business directory that would be different to anything else on the market at the time. Where other services include an address, phone number, map and possibly a few customer reviews, ours would function as a mini-website that could be tailored to [...]]]></description>
			<content:encoded><![CDATA[<p>Back in 2008, my wife and I had an idea to create an online business directory that would be different to anything else on the market at the time.</p>
<p>Where other services include an address, phone number, map and possibly a few customer reviews, ours would function as a mini-website that could be tailored to any business type.<br />
<span id="more-126"></span><br />
I spent a couple of weeks looking at existing business directories and websites business owners had set up for themselves to figure out how I would combine the functionality of both into one package.</p>
<p>We spoke to a few business owners as well as some ordinary people who were just frustrated with existing big-name business directories. We received mostly positive responses and that was enough for us to push forward with the project.</p>
<p>After a few weeks of coding, I had a system that functioned like a regular business directory, but with a unique feature. Industry specific components, which I called "modules," could be installed into a business listing to display information specific to that particular industry.</p>
<p>If you owned a car dealership, you could install the car dealer module and be displaying your vehicle listings on your listing in minutes. If you had a hotel, there was a module to display available hotel rooms. I also built modules for general retail merchandise, restaurant menus, events, coupons and more. Anything that I had seen business websites displaying online had the potential to become a module in our business directory.</p>
<p>Each module would ask the user to fill in some predetermined fields and that data would be formatted and displayed to anyone visiting their listing in the directory.</p>
<p>While the directory was really cool from a programming perspective, it was, unfortunately, a commercial failure.</p>
<p>After pitching to local businesses, it become obvious that the features I had thought were useful were either too complicated for our target audience or offered more functionality than they needed. Despite the original idea receiving positive feedback, it just didn't work in practice.</p>
<h3>Lessons Learned</h3>
<p><b>Don't over-complicate</b></p>
<p>I got caught up in creating cool features that were a little too complicated for our target audience. Even people I'm related to still don't really know what the business did.</p>
<p><b>Launch early</b></p>
<p>I didn't launch the website until it was almost entirely complete. If I had launched earlier with a cut down version, I could have better judged the response and either moved on to another project or taken a different direction. I'm almost certain that launching much earlier would have enabled me to predict the failure of the project.</p>
<p><b>Do create something just because you think it's cool, but don't try to make a living off it</b></p>
<p>You definitely shouldn't avoid a programming project simply because you're the only person interested in it. Even if it doesn't become a sustainable business, it'll still be fun and you'll learn something from it.</p>
]]></content:encoded>
			<wfw:commentRss>http://ruscoe.org/lessons-learned-from-my-first-business/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Essential Gnome Desktop Tweaks</title>
		<link>http://ruscoe.org/essential-gnome-desktop-tweaks/</link>
		<comments>http://ruscoe.org/essential-gnome-desktop-tweaks/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 06:27:53 +0000</pubDate>
		<dc:creator>ruscoe</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://ruscoe.org/?p=103</guid>
		<description><![CDATA[These are a few tweaks I normally make after setting up a Linux desktop. Gnome ships with a handy configuration editor, which can be accessed via the terminal command gconf-editor. List-View by Default Nautilus, Gnome's file manager, displays files as large icons by default. That's difficult to work with, but can be easily changed with [...]]]></description>
			<content:encoded><![CDATA[<p class="aligncenter"><img class="screenshot" src="http://img.ruscoe.org/blog/gnome_buttons_fixed.png" width="332" height="226" alt="That button doesn't belong there" /></p>
<p>These are a few tweaks I normally make after setting up a Linux desktop.<span id="more-103"></span> Gnome ships with a handy configuration editor, which can be accessed via the terminal command <b>gconf-editor</b>.</p>
<h3>List-View by Default</h3>
<p>Nautilus, Gnome's file manager, displays files as large icons by default. That's difficult to work with, but can be easily changed with the configuration editor.</p>
<p>Applications can be found in the configuration editor's tree-style navigation pane. To tweak the file manager, browse to apps/nautilus/preferences. Find the option named "default_folder_view" [<a href="http://img.ruscoe.org/blog/gconf_editor_default_folder_viewer.png" title="View default_folder_view Screenshot" target="_blank">view screenshot</a>] in the key pane and change it's value to "list_view." The file manager will be configured to display a list of files by default.</p>
<h3>Editing Executable Files</h3>
<p>When you attempt to open an executable file, otherwise known as a script, you'll be asked if you want to edit or execute the script. I spend a lot of time editing scripts, so prefer to have Nautilus open the file in the text editor by default.</p>
<p>This option can be found in the configuration editor under apps/nautilus/preferences. The option is named "executable_text_activation" [<a href="http://img.ruscoe.org/blog/gconf_editor_executable_text_activation.png" title="View executable_text_activation Screenshot" target="_blank">view screenshot</a>] and there are three possible values; "launch," "ask," and "display." Enter "display" to have scripts open in the text editor.</p>
<h3>Make Gnome Faster</h3>
<p>You can speed Gnome up by turning off animations and non-essential display features such as redrawing windows as you drag them around your desktop.</p>
<p>This time you will be editing the window manager, Metacity. Find the configuration options under apps/metacity/general.</p>
<p>To speed up Gnome, just check the "reduced_resources" option [<a href="http://img.ruscoe.org/blog/gconf_editor_reduced_resources.png" title="View reduced_resources Screenshot" target="_blank">view screenshot</a>].</p>
<h3>Fix the Window Button Positions</h3>
<p>For years the standard in designing window decoration has been to place the minimize, maximize and close buttons in the same place. It doesn't make sense to group the close button in with minimize and maximize, but there is a very easy way to fix it.</p>
<p>In the configuration editor, under apps/metacity/general, find the option named "button_layout" [<a href="http://img.ruscoe.org/blog/gconf_editor_button_layout.png" title="View button_layout Screenshot" target="_blank">view screenshot</a>] and note the option value. It will look something like this:</p>
<p>menu:minimize,maximize,close</p>
<p>Everything on the left of the colon appears on the left of the window decoration, everything on the right appears on the right.</p>
<p>I recommend experimenting to find a configuration that works for you. I prefer this:</p>
<p>close,menu:minimize,maximize</p>
]]></content:encoded>
			<wfw:commentRss>http://ruscoe.org/essential-gnome-desktop-tweaks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Class for the Nabaztag API</title>
		<link>http://ruscoe.org/php-class-for-the-nabaztag-api/</link>
		<comments>http://ruscoe.org/php-class-for-the-nabaztag-api/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 20:09:38 +0000</pubDate>
		<dc:creator>ruscoe</dc:creator>
				<category><![CDATA[PHP Code]]></category>

		<guid isPermaLink="false">http://danruscoe.com/?p=84</guid>
		<description><![CDATA[A Nabaztag is a plastic rabbit that connects to your WiFi and reads out news stories and emails. It can also display weather information by lighting up and it moves its ears around from time to time. It comes with an API that's fun to tinker with. Just for fun I've written a small PHP [...]]]></description>
			<content:encoded><![CDATA[<p>A <a href="http://www.nabaztag.com/" title="Nabaztag" target="_blank">Nabaztag</a> is a plastic rabbit that connects to your WiFi and reads out news stories and emails. It can also display weather information by lighting up and it moves its ears around from time to time. It comes with an API that's fun to tinker with.</p>
<p>Just for fun I've written a small PHP class to allow PHP applications to interface with the Nabaztag API.<br />
<span id="more-84"></span><br />
<b><a href="http://github.com/ruscoe/Nabaztag-API-PHP-Class/" title="Nabaztag API PHP Class" target="_blank">Get the code on GitHub</a>.</b></p>
<p>The example script demonstrates all the functionality, but for quick reference:</p>
<p>Create a new nabaztag object:<br />
<span class="code">$nab = new Nabaztag($your_serial_number, $your_api_token);</span></p>
<p>Speak using text-to-speech:<br />
<span class="code">$nab->speak("that rabbit's got a vicious streak a mile wide");</span></p>
<p>Move ears:<br />
<span class="code">$nab->moveEars($left_ear_position, $right_ear_position);</span><br />
<i>Provide an integer between 0 and 16 to move the ears through their cycle.</i></p>
<p>Wake up or put to sleep:<br />
<span class="code">$nab->setWakeStatus($status);</span><br />
<i>Passing a 1 to this function wakes the Nabaztag, 0 puts it to sleep.</i></p>
<p>The Nabaztag API will send a response to acknowlege a successful request or point out any errors made. The response is stored in the class and can be accessed via this function:<br />
<span class="code">$nab->getLastApiResponse();</span></p>
<p>There is another diagnostic function that will list the parameters being send in an API request:<br />
<span class="code">$nab->getApiParams();</span></p>
<p><b>Update:</b> The company behind Nabaztag discontinued their website and API support in July of 2011. There is still an active community managing the API at the original domain, but full functionality hasn't yet been restored.</p>
]]></content:encoded>
			<wfw:commentRss>http://ruscoe.org/php-class-for-the-nabaztag-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trying Dvorak as a Programmer</title>
		<link>http://ruscoe.org/trying-dvorak-as-a-programmer/</link>
		<comments>http://ruscoe.org/trying-dvorak-as-a-programmer/#comments</comments>
		<pubDate>Sat, 21 Feb 2009 20:31:05 +0000</pubDate>
		<dc:creator>ruscoe</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://danruscoe.com/?p=32</guid>
		<description><![CDATA[Inspired by an article on how to reduce typing-induced RSI in my hands, I switched keyboard layouts to the Dvorak Simplified Keyboard. Designed to be more comfortable than the common QWERTY layout, the Dvorak layout encourages alternating hands when typing words and reduces the distance fingers have to travel. More commonly typed letters are found [...]]]></description>
			<content:encoded><![CDATA[<p>Inspired by an article on how to reduce typing-induced RSI in my hands, I switched keyboard layouts to the <a href="http://en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard" title="Dvorak Simplified Keyboard" target="_blank">Dvorak Simplified Keyboard</a>. Designed to be more comfortable than the common QWERTY layout, the Dvorak layout encourages alternating hands when typing words and reduces the distance fingers have to travel.<br />
<span id="more-32"></span><br />
More commonly typed letters are found where the fingers most naturally sit on the keyboard, the right hand does most of the work and the punctuation is kept over on the left, by the weaker hand for most people.</p>
<p>What I found really interesting about Dvorak is the way common keystrokes are designed to flow from the outside to the middle of the keyboard. It allows for a very natural hand movement similar to idly tapping on a table.</p>
<p>I made the change to Dvorak on my laptop because the keyboard I have for my desktop has curved keys that don't lend themselves well to rearrangement. My laptop, an older Toshiba Satellite A135-S2276, has a keyboard that can be easily rearranged to Dvorak. I run Ubuntu Linux and changing the keyboard layout on the software side was no trouble at all. In GNOME, the layout dialog can be found in the System menu, under Preferences and Keyboard. Google will turn up instructions for other operating systems.</p>
<p class="aligncenter"><img class="screenshot" src="http://img.danruscoe.com/hardware/dvorak.png" width="500" height="167" alt="Dvorak Keyboard Layout" /></p>
<p>I've been touch-typing QWERTY for many years and there was a significant learning curve with Dvorak. After a week, however, I really could see how it would be more comfortable for typing long sentences. Typing emails was fine, but typing PHP code, something I spend most of my time doing, wasn't as easy.</p>
<p>Writing code uses a lot of punctuation symbols and with all the punctuation keys in new positions, the flow I previously had while programming was gone. Mistyping and having to locate keys was damaging my productivity.</p>
<p>I found Dvorak difficult for programming because it was designed to making typing sentences easier. The punctuation keys I need to use often have been pushed off into awkward places to make way for letters, making the chances of reducing my risk of RSI little to none.</p>
<p>I switched back to QWERTY and have been happily touch-typing since. I like the idea of an alternative keyboard, and Dvorak might be an excellent choice for anybody writing a novel, but I've decided against it for programming.</p>
]]></content:encoded>
			<wfw:commentRss>http://ruscoe.org/trying-dvorak-as-a-programmer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

