<?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>Cantina Consulting &#187; Uncategorized</title>
	<atom:link href="http://www.cantinaconsulting.com/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cantinaconsulting.com</link>
	<description></description>
	<lastBuildDate>Tue, 27 Jul 2010 18:47:36 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>The World Cup of Online Video &#8211; what does it mean?</title>
		<link>http://www.cantinaconsulting.com/2010/07/23/the-world-cup-of-online-video-what-does-it-mean/</link>
		<comments>http://www.cantinaconsulting.com/2010/07/23/the-world-cup-of-online-video-what-does-it-mean/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 13:03:05 +0000</pubDate>
		<dc:creator>alec</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[engagement]]></category>
		<category><![CDATA[interactivity]]></category>
		<category><![CDATA[online video]]></category>
		<category><![CDATA[social networking]]></category>
		<category><![CDATA[world cup]]></category>

		<guid isPermaLink="false">http://www.cantinaconsulting.com/?p=478</guid>
		<description><![CDATA[Well, the stats are in, and it&#8217;s official. The World Cup &#8211; considered by many to be the largest, most watched sporting event in the world &#8211; did in fact post the largest online video viewing numbers of all time as measured by a whole host of outlets and measurement services. Big deal, right? It&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>Well, the stats are in, and it&#8217;s official. The World Cup &#8211; considered by many to be the largest, most watched sporting event in the world &#8211; did in fact post the largest online video viewing numbers of all time as measured by a <a href="http://http://newteevee.com/2010/07/13/world-cup-stats-the-nets-biggest-sporting-event/">whole host of outlets and measurement services</a>. Big deal, right? It&#8217;s a no brainer that we&#8217;d see such staggering numbers for the World Cup &#8211; I mean, it&#8217;s the bloody World Cup! One of a handful of events in our globalized, 24/7 media input world that can still rally that kind of focus and participation. So &#8211; yea &#8211; it&#8217;s no surprise we broke records for online viewership. Why should we care anyway? And what does this mean about how our companies and organizations should be thinking about online video now and in the immediate future?</p>
<p>The main reason why I cared is not because I&#8217;m a diehard soccer fan, but because we just expected to be able to watch the games. Live. Wherever we were at that moment. In good quality. With good audio (vuvuzelas notwithstanding). And a host of other features to keep us interested. And we did. Online. Over the phone. It&#8217;s amazing how quickly we&#8217;ve come to expect that we can consume a live event of the magnitude of the World Cup online. I mean &#8211; that is cool.</p>
<p>But does it matter to your business? How does this relate at all? In some ways, of course, it doesn&#8217;t. Sports have been a driver for many of the mega-events in recent online video history, primarily due to the nature of the events themselves. But outside of the media world &#8211; what does this mean for your online video strategy:</p>
<p><strong>Go global</strong>. If your company has a global presence this event certainly confirmed what you may already know&#8230;.that audiences around the globe have the capability and desire to consume online video. But don&#8217;t just throw anything out there. Make sure you provide the proper translations and content to fit the needs of the region you are targeting.</p>
<p><strong>Interactivity = engagement</strong>. The majority of the implementations had a high level of interactive features woven into the experience. The ESPN3 player allowed the ability to switch between games, languages, get stats, chat with others. It&#8217;s not just about providing the moving pictures. The ability to customize players with interactive details and hot spots is growing quickly and provides many businesses with the ability to create more engagement and calls to action towards your ultimate business goal.</p>
<p><strong>Be where your users are.</strong> The success of online video with an event like the World Cup hinged directly on providing fans the ability to get their fix wherever they were &#8211; at work, on the road, at home. This means thinking not just about video on your website but also how to syndicate your assets externally and how you might leverage mobile platforms to deliver your message to your users.</p>
<p> </p>
<p> </p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.cantinaconsulting.com/2010/07/23/the-world-cup-of-online-video-what-does-it-mean/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sprinting with Rails 3</title>
		<link>http://www.cantinaconsulting.com/2010/07/20/sprinting-with-rails-3/</link>
		<comments>http://www.cantinaconsulting.com/2010/07/20/sprinting-with-rails-3/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 14:28:50 +0000</pubDate>
		<dc:creator>mattv</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.cantinaconsulting.com/?p=446</guid>
		<description><![CDATA[I love Ruby on Rails.  There are few things in life that bring me more joy than opening up Textmate and coding a Rails web app.   That being said, my infatuation has been with Rails 2, and I&#8217;ve been itching to get working with Rails 3 &#8211; especially with the prospect of a release [...]]]></description>
			<content:encoded><![CDATA[<p>I love Ruby on Rails.  There are few things in life that bring me more joy than opening up Textmate and coding a Rails web app.   That being said, my infatuation has been with Rails 2, and I&#8217;ve been itching to get working with Rails 3 &#8211; especially with the prospect of a release candidate <a href="http://weblog.rubyonrails.org/2010/6/8/rails-3-0-beta-4-now-rc-in-days">in the near future</a>.    So, I spent some time playing with the new framework, and I feel like I&#8217;ve fallen in love all over again.  The goal of this post is to showcase some of the awesome new features in Rails 3 while building a generic, reusable application skeleton which follows Rails best practices.</p>
<h2>1. Generating the app</h2>
<div id="_mcePaste">To start things off, create a new project (I&#8217;ll call it &#8220;sprinter&#8221;) and set up the Git repository.</div>
<pre>&gt; rails new sprinter --database=mysql</pre>
<pre>&gt; cd sprinter/</pre>
<pre>&gt; rm public/index.html</pre>
<pre>&gt; rm public/images/rails.png</pre>
<pre>&gt; git init</pre>
<pre>&gt; git add .</pre>
<pre>&gt; git commit -m "Initial creation of the Sprinter app"</pre>
<pre>&gt; mate .</pre>
<p>As you can see, I didn&#8217;t even think about a .gitignore file.  Since the Rails community has fully embraced git as the source control system of choice, Rails 3 provides a default .gitignore file for you.</p>
<p><em>Side note: if you haven&#8217;t gotten up to speed on using git yet, you should.  GitHub has a <a title="Git Crash Course" href="http://gitref.org/">nice crash course</a>.</em></p>
<h2>2. Configuring the app</h2>
<p>The first place to start is the Gemfile.  This is the new place to declare all your gem dependencies (it used to be in &#8220;config/environment.rb&#8221;, which, by the way,  is now &#8220;config/application.rb&#8221;).    Once you open it up, you&#8217;ll see it&#8217;s pretty much the same as how you declared gems in environment.rb, except you wont be typing &#8220;config&#8221; over and over.</p>
<p>Here&#8217;s the Gemfile I use for this project:</p>
<pre>source 'http://rubygems.org'</pre>
<pre>gem 'rails', '3.0.0.beta4'</pre>
<pre>gem 'mysql'</pre>
<pre>gem 'mongrel'</pre>
<pre>group :test do</pre>
<pre>  gem "shoulda"</pre>
<pre>end</pre>
<p>Normally, I would include a few more gems here (specifically: HAML, friendly_id, authlogic, and paperclip), but this is just a quick starter app, so I omitted them for now.  I included &#8220;shoulda&#8221; in the test group simply to illustrate how to include gems purely for a test environment.  Plus, you should be using shoulda.</p>
<h2>3. Bundler</h2>
<p>Now that the gems are defined, I can use Rails 3&#8217;s new bundler to make sure all required gems are installed.  This is how you can guarantee every system is using the right gems for the project.  It&#8217;s similar to requiring gems in environment.rb, but bundler allows you to package the gems in the deliverable.  Also, bundler is far smarter than the previous system.  Previously, gem dependencies were read linearly out of config/environment.rb which had the propensity to cause issues.</p>
<p>For example, consider the following scenario.</p>
<div>
<ul>
<li>You have versions 1.2.3 and 1.2.4 of a gem (let&#8217;s call it &#8220;some-gem&#8221;) installed on your system.</li>
<li>Your app depends on &#8220;some-gem&#8221; version &#8220;&gt;= 1.2.3&#8243;, which is declared in config/environment.rb</li>
<li>A different gem required by your app depends upon &#8220;some-gem&#8221; version &#8220;= 1.2.3&#8243; </li>
</ul>
</div>
<p>Since you have version &#8220;1.2.4&#8243; installed, the &#8220;&gt;= 1.2.3&#8243; requirement would use the version &#8220;1.2.4&#8243; installed on your system (because it is the latest, greatest version).  However, when it later reads that version &#8220;= 1.2.3&#8243; is required, it fails since it already loaded version &#8220;1.2.4&#8243;.   It&#8217;s an edge case, but Bundler will prevent this from happening.</p>
<p>Anyway, I got a bit off subject there.  The next step is to use bundler to make sure all those gems are installed.</p>
<pre>&gt; sudo bundle install</pre>
<p>You&#8217;ll see it fetch the correct versions of all the gems defined in the Gemfile.</p>
<h2>4. Using jQuery</h2>
<p>One of the best features of Rails 3 is that all the javascript is unobtrusive, thus being fairly framework-agnostic.  Since I&#8217;m a big fan of jQuery, and less so of Prototype, let&#8217;s swap in jQuery by doing the following:</p>
<div>
<ol>
<li>Delete all .js files (except for &#8220;application.js&#8221;) in the &#8220;public/javascripts&#8221; directory.</li>
<li>Grab the &#8220;rails.js&#8221; file from the src directory of <a href="http://github.com/rails/jquery-ujs">http://github.com/rails/jquery-ujs</a> and place this in the &#8220;public/javascripts&#8221; directory.</li>
</ol>
</div>
<p>Believe it or not, you now have everything you need to use jQuery.  To make things more seamless though, you should create file &#8220;config/initializers/jquery.rb&#8221;, and paste the following inside:</p>
<pre>module ActionView::Helpers::AssetTagHelper

  remove_const :JAVASCRIPT_DEFAULT_SOURCES

  JAVASCRIPT_DEFAULT_SOURCES = %w(

    http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js 

    rails.js

  )

  reset_javascript_include_default

end
</pre>
<p>This will include the Google CDN hosted jQuery (saving you some bandwidth and speeding up your pages) when you use the &#8220;:defaults&#8221; javascript include tag.</p>
<p><em>Side note: Because all the javascript is unobtrusive,  some of those fun helpers like &#8220;link_to_function&#8221; no longer exist.  However, &#8220;link_to_remote&#8221; still exists, but you call it as a regular &#8220;link_to&#8221; with &#8220;:remote =&gt; true&#8221; as an option.</em></p>
<p>It&#8217;s one thing for the framework to try and enforce unobtrusive javascript, but we should also set up our code to enforce it as well.    At this point, I usually create the following helper methods in &#8220;app/helpers/application_helper.rb&#8221;:</p>
<pre>
<div>def stylesheet(*args)</div>
<div>  content_for(:stylesheets) { stylesheet_link_tag(*args) }</div>
<div>end</div>
<div>def javascript(*args)</div>
<div>  content_for(:javascripts) { javascript_include_tag(*args) }</div>
<div>end</div>
</pre>
<p>These functions help me group all the stylesheet and javascript includes together.  With that, I then update the application layout file like so:</p>
<pre>&lt;!DOCTYPE html&gt;</pre>
<pre>&lt;html&gt;</pre>
<pre>&lt;head&gt;</pre>
<pre>  &lt;title&gt;Sprinter&lt;/title&gt;</pre>
<pre>  &lt;% stylesheet :all %&gt;</pre>
<pre>  &lt;% javascript :defaults %&gt;</pre>
<pre>  &lt;%= yield(:stylesheets) %&gt;</pre>
<pre>  &lt;%= csrf_meta_tag %&gt;</pre>
<pre>&lt;/head&gt;</pre>
<pre>&lt;body&gt;</pre>
<pre>  &lt;%= yield %&gt;</pre>
<pre>  &lt;%= yield(:javascripts) %&gt;</pre>
<pre>&lt;/body&gt;</pre>
<pre>&lt;/html&gt;</pre>
<p><em>Another side note:  Rails 3 spits out pure HTML5.</em></p>
<p>Moving the javascript include tags to the bottom does several things:</p>
<div>
<ol>
<li>Any inline-javascript that depends on jQuery or any of our other methods will cause an error.  This forces you to use an external file for it (like you should).</li>
<li>There is no browser blocking when loading the javascript files, thus causing the page to load faster.</li>
</ol>
</div>
<h2>5. Rails 3 Routes</h2>
<p>Now that all the required gems are installed, we&#8217;re ready to roll.  I like to start by creating a simple &#8220;Welcome&#8221; controller for the app.  One thing to note is that all the Rails 2 &#8220;script/&#8221; commands are now part of the &#8220;rails&#8221; command.</p>
<pre>&gt; rails generate controller Welcome index</pre>
<p>Followed by an update to the &#8220;config/routes.rb&#8221; file to set the &#8220;welcome&#8221; controller as the root of the project.</p>
<pre>root :to =&gt; "welcome#index"</pre>
<p>In Rails 2, you would have declared the same thing with something like:</p>
<pre>map.root :controller =&gt; 'welcome', :action =&gt; 'index'</pre>
<p>Rails 3 routes are built to be  more extendable and require a lot less typing (notice the &#8220;controller#action&#8221; naming convention).  Let&#8217;s make sure everything&#8217;s working:</p>
<pre>&gt; rake db:create</pre>
<pre>&gt; rails server</pre>
<p>The site should now be visible at &#8220;http://localhost:3000&#8243;.  When you&#8217;re satisfied, stop the server with Ctrl+C.</p>
<h2>6. Scaffolding</h2>
<p>So far, I think this is a great starting point for quickly getting up and running on a new Rails 3 project.  However,it really doesn&#8217;t do anything yet.    So, let&#8217;s make it into a simple blog.</p>
<pre>&gt; rails generate scaffold Post title:string body:text published:boolean</pre>
<p>This looks pretty standard, but a few key things have changed for Rails 3.  One, the scaffold generates a &#8220;_form.html.erb&#8221; partial instead of repeating the form in the &#8220;new&#8221; and &#8220;edit&#8221; views, making things much DRYer.</p>
<p>This also sets up the routes like so:</p>
<pre>resources :posts</pre>
<p>Just to close the discussion on routes, consider if posts belonged to a user and also featured a &#8220;comment&#8221; action.  We could set the routes up like so:</p>
<pre>resources :users do</pre>
<pre>  resources :posts do</pre>
<pre>    member do</pre>
<pre>      get :comment</pre>
<pre>    end</pre>
<pre>  end</pre>
<pre>end</pre>
<p>Pretty clean, isn&#8217;t it?</p>
<p>Anyway, back to the app.  Let&#8217;s see how things are working.  Run:</p>
<pre>&gt; rake db:migrate</pre>
<p>Starting the server and checking out &#8220;/posts&#8221; gives you the standard Rails scaffolding page.  All is good here.</p>
<h2>7. And finally, Arel</h2>
<p>Now I can introduce my favorite part of Rails 3: Arel.</p>
<p>In a nutshell, Arel is an ORM-agnostic framework based on Relational Algebra (what the SQL language is based on).  I&#8217;m sure I&#8217;ll be blogging about it in far more detail shortly, but it essentially allows you to make all your Rails queries chainable (much like &#8220;named_scope&#8221; in Rails 2 &#8211; in fact, it was written by the same guy).</p>
<p>Open up app/controllers/posts_controller.rb and we&#8217;ll give it a shot.</p>
<p>In the &#8220;index&#8221; action, you can see that it grabs the blog posts in the standard Rails way:</p>
<pre>@posts = Post.all</pre>
<p>Normally, to only show the latest 25 published posts, we&#8217;d change this to be:</p>
<pre>@posts = Post.all(:conditions =&gt; { :published =&gt; true }, :limit =&gt; 25, : order =&gt; "posts.created_at DESC")</pre>
<p>With Arel, we can make this awesome by writing it as:</p>
<pre>@posts = Post.where(:published =&gt; true).order("posts.created_at DESC").limit(25)</pre>
<p>You should notice that, apart from a new naming convention, there is one major difference:  in Rails 3, we don&#8217;t call &#8220;.all&#8221;.  This is by choice.  We <em>could</em> call .all on that line and everything would work as expected (and in some cases, you want to call it).  However, calling &#8220;.all&#8221; forces the query to be run immediately.  But, thanks to Arel, if we leave it off, <strong>the query is only run when we actually use the data.</strong></p>
<p>So, our query is only run when the view hits:</p>
<pre>&lt;% @posts.each do |post| %&gt;</pre>
<pre>...</pre>
<pre>&lt;% end %&gt;</pre>
<p>I don&#8217;t know about you, but I think that&#8217;s awesome.  It&#8217;s cleaner, and <em>far</em> more extendable.  For example, say we wanted to have a toggle switch for published and unpublished posts.  Our &#8220;index&#8221; action could be something like:</p>
<pre>@posts = Post.order("posts.created_at DESC").limit(25)</pre>
<pre>if(params[:draft])  </pre>
<pre>  @posts = @posts.where(:published =&gt; false)</pre>
<pre>else  </pre>
<pre>  @posts = @posts.where(:published =&gt; true)</pre>
<pre>end</pre>
<p>Gorgeous, isn&#8217;t it?</p>
<p>Well, that&#8217;s it for now.  I hope this post helps you hit the ground running with Rails 3.  I&#8217;ll be sure to post more about Rails 3 as I discover it, but so far, I&#8217;m extremely excited about it.  I hope you feel the same way.  Leave your thoughts/gripes in the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cantinaconsulting.com/2010/07/20/sprinting-with-rails-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gory Details of In-App Purchases</title>
		<link>http://www.cantinaconsulting.com/2010/05/14/gory-details-of-in-app-purchases/</link>
		<comments>http://www.cantinaconsulting.com/2010/05/14/gory-details-of-in-app-purchases/#comments</comments>
		<pubDate>Fri, 14 May 2010 18:25:18 +0000</pubDate>
		<dc:creator>glenn</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.cantinaconsulting.com/?p=381</guid>
		<description><![CDATA[Chris Adamson has posted a great summary of his presentation from the Voices That Matter: iPhone Developers Conference where he dives into the possibilities and perils of implementing in-app purchases in your iPhone applications.  These follow up nicely on his original post on the topic (An In-App Purchase Brain Dump).
These posts are the best posts [...]]]></description>
			<content:encoded><![CDATA[<p>Chris Adamson has posted <a href="http://www.subfurther.com/blog/?p=1026">a great summary</a> of his presentation from the <a href="http://www.voicesthatmatter.com/iphone2010/">Voices That Matter: iPhone Developers Conference</a> where he dives into the possibilities and perils of implementing in-app purchases in your iPhone applications.  These follow up nicely on his original post on the topic (<a href="http://www.subfurther.com/blog/?p=856">An In-App Purchase Brain Dump</a>).</p>
<p>These posts are the best posts I&#8217;ve seen yet on the subject, with real, nitty-gritty details about implementing I-AP.</p>
<p>Executive summary: 1 FTE for 1 month to convert an existing, fully operational app to one enabled for in-app purchases.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cantinaconsulting.com/2010/05/14/gory-details-of-in-app-purchases/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creation and Collaboration on the iPhone</title>
		<link>http://www.cantinaconsulting.com/2010/05/13/creation-and-collaboration-on-the-iphone/</link>
		<comments>http://www.cantinaconsulting.com/2010/05/13/creation-and-collaboration-on-the-iphone/#comments</comments>
		<pubDate>Thu, 13 May 2010 16:23:03 +0000</pubDate>
		<dc:creator>glenn</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.cantinaconsulting.com/?p=357</guid>
		<description><![CDATA[Much of the media buzz about iPhone OS 4.0 has focused on multitasking, home screen customizations and iAds.  While these changes are significant, at Cantina we&#8217;ve been wondering what other new features might emerge in 4.0 (and beyond) &#8211; and what new classes of applications they might enable.
While the full list of iPhone OS 4.0 [...]]]></description>
			<content:encoded><![CDATA[<p>Much of the media buzz about iPhone OS 4.0 has focused on <a href="http://gizmodo.com/5512656/how-multitasking-works-in-the-new-iphone-os-40">multitasking</a>, <a href="http://www.ilounge.com/index.php/news/comments/iphone-os-4.0-multitasking-folders-home-screen-ibooks-rich-ads/">home screen customizations</a> and <a href="http://mashable.com/2010/04/08/apple-iads/">iAds</a>.  While these changes are significant, at Cantina we&#8217;ve been wondering what other new features might emerge in 4.0 (and beyond) &#8211; and what new classes of applications they might enable.</p>
<p>While the full list of iPhone OS 4.0 features is yet to be publicly disclosed, there are a number of iPad OS features (referred to by Apple as &#8220;iPhone OS 3.2&#8243;) that could conceivably show up on our iPhones in the future.  Some examples:</p>
<ul>
<li>The ability to email an app-specific file to a friend, and have them open it up on their own device in the proper app (<a href="http://developer.apple.com/iphone/library/releasenotes/General/WhatsNewIniPhoneOS/Articles/iPhoneOS3_2.html#//apple_ref/doc/uid/TP40009337-SW8">Document Support</a>)</li>
<li>The ability for an app to generate a PDF with text and images (<a href="http://developer.apple.com/iphone/library/releasenotes/General/WhatsNewIniPhoneOS/Articles/iPhoneOS3_2.html#//apple_ref/doc/uid/TP40009337-SW2">PDF Generation</a>)</li>
<li>The ability to easily move app-specific files back and forth from  your mobile device to your laptop (<a href="http://developer.apple.com/iphone/library/releasenotes/General/WhatsNewIniPhoneOS/Articles/iPhoneOS3_2.html#//apple_ref/doc/uid/TP40009337-SW11">File  Sharing Support</a>)</li>
</ul>
<p>None of these features is earth-shattering in its own right; certainly it would be possible to accomplish any or all of these behaviors today by using the iPhone app as a &#8220;thin client&#8221;, and pushing the hard work like generating PDFs, sharing documents, and managing files up to a web app server.</p>
<p>What is significant about having these capabilities on the device itself is how much easier it will be for developers to build apps that enable these behaviors, and for consumers to adopt them:</p>
<ul>
<li>App Developers won&#8217;t have to lease a server and pay bandwidth fees to enable these types of apps</li>
<li>App Developers won&#8217;t have to leave the comfort of their chosen programming language and tools (XCode / Cocoa)</li>
<li>Consumers will be able to leverage familiar collaboration and file management paradigms like email, attachments, and copying files to and from the desktop</li>
</ul>
<p>Most apps today are focused around <strong>consumption</strong> &#8211; consuming content, data or interactive entertainment for a short period of time, and then closing the app.  Features like those above could enable <strong>creation</strong> and <strong>collaboration</strong> behaviors &#8211; where the activity spent in the app yields some tangible artifact, which can be exported, transformed, or shared with other app users.</p>
<p>The possibilities exposed for consumer apps are intriguing, but the biggest impact may be felt in the enterprise arena &#8211; where creation and collaboration are more fundamental to day-to-day operations.  This is a point that others have pondered with the iPad, where the large touchscreen presumably makes it a better fit for content creation.</p>
<p>Definitely will be an interesting area to watch.  Please comment if you&#8217;ve heard of particularly clever mobile collaboration apps in the enterprise.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cantinaconsulting.com/2010/05/13/creation-and-collaboration-on-the-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Calling all Technical Architects and Project/Program Managers!</title>
		<link>http://www.cantinaconsulting.com/2010/01/08/calling-all-technical-architects-and-projectprogram-managers/</link>
		<comments>http://www.cantinaconsulting.com/2010/01/08/calling-all-technical-architects-and-projectprogram-managers/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 21:48:30 +0000</pubDate>
		<dc:creator>chris</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.cantinaconsulting.com/?p=312</guid>
		<description><![CDATA[Cantina is actively looking for senior level Technical Architects and Project/Program Managers with technical consulting experience. Please have anyone that is interested from your networks send us a resume at jobs@cantinaconsulting.com. Candidates should based in the greater Boston area. Thank you!
]]></description>
			<content:encoded><![CDATA[<p>Cantina is actively looking for senior level Technical Architects and Project/Program Managers with technical consulting experience. Please have anyone that is interested from your networks send us a resume at jobs@cantinaconsulting.com. Candidates should based in the greater Boston area. Thank you!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cantinaconsulting.com/2010/01/08/calling-all-technical-architects-and-projectprogram-managers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Boston Grails Users&#8217; Group</title>
		<link>http://www.cantinaconsulting.com/2009/06/02/boston-grails-users-group/</link>
		<comments>http://www.cantinaconsulting.com/2009/06/02/boston-grails-users-group/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 19:14:26 +0000</pubDate>
		<dc:creator>steve</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.cantinaconsulting.com/?p=181</guid>
		<description><![CDATA[As I&#8217;ve mentioned before, we here at Cantina are big fans of Groovy and Grails, and we are disappointed that the language is not used more widely. To do our part to spread joy that is Groovy, we&#8217;ve started a group on Meetup.com for Boston-based users (start local!). Check us out here: http://www.meetup.com/Grails-Boston. Our focus [...]]]></description>
			<content:encoded><![CDATA[<p>As I&#8217;ve mentioned before, we here at Cantina are big fans of Groovy and Grails, and we are disappointed that the language is not used more widely. To do our part to spread joy that is Groovy, we&#8217;ve started a group on Meetup.com for Boston-based users (start local!). Check us out here: <a title="Grails Group on Meetup" href="http://www.meetup.com/Grails-Boston" target="_blank">http://www.meetup.com/Grails-Boston</a>. Our focus will be to get together with other fans of Groovy/Grails and share ideas, present work members have done, show-off some plugins (check out <a title="Cantina Consutling Grails Plugins" href="link http://www.cantinaconsulting.com/grails-plugins/" target="_blank">ours</a>), and generally expand everyone&#8217;s knowledge of the language and framework. We&#8217;d love to have anyone who&#8217;s interested join us, even those new to Grails.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cantinaconsulting.com/2009/06/02/boston-grails-users-group/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Real Time Web</title>
		<link>http://www.cantinaconsulting.com/2009/05/20/the-real-time-web/</link>
		<comments>http://www.cantinaconsulting.com/2009/05/20/the-real-time-web/#comments</comments>
		<pubDate>Wed, 20 May 2009 14:06:06 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[real-time]]></category>
		<category><![CDATA[Techcrunch]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://www.cantinaconsulting.com/?p=165</guid>
		<description><![CDATA[The changing dynamics of the web has been something we&#8217;ve talked a lot about lately.   The shift toward real time services has impacted the way companies are thinking about the web.  Twitter is currently leading the charge in the real time information and many people think it&#8217;s going to become the real time search engine [...]]]></description>
			<content:encoded><![CDATA[<p>The changing dynamics of the web has been something we&#8217;ve talked a lot about lately.   The shift toward real time services has impacted the way companies are thinking about the web.  Twitter is currently leading the charge in the real time information and many people think it&#8217;s going to become the real time search engine of the web, ousting Google when it comes to real time information and current events.</p>
<p><a href="http://www.Techcrunch.com">Techcrunch</a> just wrote a great article on how we&#8217;re shifting away from <a href="http://www.techcrunch.com/2009/05/17/jump-into-the-stream/">pages and into streams</a>.  I think the article raises a great point that this is a huge opportunity for start-ups to really change the status quo and start developing applications that work in real time.</p>
<p>So, the question I would raise is how can your company shift it&#8217;s products toward a real time web?  Think about the big internet brands and what would happen if they had to live in the real time web.  What if companies like Amazon, Ebay, and Google had real time services?  We also know that every time our economy has gone through a shift, new companies and ideas emerge that make us re-think our perception of the web.  In other words, if you&#8217;ve got an idea for the real time web, this is your chance to go out and build it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cantinaconsulting.com/2009/05/20/the-real-time-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web Applications &#8211; What does it take?</title>
		<link>http://www.cantinaconsulting.com/2009/05/18/web-applications-what-does-it-take/</link>
		<comments>http://www.cantinaconsulting.com/2009/05/18/web-applications-what-does-it-take/#comments</comments>
		<pubDate>Mon, 18 May 2009 18:56:18 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[startups]]></category>
		<category><![CDATA[web applications]]></category>

		<guid isPermaLink="false">http://www.cantinaconsulting.com/?p=150</guid>
		<description><![CDATA[One of the founders of Woofoo just wrote a terrific article on what it takes to build a web application called &#8220;Web App Autopsy&#8220;.  They were lucky enough to get some great information from three other firms, Blinksale, Feedburner and RegOnline.  I think the charts and information they put together are great, but if you [...]]]></description>
			<content:encoded><![CDATA[<p>One of the founders of Woofoo just wrote a terrific article on what it takes to build a web application called &#8220;<a href="http://particletree.com/features/web-app-autopsy/" target="_blank">Web App Autopsy</a>&#8220;.  They were lucky enough to get some great information from three other firms, <a href="http://www.blinksale.com" target="_blank">Blinksale</a>, <a href="http://www.feedburner.com" target="_blank">Feedburner</a> and <a href="http://www.regonline.com" target="_blank">RegOnline</a>.  I think the charts and information they put together are great, but if you dig into the numbers a little deeper you start to see what it really takes to build a web application.</p>
<p>From a time perspective (you have to exclude RegOnline because it was a nights a weekend project) it takes on average about 5 months to launch one of these applications and you need roughly 3 or 4 engineers to get it done.  My guess is that most of these companies boot strapped their development but current estimates say developing a web application costs anywhere from 50k to a few hundred based on complexity.  It&#8217;s also great to see these rapid development frameworks, such as Ruby on Rails, are accelerating development and time to market.</p>
<p>Lastly, I would also emphasize their focus on business processes. Many early stage companies completely neglect support needs, such as returns, customer compliants, etc.  It can end up costing you a lot of time and money if you don&#8217;t have systems on the back end to handle customer support issues.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cantinaconsulting.com/2009/05/18/web-applications-what-does-it-take/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>while we&#8217;ve got your eyes&#8230;</title>
		<link>http://www.cantinaconsulting.com/2008/11/18/while-weve-got-your-eyes/</link>
		<comments>http://www.cantinaconsulting.com/2008/11/18/while-weve-got-your-eyes/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 19:42:35 +0000</pubDate>
		<dc:creator>chris</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[crowdspring]]></category>
		<category><![CDATA[logo]]></category>

		<guid isPermaLink="false">http://www.cantinaconsulting.com/?p=61</guid>
		<description><![CDATA[take a look at our potential logos as they unfold. let us know what you think, and feel free to submit comments or rate the submissions.
]]></description>
			<content:encoded><![CDATA[<p>take a look at our <a href="http://www.crowdspring.com/projects/graphic_design/logo/logo_for_boutique_web_applications_consulting_firm">potential logos</a> as they unfold. let us know what you think, and feel free to submit comments or rate the submissions.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cantinaconsulting.com/2008/11/18/while-weve-got-your-eyes/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>specious?</title>
		<link>http://www.cantinaconsulting.com/2008/11/18/specious/</link>
		<comments>http://www.cantinaconsulting.com/2008/11/18/specious/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 19:37:54 +0000</pubDate>
		<dc:creator>chris</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.cantinaconsulting.com/?p=58</guid>
		<description><![CDATA[Here comes a cat out of a bag &#8211; we&#8217;re in the process of building out our brand. Every growing company faces this challenge at some point, and so Cantina finds itself in the thick of it.

As purveyors of tech that, at least in theory, increases social interaction and the power of community, we&#8217;ve decided [...]]]></description>
			<content:encoded><![CDATA[<div>Here comes a cat out of a bag &#8211; we&#8217;re in the process of building out our brand. Every growing company faces this challenge at some point, and so Cantina finds itself in the thick of it.</div>
<div>
<div>As purveyors of tech that, at least in theory, increases social interaction and the power of community, we&#8217;ve decided to walk our walk and dip our toes in a bit of the crowd-sourcing pool and see what kind of logo we could fish out. There are a number of these services available, we&#8217;ve chosen to give <a href="http://www.crowdspring.com/" target="new">Crowdspring</a> a day in court. The results thus far have been wide-ranging; clearly this crowd is a heterogenous one.</div>
<div>What&#8217;s been really interesting, from my POV, is the controversy this approach stirs amongst those in the design community. The rub seems to lay not in crowd-sourcing, but rather in the notion of speculative work, or &#8220;exert your effort and maybe I&#8217;ll bite&#8221;. Imagine using this approach for other day to day transactions? Having someone paint your house *before* paying them? &#8220;No, sorry, I don&#8217;t like it. Thanks anyway.&#8221; After a chef has prepared your dinner? &#8220;That looks tempting enough, but I think I&#8217;ll pass.&#8221; Turns things upside down a bit no?</div>
<div>A designer and colleague of ours, Kurt Zinser of <a href="http://www.methodbureau.com" target="new">Method Bureau</a>, says, spec work is &#8220;harmful to the profession, encourages sub-par work and turns the practice into a commodity,&#8221; and pointed me to this statement from <a href="http://www.aiga.org/content.cfm/position-spec-work" target="new">AIGA</a>: </div>
<div>
<div>&#8220;AIGA believes that doing speculative work seriously compromises the quality of work that clients are entitled to and also violates a tacit, long-standing ethical standard in the communication design profession worldwide. AIGA strongly discourages the practice of requesting that design work be produced and submitted on a speculative basis in order to be considered for acceptance on a project.&#8221; They even provide a <a href="http://www.aiga.org/resources/content/3/5/9/9/documents/aiga_standard_specletter.doc" target="new">sample response letter</a> that further explains their position.</div>
<div>I&#8217;m sure there are those skeptics out there who will naturally counter that of course AIGA would seek to protect itself and the interests of its members; what representative organization wouldn&#8217;t? Beyond the obvious then, I think the AIGA argument has merit. Many specialized crafts have and are dealing with these same pressures &#8211; the commoditization of one&#8217;s long honed skill.</div>
<div><a href="http://andrewhyde.net/">Andrew Hyde</a> has some strong feelings too, particularly <a href="http://andrewhyde.net/spec-work-is-evil-why-i-hate-crowdspring/" target="new">regarding Crowdspring</a> itself:</div>
<div>It appears the controversy is tied to the idea of speculative work versus the notion of crowd-sourcing. Is there a better way, a solution with positive impact  for both sides of the divide?</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.cantinaconsulting.com/2008/11/18/specious/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Election tech</title>
		<link>http://www.cantinaconsulting.com/2008/10/31/election-tech/</link>
		<comments>http://www.cantinaconsulting.com/2008/10/31/election-tech/#comments</comments>
		<pubDate>Fri, 31 Oct 2008 21:11:06 +0000</pubDate>
		<dc:creator>chris</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[e-voting]]></category>
		<category><![CDATA[election]]></category>
		<category><![CDATA[election technology]]></category>

		<guid isPermaLink="false">http://www.cantinaconsulting.com/?p=37</guid>
		<description><![CDATA[Here it is, the spookiest night of the year and the prospect of another election day debacle is about as frightening a prospect as any. And why shouldn&#8217;t we be scared? What&#8217;s really changed in the past 8 years in regards to the process of voting? In 2000, the death of the chad pappy, the [...]]]></description>
			<content:encoded><![CDATA[<p>Here it is, the spookiest night of the year and the prospect of another election day debacle is about as frightening a prospect as any. And why shouldn&#8217;t we be scared? What&#8217;s really changed in the past 8 years in regards to the process of voting? In 2000, the death of the chad pappy, the paper ballot, was all but assured. Now we&#8217;re 8 years later, the iPod of then is now the doorstop of today, we&#8217;ve got touch-based computing in our pockets, we can sign, seal and deliver nearly every bit of life&#8217;s required documents digitally and yet&#8230; The voting process is still antiquated and unsolved. How is it that we can file our taxes &#8211; transmitting uber-sensitive data over the ether, yet can&#8217;t send a simple authenticated vote? Where is the open source movement to solve this issue? Clearly we can&#8217;t allow one or two vendors (the Republican Voting Company&#8230; err Diebold comes to mind). Surely this is a problem that can be solved.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cantinaconsulting.com/2008/10/31/election-tech/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Happenings</title>
		<link>http://www.cantinaconsulting.com/2008/02/07/happenings/</link>
		<comments>http://www.cantinaconsulting.com/2008/02/07/happenings/#comments</comments>
		<pubDate>Wed, 06 Feb 2008 18:33:10 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.cantinaconsulting.com/2008/02/07/happenings/</guid>
		<description><![CDATA[There&#8217;s been a bit of radio silence on our blog lately, and it&#8217;s for good reason!&#160; We&#8217;ve been busy on several Rails and Grails-based projects lately which is why we&#8217;re very excited about the releases of both Rails 2.0.x and the first full 1.0 release of the Grails framework.&#160;
The Grails release in particular is significant [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s been a bit of radio silence on our blog lately, and it&#8217;s for good reason!&nbsp; We&#8217;ve been busy on several Rails and Grails-based projects lately which is why we&#8217;re very excited about the releases of both Rails 2.0.x and the first full 1.0 release of the Grails framework.&nbsp;</p>
<p>The Grails release in particular is significant as the framework has finally emerged from &quot;in development&quot; status which removes one more barrier for web project teams and IT departments to using the framework.&nbsp; We&#8217;ve had success with the Grails framework particularly due to the fact that it sits very well in the Java enterprise ecosystem, including the relatively straightforward integration of existing Java-based Hibernate models.&nbsp; This integration with Hibernate, which is a key factor in Grails&#8217; ability to be a contender for new IT projects with teams that are Java EE and Spring/Hibernate-oriented, is a fairly straightorward process that involves dropping in your existing mapping XML and Java POJOs.&nbsp; As if by some magic, you get all the benefits of GORM on your existing Java POJO data model, including dynamic search methods and the criteria builder DSL.</p>
<ul>
<li>Groovy on Grails 1.0: <a href="http://grails.org/1.0+Release+Notes">http://grails.org/1.0+Release+Notes</a></li>
<li>Groovy/Grails Zone on DZone: <a href="http://groovy.dzone.com/">http://groovy.dzone.com/</a></li>
<li>Ruby on Rails 2.0: <a href="http://weblog.rubyonrails.org/2007/12/7/rails-2-0-it-s-done">http://weblog.rubyonrails.org/2007/12/7/rails-2-0-it-s-done</a></li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cantinaconsulting.com/2008/02/07/happenings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Benvenuto!</title>
		<link>http://www.cantinaconsulting.com/2007/10/19/benvenuto/</link>
		<comments>http://www.cantinaconsulting.com/2007/10/19/benvenuto/#comments</comments>
		<pubDate>Thu, 18 Oct 2007 19:57:16 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.cantinaconsulting.com/?p=6</guid>
		<description><![CDATA[Greetings and salutations to all, and welcome to the very first blog post at Cantina.
First things are always first, and in the spirit of blogging as a new form of journalism (not http://en.wikipedia.org/wiki/New_Journalism) let&#8217;s get the main questions that any reporter would ask out of the way:
Who
We&#8217;re a new boutique internet technology shop specializing in [...]]]></description>
			<content:encoded><![CDATA[<p>Greetings and salutations to all, and welcome to the very first blog post at Cantina.</p>
<p>First things are always first, and in the spirit of blogging as a new form of journalism (not <a title="New Journalism" target="_blank" href="http://en.wikipedia.org/wiki/New_Journalism">http://en.wikipedia.org/wiki/New_Journalism</a>) let&#8217;s get the main questions that any reporter would ask out of the way:</p>
<p><strong>Who</strong></p>
<p>We&#8217;re a new boutique internet technology shop specializing in whatever it takes to effectively produce web things (see About section).</p>
<p><strong>What</strong></p>
<p>What do we do?  Well, sometimes it involes banging our heads against the wall, but at the end of the day we make great web sites and applications using best of breed practices and technologies (yes, you can read Web 2.0 in there).</p>
<p><strong>When</strong></p>
<p>We&#8217;ve been doing this for over 15+ years combined, but the blog starts today.</p>
<p><strong>Why</strong></p>
<p>We often ask ourselves that same question, but in the end, we love what we do!</p>
<p><strong>How</strong></p>
<p>Using some of these: agile methodologies, iterative design and development, rapid development frameworks and lots of testing.</p>
<p>In the process of doing what we do, we end up figuring some things out, and as part of the open source credo of &#8220;share what you know&#8221; (which sometimes comes in the form of &#8220;patch it if it&#8217;s broken&#8221;), we decided to start blogging about our little victories against buggy code.  We hope that you find at least something that we&#8217;ve written here useful, and who knows, maybe someday we can do business together.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cantinaconsulting.com/2007/10/19/benvenuto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
