<?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>Shaun MacRae &#187; Projects</title>
	<atom:link href="http://blog.shaunmacrae.com/category/projects/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.shaunmacrae.com</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sun, 05 Feb 2012 03:42:01 +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>Racquet Network</title>
		<link>http://blog.shaunmacrae.com/2009/05/01/racquet-network/</link>
		<comments>http://blog.shaunmacrae.com/2009/05/01/racquet-network/#comments</comments>
		<pubDate>Fri, 01 May 2009 14:18:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://blog.shaunmacrae.com/?p=379</guid>
		<description><![CDATA[I&#8217;ve been working on a side project (not lately my partner would tell you), for a few years now called Racquet Network (RN). It must be starting to get street cred, cause we&#8217;ve recruited several hundred members in the last year or so. Brent has been doing all of the operations, customer service, website admin, [...]
No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p><a href="http://racquetnetwork.com"><img src="http://blog.shaunmacrae.com/wp-content/uploads/2009/05/banner-page.jpg" alt="banner-page" title="banner-page" width="530" height="74" class="alignnone size-full wp-image-382" /></a></p>
<p>I&#8217;ve been working on a side project (not lately my <a href="http://brentjohner.com">partner</a> would tell you), for a few years now called <a href="http://racquetnetwork.com">Racquet Network</a> (RN).  It must be starting to get street cred, cause we&#8217;ve recruited several hundred members in the last year or so.</p>
<p>Brent has been doing all of the operations, customer service, website admin, website design, and marketing.  Without those efforts I bet the site would be pretty much inactive.</p>
<p>I&#8217;ve been doing design and development and while happy with many of our capabilities and accomplishments, never feel I can give it the time it deserves.</p>
<p>The technology is php/mysql/apache on a 3rd party shared hosting unix box provided by <a href="http://dreamhost.com">Dreamhost</a>.  Dreamhost has a great service offering for cheap cheap.  Both hardware and software offerings by Dreamhost enable us in every way imaginable, from ftp, ssh, webdav, to domain, email, database admin, to scheduling of automated cron jobs, to one click installs that are fully supported and maintained by Dreamhost!</p>
<p>RN is a blend at the moment of an open source content management system (<a href="http://wordpress.com">wordpress</a>), open source forum application (<a href="http://phpbb.com">phpbb</a>), and a custom application (where I come in) for profiling, score keeping, and management of a general racquet sport resource database.</p>
<p>When I started in 2004, the <a href="http://clubhouse.racquetnetwork.com/">forum</a> was in place and was largely the means for managing user accounts/player profiles.  The rest of the site was mainly static with a beta score keeping tool and that&#8217;s about it.</p>
<p>I didn&#8217;t like the dependency on the open source forum software for management of our user accounts, and it was really limiting our ability to build tools (had to build around another application&#8217;s evolving data model), so after a year or so of fiddling, the first major project in 2006 was a brand new player profile tool set.  The concept was pretty straightforward with basic CRUD functionality satisfying most requirements.  I built a <a href="http://racquetnetwork.com/players/playerRegistration.php">registration sequence</a> with disclaimer, associated memberships, and a configurable hook to <a href="http://paypal.com">paypal</a> for registration payment if so desired.  I built <a href="http://racquetnetwork.com/players/playerView.php?player_id=3">view profile</a> and edit profile pages as well as a <a href="http://racquetnetwork.com/players/playerListing.php">player listing</a> and search tool.  Luckily enough, I had previously built similar tools for web-based management of relational databases both during my time on i2Services with <a href="http://cggveritas.com">Veritas</a> and for the <a href="http://talkaboutwildlife.ca">Weaselhead Preservation Society</a> as well.  Learning experiences prompted me to build the tools as generic libraries that could be re-used to administer other areas of our data model should we decide.  For example, our <a href="http://racquetnetwork.com/scoreboard/scoreboardListing.php">scoreboard</a> is powered by a subset of that library.  The advantage being that we only need to maintain one instance of the management tools and all of the pages that make use of the libraries render a similar, consistent, and standard user interface.  If we enhance the list results functions for example, all list pages will immediately benefit.  Of course, once we had designed our own data model and tool set, there was the project of migrating all of the data from our forum app into our custom app, but it was well worth it.</p>
<p>The player profile tools brought huge value to Racquet Network and provided a great foundation to support our new members.  At this point players could join, populate their profile, contact other players, and report scores.</p>
<p>Meanwhile Brent was marketing away and really ramping up quickly on Search Engine Optimization (SEO) strategies.  He had developed a great deal of static content that was starting to get recognized by the search engines and bringing new people to our site.  At that time, we had resource content for 4 or 5 cities in Canada and saw the potential for other cities in Canada and beyond.  As well, Brent had kicked off a number of Calgary based programs that were gaining attention and attracting players seeking instruction and instructors seeking freelance work.  We knew this same success could be recognized in other cities, but didn&#8217;t have an infrastructure to support the desired scale.</p>
<p>This inspired my next major project which was to design and implement a tool to manage the static resource content in a much more dynamic way.  I took the time to model a number of key entities and developed a proof of concept app that pulled all widget content for the Calgary tennis club page from this dynamic model.  I then merged the resource model with our existing player and score keeping models so that players could be associated with cities and clubs and could report scores against cities and clubs.  Before long, Brent had populated the resource database with content for the 4 or 5 Canadian cities and I had designed and redesigned all of the attractive widgets that were statically served on each club page prior.  We went through a bit of a transition hump where we were penalized by the search engines for lack of meaningful page urls (i.e. index.php?club_id=4&#8230;), but after pouring over SEO articles we joined the amazons of the world and massaged the <a href="http://racquetnetwork.com/clubs">tool</a> to power over 1200 dynamic generation possibilities that are now all fully indexed and highly ranking in <a href="http://www.google.com.au/search?source=ig&#038;hl=en&#038;rlz=&#038;q=south+perth+squash+club&#038;meta=lr%3D">Google</a>!</p>
<p>This flexibility has brought new requirements to the player profiling tools of course so that we can allow them to join and leave any combination of those 1200 clubs.  I&#8217;ve been working through that lately, while also dreaming up the next version of our competitive ladders management tool set.</p>
<p>Brent has also moved all of the remaining static website articles to a fully internationalized <a href="http://blog.racquetnetwork.com">implementation</a> of wordpress, and for that I couldn&#8217;t be happier.  I&#8217;ve got some ideas on how we can provide a more seamless look and feel between the website and web app, but for now I am happy to have the clean separation.</p>
<p>Once the ladders software is rewritten, I am anticipating my ever-growing list of change requests (powered by <a href="http://www.mantisbt.org/">mantis</a>), will need some definite attention, and hope to move from framework mode into feature development.  There are so many feature ideas that I know we have a framework to support now, and can&#8217;t wait to get to them!</p>
<div id="st0000000001" class="st-taf"><script src="http://taf.socialtwist.com:80/taf/js/shoppr.core.js?id=0000000001"></script><img style="border:0;margin:0;padding:0;" src="http://tellafriend.socialtwist.com:80/wizard/images/tafbutton_blue16.png" onmouseout="hideHoverMap(this)" onmouseover="showHoverMap(this, '0000000001', 'http%3A%2F%2Fblog.shaunmacrae.com%2F2009%2F05%2F01%2Fracquet-network%2F', 'Racquet+Network')" onclick="cw(this, {id:'0000000001',link: 'http%3A%2F%2Fblog.shaunmacrae.com%2F2009%2F05%2F01%2Fracquet-network%2F', title: '+Racquet+Network+' })"/></div><p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.shaunmacrae.com/2009/05/01/racquet-network/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

