<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Blue Jazz Consulting</title>
	
	<link>http://www.bluejazzconsulting.com</link>
	<description>Austin-based Ruby on Rails, Architecture, and Technical Consulting for Startups</description>
	<lastBuildDate>Mon, 22 Feb 2010 20:08:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/TechLeadership" /><feedburner:info uri="techleadership" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>TechLeadership</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>FREE Cloud Computing For Startups eBook</title>
		<link>http://feedproxy.google.com/~r/TechLeadership/~3/V06SK9LP0Yw/</link>
		<comments>http://www.bluejazzconsulting.com/free-cloud-computing-for-startups-ebook/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 20:08:27 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[startups]]></category>

		<guid isPermaLink="false">http://www.bluejazzconsulting.com/?p=275</guid>
		<description><![CDATA[We have released a new eBook through our sister website, LaunchAny.com, called Cloud Computing For Startups. The eBook is FREE and offers a simple and concise introduction to cloud computing and how startups can benefit.
The topics covered include:

What is cloud computing?
How your startup can take advantage of cloud computing to gain a competitive advantage
How to [...]]]></description>
			<content:encoded><![CDATA[<p>We have released a new eBook through our sister website, <a href="http://www.launchany.com/">LaunchAny.com</a>, called <a href="http://www.launchany.com/free-ebook-cloud-computing-for-startups/">Cloud Computing For Startups</a>. The eBook is FREE and offers a simple and concise introduction to cloud computing and how startups can benefit.</p>
<p>The topics covered include:</p>
<ul>
<li><strong>What is cloud computing?</strong></li>
<li>How your startup can <strong>take advantage of cloud computing</strong> to gain a competitive advantage</li>
<li>How to know if cloud computing is a <strong>good fit</strong> for your startup</li>
<li><strong>A</strong><strong>nswers to common myths</strong> about cloud computing</li>
<li>Guidance through the<strong> decisions required to prepare your startup</strong> for taking advantage of the cloud</li>
<li>Tips on <strong>how to move your existing startup to the cloud</strong></li>
</ul>
<p>Whether you are new to cloud computing or just want to learn more about how it applies to startups, this eBook will provide some new and interesting insights for you.</p>
<p><a href="http://www.launchany.com/free-ebook-cloud-computing-for-startups/">Learn more about the eBook</a> or <a href="http://cloudcomputingforstartups.launchanyidea.com/">go straight to the download page</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/TechLeadership?a=V06SK9LP0Yw:_ayTIeLZETo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TechLeadership?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TechLeadership/~4/V06SK9LP0Yw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.bluejazzconsulting.com/free-cloud-computing-for-startups-ebook/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.bluejazzconsulting.com/free-cloud-computing-for-startups-ebook/</feedburner:origLink></item>
		<item>
		<title>Interview with Heroku’s Adam Wiggins</title>
		<link>http://feedproxy.google.com/~r/TechLeadership/~3/TY0__b1zJHc/</link>
		<comments>http://www.bluejazzconsulting.com/interview-with-herokus-adam-wiggins/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 20:24:04 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Adam Wiggins]]></category>
		<category><![CDATA[erlang]]></category>
		<category><![CDATA[heroku]]></category>
		<category><![CDATA[interview]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://www.bluejazzconsulting.com/?p=273</guid>
		<description><![CDATA[InfoQ has a 16 min video interview with Adam Wiggins from Heroku. In the interview, Adam discusses Ruby 1.9, the Heroku dyno solution, new add-on support, and how they support background jobs.  He also talks a little about using Erlang to supplement their Ruby infrastructure. I really enjoyed the discussion on how they pre-compile, build/bundle [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.infoq.com/interviews/wiggins-heroku-ruby">InfoQ has a 16 min video interview with Adam Wiggins from Heroku</a>. In the interview, <a href="http://adam.blog.heroku.com">Adam</a> discusses Ruby 1.9, the Heroku dyno solution, new add-on support, and how they support background jobs.  He also talks a little about using Erlang to supplement their Ruby infrastructure. I really enjoyed the discussion on how they pre-compile, build/bundle gems, and deploy each new version of your app using their infrastructure.</p>
<p><a href="http://www.infoq.com/interviews/wiggins-heroku-ruby">Watch the full interview</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/TechLeadership?a=TY0__b1zJHc:y5MQQEHmb5w:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TechLeadership?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TechLeadership/~4/TY0__b1zJHc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.bluejazzconsulting.com/interview-with-herokus-adam-wiggins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.bluejazzconsulting.com/interview-with-herokus-adam-wiggins/</feedburner:origLink></item>
		<item>
		<title>Cloud Storage Used For Backup More Than General Purpose Storage</title>
		<link>http://feedproxy.google.com/~r/TechLeadership/~3/-lh_lqOzXQ0/</link>
		<comments>http://www.bluejazzconsulting.com/cloud-storage-used-for-backup-more-than-general-purpose-storage/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 17:30:36 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[amazon s3]]></category>
		<category><![CDATA[cloud computing for startups]]></category>
		<category><![CDATA[cloud storage]]></category>

		<guid isPermaLink="false">http://www.bluejazzconsulting.com/?p=267</guid>
		<description><![CDATA[A new survey by Forrester says that just 3% of companies use cloud storage. Read the stats from the more than 1,200 IT decision makers interviewed and our analysis.]]></description>
			<content:encoded><![CDATA[<p>A new survey by <strong>Forrester says that just 3% of companies use cloud storage</strong>. Here are the stats from the more than 1,200 IT decision makers interviewed:</p>
<ul>
<li>43% said they’re not interested in cloud storage</li>
<li> Another 43% were interested but have no plans to adopt</li>
<li>3% plan to implement a cloud storage platform in the next year</li>
<li>5% plan at least a year out</li>
<li>3% have already switched to cloud storage</li>
<li>Only 1% are expanding an existing implementation</li>
</ul>
<p><strong>Some consider these stats as a bad thing for cloud computing. I see it as a non-issue. </strong>Here is why:</p>
<ol>
<li>Many likely <strong>prefer to have local storage for fast access and security</strong>, even for general purpose data</li>
<li>They also would <strong>prefer to have flexibility in managing cost</strong>, with lower cost storage for least used data and higher cost put toward data that is heavily used or where performance is important</li>
<li>Using storage APIs from Amazon S3 and other service provides<strong> is similar to writing support for accessing your hard drive using low-level operating system calls</strong> &#8211; it takes considerable effort for managing something as simple as files</li>
</ol>
<p><strong>The survey did find that companies are more interested in using these services for backup.</strong> This makes sense, as <strong>it provides an option for offsite storage of data and often comes with higher level management of files and volumes</strong> (time differential logic, storage, and restoration).</p>
<p>From my research, most consumers of cloud storage are from those fully embracing the cloud architecture, namely startups. <strong>Startups are finding that it can provide elastic storage, redundancy, and can offload data transfer costs by utilizing smarter APIs to create temporary access keys to send owners directly to the data (where the cost is cheaper than costs at the server).</strong></p>
<p>The conclusion? Using cloud storage services for backup is an easy decision; using it for general purpose storage is great to help reduce costs. Otherwise, local storage will still reign for some time to come.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/TechLeadership?a=-lh_lqOzXQ0:R-FUKe74Gk4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TechLeadership?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TechLeadership/~4/-lh_lqOzXQ0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.bluejazzconsulting.com/cloud-storage-used-for-backup-more-than-general-purpose-storage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.bluejazzconsulting.com/cloud-storage-used-for-backup-more-than-general-purpose-storage/</feedburner:origLink></item>
		<item>
		<title>Scalable Background Job Processing With Ruby on Rails and Skynet</title>
		<link>http://feedproxy.google.com/~r/TechLeadership/~3/1ZSNvJjht3w/</link>
		<comments>http://www.bluejazzconsulting.com/scalable-background-job-processing-with-ruby-on-rails-and-skynet/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 14:44:07 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[background job processing]]></category>
		<category><![CDATA[distributed computing]]></category>
		<category><![CDATA[map reduce]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[skynet]]></category>

		<guid isPermaLink="false">http://www.bluejazzconsulting.com/?p=246</guid>
		<description><![CDATA[On a recent project, I needed to be able to run a large number of background jobs. Each job would likely last between 30 seconds and 5 minutes, depending on the amount of work involved. We needed something that could do this heavy lifting, so we spent some time surveying the Ruby/Rails job processing landscape.
Many [...]]]></description>
			<content:encoded><![CDATA[<p>On a recent project, I needed to be able to run a large number of background jobs. Each job would likely last between 30 seconds and 5 minutes, depending on the amount of work involved. We needed something that could do this heavy lifting, so we spent some time surveying the Ruby/Rails job processing landscape.</p>
<h2>Many Ruby/Rails Job Processing Libraries</h2>
<p>There are quite a few Ruby and Rails job processing libraries &#8211; in fact, too many to list. Most of the libraries can be divided into the following groups:</p>
<ol>
<li>Spawners &#8211; spawn a new process and wait or fork and forget</li>
<li>Single Process Workers &#8211; launch a single process, watch a queue or database table, and run each job in turn</li>
<li>Multiple Process Workers &#8211; launch as many processes as you want and let each one run a job. Coordination between the processes is done by a) a managing process, b) a message broker, or c) database tables</li>
</ol>
<p>Since the workload was going to be heavy and the hardware we had was capable of running multiple processes, I opted for the multiple process worker type. The next step was to figure out which library to use.</p>
<h2>Why Skynet for Ruby on Rails Job Processing?</h2>
<p>Enter Skynet, a Ruby-based library written by Adam Pisoni. Adam uses the Map Reduce framework, patented by Google and powering many of Google&#8217;s services, including search. Here is Adam&#8217;s summary of Map Reduce:</p>
<blockquote><p>At its simplest level, a MapReduce job defines a data set, a map method and a reduce method. It may also define a partition method. The MapReduce server evenly splits up (partitions) the data given to it and sends those chunks of data, along with a copy of the code in the map method, to workers that execute the map method against the data it was given. The output from each worker is sent back to the MapReduce server. At  this point the MapReduce server evenly partitions the RESULT data returned from the workers and sends those chunks of data along with the reduce code to the workers to be executed. The reducers return the final result which is returned to the process that requested the job be done in the first place. Not all jobs need a reduce step, some may just have a map step.</p></blockquote>
<p>You can also read the full paper from Google at <a href="http://labs.google.com/papers/mapreduce.html">http://labs.google.com/papers/mapreduce.html</a>.</p>
<h2>So, How Does It Work?</h2>
<p>Skynet works by launching one or more processes that are either a) masters (coordinators), b) workers, or c) both. Any master pulls a job off the queue (stored in the database) and dispatches the work or runs it locally (if it can perform both tasks). The worker performs the mapping step first and then the reduce step, if provided. When the job has completed, the results are stored back into the database for later retrieval, or returned back to the caller if one is waiting.</p>
<h2>The Project Specifics</h2>
<p>For this project, we have long-running jobs that can be broken into smaller units of work and then reassembled. The nice thing about Skynet is that it allows us to break up this work without having to track the results and assemble them ourselves. This allowed us to define a map step of processing the smaller work unit, then a reduce step of reassembling the pieces back together. We could launch as few or as many workers as we needed, to balance memory consumption and time-to-completion.</p>
<p>The results were quite impressive: a 5 minute job would be broken into approx 10 smaller units of work. The total running time to create the job, let Skynet map and reduce it, and receive the results was approximately 45 seconds on a dual quad core server with plenty of memory. We further optimized this by using <a href="http://memcached.org/">memcached </a>to cache calculations and prevent redundant work, allowing us to reduce the jobs further to as low as 15 seconds.</p>
<h2>Tips for Using Skynet with Ruby on Rails</h2>
<p>Using Skynet can have a large learning curve. We&#8217;ve had over 10 years of distributed computing experience and it still took a little time to familiarize ourselves with the gem. Here are some tips and suggestions:</p>
<ol>
<li>Skynet requires a restart after a code change. So, write your job code in a separate class and test it. This may require you to design for testability, but it will allow you to ensure your code is stable before testing it live within Skynet</li>
<li>By default, Skynet will start 2 dual master/workers and some worker-only processes. If your masters get overwhelmed, it can cause your map/reduce jobs to stall as there is no master to coordinate the effort. Launch master-only jobs to prevent this</li>
<li>Skynet will dispatch work as it sees fit. If you want to ensure that your jobs are processed in a certain order, you may need to throttle the jobs into Skynet by fronting it with a message broker and queue processor. This is often overkill for most projects, but can help ensure that a job that has been split into smaller jobs is fully completed before the next one starts</li>
<li>The last version we used required that we refresh all ActiveRecord connections at the start of our job. Otherwise, AR would receive a timeout from our database connection and fail to process</li>
<li>Use good logging. Skynet provides a logging mechanism, so use it. You may need to include specific identifiers to provide context, as the log will fill quickly with the more processes you have running at once</li>
</ol>
<p>You can view the full Skynet documentation at its <a href="http://skynet.rubyforge.org/">Rubyforge home</a>, or grab the <a href="http://github.com/wonko9/skynet">latest source code from Github</a>.</p>
<p>Finally, there seems to be a fork of the <a href="http://github.com/brendan/skynet">Skynet project by Brendan Baldwin</a>. He looks to be making some really nice improvements, including <a href="http://www.nagios.org/">Nagios monitoring</a> support and dispatching jobs to Skynet from any object with a single call. We hope to evaluate his project fork soon.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/TechLeadership?a=1ZSNvJjht3w:PvZUR5Hjq6Y:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TechLeadership?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TechLeadership/~4/1ZSNvJjht3w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.bluejazzconsulting.com/scalable-background-job-processing-with-ruby-on-rails-and-skynet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.bluejazzconsulting.com/scalable-background-job-processing-with-ruby-on-rails-and-skynet/</feedburner:origLink></item>
		<item>
		<title>Geofencing with Ruby on Rails and MySQL</title>
		<link>http://feedproxy.google.com/~r/TechLeadership/~3/FuK6NApnoRc/</link>
		<comments>http://www.bluejazzconsulting.com/geofencing-with-ruby-on-rails-and-mysql/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 19:35:34 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[geofence]]></category>
		<category><![CDATA[gps]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[spatial queries]]></category>

		<guid isPermaLink="false">http://www.bluejazzconsulting.com/?p=217</guid>
		<description><![CDATA[I recently launched a startup that required geofencing. For those not familiar with the term, geofencing is the finding of known locations within a specific area around a central point. An example of what geofencing looks like can be seen to right:
Here is what we needed to deliver for our project:

Track a list of known [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.bluejazzconsulting.com/wp-content/uploads/2010/01/geofencing-with-ruby-on-rails-and-mysql.png"><img class="size-thumbnail wp-image-220 alignright" style="border: 1px solid black;" title="geofencing-with-ruby-on-rails-and-mysql" src="http://www.bluejazzconsulting.com/wp-content/uploads/2010/01/geofencing-with-ruby-on-rails-and-mysql-150x150.png" alt="" width="150" height="150" /></a>I recently launched a startup that required geofencing. For those not familiar with the term, geofencing is the finding of known locations within a specific area around a central point. An example of what geofencing looks like can be seen to right:</p>
<p>Here is what we needed to deliver for our project:</p>
<ol>
<li>Track a list of known points</li>
<li>Track the location of a specific item at a point in time</li>
<li>Determine a list of those known points that were within a specific radius of that item during that time</li>
</ol>
<h2>The MySQL Spatial Solution</h2>
<p>After performing some extensive research on the current methods for geofencing, I opted to utilize <a title="MySQL spatial extensions" href="http://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html">MySQL&#8217;s spatial extensions</a> to help store and calculate possible known points within the perimeter of a specific location. This allowed us to store each point as a MySQL geometry, then perform a special calculation to detect known points within the radius.MySQL even offers indexing of geometric columns if you opt for the MyISAM engine for the table.</p>
<h2>Geofencing with ActiveRecord</h2>
<p>Since ActiveRecord doesn&#8217;t have direct support for the MySQL spatial extensions, the handy <a href="github.com/andre/geokit-rails">geokit-rails gem</a> by Andre Lewis was used. With this gem, we were able to create the proper migrations to save and restore the geometry locations for our models. After writing a helper method to make the query as fast as possible, our work on the Rails side was complete. We had a little MySQL-specific code, but it was isolated within the migration (via the gem extensions) and the model itself.</p>
<h2>Results</h2>
<p>I also performed some optimizations to our MySQL configuration and to the table itself. After that, I roughly measured the performance for our queries to &lt;= 0.05 seconds against 4+ million known points stored in MySQL. More than enough for our performance needs!</p>
<h2>Don&#8217;t Forget the Database!</h2>
<p>Many developers forget about the power of using a database&#8217;s native extensions. Many architects and managers don&#8217;t want to bind to vendor extensions, preventing them from saving time and increasing performance.</p>
<p>MySQL&#8217;s spatial extensions, while following some industry standards regarding spatial data storage and support, wasn&#8217;t exactly a SQL standard. For this project, we made the right decision and saved considerable time of building the solution ourselves.</p>
<p>We were also reminded that sometimes spending time reviewing and <a title="Making the right Ruby on Rails Architecture decisions" href="http://www.bluejazzconsulting.com/how-we-can-help-your-startup/">selecting your architecture solutions during a discovery phase</a> can pay off considerably.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/TechLeadership?a=FuK6NApnoRc:MrfR7WOGLcQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TechLeadership?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TechLeadership/~4/FuK6NApnoRc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.bluejazzconsulting.com/geofencing-with-ruby-on-rails-and-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.bluejazzconsulting.com/geofencing-with-ruby-on-rails-and-mysql/</feedburner:origLink></item>
		<item>
		<title>Slicehost Releases Running Slice Cloning and Increases Bandwidth</title>
		<link>http://feedproxy.google.com/~r/TechLeadership/~3/cjqfy_ZadAU/</link>
		<comments>http://www.bluejazzconsulting.com/slicehost-releases-running-slice-cloning-and-increases-bandwidth/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 21:27:51 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[iaas]]></category>
		<category><![CDATA[slicehost]]></category>

		<guid isPermaLink="false">http://www.bluejazzconsulting.com/?p=118</guid>
		<description><![CDATA[I&#8217;ve been using Slicehost  for 2 years now, and as an anniversary present they have released 2 new features:

Slice cloning from running slices &#8211; You can now create a new slice from the image of a running slice. Previously backups were the only way to clone a slice
Bandwidth has been increased as well &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using <a href="https://manage.slicehost.com/customers/new?referrer=1dbc26950b98c78fdc432e0bb855bbb0">Slicehost </a> for 2 years now, and as an anniversary present they have released 2 new features:</p>
<ol>
<li><strong>Slice cloning from running slices</strong> &#8211; You can now create a new slice from the image of a running slice. Previously backups were the only way to clone a slice</li>
<li><strong>Bandwidth has been increased as well</strong> &#8211; you can now push more data out on the public and private networks</li>
</ol>
<p><a href="http://www.slicehost.com/articles/2009/6/17/updates">Read the full post on the Slicehost blog</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/TechLeadership?a=cjqfy_ZadAU:xthq1pbx9HE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TechLeadership?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TechLeadership/~4/cjqfy_ZadAU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.bluejazzconsulting.com/slicehost-releases-running-slice-cloning-and-increases-bandwidth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.bluejazzconsulting.com/slicehost-releases-running-slice-cloning-and-increases-bandwidth/</feedburner:origLink></item>
		<item>
		<title>Product Audit: Customer Experience</title>
		<link>http://feedproxy.google.com/~r/TechLeadership/~3/qkjPp8JxV5Y/</link>
		<comments>http://www.bluejazzconsulting.com/product-audit-customer-experience/#comments</comments>
		<pubDate>Mon, 11 May 2009 19:45:38 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Startup Development]]></category>
		<category><![CDATA[Startup Marketing]]></category>
		<category><![CDATA[product audits]]></category>
		<category><![CDATA[product management]]></category>
		<category><![CDATA[web applications]]></category>

		<guid isPermaLink="false">http://www.bluejazzconsulting.com/?p=114</guid>
		<description><![CDATA[Applications can get familiar and outdated. What worked for your first set of customers may not work for your current, less experienced ones. Or, perhaps your users are getting better at using your system and want some new ways to get the same work done with fewer clicks.
Auditing your application is an important step to [...]]]></description>
			<content:encoded><![CDATA[<p>Applications can get familiar and outdated. What worked for your first set of customers may not work for your current, less experienced ones. Or, perhaps your users are getting better at using your system and want some new ways to get the same work done with fewer clicks.</p>
<p>Auditing your application is an important step to take at regular intervals. I suggest conducting an audit every 3-6 months. This provides enough elapsed time for you to have learned something about your customers since the last audit, but prevents too much time from elapsing and your application from getting stale.</p>
<p>To conduct a customer experience audit:</p>
<ol>
<li>Prepare a testing environment &#8211; this may require setting up a second copy of the system or using a staging system to prevent your auditing procedures from disrupting a production system. Some applications may not have this issue and may be able to use the production environment</li>
<li>Use a different workstation or browser &#8211; from experience, I&#8217;ve noticed that I often take the same paths through a system because I let my browser remember my last form entries. This saves me lots of time during development testing, but it also causes me to take the same paths and make the same assumptions. Use a different browser on your machine or switch to a different machine. Using virtualization technologies, such as VMWare or Xen Server, allows you to setup a fresh sandbox for testing your app if spare hardware isn&#8217;t available</li>
<li>Start by putting yourself in the place of a new customer and ask yourself some simple but effective questions:
<ul>
<li>What kind of problem am I experiencing that makes me want to look for this solution?</li>
<li>What kind of keywords, questions, or websites might I visit to find a solution?</li>
<li>What is compelling about your website to make them signup?</li>
</ul>
</li>
<li>Walk through each screen in your application, asking yourself if the first-time user of your system will understand what is happening and what they need to do next</li>
<li>Capture each improvement as a separate ticket in your bug tracking system &#8211; be as detailed as possible about the problem and include one or more possible solutions for future consideration</li>
<li>(Bonus) Take a look at some new web apps to see if they have come up with innovative ways to deal with the same kind of workflow/data entry problems</li>
</ol>
<p>Make time to audit your application on a regular basis. It will reset your understanding for what a new customer sees and how you can make your product even better.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/TechLeadership?a=qkjPp8JxV5Y:gJS4obuv04Y:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TechLeadership?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TechLeadership/~4/qkjPp8JxV5Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.bluejazzconsulting.com/product-audit-customer-experience/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.bluejazzconsulting.com/product-audit-customer-experience/</feedburner:origLink></item>
		<item>
		<title>Launching a Startup Requires Patience</title>
		<link>http://feedproxy.google.com/~r/TechLeadership/~3/UJumn6VzZS0/</link>
		<comments>http://www.bluejazzconsulting.com/launching-a-startup-requires-patience/#comments</comments>
		<pubDate>Mon, 11 Aug 2008 13:08:10 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Startup Development]]></category>

		<guid isPermaLink="false">http://www.bluejazzconsulting.com/?p=110</guid>
		<description><![CDATA[I&#8217;ve had some recent discussions with some entrepreneurs about the cost and time it takes to launch a startup. These have been interesting discussions, as they have already realized that it takes more than just $10k and a month to build a startup by the time we sit down to chat. 
Launching a startup requires [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had some recent discussions with some entrepreneurs about the cost and time it takes to launch a startup. These have been interesting discussions, as they have already realized that it takes more than just $10k and a month to build a startup by the time we sit down to chat. </p>
<p>Launching a startup requires time and patience. Most startups take 2-3 months to get a great application launched that is useful to their customer base. It also requires another 3-6 months to continue to refine it as customer feedback is obtained from those outside the friends and family network. </p>
<p><a href="http://sethgodin.typepad.com/seths_blog/2008/08/the-secret-of-t.html">Seth Godin explains it best by calling it the patience trap</a>:</p>
<blockquote><p>The trap: Use all your money to build a fancy website and leave no money or patience for the hundred revisions you&#8217;ll need to do.</p></blockquote>
<p>Planning on launching a startup? Be prepared to take the time and money to make those hundreds of small revisions as you learn different ways to grow your company. </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/TechLeadership?a=UJumn6VzZS0:Cv44C3f2cWQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TechLeadership?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TechLeadership/~4/UJumn6VzZS0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.bluejazzconsulting.com/launching-a-startup-requires-patience/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.bluejazzconsulting.com/launching-a-startup-requires-patience/</feedburner:origLink></item>
		<item>
		<title>Architecting Your Startup</title>
		<link>http://feedproxy.google.com/~r/TechLeadership/~3/f5p5qoOgVmM/</link>
		<comments>http://www.bluejazzconsulting.com/architecting-your-startup/#comments</comments>
		<pubDate>Fri, 08 Aug 2008 19:11:42 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Startup Development]]></category>
		<category><![CDATA[Startup Marketing]]></category>

		<guid isPermaLink="false">http://www.bluejazzconsulting.com/?p=109</guid>
		<description><![CDATA[Seth Godin recently posted an article titled &#8220;Is architect a verb?&#8221;:
Design carries a lot of baggage related to aesthetics. We say something is well-designed if it looks good. There are great designs that don&#8217;t look good, certainly, but it&#8217;s really easy to get caught up in a bauhaus, white space, font-driven, Ideo-envy way of thinking [...]]]></description>
			<content:encoded><![CDATA[<p>Seth Godin recently posted an article titled <a href="http://sethgodin.typepad.com/seths_blog/2008/08/is-architect-a.html">&#8220;Is architect a verb?&#8221;</a>:</p>
<blockquote><p>Design carries a lot of baggage related to aesthetics. We say something is well-designed if it looks good. There are great designs that don&#8217;t look good, certainly, but it&#8217;s really easy to get caught up in a bauhaus, white space, font-driven, Ideo-envy way of thinking about design.</p>
<p>So I reserve &#8220;architect&#8221; to describe the intentional arrangement of design elements to get a certain result.</p></blockquote>
<p>He goes on to talk about businesses that actively architect:</p>
<blockquote><p>Stew Leonard&#8217;s, which used to be my favorite supermarket example, is architected to extract large amounts of money from customers. One example: there&#8217;s only one route through the store. You start at the beginning and work your way to the end. No one goes there to buy a half-gallon of milk. And he&#8217;s not going to win any design competitions either&#8230;</p>
<p>Or consider the architecture of the pricing at 37signals or the architecture of Hotmail&#8217;s viral marketing campaign years ago.</p>
<p>Architecture, for me anyway, involves intention, game theory, systems thinking and relentless testing and improvement. Fine with me if you want to call it design, just don&#8217;t forget to do it.</p></blockquote>
<p>I agree with Seth. <strong>Architecting your startup requires more than making a few decisions about technology up front.</strong> It also requires startups to make decisions early on about their revenue model, marketing, and other aspects of their business. </p>
<p>Over time, these things may change as the startup learns more about what works and what doesn&#8217;t. <strong>When that change happens, you need to have a startup architect</strong> available to listen to where you want to go and help you get everything in place to get you there. <strong>They need to understand not only how to make technology decisions, but also to understand what kind of impact those decisions have for your business going forward. </strong></p>
<p><strong>That is what we do. </strong></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/TechLeadership?a=f5p5qoOgVmM:wjtFpxusvyw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TechLeadership?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TechLeadership/~4/f5p5qoOgVmM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.bluejazzconsulting.com/architecting-your-startup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.bluejazzconsulting.com/architecting-your-startup/</feedburner:origLink></item>
		<item>
		<title>37signals on Rails Optimizations</title>
		<link>http://feedproxy.google.com/~r/TechLeadership/~3/m_jboGzlHng/</link>
		<comments>http://www.bluejazzconsulting.com/37signals-on-rails-optimizations/#comments</comments>
		<pubDate>Fri, 08 Aug 2008 14:12:24 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.bluejazzconsulting.com/?p=108</guid>
		<description><![CDATA[There is a great post at the 37signals blog about how they optimized Basecamp using New Relic. One thing I found most interesting:
MySQL optimizations: Weâ€™ve been working with a MySQL performance consultant to help us optimize our database calls and queries. Weâ€™re still early in the process but weâ€™ve learned a lot so far.
As with [...]]]></description>
			<content:encoded><![CDATA[<p>There is a <a href="http://www.37signals.com/svn/posts/1185-the-need-for-speed-making-basecamp-faster">great post at the 37signals blog about how they optimized Basecamp</a> using <a href="http://www.newrelic.com/">New Relic</a>. One thing I found most interesting:</p>
<blockquote><p><strong>MySQL optimizations:</strong> Weâ€™ve been working with a MySQL performance consultant to help us optimize our database calls and queries. Weâ€™re still early in the process but weâ€™ve learned a lot so far.</p></blockquote>
<p>As with most applications, optimizations are application-specific. This means that developers have to make certain assumptions about how their application works when they optimize their code. </p>
<p>However, Rails is quite opinionated already, so do you think they&#8217;ll take some of the more general optimization techniques and wrap it into the MySql adapter in ActiveRecord? Perhaps they will offer some optimization mixins to allow developers to quickly improve performance when using MySql. </p>
<p>What do you think?</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/TechLeadership?a=m_jboGzlHng:m_gKYFB2jTc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TechLeadership?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TechLeadership/~4/m_jboGzlHng" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.bluejazzconsulting.com/37signals-on-rails-optimizations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.bluejazzconsulting.com/37signals-on-rails-optimizations/</feedburner:origLink></item>
	</channel>
</rss>
