<?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>John P Wood &#187; personal projects</title>
	<atom:link href="http://johnpwood.net/tag/personal-projects/feed/" rel="self" type="application/rss+xml" />
	<link>http://johnpwood.net</link>
	<description>collection of thoughts...</description>
	<lastBuildDate>Wed, 18 Jan 2012 20:56:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>An Adjustment in Priorities</title>
		<link>http://johnpwood.net/2011/12/10/an-adjustment-in-priorities/</link>
		<comments>http://johnpwood.net/2011/12/10/an-adjustment-in-priorities/#comments</comments>
		<pubDate>Sat, 10 Dec 2011 14:44:50 +0000</pubDate>
		<dc:creator>John Wood</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[career development]]></category>
		<category><![CDATA[continued education]]></category>
		<category><![CDATA[personal projects]]></category>

		<guid isPermaLink="false">http://johnpwood.net/?p=1324</guid>
		<description><![CDATA[I think it is very common this time of year for people to reflect, especially on their accomplishments during the past year, and what they would like to accomplish next [...]]]></description>
			<content:encoded><![CDATA[<p>I think it is very common this time of year for people to reflect, especially on their accomplishments during the past year, and what they would like to accomplish next year.  Personally, I&#8217;ve been doing quite a bit of thinking about my development as a software engineer.</p>
<p>It feels as though, over the past couple of years, the pace at which I have been learning has slowed.  This troubles me.  One of the reasons I love the software industry is that there is always something new to learn.  I love learning about new ways to solve problems with technology.  And, learning is what you must continue to do if you are to stay relevant as a software engineer.</p>
<p>Now, this doesn&#8217;t mean that I haven&#8217;t learned anything over the past couple of years.  Quite the contrary actually.  I&#8217;ve really been enjoying the boom our industry is seeing in non relational data storage systems.  We&#8217;ve been utilizing many of these newer technologies at Signal with <a href="http://johnpwood.net/2011/05/31/fast-queries-on-large-datasets-using-mongodb-and-summary-documents/">great</a> <a href="http://johnpwood.net/2009/06/15/couchdb-a-case-study/">success</a>.  I&#8217;ve been an active member of the <a href="http://chicagodb.gathers.us/">ChicagoDB</a> users group, attended a few <a href="http://windycitydb.org/">conferences</a> on this topic, and even <a href="http://www.slideshare.net/jwoodslideshare/real-world-couchdb">gave</a> <a href="http://www.slideshare.net/jwoodslideshare/tenacity">a</a> <a href="http://www.slideshare.net/jwoodslideshare/introduction-to-couchdb-4984849">few</a> <a href="http://www.slideshare.net/jwoodslideshare/polyglot-persistence-two-great-tastes-that-taste-great-together-4625004">talks</a>&#8230;a first for me.  I&#8217;ve also been learning first hand how to scale a system as we&#8217;ve taken the <a href="http://www.signalhq.com">Signal</a> application from one capable of sending thousands of messages per “blast” to one that regularly sends millions of messages per “blast”.</p>
<p>However, something is missing.  I used to read more.  I used to blog more.  I used make a sincere effort to learn a new programming language every year.  I used to constantly download and tinker with new tools.  These things have fallen to the wayside.  And, I really miss them.</p>
<p>Instead, over the past couple of years, I have been spending the majority of my time creating.  When creating a new project, there is usually something new to learn.  That&#8217;s what drives me to create the project in the first place.  But as time goes on, the cost of the time I spend working on the project starts to outweigh the benefit.  I reach a point where I am no longer learning anything while working on the project.  If I&#8217;m not benefiting from working on the project in any way (now that the learning part has mostly dried up), there is little motivation for me to keep working on it.</p>
<p>Part of me feels obligated to keep these projects going, and to get them to a point that I would consider “done”.  I&#8217;ve never been a quitter, and stopping work on these projects sounds like quitting to me.  However, it makes little sense to continue working on something that gives me nothing in return.  I will still fix bugs that are reported, but any new development on most of my active projects is likely going to cease.  Time is precious, and I need to make the most of it.</p>
<p>So as of right now, I&#8217;m making an adjustment in priorities.  I&#8217;m using my free time to invest in myself.  To read more.  To blog more.  To get back to learning a new programming language a year (Clojure is on tap for 2012&#8230;I&#8217;ve been wanting to learn it for 3 years now).  To resume downloading and tinkering with tools that spark my curiosity.  I want to start practicing how to write code, like I learned at the code retreat I attended over the summer.</p>
<p>I&#8217;ll still be creating, as I&#8217;m someone who learns by doing, but I have a feeling from now on my projects will be much, much smaller.</p>
<p>It is impossible to “find” time to do something.  You have to make time.</p>
]]></content:encoded>
			<wfw:commentRss>http://johnpwood.net/2011/12/10/an-adjustment-in-priorities/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Introducing Proby &#8211; Task monitoring made simple!</title>
		<link>http://johnpwood.net/2011/09/19/introducing-proby-task-monitoring-made-simple/</link>
		<comments>http://johnpwood.net/2011/09/19/introducing-proby-task-monitoring-made-simple/#comments</comments>
		<pubDate>Mon, 19 Sep 2011 15:50:20 +0000</pubDate>
		<dc:creator>John Wood</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[personal projects]]></category>
		<category><![CDATA[proby]]></category>
		<category><![CDATA[signal]]></category>

		<guid isPermaLink="false">http://johnpwood.net/?p=1293</guid>
		<description><![CDATA[Note: This entry has been cross-posted from the Signal company blog. One Monday morning about a month ago, I was browsing through open issues in our bug tracker looking for [...]]]></description>
			<content:encoded><![CDATA[<p>Note: This entry has been cross-posted from the <a href="http://blog.signalhq.com/2011/09/19/introducing-proby-task-monitoring-simple/">Signal company blog</a>.</p>
<p><a href="http://probyapp.com"><br />
<img src="http://johnpwood.net/wp-content/uploads/2011/09/proby_logo.png" alt="" title="proby_logo" width="225" height="68" class="alignright size-full wp-image-1296" /><br />
</a></p>
<p>One Monday morning about a month ago, I was browsing through open issues in our bug tracker looking for something to work on.  It was my week on &#8220;technical support&#8221;.  At Signal, the engineer on technical support spends a week working on non customer facing issues with our infrastructure, process, etc, that are too large to simply knock out as you encounter them.</p>
<p>An issue entitled <em>&#8220;Add monitoring to detect jobs that do not start&#8221;</em> caught my attention.  We already had monitoring in place to alert us when a job fails.  However, we had nothing to alert us if that job never starts in the first place.  We have many scheduled jobs that run in the background, some pretty important, and have been bitten on more than one occasion by reoccurring jobs that had not run for quite some time.</p>
<p>I bounced some ideas off the team, and we all agreed that that it made sense to create a new application to monitor our scheduled tasks.  The app would know what is supposed to run, and when.  We would change all of our jobs to &#8220;ping&#8221; the app when they start and finish.  If the app detects that something did not run when it was supposed to, or did not finish when it was supposed to, it could alert the team.</p>
<p>And just like that, <a href="http://probyapp.com">Proby</a> was born.</p>
<p><em>“What&#8217;s with the name?”</em>, you ask?  I likened the application to a probation officer, keeping an eye on wayward tasks.</p>
<p>Since going live, Proby has caught several issues with our scheduled jobs that would have gone unnoticed&#8230;many more than I would have anticipated.  It has also evolved into a fairly complete application.  It is easy to setup new tasks.  It holds onto the execution history of each task, allowing you to see a trend of the run time for each task, and which runs resulted in an alarm.  It supports alarms via email or SMS, using Signal&#8217;s SMS messaging API.  It has several settings that allow you to tweak exactly when an alarm is sent, cutting down on the number of false alarms.  And, thanks to designer extraordinaire <a href="http://www.signalhq.com/about-us/team/drew-myler">Drew Myler</a>, it <a href="http://probyapp.com/screenshots">looks amazing</a>!</p>
<p>Shortly after creating Proby, we realized that there is no way we are the only ones who have had scheduled tasks go days without running, unnoticed.  So today, we are making Proby available to the general public.  It is currently in closed beta, and we are letting people in slowly to flush out any bugs or other issues.  <strong>Use of Proby is also FREE while it is in beta.</strong></p>
<p>Interested?  Head on over to <a href="http://probyapp.com/signup">http://probyapp.com/signup</a> and signup to participate in the closed beta!  And, <strong>don&#8217;t forget to <a href="http://twitter.com/#!/probyapp">follow @probyapp on Twitter</a></strong> for updates!</p>
]]></content:encoded>
			<wfw:commentRss>http://johnpwood.net/2011/09/19/introducing-proby-task-monitoring-made-simple/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Build Your Own Sandbox Application</title>
		<link>http://johnpwood.net/2009/01/19/build-your-own-sandbox-application/</link>
		<comments>http://johnpwood.net/2009/01/19/build-your-own-sandbox-application/#comments</comments>
		<pubDate>Mon, 19 Jan 2009 14:23:44 +0000</pubDate>
		<dc:creator>John Wood</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[career development]]></category>
		<category><![CDATA[continued education]]></category>
		<category><![CDATA[personal projects]]></category>

		<guid isPermaLink="false">http://johnpwood.net/?p=268</guid>
		<description><![CDATA[Sandboxes are fun. A simple box full of sand, a bucket, and a shovel somehow opens the imagination like nothing else. You can build anything you want, keep it around [...]]]></description>
			<content:encoded><![CDATA[<p>Sandboxes are fun.  A simple box full of sand, a bucket, and a shovel somehow opens the imagination like nothing else.  You can build anything you want, keep it around for a while if you like it, add to it, subtract from it, or crush it in Godzilla like fashion if you so choose.  You can experiment with your creation in any way imaginable, without consequence.  Creating things in such a carefree environment can be refreshing, and rewarding.  </p>
<p>I think that it is a great idea for developers to have such an environment for themselves where they can try out new technologies, techniques, or processes.  Setting up a sandbox now-a-days is pretty easy.  Machines are cheap, or free if you&#8217;re not picky and keep your eyes and ears open.  That 4 year old PC that your cousin is throwing away because he got a brand new Dell for Christmas will fit the bill just fine.  Linux is free, runs great on older computers, and has the power and flexibility to host virtually any application.  Sign up for a free DNS service such as <a href="http://www.dyndns.com/">DynDNS</a> and poof, you&#8217;ve got yourself a little server that you can reach over the Internet.  My sandbox is a dusty old dual Pentium III with 512 MB of RAM, which is running <a href="http://www.ubuntu.com">Ubuntu Linux</a>.  It fits the bill quite nicely if you ask me.</p>
<p>But a sandbox is only half the equation.  For developers, we need an application that we can play with in the sandbox.  Something we can poke and prod.  A <strong>sandbox application</strong> so to speak.  There are several reasons why you many want to create a sandbox application. </p>
<h4>Platform for playing with new technologies</h4>
<p>Perhaps the biggest reason for creating and maintaining your own sandbox application is that it can serve as a platform for trying out new technologies.  Doing this at work can be tough.  Your boss or client may not be thrilled to hear that you completely re-wrote part of the application to use the bleeding edge release of some hot new framework because you <em>&#8220;thought it was cool&#8221;</em>.  But, there&#8217;s nothing stopping you from doing it with your own application.  Even if you rely heavily on your application, there&#8217;s no reason why you can&#8217;t fork your code, and give the new technology a try on a separate branch.  If it works out you can merge the code into the main branch, and if not you can always abandon the changes.  Now, this approach will only work if you have your application under source control (which you should).  If you don&#8217;t mind giving the world access to your code, <a href="http://www.github.com">GitHub</a> will host your code for free.  Otherwise, it&#8217;s very easy to setup your own source control system in your sandbox.  </p>
<h4>Material to blog about</h4>
<p>Trying out new technologies, techniques, or processes can also give you plenty of material to blog about.  If the technology/technique/process you are tinkering with is hot, it is very likely that many people will be interested in reading about your experience.  If you blog frequently about topics that people are interested in, you&#8217;ll steadily increase readership.  This could be very good for your career, as well known programmers generally don&#8217;t have a hard time finding work.  Work usually finds them.</p>
<h4>Create something that you will use</h4>
<p>What&#8217;s the point in going through all of this trouble to create something if you never use it?  I&#8217;ve created <a href="http://johnpwood.net/projects/webapps/diners-club">a</a> <a href="http://johnpwood.net/projects/webapps/karate-journal">few</a> <a href="http://johnpwood.net/projects/webapps/addressbook">applications</a> that I use on a regular basis.  Not only did these applications address some need that I was currently facing, but having a sandbox application that you actually use means that you will be more likely to maintain and enhance it.</p>
<h4>Looks great on a resume</h4>
<p>Employers love to hire people who show an interest in their field outside of work.  I&#8217;ve found that people passionate about their field are usually better at their jobs than those who show up at 9, work on the same ol&#8217; stuff for 8 hours, and go home.  Having a sandbox application shows people that you love what you do so much that you have dedicated time outside of work to create something that you care about.  This especially holds true if you&#8217;ve put serious thought into your application, and are excited to show it off to anybody who asks to see it.</p>
<h4>Release it, and potentially help others</h4>
<p>One of my colleagues once said,</p>
<blockquote><p>Your parents lied to you.  You are <strong>not</strong> special.  There&#8217;s millions of people out there <strong>just like you</strong>.</p></blockquote>
<p>He wasn&#8217;t trying to be mean, this time :)  He was simply pointing out that you are not alone.  If you are facing a problem, odds are there are hundreds or thousands (or more) of people out there who are facing that same problem.  Releasing your application could be helping all of these people.  Perhaps it would help them so much that they would be willing to pay for it.  Wouldn&#8217;t that be nice?</p>
<h4>Open source your application</h4>
<p>Open sourcing your application can be great for several reasons.  Perhaps you&#8217;ve just finished migrating your application to the latest version some framework.  Not only can you blog about your experience, but you can share the code with others so that they can see exactly how you did it.  This could potentially help others looking to migrate their applications to the same framework.  You could get feedback from the community about something you could be doing better, and learn something new.  People looking at your code could spot a bug, giving you the opportunity to fix it before it affects you (especially if you use your application).  Some employers ask to see source code samples as part of the interview process.  What sort of reaction do you think you would get if you immediately spit out several repositories that you owned on GitHub for the prospective employer to browse at their leisure?  I&#8217;m not sure about you, but I&#8217;d be pretty impressed.</p>
<p>However, there is a potential drawback in releasing your code to the world.  Ironically, it&#8217;s the same as one of the benefits.  <strong>The world can see your code</strong>.  This can be a bad thing if your code is full of bugs, or sloppy.  So if you plan on <a href="http://johnpwood.net/2008/03/26/release-your-code/">releasing your code</a>, take the extra care necessary to ensure that the code reflects your best effort.  Your code, and you as a developer, will benefit from the extra TLC.</p>
<h4>The next big thing</h4>
<p>You never know which crazy, off the wall idea will turn into the next big thing.  Who would of thought that there was a real need for <a href="http://www.twitter.com">an application</a> that lets you tell the world what you&#8217;re doing right now.  If your idea for a sandbox application turns into something with real business value, then you never know where it will end up.  Large companies will often spend big bucks to buy great ideas.  I&#8217;d imagine it would be pretty cool to be on the receiving end of one of those deals.</p>
<h4>Summary</h4>
<p>Creating a sandbox, and a sandbox application is something that every serious developer should do.  If nothing more, it will give you a place to tinker with new technologies and grow as a developer.  There is little to no cost to set it up, and your imagination is the only limit.</p>
]]></content:encoded>
			<wfw:commentRss>http://johnpwood.net/2009/01/19/build-your-own-sandbox-application/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Moved Rails Apps to GitHub</title>
		<link>http://johnpwood.net/2008/12/25/moved-rails-apps-to-github/</link>
		<comments>http://johnpwood.net/2008/12/25/moved-rails-apps-to-github/#comments</comments>
		<pubDate>Fri, 26 Dec 2008 04:31:44 +0000</pubDate>
		<dc:creator>John Wood</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[personal projects]]></category>

		<guid isPermaLink="false">http://johnpwood.net/?p=223</guid>
		<description><![CDATA[I&#8217;ve spent some time over the past couple of months cleaning up the Rails apps I&#8217;ve written with the goal of making them available for download on this site. I [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve spent some time over the past couple of months cleaning up the Rails apps I&#8217;ve written with the goal of making them available for download on this site.  I wrapped that up last week with the <a href="http://johnpwood.net/2008/12/19/addressbook-webapp-has-been-released/">release of Addressbook</a>.  However, I soon realized that making the code available on this site was not ideal, and it would be much better if I made the code available via some code hosting site, like <a href="http://sourceforge.net">Sourceforge</a> or <a href="http://www.github.com">GitHub</a>.  This gives the projects a little more visibility, allows for easier contributions to the projects, and simply provides a better home for the code.  So, I spent the past few days making <a href="http://johnpwood.net/projects/webapps/diners-club">Diners Club</a>, <a href="http://johnpwood.net/projects/webapps/addressbook">Addressbook</a>, and <a href="http://johnpwood.net/projects/webapps/karate-journal">Karate Journal</a> available on GitHub.  Please check the project pages on this site for links to the GitHub repositories.</p>
<p>Choosing GitHub was fairly easy.  I&#8217;ve been wanting to learn Git for a while now, GitHub has all of the features I needed (plus some nice-to-haves), and it seemed pretty straight forward to use.  So far so good!</p>
<p>I did however have to do some additional cleanup before the move to GitHub.  Previously, I had a bash script that I ran that would export the code from my local Subversion repository, and wipe out any user names, passwords, or other configuration that I didn&#8217;t want to publish with the code.  The script would then tar and zip up the code, and push it to the site.  This wouldn&#8217;t fly with GitHub, since everybody would be able to see the code in the repository.  So, some work was needed to provide template config files (database.yml.template for example) for people to specify their own configuration, and I removed the original files from source control.</p>
<p>All things considered, I&#8217;m very happy with the move, and wish I&#8217;d done it sooner.  I think from now on, I&#8217;ll be using GitHub from the start with new projects.</p>
<p>Merry Christmas everybody!</p>
]]></content:encoded>
			<wfw:commentRss>http://johnpwood.net/2008/12/25/moved-rails-apps-to-github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Addressbook Webapp Has Been Released</title>
		<link>http://johnpwood.net/2008/12/19/addressbook-webapp-has-been-released/</link>
		<comments>http://johnpwood.net/2008/12/19/addressbook-webapp-has-been-released/#comments</comments>
		<pubDate>Sat, 20 Dec 2008 04:32:02 +0000</pubDate>
		<dc:creator>John Wood</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[personal projects]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://johnpwood.net/?p=204</guid>
		<description><![CDATA[Yay for me! I set a personal goal to have the code for all of my Rails apps on this site by the end of the year. Tonight, I can [...]]]></description>
			<content:encoded><![CDATA[<p>Yay for me!  I set a personal goal to have the code for all of my Rails apps on this site by the end of the year.  Tonight, I can check that one off the list.  The code for the <a href="http://johnpwood.net/projects/webapps/addressbook">Addressbook</a> webapp is now available for download.  Addressbook was not only my first Rails app, but also my first experience with Ajax.  And trust me, it shows.  I learned a lot from this project, especially what not to do.  However, I must also say that I use Addressbook more than any other personal project I have ever completed.  So, it can&#8217;t be that bad :)  I love the fact that I can access my contact information from anywhere, and that I can manage groups of addresses and print mailing labels with the click of a button.  Sure, the UI can be a bit unintuitive, but it&#8217;s not that big of an issue for me.  There are a few more things I&#8217;d like to do with this project.  We&#8217;ll see where it goes from here.</p>
]]></content:encoded>
			<wfw:commentRss>http://johnpwood.net/2008/12/19/addressbook-webapp-has-been-released/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Karate Journal Webapp Has Been Released</title>
		<link>http://johnpwood.net/2008/11/14/karate-journal-webapp-has-been-released/</link>
		<comments>http://johnpwood.net/2008/11/14/karate-journal-webapp-has-been-released/#comments</comments>
		<pubDate>Fri, 14 Nov 2008 14:44:33 +0000</pubDate>
		<dc:creator>John Wood</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[personal projects]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://johnpwood.net/?p=173</guid>
		<description><![CDATA[I finished cleaning up the Karate Journal code, and it is now available here. Two down, one to go. I hope to have the Addressbook webapp code on the site [...]]]></description>
			<content:encoded><![CDATA[<p>I finished cleaning up the Karate Journal code, and it is now available <a href="http://johnpwood.net/projects/webapps/karate-journal">here</a>.  Two down, one to go.  I hope to have the <a href="http://johnpwood.net/projects/webapps/addressbook">Addressbook</a> webapp code on the site by the end of the year.</p>
]]></content:encoded>
			<wfw:commentRss>http://johnpwood.net/2008/11/14/karate-journal-webapp-has-been-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Diners Club Webapp Has Been Released</title>
		<link>http://johnpwood.net/2008/10/14/diners-club-webapp-has-been-released/</link>
		<comments>http://johnpwood.net/2008/10/14/diners-club-webapp-has-been-released/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 12:09:45 +0000</pubDate>
		<dc:creator>John Wood</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[personal projects]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://johnpwood.net/?p=151</guid>
		<description><![CDATA[I finally got around to cleaning up and publishing the code for the Diners Club web application. Like everything else I release, I&#8217;m not sure who will actually use it. [...]]]></description>
			<content:encoded><![CDATA[<p>I finally got around to cleaning up and publishing the code for the <a href="http://johnpwood.net/projects/webapps/diners-club">Diners Club web application</a>.  Like everything else I release, I&#8217;m not sure who will actually use it.  But, I find that the whole exercise of <a href="http://johnpwood.net/2008/03/26/release-your-code/">releasing your code</a> is beneficial to you and your code.  So, it&#8217;s worth the effort.  It&#8217;s available via the MIT license, so have at it.</p>
<p>Kind of a funny side note about this project.  I recently found out that a couple of co-workers of mine spend some of their spare time working on <a href="http://planyp.us/">Planypus</a>, which is a site for making plans with your friends.  Sounds familiar!  I was talking to them, and it turns out that Planypus started the exact same way that the Diners Club webapp started, as just a way to organize dinner outings with friends.  They however took it to the next level and threw a business plan around it.  I&#8217;m just not that business savvy I guess :)</p>
]]></content:encoded>
			<wfw:commentRss>http://johnpwood.net/2008/10/14/diners-club-webapp-has-been-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TravelAgent Gnome Do plugin in the wild</title>
		<link>http://johnpwood.net/2008/09/19/travelagent-gnome-do-plugin-in-the-wild/</link>
		<comments>http://johnpwood.net/2008/09/19/travelagent-gnome-do-plugin-in-the-wild/#comments</comments>
		<pubDate>Fri, 19 Sep 2008 14:14:05 +0000</pubDate>
		<dc:creator>John Wood</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Gnome Do]]></category>
		<category><![CDATA[personal projects]]></category>
		<category><![CDATA[TravelAgent]]></category>

		<guid isPermaLink="false">http://johnpwood.net/?p=112</guid>
		<description><![CDATA[I&#8217;ve just completed the initial release of my second Gnome Do plugin. It&#8217;s called TravelAgent. TravelAgent allows you to kick off searches for flights, rental cars, and hotel rooms on [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just completed the initial release of my second Gnome Do plugin.  It&#8217;s called <a href="http://do.davebsd.com/wiki/index.php?title=TravelAgent_Plugin">TravelAgent</a>.  TravelAgent allows you to kick off searches for flights, rental cars, and hotel rooms on select travel agency websites right from Do.  To use TravelAgent, you tell Do what you want to search for (flights, cars, or hotels), provide Do a simple search query string (see the <a href="http://do.davebsd.com/wiki/index.php?title=TravelAgent_Plugin">plugin&#8217;s wiki page</a> for details), and specify which of the supported travel agencies you&#8217;d like to use to conduct the search.  Do will then open up a web browser, bringing you to the search results page on the travel agency&#8217;s website.</p>
<p>Let me just state this right from the start.  I have no idea who will use this plugin, or who, if anybody, will find it useful.  This is just something I wanted to do.  If others find it useful, then that&#8217;s great.  But, that was not my main motivation.  Searching for travel can be complicated, as there are many options to consider.  Take flights for example.  The number of passengers you&#8217;re looking to book a flight for, and the &#8220;types&#8221; of those passengers (adults, children, seniors, etc) can vary from search to search.  The departure time, arrival time, and flight time is often very important to people.  Some people only fly certain airlines or certain cabin classes (coach, first class, etc).  Trying to sum all of this up into a Do plugin is difficult.  Do&#8217;s interface is simple&#8230;it needs to be.  That&#8217;s one of the reasons why Do rocks so much.  So, using the plugin had to be just as simple.  To do that, many assumptions were made about the search being conducted, greatly reducing the flexibility of the search as compared to doing the search right on the travel agency&#8217;s website.</p>
<p>So, what is it useful for then?  Well, it&#8217;s a quick an easy way to do a price check.  And if you&#8217;re interested in purchasing some travel, then you can always tweak the search right from the search results page, to get it just the way you want it, before continuing down the purchase path.</p>
<p>As for the list of agencies supported, they are all Orbitz Worldwide agencies.  All of the agencies are also running our global travel platform, which means I can interact with all of them the same way.  The plugin currently works by building a URL, which contains all of the necessary search criteria, and feeding that URL to the web browser.  It was the simplest way to get up and running.  So, where is Orbitz you ask?  Well, Orbitz is still running the classic platform.  It does not have pretty URLs, or any other type of publicly available web services that I could use to conduct a search.  I <strong>could</strong> write a screen scraper to get the job done, but that was beyond the scope of this initial 0.1 release.  Cheaptickets suffers from the same issue.  Soon, we will be rolling some of the other Ebookers agencies onto the new platform.  When those sites go on, I will add support for them in the plugin.  Orbitz and Cheaptickets are still a ways out, so I may look into scraping those sites for the time being.</p>
<p>So, what&#8217;s next for the plugin?  Here&#8217;s a short list of stuff I&#8217;d like to do:</p>
<ul>
<li>Add support for additional OWW agencies</li>
<li>Add support for searching packages (flight + car rental, flight + hotel, flight + car rental + hotel)</li>
<li>Change the plugin to display the search results in Do, instead of on the agency&#8217;s search results page (but still giving the user the option to see the full search results page)</li>
<li>Add support for pre-configured search options, like cabin class, preferred airline, etc.  This would give the user more control over the search, while keeping the search query string simple.</li>
</ul>
<p>I&#8217;m sure more features will come up as time goes on.  We&#8217;ll see where this heads.  If you have any ideas for what you&#8217;d like this plugin to be able to do, I&#8217;m all ears.</p>
]]></content:encoded>
			<wfw:commentRss>http://johnpwood.net/2008/09/19/travelagent-gnome-do-plugin-in-the-wild/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>My first Gnome Do plugin</title>
		<link>http://johnpwood.net/2008/09/13/my-first-gnome-do-plugin/</link>
		<comments>http://johnpwood.net/2008/09/13/my-first-gnome-do-plugin/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 18:50:52 +0000</pubDate>
		<dc:creator>John Wood</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Gnome Do]]></category>
		<category><![CDATA[personal projects]]></category>

		<guid isPermaLink="false">http://johnpwood.net/?p=86</guid>
		<description><![CDATA[I just pushed the code for my first Gnome Do plugin. It is a plugin for Confluence, a popular wiki package, and allows you to search your wiki from within [...]]]></description>
			<content:encoded><![CDATA[<p>I just pushed the code for <a href="http://do.davebsd.com/wiki/index.php?title=Confluence_Plugin">my first Gnome Do plugin</a>.  It is a plugin for <a href="http://www.atlassian.com/software/confluence/">Confluence</a>, a popular wiki package, and allows you to search your wiki from within Gnome Do.  Do will present you with the results, and selecting one of the results will open that page in a web browser.</p>
<p>I want to give a shout out to the Do developers.  Because of their very powerful and flexible plugin architecture, writing the plugin was a snap.  Very little code was required.  I probably spent no more than 10 hours total on this plugin, and the majority of that time was spent learning the plugin architecture, and learning how to install and test my plugin.</p>
<p>The code is currently on its own branch, waiting to be merged with the Gnome Do community plugins branch.  If interested, you can currently find the code at <a href="https://code.launchpad.net/~john-p-wood/do-plugins/confluence">https://code.launchpad.net/~john-p-wood/do-plugins/confluence</a>.  Eventually, it will be merged to <a href="https://code.launchpad.net/~do-plugins/do-plugins/community">https://code.launchpad.net/~do-plugins/do-plugins/community</a>.</p>
<p>Next up, I&#8217;m working on a Do plugin that will interact with the many Orbitz Worldwide travel websites.  Stay tuned!</p>
]]></content:encoded>
			<wfw:commentRss>http://johnpwood.net/2008/09/13/my-first-gnome-do-plugin/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Release your code!</title>
		<link>http://johnpwood.net/2008/03/26/release-your-code/</link>
		<comments>http://johnpwood.net/2008/03/26/release-your-code/#comments</comments>
		<pubDate>Wed, 26 Mar 2008 20:44:00 +0000</pubDate>
		<dc:creator>John Wood</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[career development]]></category>
		<category><![CDATA[personal projects]]></category>

		<guid isPermaLink="false">http://johnpwood.net/archives/2008/03/26/3.html</guid>
		<description><![CDATA[You know that piece of code that you wrote a while back? That webapp that you wrote to help organize some aspect of your life? That library you wrote to [...]]]></description>
			<content:encoded><![CDATA[<p>You know that piece of code that you wrote a while back?  That webapp that you wrote to help organize some aspect of your life?  That library you wrote to abstract away some details of a specific task?  Release it!  That&#8217;s right.  Set it free!</p>
<p>One of the reasons I set up this website was to give me a way to &#8220;showcase&#8221; and release some of the code I had written over the last couple of years.  I guess some part of me thought it would be as simple as tarring up the code and throwing it on the site.  Well, it turns out it&#8217;s not that simple (at least for me), and that&#8217;s a good thing.</p>
<p>I&#8217;ve found that releasing code forces you to make it better!  Over the last couple of days, I&#8217;ve found myself adding more test cases, fixing bugs, removing assumptions, bulking up the documentation, and cleaning up the code.  In general, now that the code will be out there in the public eye, I want to make sure it represents my best effort.  When I write code for my own use, I generally focus on keeping it clean, and making it work.  I don&#8217;t usually write doc outside of the code.  I sometimes make assumptions in the code based on the box that I know will be running the code.  I put up with small bugs that don&#8217;t really cause that big of a problem.  But at the same time, when I use somebody else&#8217;s code, I expect more.  I expect good doc.  I expect that the code doesn&#8217;t assume to be running in any specific environment or on any specific setup.  I expect those small bugs to be fixed.  So, I&#8217;ve found myself cleaning up the code to meet my own standards.  And, this is great for the code.</p>
<p>Releasing code also engages the community.  You never know who may be out there looking for something like what you have created.  You could be helping your fellow man by providing a solution to a problem they could be experiencing, perhaps the same problem that prompted you to write the code in the first place.  Engaging the community has several other benefits.  In true open source fashion, if users feel that your code is missing something, they will often add it.  If there are bugs in the code that you missed, sometimes they will get fixed.  An increased user base will sometimes serve as a source of innovation.  All of these end up making your code better.</p>
<p>So, in short, I&#8217;ve found that releasing your code makes it better!  So, release that code!</p>
]]></content:encoded>
			<wfw:commentRss>http://johnpwood.net/2008/03/26/release-your-code/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

