
<?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>Tue, 24 Aug 2010 02:10:46 +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>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/tree/master" 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-speach:<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->move_ears($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->set_wake_status($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->display_api_response();</span></p>
<p>There is another diagnostic function that will list the parameters being send in an API request:<br />
<span class="code">$nab->display_api_params();</span></p>
<p>Feel free to expand on this class. There is plenty of information in the <a href="http://doc.nabaztag.com/api/home.html" title="Nabaztag API Documentation" target="_blank">official API docs</a>.</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>
		<item>
		<title>Ambiance for iPhone Review</title>
		<link>http://ruscoe.org/ambiance-for-iphone-review/</link>
		<comments>http://ruscoe.org/ambiance-for-iphone-review/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 22:43:59 +0000</pubDate>
		<dc:creator>ruscoe</dc:creator>
				<category><![CDATA[iPhone App Reviews]]></category>

		<guid isPermaLink="false">http://danruscoe.com/?p=26</guid>
		<description><![CDATA[Ambiance is a great little app that plays ambient sounds. Ambient sounds include wildlife, environmental, human and mechanical sounds. Just a few examples are birds, frogs, wind, rain, river, jungle, city, subway, the sound of typing on a keyboard, machine and fan sounds. I use Ambiance with ear-buds to tune out background noise when coding. [...]]]></description>
			<content:encoded><![CDATA[<p>Ambiance is a great little app that plays ambient sounds.</p>
<p>Ambient sounds include wildlife, environmental, human and mechanical sounds. Just a few examples are birds, frogs, wind, rain, river, jungle, city, subway, the sound of typing on a keyboard, machine and fan sounds.<br />
<span id="more-26"></span><br />
I use Ambiance with ear-buds to tune out background noise when coding. The rain sound effects are great at blocking out other sounds without being too distracting.</p>
<p class="aligncenter"><img class="screenshot" src="http://img.danruscoe.com/iphone/ambiance_sounds.jpg" width="320" height="480" alt="Selection of Sounds in Ambiance" /></p>
<p>In the unlikely event of not finding a sound you like in the huge collection provided, you also have the option of selecting up to three sounds to mix together. If you want to hear frogs typing on a keyboard while being cooled by an oscillating fan, Ambiance is the app for you.</p>
<p>Exactly how to mix sounds is not immediately obvious when you start the app. To play several sounds at once, make sure both "Combination Mode" and "Show Front Controls" are enabled in the "Advanced" tab of the options screen.</p>
<p>A timer is available in the options screen, which is handy if you use any of the sound effects to help you get to sleep.</p>
<p class="aligncenter"><img class="screenshot" src="http://img.danruscoe.com/iphone/ambiance_timer.jpg" width="320" height="480" alt="Timer in Ambiance" /></p>
<p>The amount of sound effects makes Ambiance a bulky application, which can cause slow syncing with iTunes. An update to Ambiance made it possible to delete sounds from the application, so you can remove sounds you don't use and cut down on the size. A fresh install of the app will return all the original sounds.</p>
<p>Because the iPhone currently doesn't support running apps in the background, you can't have Ambiance playing while you read your email or do anything else on the iPhone. This isn't a flaw in the application, of course, just a restriction of the platform.</p>
<p>Ambiance is a great app to have if you work anywhere with distractions that you'd prefer to tune out. It works wonders for my concentration when coding.</p>
<p>You can get Ambiance for $0.99 in the Apple App Store.</p>
]]></content:encoded>
			<wfw:commentRss>http://ruscoe.org/ambiance-for-iphone-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cro-Mag Rally for iPhone Review</title>
		<link>http://ruscoe.org/cro-mag-rally-iphone-review/</link>
		<comments>http://ruscoe.org/cro-mag-rally-iphone-review/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 17:16:48 +0000</pubDate>
		<dc:creator>ruscoe</dc:creator>
				<category><![CDATA[iPhone App Reviews]]></category>

		<guid isPermaLink="false">http://danruscoe.com/?p=6</guid>
		<description><![CDATA[Cro-Mag Rally is a racing game you play as a caveman. There are ten themed vehicles to choose from including the Mammoth Mobile, built from a pair of tusks and the Geode Cruiser, which is half a geode on wheels. Not all vehicles are caveman-themed, you also have the option of driving a Trojan horse, [...]]]></description>
			<content:encoded><![CDATA[<p>Cro-Mag Rally is a racing game you play as a caveman. There are ten themed vehicles to choose from including the Mammoth Mobile, built from a pair of tusks and the Geode Cruiser, which is half a geode on wheels. Not all vehicles are caveman-themed, you also have the option of driving a Trojan horse, a catapult and an old military-style chariot.<br />
<span id="more-6"></span></p>
<p class="aligncenter"><img class="screenshot" src="http://img.danruscoe.com/iphone/cro-mag-bone-buggy.jpg" width="480" height="320" alt="Cro-Mag Rally Bone Buggy Vehicle" /></p>
<p>Race tracks span the Globe and are as varied as the vehicles. You can race through tracks themed on a desert, jungle, glacier, the island of Crete, the Great Wall of China, Egypt as well as Medieval and Viking towns. An underwater location themed on the city of Atlantis makes use of submarines and expands on the accelerometer-based controls to account for changing depth.</p>
<p>The Atlantis track seems detached from the rest of the game and feels a bit experimental, but it's a fun track to play.</p>
<p class="aligncenter"><img class="screenshot" src="http://img.danruscoe.com/iphone/cro-mag-desert.jpg" width="480" height="320" alt="Cro-Mag Rally Desert Track" /></p>
<p>Power-ups can be collected by driving into them on tracks. Power-ups enhance your vehicle with "sticky tires" or improved suspension for a limited period of time.</p>
<p>Weapons can be collected in the same way as power-ups and work in a similar way to Mario Cart games. You can launch bones, firecrackers, homing pigeons and oil slicks either forwards or backwards to cause trouble for the other racers.</p>
<p class="aligncenter"><img class="screenshot" src="http://img.danruscoe.com/iphone/cro-mag-medieval.jpg" width="480" height="320" alt="Cro-Mag Rally Medieval Track" /></p>
<p>Overall the game feels very polished. The occasional 3D dinosaur passing over a menu screen shows the attention to detail that has gone into the design. The on-screen controls fit the caveman theme, appearing as arrow heads.</p>
<p>In addition to well-done visuals, sound in Cro-Mag is excellent. Each track has its own music and events like collecting a power-up are accompanied by professional-sounding announcements.</p>
<p class="aligncenter"><img class="screenshot" src="http://img.danruscoe.com/iphone/cro-mag-crete.jpg" width="480" height="320" alt="Cro-Mag Rally Crete Track" /></p>
<p>There are only a couple of negative aspects of the game. Once you get the hang of the controls, the AI racers aren't much of a challenge. It's very easy on some tracks to get so far ahead that you're almost coming up behind them.</p>
<p>The game lacks any kind of career mode, so there are no extra tracks or vehicles to unlock as you progress. Not even your vehicle selection is remembered between racings, forcing you to choose again before playing another track. This makes Cro-Mag create for casual gaming but looses some of its appeal to players who like to work towards goals in games.</p>
<p>Cro-Mag Rally is $1.99 in the Apple App Store.</p>
]]></content:encoded>
			<wfw:commentRss>http://ruscoe.org/cro-mag-rally-iphone-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
