<?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>Jonathan Spooner is a Web Developer in the San Diego Area.</title>
	<atom:link href="http://www.jonathanspooner.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jonathanspooner.com</link>
	<description>Flex Developer, Air Developer, and ActionScript Programmer</description>
	<lastBuildDate>Wed, 30 May 2012 20:37:59 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>Ruby &#8211; Time.next(:friday)</title>
		<link>http://www.jonathanspooner.com/web-development/ruby-time-nextfriday/</link>
		<comments>http://www.jonathanspooner.com/web-development/ruby-time-nextfriday/#comments</comments>
		<pubDate>Thu, 31 Mar 2011 15:59:26 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Ruby 5]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/?p=781</guid>
		<description><![CDATA[This patch adds a method to find the next requested weekday.]]></description>
			<content:encoded><![CDATA[<p>This patch adds a method to find the next requested weekday.<br />
<script src="https://gist.github.com/896635.js?file=time.rb"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/ruby-time-nextfriday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ford SVT Raptor</title>
		<link>http://www.jonathanspooner.com/ford-raptor/ford-svt-raptor/</link>
		<comments>http://www.jonathanspooner.com/ford-raptor/ford-svt-raptor/#comments</comments>
		<pubDate>Sat, 27 Nov 2010 19:25:42 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Ford Raptor]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/?p=762</guid>
		<description><![CDATA[I suggest closing up your sunroof before you accidently hit any puddles.]]></description>
			<content:encoded><![CDATA[<p>I suggest closing up your sunroof before you accidently hit any puddles. </p>
<p><a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/11/RAPTOR.jpg"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/11/RAPTOR-300x148.jpg" alt="" title="RAPTOR" width="300" height="148" class="alignnone size-medium wp-image-763" /></a><br />
<a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/11/IMG_1614.jpg"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/11/IMG_1614-223x300.jpg" alt="" title="IMG_1614" width="223" height="300" class="alignnone size-medium wp-image-764" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/ford-raptor/ford-svt-raptor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Single Table HABTM with Rails 3</title>
		<link>http://www.jonathanspooner.com/web-development/single-table-habtm-with-rails-3/</link>
		<comments>http://www.jonathanspooner.com/web-development/single-table-habtm-with-rails-3/#comments</comments>
		<pubDate>Fri, 26 Nov 2010 19:42:41 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Ruby 5]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/?p=755</guid>
		<description><![CDATA[I'm building a user model that keeps track of your parents and any children you should have. The acts_as_tree plugin wouldn't have worked because it wouldn't allow for a parent to have many children. What's needed is a HABTM relationship. It's a quite simple relationship except for the :association_foreign_key option not being listed in the [...]]]></description>
			<content:encoded><![CDATA[<p>I'm building a user model that keeps track of your parents and any children you should have.  The acts_as_tree plugin<br />
wouldn't have worked because it wouldn't allow for a parent to have many children.  What's needed is a HABTM relationship.  It's a quite simple relationship except for the :association_foreign_key option not being listed in the docs.  Anyways I found some people discussing it <a href="http://groups.google.com/group/rubyonrails-talk/browse_thread/thread/5f6eaa79ec60521f?pli=1">here</a>. </p>
<pre class="ruby">

class User < ActiveRecord::Base
  has_and_belongs_to_many :parents,  :class_name => "User", :join_table => "parents_children", :foreign_key => "child_id", :association_foreign_key => "parent_id" 
  has_and_belongs_to_many :children, :class_name => "User", :join_table => "parents_children", :foreign_key => "parent_id" , :association_foreign_key => "child_id"
end

</pre>
<pre class="ruby">
describe User do
  it "should have 0 children" do
    User.new.should have(0).children
  end
  it "should have 0 parents" do
    User.new.should have(0).parents
  end
  it "should have 1 child" do
    parent = User.new
    parent.children << User.new
    parent.should have(1).children
  end
  it "should have 0 parents" do
    child = User.new
    child.parents << User.new
    child.should have(1).parents
  end
end
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/single-table-habtm-with-rails-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Won Best Presentation at Techcrunch Disrupt Hackathon</title>
		<link>http://www.jonathanspooner.com/news/won-best-presentation-at-techcrunch-disrupt-hackathon/</link>
		<comments>http://www.jonathanspooner.com/news/won-best-presentation-at-techcrunch-disrupt-hackathon/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 18:53:24 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/?p=691</guid>
		<description><![CDATA[Active.com Review http://techcrunch.com/2010/09/26/techcrunch-disrupt-hackathon-winner/ Video Our brainstorming kicked off 9 am Saturday morning at the San Diego Airport. Two hours later in San Francisco we had scribbled out an iPhone app, app server and, a client where guest can watch the games. At 1 pm we arrived at the TechCrunch Distupt Exhibition Center and got a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://community.active.com/blogs/productdev/2010/09/26/activecom-wins-best-demo-at-techcrunch-disrupt-hackathon">Active.com Review</a><br />
<a href="http://techcrunch.com/2010/09/26/techcrunch-disrupt-hackathon-winner/">http://techcrunch.com/2010/09/26/techcrunch-disrupt-hackathon-winner/</a><br />
<a href="http://techcrunch.tv/disrupt/watch?id=o4aHFxMTr8-GBXurZcJai764wS1PKoUs">Video</a></p>
<p><a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_0353.jpg"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_0353-300x224.jpg" alt="" title="IMG_0353" width="300" height="224" class="alignnone size-medium wp-image-732" /></a>Our brainstorming kicked off 9 am Saturday morning at the San Diego Airport.  Two hours later in San Francisco we had scribbled out an iPhone app, app server and, a client where guest can watch the games.<br />
<a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_1546.jpg"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_1546-300x224.jpg" alt="" title="IMG_1546" width="300" height="224" title="The Hacman Plan" class="alignnone size-medium wp-image-693" /></a></p>
<p><a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_1548.jpg"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_1548-300x224.jpg" alt="" title="title=&quot;The Hacman Plan&quot;" width="300" height="224" class="alignnone size-medium wp-image-695" /></a></p>
<p>At 1 pm we arrived at the TechCrunch Distupt Exhibition Center and got a table with the other 450 hackers.  Most people came prepared for warfare; 30" monitors, chairs, sleeping bags, food, tablets, keyboards, and laptop stands.  I was feeling under gunned and was just hoping I packed an extra pair of socks.</p>
<p><a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_1550.jpg"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_1550-223x300.jpg" alt="" title="TechCrunch Distupt Exhibition Center" width="223" height="300" class="alignnone size-medium wp-image-697" /></a><br />
<a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_1557.png"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_1557-223x300.png" alt="" title="IMG_1557" width="223" height="300" class="alignnone size-medium wp-image-703" /></a><br />
<a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_1553.jpg"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_1553-300x224.jpg" alt="" title="IMG_1553" width="300" height="224" class="alignnone size-medium wp-image-700" /></a></p>
<p>TechCrunch had engineers on site from Facebook, Twitter, CityGrid, and Mashery onsite to give API demos.<br />
<a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_1556.jpg"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_1556-223x300.jpg" alt="" title="IMG_1556" width="223" height="300" class="alignnone size-medium wp-image-702" /></a></p>
<p>10:19 PM<br />
<a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_1557.png"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_1557-223x300.png" alt="" title="IMG_1557" width="223" height="300" class="alignnone size-medium wp-image-703" /></a></p>
<p>12:53 AM ( Taco truck delivered a midnight snack )<br />
<a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_0337.jpg"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_0337-300x224.jpg" alt="" title="IMG_0337" width="300" height="224" class="alignnone size-medium wp-image-727" /></a></p>
<p><a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_1558.jpg"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_1558-223x300.jpg" alt="" title="IMG_1558" width="223" height="300" class="alignnone size-medium wp-image-704" /></a></p>
<p>02:51 AM<br />
<a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_0314.jpg"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_0314-223x300.jpg" alt="" title="IMG_0314" width="223" height="300" class="alignnone size-medium wp-image-726" /></a></p>
<p>I had the iPhone Simulator running the mobile app which connected to my local ruby app in Sinatra.  You can see our hacked code on <a href="http://github.com/jspooner/Hacman" >github</a><br />
<a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/Picture-8.png"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/Picture-8-300x180.png" alt="" title="Picture 8" width="300" height="180" class="alignnone size-medium wp-image-742" /></a></p>
<p>3:07:56 AM Some people have retreated but still a large number working and a lot of energy.<br />
<a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_1561.jpg"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_1561-223x300.jpg" alt="" title="IMG_1561" width="223" height="300" class="alignnone size-medium wp-image-707" /></a></p>
<p>6:20:13 AM<br />
<a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_1562.png"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_1562-300x223.png" alt="" title="IMG_1562" width="300" height="223" class="alignnone size-medium wp-image-708" /></a></p>
<p>7:11:01 AM<br />
So we decided Hackman was finished at 7 am when the sun came up.<br />
<a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_0353.jpg"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_0353-300x224.jpg" alt="" title="IMG_0353" width="300" height="224" class="alignnone size-medium wp-image-732" /></a></p>
<p>11:12:49 AM<br />
The demos started at 11<br />
<a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_1563.jpg"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_1563-223x300.jpg" alt="" title="IMG_1563" width="223" height="300" class="alignnone size-medium wp-image-709" /></a></p>
<p>The presentation<br />
<img alt="" src="http://community.active.com/servlet/JiveServlet/downloadImage/38-22423-24023/620-458/52.jpg" title="Our presentation" class="alignnone" width="619" height="458" /></p>
<p>After our presentation we were surprised how many people were tweeting about hacman.<br />
<a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/Picture-9.png"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/Picture-9-300x61.png" alt="" title="Picture 9" width="300" height="61" class="alignnone size-medium wp-image-743" /></a><a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/Picture-10.png"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/Picture-10-300x294.png" alt="" title="Picture 10" width="300" height="294" class="alignnone size-medium wp-image-744" /></a><a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/Picture-11.png"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/Picture-11-300x54.png" alt="" title="Picture 11" width="300" height="54" class="alignnone size-medium wp-image-745" /></a><a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/Picture-12.png"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/Picture-12-219x300.png" alt="" title="Picture 12" width="219" height="300" class="alignnone size-medium wp-image-746" /></a></p>
<p>And we won for "Best Presentation"<br />
<img src="http://community.active.com/servlet/JiveServlet/showImage/38-22423-24024/336.jpg" /><a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_15691.jpg"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/09/IMG_15691-223x300.jpg" alt="" title="IMG_1569" width="223" height="300" class="alignnone size-medium wp-image-738" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/news/won-best-presentation-at-techcrunch-disrupt-hackathon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby5 #3 &#8211; Rspec stubbing named_scope in a controller</title>
		<link>http://www.jonathanspooner.com/web-development/ruby5-3-rspec-stubbing-named_scope-in-a-controller/</link>
		<comments>http://www.jonathanspooner.com/web-development/ruby5-3-rspec-stubbing-named_scope-in-a-controller/#comments</comments>
		<pubDate>Fri, 28 May 2010 16:42:35 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Ruby 5]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/?p=663</guid>
		<description><![CDATA[I found the stub_chain method very helpful when stubbing out objects for Rspec controller testing. My index action is calling 2 named_scopes and then doing a find. &#160; def index @exercise_logs = ExerciseLog.this_user&#40;current_user&#41;.past.all end &#160; When testing controllers your just trying to stub out a value for @exercise_logs not simulating an actual call to your [...]]]></description>
			<content:encoded><![CDATA[<p>I found the <code>stub_chain</code> method very helpful when stubbing out objects for Rspec controller testing.</p>
<p>My index action is calling 2 named_scopes and then doing a find.</p>
<pre class="ruby">&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> index
    <span style="color:#0066ff; font-weight:bold;">@exercise_logs</span> = ExerciseLog.<span style="color:#9900CC;">this_user</span><span style="color:#006600; font-weight:bold;">&#40;</span>current_user<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">past</span>.<span style="color:#9900CC;">all</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;</pre>
<p>When testing controllers your just trying to stub out a value for @exercise_logs not simulating an actual call to your model.  So we'll use the stub_chain method to stub out our named_scopes like this.  </p>
<pre class="ruby">&nbsp;
    it <span style="color:#996600;">&quot;assigns all exercise_logs as @exercise_logs&quot;</span> <span style="color:#9966CC; font-weight:bold;">do</span>
      ExerciseLog.<span style="color:#9900CC;">stub_chain</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:this_user</span>,:past<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">and_return</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#91;</span>mock<span style="color:#006600; font-weight:bold;">&#40;</span>ExerciseLog<span style="color:#006600; font-weight:bold;">&#41;</span>,mock<span style="color:#006600; font-weight:bold;">&#40;</span>ExerciseLog<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
      get <span style="color:#ff3333; font-weight:bold;">:index</span>
      response.<span style="color:#9900CC;">should</span> be_success
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;</pre>
<p>Resources:<br />
<a href="http://stackoverflow.com/questions/1638814/stubbing-named-scope-in-an-rspec-controller/2930723#2930723">http://stackoverflow.com/questions/1638814/stubbing-named-scope-in-an-rspec-controller/2930723#2930723</a></p>
<p><a href="http://apidock.com/rspec/Spec/Mocks/Methods/stub_chain">http://apidock.com/rspec/Spec/Mocks/Methods/stub_chain</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/ruby5-3-rspec-stubbing-named_scope-in-a-controller/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby5 #2 &#8211; Rails Securing Passwords</title>
		<link>http://www.jonathanspooner.com/web-development/ruby5-2-rails-securing-passwords/</link>
		<comments>http://www.jonathanspooner.com/web-development/ruby5-2-rails-securing-passwords/#comments</comments>
		<pubDate>Fri, 28 May 2010 16:19:27 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Ruby 5]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/?p=650</guid>
		<description><![CDATA[It's important to filter out any sensitive data such as passwords from your log files. You can easily filter out data across your while application by calling filter_paramter_logging from your ApplicationController. In the example below I'm passing :password and :password_confirmation to remove their values from being placed in the logs. ActionController::Base &#160; class ApplicationController &#60; [...]]]></description>
			<content:encoded><![CDATA[<p>It's important to filter out any sensitive data such as passwords from your log files.  You can easily filter out data across your while application by calling <code>filter_paramter_logging</code> from your ApplicationController.  In the example below I'm passing <code>:password</code> and <code>:password_confirmation</code> to remove their values from being placed in the logs.</p>
<p><a href="http://rails.rubyonrails.org/classes/ActionController/Base.html#M000453">ActionController::Base</a></p>
<pre class="ruby">&nbsp;
<span style="color:#9966CC; font-weight:bold;">class</span> ApplicationController &lt; <span style="color:#6666ff; font-weight:bold;">ActionController::Base</span>
  filter_parameter_logging <span style="color:#ff3333; font-weight:bold;">:password</span>, <span style="color:#ff3333; font-weight:bold;">:password_confirmation</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;</pre>
<p>You will now see "FILTERED" in place of sensitive data.</p>
<pre class="ruby">&nbsp;
  Parameters: <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#996600;">&quot;x&quot;</span>=&gt;<span style="color:#996600;">&quot;37&quot;</span>, <span style="color:#996600;">&quot;y&quot;</span>=&gt;<span style="color:#996600;">&quot;14&quot;</span>, <span style="color:#996600;">&quot;action&quot;</span>=&gt;<span style="color:#996600;">&quot;login&quot;</span>, <span style="color:#996600;">&quot;authenticity_token&quot;</span>=&gt;<span style="color:#996600;">&quot;JRFNcG9chNIpcsHoJzcQRRy1D6lIenjl7cWmvp3UpaI=&quot;</span>, <span style="color:#996600;">&quot;controller&quot;</span>=&gt;<span style="color:#996600;">&quot;videos&quot;</span>, <span style="color:#996600;">&quot;user_id&quot;</span>=&gt;<span style="color:#996600;">&quot;7-Jonathan-SpoonerJune&quot;</span>, <span style="color:#996600;">&quot;video&quot;</span>=&gt;<span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#996600;">&quot;password&quot;</span>=&gt;<span style="color:#996600;">&quot;[FILTERED]&quot;</span>, <span style="color:#996600;">&quot;email&quot;</span>=&gt;<span style="color:#996600;">&quot;june@gmail.com&quot;</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#125;</span>
&nbsp;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/ruby5-2-rails-securing-passwords/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby5 #1 &#8211; How does a Ruby block work?</title>
		<link>http://www.jonathanspooner.com/web-development/ruby-5/how-does-a-ruby-block-work/</link>
		<comments>http://www.jonathanspooner.com/web-development/ruby-5/how-does-a-ruby-block-work/#comments</comments>
		<pubDate>Fri, 21 May 2010 17:30:54 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Ruby 5]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/?p=634</guid>
		<description><![CDATA[Ruby implements Blocks, Procs and lambdas which are referred to as closures in the computer science community. If you beginning to learn Ruby you will quickly run into code that looks like this. &#160; a = &#91;&#34;dog&#34;, &#34;cat&#34;, &#34;bird&#34;&#93; a.alter_each! do &#124;n, i&#124; &#34;#{i}_#{n}&#34; end &#160; So whats going on here? We start off with [...]]]></description>
			<content:encoded><![CDATA[<p>Ruby implements Blocks, Procs and lambdas which are referred to as closures in the computer science community.  </p>
<p>If you beginning to learn Ruby you will quickly run into code that looks like this. </p>
<pre class="ruby">&nbsp;
a = <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;dog&quot;</span>, <span style="color:#996600;">&quot;cat&quot;</span>, <span style="color:#996600;">&quot;bird&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span>
a.<span style="color:#9900CC;">alter_each</span>! <span style="color:#9966CC; font-weight:bold;">do</span> |n, i|
  <span style="color:#996600;">&quot;#{i}_#{n}&quot;</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;</pre>
<p> So whats going on here?<br />
We start off with an array of animal names and call the <code>alter_each!</code> method passing a block.  In this block of code we can specify how we want to alter each item.  Our example will prefix each animal name with it's position in the array.  As the alter_each! method iterates through each item it will execute our block passing the value and index.  Our block captures these params, prefixes the index to the name and returns the result.  </p>
<p>Now lets look at the alter_each! method.<br />
Notice the method doesn't specify any params, that's because a block is automatically assigned to yield keyword.  yield is called like a function passing in the value and index of each item in the array and overriding the original value.</p>
<pre class="ruby">&nbsp;
<span style="color:#9966CC; font-weight:bold;">class</span> <span style="color:#CC0066; font-weight:bold;">Array</span>
  <span style="color:#9966CC; font-weight:bold;">def</span> alter_each!
    <span style="color:#0000FF; font-weight:bold;">self</span>.<span style="color:#9900CC;">each_with_index</span> <span style="color:#9966CC; font-weight:bold;">do</span> |n, i|
      <span style="color:#0000FF; font-weight:bold;">self</span><span style="color:#006600; font-weight:bold;">&#91;</span>i<span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#9966CC; font-weight:bold;">yield</span><span style="color:#006600; font-weight:bold;">&#40;</span>n,i<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;</pre>
<p>What if you need to pass a param to this method?<br />
You can modify the method signature to accept params and finally catch the block with a param starting with an ampersand.  In the example below our block will be captured with the &block param which we will invoke the <code>call</code> method.  This is in place of using <code>yield</code> </p>
<pre class="ruby">&nbsp;
<span style="color:#9966CC; font-weight:bold;">class</span> <span style="color:#CC0066; font-weight:bold;">Array</span>
  <span style="color:#9966CC; font-weight:bold;">def</span> modify_each!<span style="color:#006600; font-weight:bold;">&#40;</span>add_one = <span style="color:#0000FF; font-weight:bold;">true</span>, &amp;block<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#0000FF; font-weight:bold;">self</span>.<span style="color:#9900CC;">each_with_index</span> <span style="color:#9966CC; font-weight:bold;">do</span> |n, i|
      j = <span style="color:#006600; font-weight:bold;">&#40;</span>add_one<span style="color:#006600; font-weight:bold;">&#41;</span> ? <span style="color:#006600; font-weight:bold;">&#40;</span>i + <span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#41;</span> : i
      <span style="color:#0000FF; font-weight:bold;">self</span><span style="color:#006600; font-weight:bold;">&#91;</span>i<span style="color:#006600; font-weight:bold;">&#93;</span> = block.<span style="color:#9900CC;">call</span><span style="color:#006600; font-weight:bold;">&#40;</span>n,j<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;</pre>
<p>Here is a full example that will prefix the index with the <code>yield</code> method and append the index with the <code>call</code> method.</p>
<pre class="ruby">&nbsp;
<span style="color:#9966CC; font-weight:bold;">class</span> <span style="color:#CC0066; font-weight:bold;">Array</span>
  <span style="color:#9966CC; font-weight:bold;">def</span> alter_each!
    <span style="color:#0000FF; font-weight:bold;">self</span>.<span style="color:#9900CC;">each_with_index</span> <span style="color:#9966CC; font-weight:bold;">do</span> |n, i|
      <span style="color:#0000FF; font-weight:bold;">self</span><span style="color:#006600; font-weight:bold;">&#91;</span>i<span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#9966CC; font-weight:bold;">yield</span><span style="color:#006600; font-weight:bold;">&#40;</span>n,i<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#9966CC; font-weight:bold;">def</span> modify_each!<span style="color:#006600; font-weight:bold;">&#40;</span>add_one = <span style="color:#0000FF; font-weight:bold;">true</span>, &amp;block<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#0000FF; font-weight:bold;">self</span>.<span style="color:#9900CC;">each_with_index</span> <span style="color:#9966CC; font-weight:bold;">do</span> |n, i|
      j = <span style="color:#006600; font-weight:bold;">&#40;</span>add_one<span style="color:#006600; font-weight:bold;">&#41;</span> ? <span style="color:#006600; font-weight:bold;">&#40;</span>i + <span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#41;</span> : i
      <span style="color:#0000FF; font-weight:bold;">self</span><span style="color:#006600; font-weight:bold;">&#91;</span>i<span style="color:#006600; font-weight:bold;">&#93;</span> = block.<span style="color:#9900CC;">call</span><span style="color:#006600; font-weight:bold;">&#40;</span>n,j<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
a = <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;dog&quot;</span>, <span style="color:#996600;">&quot;cat&quot;</span>, <span style="color:#996600;">&quot;cow&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span>
&nbsp;
a.<span style="color:#9900CC;">alter_each</span>! <span style="color:#9966CC; font-weight:bold;">do</span> |n, i|
  <span style="color:#996600;">&quot;#{i}_#{n}&quot;</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
a.<span style="color:#9900CC;">modify_each</span>! <span style="color:#0000FF; font-weight:bold;">false</span> <span style="color:#9966CC; font-weight:bold;">do</span> |n,i|
  <span style="color:#996600;">&quot;#{n}_#{i}&quot;</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> a
&nbsp;</pre>
<p>For blocks in the wild check out the ActiveRecord save method.</p>
<pre class="ruby">&nbsp;
<span style="color:#9966CC; font-weight:bold;">def</span> save<span style="color:#006600; font-weight:bold;">&#40;</span>perform_validation = <span style="color:#0000FF; font-weight:bold;">true</span>, &amp;block<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#0000FF; font-weight:bold;">return</span> <span style="color:#0000FF; font-weight:bold;">false</span> <span style="color:#9966CC; font-weight:bold;">if</span> perform_validation &amp;&amp; block_given? &amp;&amp; authenticate_with_sorenson? &amp;&amp; !authenticate_with_sorenson
    result = <span style="color:#9966CC; font-weight:bold;">super</span>
    <span style="color:#9966CC; font-weight:bold;">yield</span><span style="color:#006600; font-weight:bold;">&#40;</span>result<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">if</span> block_given?
    result
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;</pre>
<p>References:<br />
<a href="http://www.robertsosinski.com/2008/12/21/understanding-ruby-blocks-procs-and-lambdas/">Understanding Ruby Blocks, Procs and lambdas</a><br />
 <a href="http://eli.thegreenplace.net/2006/04/18/understanding-ruby-blocks-procs-and-methods/"></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/ruby-5/how-does-a-ruby-block-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deploying a Rails app to Amazon EC2 with Capistrano</title>
		<link>http://www.jonathanspooner.com/web-development/deploying-a-rails-app-to-amazon-ec2-with-capistrano/</link>
		<comments>http://www.jonathanspooner.com/web-development/deploying-a-rails-app-to-amazon-ec2-with-capistrano/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 18:30:38 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[ec2]]></category>
		<category><![CDATA[ec2onrails]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/?p=557</guid>
		<description><![CDATA[@esilverberg originally posted this article that I've been referring to for the past year and now wanted to contribute some updates of my own. Get the code Arr! There are some problems with checking out code from github with SVN. I'll fix this soon but if your reading today modify deploy.rb to deploy from git. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://twitter.com/esilverberg">@esilverberg</a> originally posted <a href="http://www-cs-students.stanford.edu/~silver/ec2.html">this article</a> that I've been referring to for the past year and now wanted to contribute some updates of my own.</p>
<h2>Get the code</h2>
<p>Arr!  There are some problems with checking out code from github with SVN.  I'll fix this soon but if your reading today modify deploy.rb to deploy from git.</p>
<p>We're going to deploy my <a href="http://github.com/jspooner/authlogic_cucumber_rspec_example">stub site</a> from github and we'll check it out with SubVersion</p>
<pre class="bash">&nbsp;
svn checkout  http://svn.github.com/jspooner/authlogic_cucumber_rspec_example.git basic
<span style="color: #7a0874; font-weight: bold;">cd</span> basic
&nbsp;</pre>
<p>You probably want to get the project running locally.  Hopefully you have the mysql driver installed or you can edit the database.yml file to use sqlite.</p>
<pre class="bash">&nbsp;
rake db:create
rake db:migrate
rake db:seed
script/server
&nbsp;</pre>
<h2>EC2 setup</h2>
<ol>
<li>Read the <a href="http://docs.amazonwebservices.com/AmazonEC2/gsg/2006-06-26/">getting started guide here</a> at amazon.</li>
<li>Install the developer tools.  I have them located at
<pre>ec2-ami-tools-1.3-45758</pre>
</li>
<li>Make sure you have downloaded the cert- and pk- .pem files. I have them in ~/.ec2/</li>
</ol>
<h3>Setup environment variables</h3>
<p>Probably want to put these in your .bashrc or .bash_profile with the 'export' command in front.</p>
<pre class="bash">&nbsp;
     <span style="color: #007800;">EC2_CERT=</span>/home/USER/.ec2/cert-EZC7LAIYSKPC546UKT7E3PI.pem
     <span style="color: #007800;">EC2_HOME=</span>/home/USER/ec2-api-tools<span style="color: #000000;">-1.3</span><span style="color: #000000;">-30349</span>
     <span style="color: #007800;">EC2_PRIVATE_KEY=</span>/home/USER/.ec2/pk-EZC7LAIYSKPC546UKT7EUEOOI.pem
     <span style="color: #007800;">PATH=</span><span style="color: #007800;">$PATH</span>:<span style="color: #007800;">$EC2_HOME</span>/bin
&nbsp;</pre>
<h3>Verify dev tools</h3>
<p>Run this to make sure it works:
<pre class="bash">ec2-describe-images ami-5394733a</pre>
<h3>Start up an instance</h3>
<ol>
<li>Click "Launch Instance" https://console.aws.amazon.com/ec2/home<br />
<a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/04/Screen-shot-2010-04-29-at-10.54.01-AM.png"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/04/Screen-shot-2010-04-29-at-10.54.01-AM.png" alt="" title="Screen shot 2010-04-29 at 10.54.01 AM" width="420" height="164" class="alignnone size-full wp-image-582" /></a>
</li>
<li>Click "Community AMI's" and select one of the AMI's listed when you ran cap ec2onrails:ami_ids.  I'm using ami-5394733a
<p><a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/04/Screen-shot-2010-04-29-at-11.21.46-AM.png"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/04/Screen-shot-2010-04-29-at-11.21.46-AM-150x150.png" alt="" title="Screen shot 2010-04-29 at 11.21.46 AM" width="150" height="150" class="alignnone size-thumbnail wp-image-589" /></a></p>
</li>
<li>Select an instance size and continue.<br />
<a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/04/Screen-shot-2010-04-29-at-11.22.38-AM.png"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/04/Screen-shot-2010-04-29-at-11.22.38-AM-150x150.png" alt="" title="Screen shot 2010-04-29 at 11.22.38 AM" width="150" height="150" class="alignnone size-thumbnail wp-image-592" /></a>
</li>
<li>Advanced Instance Options.  Click Continue.<br />
<a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/04/Screen-shot-2010-04-29-at-11.25.30-AM.png"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/04/Screen-shot-2010-04-29-at-11.25.30-AM-150x150.png" alt="" title="Screen shot 2010-04-29 at 11.25.30 AM" width="150" height="150" class="alignnone size-thumbnail wp-image-593" /></a></li>
<li>Create a new Key Pair named testkey and click download.  Move this file to ~/.ssh/testkey.pem and chmod the key to 600.
<pre class="bash">&nbsp;
   <span style="color: #c20cb9; font-weight: bold;">mv</span> testkey.pem ~/.<span style="color: #c20cb9; font-weight: bold;">ssh</span>/testkey.pem
   <span style="color: #7a0874; font-weight: bold;">cd</span> ~/.<span style="color: #c20cb9; font-weight: bold;">ssh</span>/
   <span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #000000;">600</span> testkey.pem
   <span style="color: #c20cb9; font-weight: bold;">ls</span> -al
&nbsp;</pre>
<p>You should see the file permissions set to -rw-------<br />
This key is used to SSH into your instance and is used set on line 13 of deploy.rb.</p>
<pre class="ruby">ssh_options[:keys] = ["#{ENV['HOME']}/.ssh/testkey.pem"]</pre>
</li>
<li>Create a new Security Group and rules for HTTP HTTPS & SSH.<br />
<a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/04/Screen-shot-2010-04-29-at-11.31.20-AM.png"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/04/Screen-shot-2010-04-29-at-11.31.20-AM-150x150.png" alt="" title="Screen shot 2010-04-29 at 11.31.20 AM" width="150" height="150" class="alignnone size-thumbnail wp-image-594" /></a>
</li>
<li>Verify your settings and Launch the Instance<br />
<a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/04/Screen-shot-2010-04-29-at-11.32.19-AM.png"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/04/Screen-shot-2010-04-29-at-11.32.19-AM-150x150.png" alt="" title="Screen shot 2010-04-29 at 11.32.19 AM" width="150" height="150" class="alignnone size-thumbnail wp-image-595" /></a></li>
<li>After you instance has launched find the Public DNS that looks something like this ec2-xxx-xxx-xx-xxx.compute-1.amazonaws.com and add that to you deploy.rb file on lines 18-21</li>
</ol>
<h3> Update tools on the image </h3>
<p>ssh into the machine and run the following</p>
<pre class="bash">
ssh -i ~/.ssh/testkey.pem root@ec2-xxx-xxx-xx-xxx.compute-1.amazonaws.com
sudo apt-get update
sudo apt-get -y install build-essential
sudo apt-get -y install emacs22
sudo gem update --system
</pre>
<p>The <a href="http://www-cs-students.stanford.edu/~silver/ec2.html">original post</a> had you installing imagemagick with apt-get but that wan't pulling the latest version; which the rmagick gem requires.  So here we will pull down the latest version and install from source.</p>
<pre class="bash">&nbsp;
<span style="color: #c20cb9; font-weight: bold;">wget</span> <span style="color: #c20cb9; font-weight: bold;">ftp</span>://<span style="color: #c20cb9; font-weight: bold;">ftp</span>.imagemagick.org/pub/ImageMagick/ImageMagick.<span style="color: #c20cb9; font-weight: bold;">tar</span>.gz
<span style="color: #c20cb9; font-weight: bold;">tar</span> -zxvf ImageMagick.<span style="color: #c20cb9; font-weight: bold;">tar</span>.gz 
<span style="color: #7a0874; font-weight: bold;">cd</span> ImageMagick<span style="color: #000000;">-6.6</span><span style="color: #000000;">.1</span><span style="color: #000000;">-5</span>/
./configure
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span>
gem <span style="color: #c20cb9; font-weight: bold;">install</span> rmagick
ldconfig /usr/<span style="color: #7a0874; font-weight: bold;">local</span>/lib
&nbsp;</pre>
<h3>Set up capistrano and <a href="http://ec2onrails.rubyforge.org/">ec2onrails</a></h3>
<p><a href="http://www.capify.org/index.php/Capistrano">Capistrano</a> is a tool for automating tasks on one or more remote servers.  We are going to use it to push our site up to EC2 with the help of the <a href="http://ec2onrails.rubyforge.org/">ec2onrails</a> gem.</p>
<pre class="bash">
capify .
gem install ec2onrails
</pre>
<p>Open Capfile and require ec2onrails.</p>
<pre class="bash">require 'ec2onrails/recipes'</pre>
<p>Open deploy.rb and replace with this.</p>
<pre class="ruby">&nbsp;
<span style="color:#008000; font-style:italic;"># This is a sample Capistrano config file for EC2 on Rails.</span>
<span style="color:#008000; font-style:italic;"># It should be edited and customized.</span>
&nbsp;
set <span style="color:#ff3333; font-weight:bold;">:application</span>, <span style="color:#996600;">&quot;basic&quot;</span>
set <span style="color:#ff3333; font-weight:bold;">:user</span>, <span style="color:#996600;">&quot;root&quot;</span>
set <span style="color:#ff3333; font-weight:bold;">:use_sudo</span>, <span style="color:#0000FF; font-weight:bold;">true</span>
set <span style="color:#ff3333; font-weight:bold;">:repository</span>, <span style="color:#996600;">&quot;http://svn.github.com/jspooner/authlogic_cucumber_rspec_example.git &quot;</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># NOTE: for some reason Capistrano requires you to have both the public and</span>
<span style="color:#008000; font-style:italic;"># the private key in the same folder, the public key should have the </span>
<span style="color:#008000; font-style:italic;"># extension &quot;.pub&quot;.</span>
ssh_options<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:keys</span><span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;#{ENV['HOME']}/.ssh/testkey.pem&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Your EC2 instances. Use the ec2-xxx....amazonaws.com hostname, not</span>
<span style="color:#008000; font-style:italic;"># any other name (in case you have your own DNS alias) or it won't</span>
<span style="color:#008000; font-style:italic;"># be able to resolve to the internal IP address.</span>
role <span style="color:#ff3333; font-weight:bold;">:web</span>,      <span style="color:#996600;">&quot;ec2-xx-xx-xx-xx.compute-1.amazonaws.com&quot;</span>
role <span style="color:#ff3333; font-weight:bold;">:app</span>,      <span style="color:#996600;">&quot;ec2-xx-xx-xx-xx.compute-1.amazonaws.com&quot;</span>
role <span style="color:#ff3333; font-weight:bold;">:db</span>,       <span style="color:#996600;">&quot;ec2-xx-xx-xx-xx.compute-1.amazonaws.com&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:primary</span> =&gt; <span style="color:#0000FF; font-weight:bold;">true</span>
role <span style="color:#ff3333; font-weight:bold;">:memcache</span>, <span style="color:#996600;">&quot;ec2-xx-xx-xx-xx.compute-1.amazonaws.com&quot;</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Whatever you set here will be taken set as the default RAILS_ENV value</span>
<span style="color:#008000; font-style:italic;"># on the server. Your app and your hourly/daily/weekly/monthly scripts</span>
<span style="color:#008000; font-style:italic;"># will run with RAILS_ENV set to this value.</span>
set <span style="color:#ff3333; font-weight:bold;">:rails_env</span>, <span style="color:#996600;">&quot;production&quot;</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># EC2 on Rails config. </span>
<span style="color:#008000; font-style:italic;"># NOTE: Some of these should be omitted if not needed.</span>
set <span style="color:#ff3333; font-weight:bold;">:ec2onrails_config</span>, <span style="color:#006600; font-weight:bold;">&#123;</span>
  <span style="color:#008000; font-style:italic;"># S3 bucket and &quot;subdir&quot; used by the ec2onrails:db:restore task</span>
  <span style="color:#008000; font-style:italic;"># :restore_from_bucket =&gt; &quot;your-bucket&quot;,</span>
  <span style="color:#008000; font-style:italic;"># :restore_from_bucket_subdir =&gt; &quot;database&quot;,</span>
&nbsp;
  <span style="color:#008000; font-style:italic;"># S3 bucket and &quot;subdir&quot; used by the ec2onrails:db:archive task</span>
  <span style="color:#008000; font-style:italic;"># This does not affect the automatic backup of your MySQL db to S3, it's</span>
  <span style="color:#008000; font-style:italic;"># just for manually archiving a db snapshot to a different bucket if </span>
  <span style="color:#008000; font-style:italic;"># desired.</span>
  <span style="color:#008000; font-style:italic;"># :archive_to_bucket =&gt; &quot;your-other-bucket&quot;,</span>
  <span style="color:#008000; font-style:italic;"># :archive_to_bucket_subdir =&gt; &quot;db-archive/#{Time.new.strftime('%Y-%m-%d--%H-%M-%S')}&quot;,</span>
&nbsp;
  <span style="color:#008000; font-style:italic;"># Set a root password for MySQL. Run &quot;cap ec2onrails:db:set_root_password&quot;</span>
  <span style="color:#008000; font-style:italic;"># to enable this. This is optional, and after doing this the</span>
  <span style="color:#008000; font-style:italic;"># ec2onrails:db:drop task won't work, but be aware that MySQL accepts </span>
  <span style="color:#008000; font-style:italic;"># connections on the public network interface (you should block the MySQL</span>
  <span style="color:#008000; font-style:italic;"># port with the firewall anyway). </span>
  <span style="color:#008000; font-style:italic;"># If you don't care about setting the mysql root password then remove this.</span>
  <span style="color:#ff3333; font-weight:bold;">:mysql_root_password</span> =&gt; <span style="color:#996600;">&quot;blamblam12343&quot;</span>,
&nbsp;
  <span style="color:#008000; font-style:italic;"># Any extra Ubuntu packages to install if desired</span>
  <span style="color:#008000; font-style:italic;"># If you don't want to install extra packages then remove this.</span>
  <span style="color:#ff3333; font-weight:bold;">:packages</span> =&gt; <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;logwatch&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span>,
&nbsp;
  <span style="color:#008000; font-style:italic;"># Any extra RubyGems to install if desired: can be &quot;gemname&quot; or if a </span>
  <span style="color:#008000; font-style:italic;"># particular version is desired &quot;gemname -v 1.0.1&quot;</span>
  <span style="color:#008000; font-style:italic;"># If you don't want to install extra rubygems then remove this</span>
  <span style="color:#ff3333; font-weight:bold;">:rubygems</span> =&gt; <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;rails -v 2.3.5&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span>,
&nbsp;
  <span style="color:#008000; font-style:italic;"># Set the server timezone. run &quot;cap -e ec2onrails:server:set_timezone&quot; for </span>
  <span style="color:#008000; font-style:italic;"># details</span>
  <span style="color:#ff3333; font-weight:bold;">:timezone</span> =&gt; <span style="color:#996600;">&quot;Canada/Eastern&quot;</span>,
&nbsp;
  <span style="color:#008000; font-style:italic;"># Files to deploy to the server (they'll be owned by root). It's intended</span>
  <span style="color:#008000; font-style:italic;"># mainly for customized config files for new packages installed via the </span>
  <span style="color:#008000; font-style:italic;"># ec2onrails:server:install_packages task. Subdirectories and files inside</span>
  <span style="color:#008000; font-style:italic;"># here will be placed in the same structure relative to the root of the</span>
  <span style="color:#008000; font-style:italic;"># server's filesystem. </span>
  <span style="color:#008000; font-style:italic;"># If you don't need to deploy customized config files to the server then</span>
  <span style="color:#008000; font-style:italic;"># remove this.</span>
  <span style="color:#008000; font-style:italic;"># :server_config_files_root =&gt; &quot;../server_config&quot;,</span>
&nbsp;
  <span style="color:#008000; font-style:italic;"># If config files are deployed, some services might need to be restarted.</span>
  <span style="color:#008000; font-style:italic;"># If you don't need to deploy customized config files to the server then</span>
  <span style="color:#008000; font-style:italic;"># remove this.</span>
  <span style="color:#ff3333; font-weight:bold;">:services_to_restart</span> =&gt; %w<span style="color:#006600; font-weight:bold;">&#40;</span>apache2 postfix sysklogd<span style="color:#006600; font-weight:bold;">&#41;</span>,
&nbsp;
  <span style="color:#008000; font-style:italic;"># Set an email address to forward admin mail messages to. If you don't</span>
  <span style="color:#008000; font-style:italic;"># want to receive mail from the server (e.g. monit alert messages) then</span>
  <span style="color:#008000; font-style:italic;"># remove this.</span>
  <span style="color:#ff3333; font-weight:bold;">:admin_mail_forward_address</span> =&gt; <span style="color:#996600;">&quot;me@gmail.com&quot;</span>,
&nbsp;
  <span style="color:#008000; font-style:italic;"># Set this if you want SSL to be enabled on the web server. The SSL cert </span>
  <span style="color:#008000; font-style:italic;"># and key files need to exist on the server, The cert file should be in</span>
  <span style="color:#008000; font-style:italic;"># /etc/ssl/certs/default.pem and the key file should be in</span>
  <span style="color:#008000; font-style:italic;"># /etc/ssl/private/default.key (see :server_config_files_root).</span>
  <span style="color:#ff3333; font-weight:bold;">:enable_ssl</span> =&gt; <span style="color:#0000FF; font-weight:bold;">false</span>
<span style="color:#006600; font-weight:bold;">&#125;</span>
&nbsp;</pre>
<p>Be sure to customize those files and read the comments.</p>
<p>Now run cap -T and you should see all the <a href="http://ec2onrails.rubyforge.org/">ec2onrails</a> tasks like this.</p>
<p>Also, use the hostname “db_primary” in your database.yml file. After running “cap ec2onrails:server:set_roles” it will resolve to the instance defined in your Capistrano “db” role.</p>
<h3>Deploy the site</h3>
<pre class="bash">
cap ec2onrails:setup
cap ec2onrails:db:set_root_password
cap deploy:cold
</pre>
<p>That should be it!  Now goto http://ec2-xxx-xxx-xx-xxx.compute-1.amazonaws.com and your site should be running.</p>
<hr/>
<h2>Extended Set Up</h2>
<p>This was a very basic set up and you will want to customize your installation. </p>
<h3>Cron services</h3>
<p>EC2onrails lets you do hourly and daily cron tasks, but not more frequent<br />
than that. I installed craken and have this in my deploy.rb to compensate:</p>
<pre class="ruby">&nbsp;
namespace <span style="color:#ff3333; font-weight:bold;">:craken</span> <span style="color:#9966CC; font-weight:bold;">do</span>
	desc <span style="color:#996600;">&quot;Install raketab&quot;</span>
	task <span style="color:#ff3333; font-weight:bold;">:install</span>, <span style="color:#ff3333; font-weight:bold;">:roles</span> =&gt; <span style="color:#ff3333; font-weight:bold;">:cron</span> <span style="color:#9966CC; font-weight:bold;">do</span>
		set <span style="color:#ff3333; font-weight:bold;">:rails_env</span>, <span style="color:#996600;">&quot;production&quot;</span> <span style="color:#9966CC; font-weight:bold;">unless</span>
		exists?<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:rails_env</span><span style="color:#006600; font-weight:bold;">&#41;</span>
		set <span style="color:#ff3333; font-weight:bold;">:env_args</span>, <span style="color:#006600; font-weight:bold;">&#40;</span>exists?<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:env_args</span><span style="color:#006600; font-weight:bold;">&#41;</span> ? env_args :<span style="color:#996600;">&quot;app_name=#{application} deploy_path=#{current_path}&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
			run <span style="color:#996600;">&quot;cd #{current_path} &amp;&amp; rake #{env_args} RAILS_ENV=#{rails_env} craken:install&quot;</span>
			<span style="color:#9966CC; font-weight:bold;">end</span>
			task <span style="color:#ff3333; font-weight:bold;">:uninstall</span>, <span style="color:#ff3333; font-weight:bold;">:roles</span> =&gt; <span style="color:#ff3333; font-weight:bold;">:cron</span> <span style="color:#9966CC; font-weight:bold;">do</span>
				set <span style="color:#ff3333; font-weight:bold;">:rails_env</span>, <span style="color:#996600;">&quot;production&quot;</span> <span style="color:#9966CC; font-weight:bold;">unless</span> exists?<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:rails_env</span><span style="color:#006600; font-weight:bold;">&#41;</span>
				set <span style="color:#ff3333; font-weight:bold;">:env_args</span>, <span style="color:#006600; font-weight:bold;">&#40;</span>exists?<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:env_args</span><span style="color:#006600; font-weight:bold;">&#41;</span> ? env_args :<span style="color:#996600;">&quot;app_name=#{application} deploy_path=#{current_path}&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
				run <span style="color:#996600;">&quot;cd #{current_path} &amp;&amp; rake #{env_args} RAILS_ENV=#{rails_env} craken:uninstall; true&quot;</span>
	<span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
before <span style="color:#996600;">&quot;deploy:symlink&quot;</span>, <span style="color:#996600;">&quot;craken:uninstall&quot;</span>
after <span style="color:#996600;">&quot;deploy:symlink&quot;</span>, <span style="color:#996600;">&quot;craken:install&quot;</span>
&nbsp;</pre>
<p>You can see more about the <a href="http://capitate.rubyforge.org/recipes/deploy.html">capistrano events here</a>. The recipe was taken <a href="http://github.com/latimes/craken/blob/5aa07b47cca7eab925fca714a160eedc6164bc20/recipes/craken.rb">from here</a>.</p>
<h2>Gotchas</h2>
<ul>
<li>Don't forget to open up port 443 on Amazon's management console if<br />
  you need ssl support</li>
<li><a href="http://groups.google.com/group/ec2-on-rails-discuss/browse_thread/thread/79b60bf683b2365b">Follow these instructions</a> to configure your SSL certs</li>
<li>Setting up <a href="http://codeintensity.blogspot.com/2009/03/deploying-per-server-crontabs-with.html">cron is described here</a></li>
<li>If you include submodules you can't do the git shallow copy</li>
</ul>
<h2>Useful links</h2>
<ul>
<li><a href="http://ec2onrails.rubyforge.org/">EC2 on Rails</a></li>
<li><a href="http://github.com/guides/deploying-with-capistrano">Getting<br />
 it working with github</a> (has some useful stuff about capistrano)</li>
<li><a<br />
  href="http://kumaria.blogspot.com/2008/12/rails-deployment-capistrano-github.html">Random<br />
  guy talking about what he did</a></li>
<li><a href="https://console.aws.amazon.com/ec2/home">The amazon ec2<br />
  console</a></li>
<li><a<br />
  href="http://www.zabada.com/tutorials/deploying-a-rails-application-to-production-on-amazon-ec2.php">Another<br />
  guy deploys ec2 on rails</a></li>
<li><a href="http://thinkrefresh.com/posts/9-starling-workling-capistrano-tasks">Starling and workling capistrano tasks</a></li>
</ul>
<h2>Advanced - Setting up a db server</h2>
<ul>
<li>Setup a cool mysql server backed by EBS here: <a<br />
href="http://developer.amazonwebservices.com/connect/entry.jspa?categoryID=100&externalID=1663">http://developer.amazonwebservices.com/connect/entry.jspa?categoryID=100&externalID=1663</a></li>
<li>This server only has a root user, but capistrano needs an admin user<br />
that is capable of sudoing...d'oh! You have to do the<br />
following:</li>
</ul>
<pre class="bash">
adduser admin
</pre>
<p>Now, add your public keypair via these instructions here:<br />
<a href="http://blogs.techrepublic.com.com/opensource/?p=86">blogs.techrepublic.com.com</a></p>
<p>I think you have to manually copy the keypair; who knows where it is on<br />
the system??</p>
<p>Now, add the admin user to the /etc/sudoers file so it is what capistrano<br />
is expecting. </p>
<pre class="bash">
# The 'admin' user can run sudo without a password<br/>
admin   ALL=(ALL) NOPASSWD: ALL
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/deploying-a-rails-app-to-amazon-ec2-with-capistrano/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSMF Hello World in 17 lines of code</title>
		<link>http://www.jonathanspooner.com/web-development/flash/actionscript-3/osmf-hello-world-in-17-lines-of-code/</link>
		<comments>http://www.jonathanspooner.com/web-development/flash/actionscript-3/osmf-hello-world-in-17-lines-of-code/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 19:04:59 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[OSMF]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/?p=545</guid>
		<description><![CDATA[This is the most basic way to get a video playing through the Open Source Media Framwork. Add OSMF FC1 to your class path and the class below is your document root. &#160; package &#123; import flash.display.Sprite; import org.osmf.elements.VideoElement; import org.osmf.media.MediaPlayer; import org.osmf.media.URLResource; public class SMILSample extends Sprite &#123; public function SMILSample&#40;&#41; &#123; var mediaPlayer:MediaPlayer [...]]]></description>
			<content:encoded><![CDATA[<p>This is the most basic way to get a video playing through the Open Source Media Framwork.</p>
<p>Add <a href="http://blogs.adobe.com/osmf/2010/04/osmf_fc1_released.html">OSMF FC1</a> to your class path and the class below is your document root.</p>
<pre class="actionscript">&nbsp;
package <span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Sprite</span>;
	<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">osmf</span>.<span style="color: #006600;">elements</span>.<span style="color: #006600;">VideoElement</span>;
	<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">osmf</span>.<span style="color: #006600;">media</span>.<span style="color: #006600;">MediaPlayer</span>;
	<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">osmf</span>.<span style="color: #006600;">media</span>.<span style="color: #006600;">URLResource</span>;
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> SMILSample <span style="color: #0066CC;">extends</span> Sprite
	<span style="color: #66cc66;">&#123;</span>
		<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> SMILSample<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #000000; font-weight: bold;">var</span> mediaPlayer:MediaPlayer = <span style="color: #000000; font-weight: bold;">new</span> MediaPlayer<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #000000; font-weight: bold;">var</span> resource:URLResource 	= <span style="color: #000000; font-weight: bold;">new</span> URLResource<span style="color: #66cc66;">&#40;</span>FLV<span style="color: #66cc66;">&#41;</span>;
			mediaPlayer.<span style="color: #006600;">media</span> 			= <span style="color: #000000; font-weight: bold;">new</span> VideoElement<span style="color: #66cc66;">&#40;</span>resource<span style="color: #66cc66;">&#41;</span>;
			addChild<span style="color: #66cc66;">&#40;</span>mediaPlayer.<span style="color: #006600;">displayObject</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const FLV:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;http://mediapm.edgesuite.net/strobe/content/test/AFaerysTale_sylviaApostol_640_500_short.flv&quot;</span>; 
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/flash/actionscript-3/osmf-hello-world-in-17-lines-of-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://mediapm.edgesuite.net/strobe/content/test/AFaerysTale_sylviaApostol_640_500_short.flv" length="2660334" type="video/x-flv" />
		</item>
		<item>
		<title>Authlogic + BDD Rails example</title>
		<link>http://www.jonathanspooner.com/web-development/ruby-on-rails/authlogic-bdd-rails-example/</link>
		<comments>http://www.jonathanspooner.com/web-development/ruby-on-rails/authlogic-bdd-rails-example/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 17:50:45 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/?p=542</guid>
		<description><![CDATA[Example on github http://github.com/jspooner/authlogic_cucumber_rspec_example]]></description>
			<content:encoded><![CDATA[<p>Example on github <a href="http://github.com/jspooner/authlogic_cucumber_rspec_example">http://github.com/jspooner/authlogic_cucumber_rspec_example</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/ruby-on-rails/authlogic-bdd-rails-example/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Clash at Clairemont</title>
		<link>http://www.jonathanspooner.com/skateboarding/the-clash-at-claremont/</link>
		<comments>http://www.jonathanspooner.com/skateboarding/the-clash-at-claremont/#comments</comments>
		<pubDate>Sun, 28 Mar 2010 21:03:54 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Skateboarding]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/?p=482</guid>
		<description><![CDATA[The Clash at Clairemont 2010 was a great day of skateboarding and long time friends. It was especially rad to have Steve Caballero and Duane Peters there ripping the pool. Owen wins the invert contest with a 4+ second invert.]]></description>
			<content:encoded><![CDATA[<p>The Clash at Clairemont 2010 was a great day of skateboarding and long time friends.  It was especially rad to have Steve Caballero and Duane Peters there ripping the pool.  </p>
<p><img src="/blog/wp-content/uploads/2010/clash/IMG_0149.jpg" /><br />
<object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/yf2NlgGAhC4&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/yf2NlgGAhC4&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0121.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0122.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0123.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0124.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0125.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0126.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0127.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0128.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0130.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0131.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0132.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0133.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0134.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0135.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0136.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0137.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0138.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0139.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0141.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0142.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0143.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0144.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0145.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0147.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0150.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0152.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0154.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0155.jpg" /><br />
Owen wins the invert contest with a 4+ second invert.<br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0156.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0157.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0158.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0159.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0160.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0161.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0163.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0164.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0165.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0166.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0167.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0168.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0170.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0171.jpg" /><br />
<img src="/blog/wp-content/uploads/2010/clash/IMG_0172.jpg" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/skateboarding/the-clash-at-claremont/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Darren Navarette riding Neil Heddings Mini Ramp.</title>
		<link>http://www.jonathanspooner.com/video/darren-navarette-riding-neil-heddings-mini-ramp/</link>
		<comments>http://www.jonathanspooner.com/video/darren-navarette-riding-neil-heddings-mini-ramp/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 16:52:45 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Skateboarding]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/?p=480</guid>
		<description><![CDATA[Check out my old footy of Darren Navarette riding Neil Heddings Mini Ramp.]]></description>
			<content:encoded><![CDATA[<p>Check out my old footy of Darren Navarette riding Neil Heddings Mini Ramp.<br />
<a href="http://www.blog.shrelp.com/wp-content/uploads/2010/03/Picture-2.png"><img src="http://www.blog.shrelp.com/wp-content/uploads/2010/03/Picture-2-300x224.png" alt="" title="Picture 2" width="300" height="224" class="alignnone size-medium wp-image-1777" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/video/darren-navarette-riding-neil-heddings-mini-ramp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bucky Lasek skating the old Mission Valley Skatepark</title>
		<link>http://www.jonathanspooner.com/skateboarding/bucky-lasek-skating-the-old-mission-valley-skatepark/</link>
		<comments>http://www.jonathanspooner.com/skateboarding/bucky-lasek-skating-the-old-mission-valley-skatepark/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 15:45:46 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Skateboarding]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/?p=478</guid>
		<description><![CDATA[I posted some of my old footy of Bucky Lasek skating the old Mission Valley Skatepark. http://www.skateboard.tv/video/4501]]></description>
			<content:encoded><![CDATA[<p>I posted some of my old footy of Bucky Lasek skating the old Mission Valley Skatepark.<br />
<a href="http://www.skateboard.tv/video/4501">http://www.skateboard.tv/video/4501</a><br />
<a href="http://www.skateboard.tv/video/4501"><img src="http://www.blog.shrelp.com/wp-content/uploads/2010/03/Picture-1-300x226.png" alt="" title="Picture 1" width="300" height="226" class="alignnone size-medium wp-image-1773" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/skateboarding/bucky-lasek-skating-the-old-mission-valley-skatepark/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JQuery Image Zoom Plugin</title>
		<link>http://www.jonathanspooner.com/web-development/jquery-image-zoom-plugin/</link>
		<comments>http://www.jonathanspooner.com/web-development/jquery-image-zoom-plugin/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 21:40:02 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Shrelp Stock Photography]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/?p=476</guid>
		<description><![CDATA[I recently posted the code for my jquery image zoom plugin here.]]></description>
			<content:encoded><![CDATA[<p>I recently posted the code for my jquery image zoom plugin <a href="http://www.jonathanspooner.com/jquery-image-zoom-plugin/">here</a>.  </p>
<p><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/02/image_zoom_demo.jpg" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/jquery-image-zoom-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Secrete JavaScript Debugger in Safari</title>
		<link>http://www.jonathanspooner.com/web-development/secrete-javascript-debugger-in-safari/</link>
		<comments>http://www.jonathanspooner.com/web-development/secrete-javascript-debugger-in-safari/#comments</comments>
		<pubDate>Sat, 20 Feb 2010 01:37:40 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/?p=437</guid>
		<description><![CDATA[First in Safari go to the Develop menu and select "Start Debugging JavaScript" from the drop down. Next you'll want to add a call to debugger in your javaScript like this. &#160; function onSomeThing&#40;&#41; &#123; debugger; &#125; &#160; You will then be able to run your page and have the Safari JavaScript debugger add a [...]]]></description>
			<content:encoded><![CDATA[<p>First in Safari go to the Develop menu and select "Start Debugging JavaScript" from the drop down.<br />
Next you'll want to add a call to debugger in your javaScript like this. </p>
<pre class="javascript">&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> onSomeThing<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
  <span style="color: #003366; font-weight: bold;">debugger</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre>
<p>You will then be able to run your page and have the Safari JavaScript debugger add a break point where your debugger call is placed.<br />
<a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/02/picture-3.png"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/02/picture-3.png" alt="" title="Safari JavaScript Debugger" width="540" class="" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/secrete-javascript-debugger-in-safari/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Neil Heddings at the Clinton Keith Pool</title>
		<link>http://www.jonathanspooner.com/video/neil-heddings-at-the-clinton-keith-pool-2/</link>
		<comments>http://www.jonathanspooner.com/video/neil-heddings-at-the-clinton-keith-pool-2/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 05:18:02 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Skateboarding]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/?p=354</guid>
		<description><![CDATA[I probably shot this video of Neil Heddings in the Clinton Keith pool around 2002. We had a good run at this pool for several months. Watch Neil Heddings skateboarding in Sports&#160;&#160;&#124;&#160;&#160;View More Free Videos Online at Veoh.com Watch Neil Heddings in Sports&#160;&#160;&#124;&#160;&#160;View More Free Videos Online at Veoh.com]]></description>
			<content:encoded><![CDATA[<p>I probably shot this video of Neil Heddings in the Clinton Keith pool around 2002.  We had a good run at this pool for several months.</p>
<p><object width="410" height="341" id="veohFlashPlayer" name="veohFlashPlayer"><param name="movie" value="http://www.veoh.com/static/swf/webplayer/WebPlayer.swf?version=AFrontend.5.4.3.1012&permalinkId=v192663016pC6EHYF&player=videodetailsembedded&videoAutoPlay=0&id=1323387"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.veoh.com/static/swf/webplayer/WebPlayer.swf?version=AFrontend.5.4.3.1012&permalinkId=v192663016pC6EHYF&player=videodetailsembedded&videoAutoPlay=0&id=1323387" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="410" height="341" id="veohFlashPlayerEmbed" name="veohFlashPlayerEmbed"></embed></object><br /><font size="1">Watch <a href="http://www.veoh.com/browse/videos/category/sports/watch/v192663016pC6EHYF">Neil Heddings skateboarding</a> in <a href="http://www.veoh.com/browse/videos/category/sports">Sports</a>&nbsp;&nbsp;|&nbsp;&nbsp;View More <a href="http://www.veoh.com">Free Videos Online at Veoh.com</a></font></p>
<p><object width="410" height="341" id="veohFlashPlayer" name="veohFlashPlayer"><param name="movie" value="http://www.veoh.com/static/swf/webplayer/WebPlayer.swf?version=AFrontend.5.4.3.1012&permalinkId=v19266302EQF66wRH&player=videodetailsembedded&videoAutoPlay=0&id=1323387"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.veoh.com/static/swf/webplayer/WebPlayer.swf?version=AFrontend.5.4.3.1012&permalinkId=v19266302EQF66wRH&player=videodetailsembedded&videoAutoPlay=0&id=1323387" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="410" height="341" id="veohFlashPlayerEmbed" name="veohFlashPlayerEmbed"></embed></object><br /><font size="1">Watch <a href="http://www.veoh.com/browse/videos/category/sports/watch/v19266302EQF66wRH">Neil Heddings</a> in <a href="http://www.veoh.com/browse/videos/category/sports">Sports</a>&nbsp;&nbsp;|&nbsp;&nbsp;View More <a href="http://www.veoh.com">Free Videos Online at Veoh.com</a></font></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/video/neil-heddings-at-the-clinton-keith-pool-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSMF &#8211; Displaying an image before a video</title>
		<link>http://www.jonathanspooner.com/news/osmf-displaying-an-image-before-a-video/</link>
		<comments>http://www.jonathanspooner.com/news/osmf-displaying-an-image-before-a-video/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 04:10:34 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/?p=421</guid>
		<description><![CDATA[This post will show you how to use Open Source Media Framework to display an image for 2 seconds before displaying a video. To display an image for 2 seconds before your video starts you'll need to use a TemporalProxyElement to apply a duration to your ImageElement. &#160; var temporalProxyElement:TemporalProxyElement = new TemporalProxyElement&#40;2, new ImageElement&#40;new [...]]]></description>
			<content:encoded><![CDATA[<p>This post will show you how to use <a href="http://opensource.adobe.com/wiki/display/osmf/Open+Source+Media+Framework">Open Source Media Framework</a> to display an image for 2 seconds before displaying a video.</p>
<p>To display an image for 2 seconds before your video starts you'll need to use a TemporalProxyElement to apply a duration to your ImageElement.</p>
<pre class="actionscript">&nbsp;
<span style="color: #000000; font-weight: bold;">var</span> temporalProxyElement:TemporalProxyElement 
     = <span style="color: #000000; font-weight: bold;">new</span> TemporalProxyElement<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">2</span>, 
				               <span style="color: #000000; font-weight: bold;">new</span> ImageElement<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> ImageLoader<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>, 
					       <span style="color: #000000; font-weight: bold;">new</span> URLResource<span style="color: #66cc66;">&#40;</span>THUMB_URL<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
					      <span style="color: #66cc66;">&#41;</span>;
&nbsp;</pre>
<p>Full Code</p>
<pre class="java">&nbsp;
<span style="color: #000000; font-weight: bold;">package</span> <span style="color: #66cc66;">&#123;</span>
	<span style="color: #a1a100;">import flash.display.Sprite;</span>
&nbsp;
	<span style="color: #a1a100;">import org.osmf.composition.SerialElement;</span>
	<span style="color: #a1a100;">import org.osmf.containers.MediaContainer;</span>
	<span style="color: #a1a100;">import org.osmf.image.ImageElement;</span>
	<span style="color: #a1a100;">import org.osmf.image.ImageLoader;</span>
	<span style="color: #a1a100;">import org.osmf.layout.LayoutUtils;</span>
	<span style="color: #a1a100;">import org.osmf.media.DefaultMediaFactory;</span>
	<span style="color: #a1a100;">import org.osmf.media.MediaElement;</span>
	<span style="color: #a1a100;">import org.osmf.media.MediaFactory;</span>
	<span style="color: #a1a100;">import org.osmf.media.MediaPlayer;</span>
	<span style="color: #a1a100;">import org.osmf.media.URLResource;</span>
	<span style="color: #a1a100;">import org.osmf.proxies.TemporalProxyElement;</span>
	<span style="color: #a1a100;">import org.osmf.utils.URL;</span>
&nbsp;
	<span style="color: #66cc66;">&#91;</span>SWF<span style="color: #66cc66;">&#40;</span>width=<span style="color: #ff0000;">&quot;400&quot;</span>, height=<span style="color: #ff0000;">&quot;300&quot;</span>, frameRate=<span style="color: #ff0000;">&quot;25&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ShrelpBurst <span style="color: #000000; font-weight: bold;">extends</span> Sprite
	<span style="color: #66cc66;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">private</span> var mediaFactory:MediaFactory;
		<span style="color: #000000; font-weight: bold;">private</span> var mediaElement:MediaElement;
		<span style="color: #000000; font-weight: bold;">private</span> var mediaPlayer:MediaPlayer;
		<span style="color: #000000; font-weight: bold;">private</span> var mediaContainer:MediaContainer;
&nbsp;
		<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> var VIDEO_URL:<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AURL+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">URL</span></a> = <span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AURL+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">URL</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;http://www.marinelayerproductions.com/_uploads/news/portugal_killer_heat.flv&quot;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> var THUMB_URL:<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AURL+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">URL</span></a> = <span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AURL+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #aaaadd; font-weight: bold;">URL</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;http://www.marinelayerproductions.com/_uploads/news/large/midnight_blue_04_00000.jpg&quot;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
		<span style="color: #000000; font-weight: bold;">private</span> var _pause:Sprite;
		<span style="color: #000000; font-weight: bold;">private</span> var _play:Sprite;
&nbsp;
		<span style="color: #000000; font-weight: bold;">public</span> function ShrelpBurst<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
		<span style="color: #66cc66;">&#123;</span>
			mediaFactory = <span style="color: #000000; font-weight: bold;">new</span> DefaultMediaFactory<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			var serialElement:SerialElement = <span style="color: #000000; font-weight: bold;">new</span> SerialElement<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			var temporalProxyElement:TemporalProxyElement = <span style="color: #000000; font-weight: bold;">new</span> TemporalProxyElement<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">2</span>, 
																	<span style="color: #000000; font-weight: bold;">new</span> ImageElement<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> ImageLoader<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>, 
																	<span style="color: #000000; font-weight: bold;">new</span> URLResource<span style="color: #66cc66;">&#40;</span>THUMB_URL<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
																	<span style="color: #66cc66;">&#41;</span>;
			serialElement.<span style="color: #006600;">addChild</span><span style="color: #66cc66;">&#40;</span> temporalProxyElement <span style="color: #66cc66;">&#41;</span>;
			mediaElement 		 = mediaFactory.<span style="color: #006600;">createMediaElement</span><span style="color: #66cc66;">&#40;</span> <span style="color: #000000; font-weight: bold;">new</span> URLResource<span style="color: #66cc66;">&#40;</span>VIDEO_URL<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
			serialElement.<span style="color: #006600;">addChild</span><span style="color: #66cc66;">&#40;</span> mediaElement <span style="color: #66cc66;">&#41;</span>;
&nbsp;
			mediaPlayer 		 = <span style="color: #000000; font-weight: bold;">new</span> MediaPlayer<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			mediaPlayer.<span style="color: #006600;">autoPlay</span> = <span style="color: #000000; font-weight: bold;">true</span>;
			mediaPlayer.<span style="color: #006600;">media</span> 	 = serialElement;
			mediaContainer 		 = <span style="color: #000000; font-weight: bold;">new</span> MediaContainer<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			mediaContainer.<span style="color: #006600;">addMediaElement</span><span style="color: #66cc66;">&#40;</span> serialElement <span style="color: #66cc66;">&#41;</span>;
&nbsp;
			addChild<span style="color: #66cc66;">&#40;</span> mediaContainer <span style="color: #66cc66;">&#41;</span>;
&nbsp;
			LayoutUtils.<span style="color: #006600;">setAbsoluteLayout</span><span style="color: #66cc66;">&#40;</span>mediaElement.<span style="color: #006600;">metadata</span>, <span style="color: #cc66cc;">400</span>, <span style="color: #cc66cc;">300</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
&nbsp;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/news/osmf-displaying-an-image-before-a-video/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.marinelayerproductions.com/_uploads/news/portugal_killer_heat.flv" length="16372167" type="video/x-flv" />
		</item>
		<item>
		<title>Architecture of the Veoh Player</title>
		<link>http://www.jonathanspooner.com/web-development/architecture-of-the-veoh-player/</link>
		<comments>http://www.jonathanspooner.com/web-development/architecture-of-the-veoh-player/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 19:47:55 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Veoh Networks]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/?p=191</guid>
		<description><![CDATA[The player lives on veoh.com and as an embedable player on sites like facebook. It plays more than 3 million videos per day to a global audience. The player is also the primary vehicle for our Behavioral Ad Targeting. Development This player played a key role in monetizing Veoh's business model. With this in mind [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_393" class="wp-caption alignright" style="width: 310px"><a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/01/veohwebplayer-overlay_ad.jpg"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/01/veohwebplayer-overlay_ad-300x240.jpg" alt="Interactive Overlay Video Ad" title="veohwebplayer-overlay_ad" width="300" height="240" class="size-medium wp-image-393" /></a><p class="wp-caption-text">Interactive Overlay Video Ad</p></div>
<p>The player lives on<a href="http://veoh.com"> veoh.com</a> and as an embedable player on sites like <a href="http://apps.facebook.com/veohvideos/">facebook</a>.  It plays more than 3 million videos per day to a global audience.  The player is also the primary vehicle for our <a href="http://www.jonathanspooner.com/blog/news/veoh-to-bring-behavior-to-video-ads/">Behavioral Ad Targeting</a>.</p>
<h2>Development</h2>
<p><div id="attachment_389" class="wp-caption alignright" style="width: 310px"><a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/01/veohplayer-asdoc.gif"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/01/veohplayer-asdoc-300x223.gif" alt="Veoh Player Documentation" title="veohplayer-asdoc" width="300" height="223" class="size-medium wp-image-389" /></a><p class="wp-caption-text">Veoh Player Documentation</p></div><br />
This player played a key role in monetizing Veoh's business model.  With this in mind the player architecture must accommodate an intense product life cycle and reliability. </p>
<p>I was able to achieve a reliable, scaleable and, testable code with <a href="http://en.wikipedia.org/wiki/Test-driven_development">Test Driven Development</a> and common Design Patterns.  This worked out so well after months of adding/removing features and product directions the code base still has no cruft!</p>
<p>To improve performance during progressive seeking I implemented a <a href="http://en.wikipedia.org/wiki/Binary_search">Binary Search</a> to find the closest keyframe.  </p>
<p>Multiple Logging Systems such as Nielsen, Omniture, Quantcast, Visible Measures, TubeMogul and our own data center.</p>
<p><a href="http://puremvc.org/component/option,com_wrapper/Itemid,170/">Multicore PureMVC</a> my choice because it's alight weight framework that could control a Flex or a pure ActionScript project.</p>
<h2>Veoh Data SDK</h2>
<p>My first step in converting the Veoh player to OOP was to create an API for our REST service.<br />
Here is an example of how to fetch a video.</p>
<pre class="actionscript">&nbsp;
<span style="color: #000000; font-weight: bold;">var</span> service:VeohService = <span style="color: #000000; font-weight: bold;">new</span> VeohService<span style="color: #66cc66;">&#40;</span> VEOH_API_KEY <span style="color: #66cc66;">&#41;</span>;
service.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span> VeohResultEvent.<span style="color: #006600;">SEARCH_SEARCH</span>, handle_response<span style="color: #66cc66;">&#41;</span>;
service.<span style="color: #006600;">search</span>.<span style="color: #006600;">findByPermalink</span><span style="color: #66cc66;">&#40;</span> _videoPermalink <span style="color: #66cc66;">&#41;</span>;
&nbsp;</pre>
<h2>VeohPlayback Player</h2>
<p>I developed a VeohPlayback object with s similar interface to Adobe's FLVPlayback Component.<br />
Unlike the Adobe's Component ours will play videos from our CDN, the Veoh P2P network, YouTube or CBS.</p>
<h2>In Player Advertising</h2>
<p>In early 2007 we created one of the first in-stream ad systems.  We later partnered up with Freewheel to deliver our in-stream ads.  Since we one of Freewheels first clients I worked closely with their development team in NYC and China on their ActionScript SDK. </p>
<p>Event based ads was something I was pushing for before working with Veoh.  At Aviatech I was able to use event based ads to sell products.  This <a href="http://jonathanspooner.com/archive/david_leadbetter/">example</a> for <a href="http://jonathanspooner.com/archive/david_leadbetter/">Calloway Golf</a> is a great example.  My theory here was that many users would react to the video auto playing and immediately click pause.  When the user clicks the pause button we know they are looking at the player and in this demo we show the product.  After bringing this idea to Veoh it proved to have a higher click through rate than a typical overlay ad.</p>
<p>We have also integrated ads from Axel Springer, Scanscout and DoubleClick.</p>
<h2>Testing and Planning</h2>
<div id="attachment_390" class="wp-caption alignright" style="width: 310px"><a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/01/veohplayer-uml.gif"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/01/veohplayer-uml-300x67.gif" alt="UML" title="veohplayer-uml" width="300" height="67" class="size-medium wp-image-390" /></a><p class="wp-caption-text">UML</p></div>
<div id="attachment_391" class="wp-caption alignright" style="width: 310px"><a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/01/veohplayertestrunner.gif"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2010/01/veohplayertestrunner-300x115.gif" alt="ASUnit TestRunner" title="veohplayertestrunner" width="300" height="115" class="size-medium wp-image-391" /></a><p class="wp-caption-text">ASUnit TestRunner</p></div>
<p><strong>Planning:</strong> During he planning phase we implemented new features in out UML charts and discussed it's impact before writing any code.  </p>
<p><strong>Testing:</strong>  Since this player is responsible for Veoh's main revenue stream I saw the need implement Test Driven Development.  After I fully emerged my team with TDD the product life cycle became much smoother and more manageable.  We used AsUnit along with ProjectSprouts/Growl to auto run the test suite.  We also forked the ProjectSprouts to add some generators for AsUnit and PureMVC.  </p>
<p><strong>Continuous Integration:</strong> We have Hudson set up to test and build the player.  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/architecture-of-the-veoh-player/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Street Moffett Vs. Ramp Moffett (Final Round)</title>
		<link>http://www.jonathanspooner.com/video/street-moffett-vs-ramp-moffett-final-round/</link>
		<comments>http://www.jonathanspooner.com/video/street-moffett-vs-ramp-moffett-final-round/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 21:46:17 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Skateboarding]]></category>
		<category><![CDATA[Veoh Networks]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/?p=378</guid>
		<description><![CDATA[Watch Matt Moffett Skateboarding in Sports&#160;&#160;&#124;&#160;&#160;View More Free Videos Online at Veoh.com]]></description>
			<content:encoded><![CDATA[<p><object width="570" height="410" id="veohFlashPlayer" name="veohFlashPlayer"><param name="movie" value="http://www.veoh.com/veohplayer.swf?version=AFrontend.5.4.4.1015&permalinkId=v19266133myepT5wn&player=videodetailsembedded&videoAutoPlay=0&id=1323387"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.veoh.com/static/swf/webplayer/WebPlayer.swf?version=AFrontend.5.4.4.1015&permalinkId=v19266133myepT5wn&player=videodetailsembedded&videoAutoPlay=0&id=1323387" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="570" height="410" id="veohFlashPlayerEmbed" name="veohFlashPlayerEmbed"></embed></object></p>
<p><object width="570" height="410" id="veohFlashPlayer" name="veohFlashPlayer"><param name="movie" value="http://www.veoh.com/static/swf/webplayer/WebPlayer.swf?version=AFrontend.5.4.4.1015&permalinkId=v19266046yncWt55z&player=videodetailsembedded&videoAutoPlay=0&id=1323387"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.veoh.com/static/swf/webplayer/WebPlayer.swf?version=AFrontend.5.4.4.1015&permalinkId=v19266046yncWt55z&player=videodetailsembedded&videoAutoPlay=0&id=1323387" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="570" height="410" id="veohFlashPlayerEmbed" name="veohFlashPlayerEmbed"></embed></object><br /><font size="1">Watch <a href="http://www.veoh.com/browse/videos/category/sports/watch/v19266046yncWt55z">Matt Moffett Skateboarding </a> in <a href="http://www.veoh.com/browse/videos/category/sports">Sports</a>&nbsp;&nbsp;|&nbsp;&nbsp;View More <a href="http://www.veoh.com">Free Videos Online at Veoh.com</a></font></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/video/street-moffett-vs-ramp-moffett-final-round/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Street Moffett Vs. Ramp Moffett (Round Two)</title>
		<link>http://www.jonathanspooner.com/video/street-moffett-vs-ramp-moffett-round-two/</link>
		<comments>http://www.jonathanspooner.com/video/street-moffett-vs-ramp-moffett-round-two/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 21:26:06 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Skateboarding]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/?p=372</guid>
		<description><![CDATA[Matt Moffett is one of those all terrain skateboarders that can take you out in a game of skate. I decided the only fair competitor to Matt is himself. So lets how Street Moffett does against Ramp Moffett. Round One went to ramp Moffett. Lets see if street Moffett can make a come back for [...]]]></description>
			<content:encoded><![CDATA[<p>Matt Moffett is one of those all terrain skateboarders that can take you out in a game of skate.  I decided the only fair competitor to Matt is himself.   So lets how Street Moffett does against Ramp Moffett.<br />
<br/><br />
<a href="http://www.jonathanspooner.com/news/street-moffett-vs-ramp-moffett-round-one/">Round One</a> went to ramp Moffett.  Lets see if street Moffett can make a come back for round two.<br />
<br/><br />
Here is round one, <strong>vote in the comments below</strong> and pass the link on to a friend.</p>
<p>Street Moffett<br />
<object width="570" height="410" id="veohFlashPlayer" name="veohFlashPlayer"><param name="movie" value="http://www.veoh.com/static/swf/webplayer/WebPlayer.swf?version=AFrontend.5.4.3.1017&permalinkId=v19266177h2TcaWJ2&player=videodetailsembedded&videoAutoPlay=0&id=1323387"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.veoh.com/static/swf/webplayer/WebPlayer.swf?version=AFrontend.5.4.3.1017&permalinkId=v19266177h2TcaWJ2&player=videodetailsembedded&videoAutoPlay=0&id=1323387" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="570" height="410" id="veohFlashPlayerEmbed" name="veohFlashPlayerEmbed"></embed><img src="http://ll-images.veoh.com/image.out?imageId=media-v19266177h2TcaWJ21256448809.jpg" /><br />
</object><br /><br/><br/></p>
<p>Ramp Moffett<br />
<object width="570" height="410" id="veohFlashPlayer" name="veohFlashPlayer"><param name="movie" value="http://www.veoh.com/static/swf/webplayer/WebPlayer.swf?version=AFrontend.5.4.3.1017&permalinkId=v19266150jAAdCaXK&player=videodetailsembedded&videoAutoPlay=0&id=1323387"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.veoh.com/static/swf/webplayer/WebPlayer.swf?version=AFrontend.5.4.3.1017&permalinkId=v19266150jAAdCaXK&player=videodetailsembedded&videoAutoPlay=0&id=1323387" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="570" height="410" id="veohFlashPlayerEmbed" name="veohFlashPlayerEmbed"></embed></object><br /><font size="1">Watch <a href="http://www.veoh.com/browse/videos/category/sports/watch/v19266150jAAdCaXK">Matt Moffett Skateboarding </a> in <a href="http://www.veoh.com/browse/videos/category/sports">Sports</a>&nbsp;&nbsp;|&nbsp;&nbsp;View More <a href="http://www.veoh.com">Free Videos Online at Veoh.com</a></font></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/video/street-moffett-vs-ramp-moffett-round-two/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Street Moffett Vs. Ramp Moffett (Round One)</title>
		<link>http://www.jonathanspooner.com/news/street-moffett-vs-ramp-moffett-round-one/</link>
		<comments>http://www.jonathanspooner.com/news/street-moffett-vs-ramp-moffett-round-one/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 23:11:07 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Skateboarding]]></category>
		<category><![CDATA[Veoh Networks]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/?p=367</guid>
		<description><![CDATA[Matt Moffett is one of those all terrain skateboarders that can take you out in a game of skate. I decided the only fair competitor to Matt is himself. So lets how Street Moffett does against Ramp Moffett. Here is round one, vote in the comments below and pass the link on to a friend. [...]]]></description>
			<content:encoded><![CDATA[<p>Matt Moffett is one of those all terrain skateboarders that can take you out in a game of skate.  I decided the only fair competitor to Matt is himself.   So lets how Street Moffett does against Ramp Moffett.<br />
<br/><br />
Here is round one, <strong>vote in the comments below</strong> and pass the link on to a friend.</p>
<h3>On the left Ramp Moffett</h3>
<p><object width="570" height="410" id="veohFlashPlayer" name="veohFlashPlayer"><param name="movie" value="http://www.veoh.com/static/swf/webplayer/WebPlayer.swf?version=AFrontend.5.4.3.1015&permalinkId=v19265814J637Cfk2&player=videodetailsembedded&videoAutoPlay=0&id=1323387"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.veoh.com/static/swf/webplayer/WebPlayer.swf?version=AFrontend.5.4.3.1015&permalinkId=v19265814J637Cfk2&player=videodetailsembedded&videoAutoPlay=0&id=1323387" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="570" height="410" id="veohFlashPlayerEmbed" name="veohFlashPlayerEmbed"></embed></object></p>
<h3>On the right Street Moffett</h3>
<p><object width="570" height="341" id="veohFlashPlayer" name="veohFlashPlayer"><param name="movie" value="http://www.veoh.com/static/swf/webplayer/WebPlayer.swf?version=AFrontend.5.4.3.1015&permalinkId=v19266036EWqF65tM&player=videodetailsembedded&videoAutoPlay=0&id=1323387"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.veoh.com/static/swf/webplayer/WebPlayer.swf?version=AFrontend.5.4.3.1015&permalinkId=v19266036EWqF65tM&player=videodetailsembedded&videoAutoPlay=0&id=1323387" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="570" height="410" id="veohFlashPlayerEmbed" name="veohFlashPlayerEmbed"></embed></object><br />
<br/><br />
That was round one, <b> leave your vote in the comments</b> and pass the link on to a friend.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/news/street-moffett-vs-ramp-moffett-round-one/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rune Glifburg Video</title>
		<link>http://www.jonathanspooner.com/video/rune-glifburg-video/</link>
		<comments>http://www.jonathanspooner.com/video/rune-glifburg-video/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 23:37:51 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Skateboarding]]></category>
		<category><![CDATA[Veoh Networks]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/?p=363</guid>
		<description><![CDATA[No fault to Rune but this footage was never used. I guess I should've wiped my lens clean before shooting into the sun. Watch Rune Glifberg Skateboarding in Sports&#160;&#160;&#124;&#160;&#160;View More Free Videos Online at Veoh.com Watch Rune Glifberg Skateboarding 2 in Sports&#160;&#160;&#124;&#160;&#160;View More Free Videos Online at Veoh.com]]></description>
			<content:encoded><![CDATA[<p>No fault to Rune but this footage was never used.  I guess I should've wiped my lens clean before shooting into the sun.   </p>
<p><object width="570" height="418" id="veohFlashPlayer" name="veohFlashPlayer"><param name="movie" value="http://www.veoh.com/static/swf/webplayer/WebPlayer.swf?version=AFrontend.5.4.3.1014&permalinkId=v14201281yCYybjJq&player=videodetailsembedded&videoAutoPlay=0&id=1323387"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.veoh.com/static/swf/webplayer/WebPlayer.swf?version=AFrontend.5.4.3.1014&permalinkId=v14201281yCYybjJq&player=videodetailsembedded&videoAutoPlay=0&id=1323387" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="570" height="418" id="veohFlashPlayerEmbed" name="veohFlashPlayerEmbed"></embed></object><br /><font size="1">Watch <a href="http://www.veoh.com/browse/videos/category/sports/watch/v14201281yCYybjJq">Rune Glifberg Skateboarding</a> in <a href="http://www.veoh.com/browse/videos/category/sports">Sports</a>&nbsp;&nbsp;|&nbsp;&nbsp;View More <a href="http://www.veoh.com">Free Videos Online at Veoh.com</a></font></p>
<p><object width="570" height="418" id="veohFlashPlayer" name="veohFlashPlayer"><param name="movie" value="http://www.veoh.com/static/swf/webplayer/WebPlayer.swf?version=AFrontend.5.4.3.1014&permalinkId=v14201295ERtkWSek&player=videodetailsembedded&videoAutoPlay=0&id=1323387"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.veoh.com/static/swf/webplayer/WebPlayer.swf?version=AFrontend.5.4.3.1014&permalinkId=v14201295ERtkWSek&player=videodetailsembedded&videoAutoPlay=0&id=1323387" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="570" height="418" id="veohFlashPlayerEmbed" name="veohFlashPlayerEmbed"></embed></object><br /><font size="1">Watch <a href="http://www.veoh.com/browse/videos/category/sports/watch/v14201295ERtkWSek">Rune Glifberg Skateboarding 2</a> in <a href="http://www.veoh.com/browse/videos/category/sports">Sports</a>&nbsp;&nbsp;|&nbsp;&nbsp;View More <a href="http://www.veoh.com">Free Videos Online at Veoh.com</a></font></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/video/rune-glifburg-video/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Neil Heddings at the Clinton Keith Pool</title>
		<link>http://www.jonathanspooner.com/skateboarding/neil-heddings-at-the-clinton-keith-pool/</link>
		<comments>http://www.jonathanspooner.com/skateboarding/neil-heddings-at-the-clinton-keith-pool/#comments</comments>
		<pubDate>Sun, 25 Oct 2009 06:38:51 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Skateboarding]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/?p=355</guid>
		<description><![CDATA[I probably shot this video of Neil Heddings in the Clinton Keith pool around 2002. Since then this video was nothing but a bunch of ones and zeros taking up space on my LaCie hard drive. I though it was about time to share these bytes with Veoh and the rest of the world. Enjoy! [...]]]></description>
			<content:encoded><![CDATA[<p>I probably shot this video of Neil Heddings in the Clinton Keith pool around 2002.  Since then this video was nothing but a bunch of ones and zeros taking up space on my LaCie hard drive.  I though it was about time to share these bytes with Veoh and the rest of the world.  Enjoy!</p>
<p><br/><br />
<object width="570" height="418" id="veohFlashPlayer" name="veohFlashPlayer"><param name="movie" value="http://www.veoh.com/static/swf/webplayer/WebPlayer.swf?version=AFrontend.5.4.3.1012&permalinkId=v192663016pC6EHYF&player=videodetailsembedded&videoAutoPlay=0&id=1323387"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.veoh.com/static/swf/webplayer/WebPlayer.swf?version=AFrontend.5.4.3.1012&permalinkId=v192663016pC6EHYF&player=videodetailsembedded&videoAutoPlay=0&id=1323387" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="570" height="418" id="veohFlashPlayerEmbed" name="veohFlashPlayerEmbed"></embed></object><br /><font size="1">Watch <a href="http://www.veoh.com/browse/videos/category/sports/watch/v192663016pC6EHYF">Neil Heddings skateboarding</a> in <a href="http://www.veoh.com/browse/videos/category/sports">Sports</a>&nbsp;&nbsp;|&nbsp;&nbsp;View More <a href="http://www.veoh.com">Free Videos Online at Veoh.com</a></font></p>
<p><object width="570" height="418" id="veohFlashPlayer" name="veohFlashPlayer"><param name="movie" value="http://www.veoh.com/static/swf/webplayer/WebPlayer.swf?version=AFrontend.5.4.3.1012&permalinkId=v19266302EQF66wRH&player=videodetailsembedded&videoAutoPlay=0&id=1323387"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.veoh.com/static/swf/webplayer/WebPlayer.swf?version=AFrontend.5.4.3.1012&permalinkId=v19266302EQF66wRH&player=videodetailsembedded&videoAutoPlay=0&id=1323387" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="570" height="418" id="veohFlashPlayerEmbed" name="veohFlashPlayerEmbed"></embed></object><br /><font size="1">Watch <a href="http://www.veoh.com/browse/videos/category/sports/watch/v19266302EQF66wRH">Neil Heddings</a> in <a href="http://www.veoh.com/browse/videos/category/sports">Sports</a>&nbsp;&nbsp;|&nbsp;&nbsp;View More <a href="http://www.veoh.com">Free Videos Online at Veoh.com</a></font></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/skateboarding/neil-heddings-at-the-clinton-keith-pool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to add a click tag to flash banner ads</title>
		<link>http://www.jonathanspooner.com/web-development/flash/how-to-add-a-click-tag-to-flash-banner-ads/</link>
		<comments>http://www.jonathanspooner.com/web-development/flash/how-to-add-a-click-tag-to-flash-banner-ads/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 17:23:57 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Veoh Networks]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/?p=331</guid>
		<description><![CDATA[DoubleClick and other ad servers often embed Flash movies with the click through url as a flashvar named "clickTag". Here is the code in ActionScript 2.0 and 3.0 to use the clickTag flashVar. ActionScript 2.0 &#160; on &#40;release&#41; &#123; var url:String = &#34;&#34;; url = _level0.clickTag &#124;&#124; _level0.ClickTag &#124;&#124; &#34;&#34;; getURL&#40;url, &#34;_blank&#34;&#41;; &#125; &#160; ActionScript [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://doubleclick.com">DoubleClick</a> and other ad servers often embed <a href="http://www.adobe.com/products/flash/">Flash</a> movies with the click through url as a <a href="http://www.google.com/search?crls=en-us&q=flashvars&ie=UTF-8&oe=UTF-8">flashvar</a> named "clickTag".  Here is the code in ActionScript 2.0 and 3.0 to use the clickTag flashVar. </p>
<p>ActionScript 2.0</p>
<pre class="actionscript">&nbsp;
<span style="color: #0066CC;">on</span> <span style="color: #66cc66;">&#40;</span>release<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">url</span>:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;&quot;</span>;
    <span style="color: #0066CC;">url</span> = _level0.<span style="color: #006600;">clickTag</span> || _level0.<span style="color: #006600;">ClickTag</span> || <span style="color: #ff0000;">&quot;&quot;</span>;
    <span style="color: #0066CC;">getURL</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">url</span>, <span style="color: #ff0000;">&quot;_blank&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre>
<p>ActionScript 3.0</p>
<pre class="actionscript">&nbsp;
<span style="color: #000000; font-weight: bold;">var</span> _clickTag:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;&quot;</span>;
<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">stage</span>.<span style="color: #006600;">root</span>.<span style="color: #006600;">loaderInfo</span>.<span style="color: #006600;">parameters</span>.<span style="color: #006600;">clickTag</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
     _clickTag = <span style="color: #0066CC;">stage</span>.<span style="color: #006600;">root</span>.<span style="color: #006600;">loaderInfo</span>.<span style="color: #006600;">parameters</span>.<span style="color: #006600;">clickTag</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> handle_btnClick<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:MouseEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
     ExternalInterface.<span style="color: #0066CC;">call</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;window.parent.open&quot;</span>, _clickTag<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span> 
&nbsp;
myButton.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">CLICK</span>, handle_btnClick<span style="color: #66cc66;">&#41;</span>;
&nbsp;</pre>
<p>Test your swf by adding the clickTag <a href="http://www.google.com/search?crls=en-us&q=flashvars&ie=UTF-8&oe=UTF-8">flashVar</a> to your embed code.</p>
<pre>&nbsp;
&lt;object classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0&quot; width=&quot;300&quot; height=&quot;250&quot; id=&quot;300x250_standard&quot; align=&quot;middle&quot;&gt;
&nbsp;
&lt;param name=&quot;allowScriptAccess&quot; value=&quot;sameDomain&quot; /&gt;
&lt;param name=&quot;allowFullScreen&quot; value=&quot;false&quot; /&gt;
&lt;param name=&quot;flashVars&quot; value=&quot;clickTag=http://shrelp.com&quot; /&gt;
&lt;param name=&quot;movie&quot; value=&quot;300x250_standard.swf&quot; /&gt;
&lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;
&lt;param name=&quot;bgcolor&quot; value=&quot;#000000&quot; /&gt;
&lt;embed src=&quot;300x250_standard.swf&quot; quality=&quot;high&quot; bgcolor=&quot;#000000&quot; width=&quot;300&quot; height=&quot;250&quot; name=&quot;300x250_standard&quot; align=&quot;middle&quot; allowScriptAccess=&quot;sameDomain&quot;
	 allowFullScreen=&quot;false&quot; type=&quot;application/x-shockwave-flash&quot; pluginspage=&quot;http://www.adobe.com/go/getflashplayer&quot; flashVars=&quot;clickTag=http://ss.jonathanspooner.com&quot; /&gt;
	&lt;/object&gt; 
&nbsp;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/flash/how-to-add-a-click-tag-to-flash-banner-ads/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nicaragua Surf Trip</title>
		<link>http://www.jonathanspooner.com/travel/surf/</link>
		<comments>http://www.jonathanspooner.com/travel/surf/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 03:10:23 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/?p=258</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>
<object width="580" height="400">
<param name="movie" value="http://jonathanspooner.com/swf/NicargaraSurf.swf" />
<param name="quality" value="high" />
<param name="wmode" value="transparent" />
<param name="menu" value="false" />
<param name="bgcolor" value="#FFFFFF" />
<param name="allowFullScreen" value="true"></param>
<embed type="application/x-shockwave-flash" width="580" height="400" src="http://jonathanspooner.com/swf/NicargaraSurf.swf" quality="high" bgcolor="#FFFFFF" wmode="transparent" menu="false" allowFullScreen="true" ></embed>
</object>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/travel/surf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building multiple swf&#8217;s with Project Sprouts</title>
		<link>http://www.jonathanspooner.com/web-development/building-multiple-swfs-with-project-sprouts/</link>
		<comments>http://www.jonathanspooner.com/web-development/building-multiple-swfs-with-project-sprouts/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 15:47:04 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Project Sprouts]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/?p=237</guid>
		<description><![CDATA[For each additional swf you'll create a new task in your rakefile like this. &#160; desc 'Menu App' task :menu =&#62; &#34;bin/MenuApp.swf&#34; mxmlc 'bin/MenuApp.swf' do &#124;t&#124; t.input = &#34;src/MenuApp.as&#34; t.debug = false t.optimize = true t.default_size = '540 436' t.default_background_color = &#34;0x000000&#34; t.library_path &#60;&#60; &#34;lib/corelib.swc&#34; t.source_path &#60;&#60; &#34;config/environments/production&#34; t.define = &#34;CONFIG::production,false t.title = &#34;'My Project'&#34; [...]]]></description>
			<content:encoded><![CDATA[<p>For each additional swf you'll create a new <a href="http://projectsprouts.org/rdoc/classes/Sprout/MXMLCTask.html">task</a> in your rakefile like this.</p>
<pre class="ruby">&nbsp;
desc <span style="color:#996600;">'Menu App'</span>
task <span style="color:#ff3333; font-weight:bold;">:menu</span> =&gt; <span style="color:#996600;">&quot;bin/MenuApp.swf&quot;</span>
mxmlc <span style="color:#996600;">'bin/MenuApp.swf'</span> <span style="color:#9966CC; font-weight:bold;">do</span> |t|
  t.<span style="color:#9900CC;">input</span>                    = <span style="color:#996600;">&quot;src/MenuApp.as&quot;</span>
  t.<span style="color:#9900CC;">debug</span>                    = <span style="color:#0000FF; font-weight:bold;">false</span>
  t.<span style="color:#9900CC;">optimize</span>                 = <span style="color:#0000FF; font-weight:bold;">true</span> 
  t.<span style="color:#9900CC;">default_size</span>             = <span style="color:#996600;">'540 436'</span>
  t.<span style="color:#9900CC;">default_background_color</span> = <span style="color:#996600;">&quot;0x000000&quot;</span>   
  t.<span style="color:#9900CC;">library_path</span>     &lt;&lt; <span style="color:#996600;">&quot;lib/corelib.swc&quot;</span>
  t.<span style="color:#9900CC;">source_path</span>      &lt;&lt; <span style="color:#996600;">&quot;config/environments/production&quot;</span>
  t.<span style="color:#9900CC;">define</span>           = <span style="color:#996600;">&quot;CONFIG::production,false
  t.title            = &quot;</span><span style="color:#996600;">'My Project'</span><span style="color:#996600;">&quot;
  t.description      = 'My Menu App'
  t.link_report      = 'menu_report.xml'
end  
</span></pre>
<p>After your task has been added it should now be listed when you run rake -T </p>
<pre class="bash">&nbsp;
rake -T
&gt; rake menu                     <span style="color: #808080; font-style: italic;"># Menu App</span>
&nbsp;</pre>
<p>Now run the task by it's name.</p>
<pre class="bash">&nbsp;
rake menu
&nbsp;</pre>
<p>You should see the mxmlc command execute.  Note that your new swf will not be opened up like the  rake debug task. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/building-multiple-swfs-with-project-sprouts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automated build numbers for Flash Applications with Sprouts</title>
		<link>http://www.jonathanspooner.com/web-development/automate-build-numbers-for-flash-applications/</link>
		<comments>http://www.jonathanspooner.com/web-development/automate-build-numbers-for-flash-applications/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 15:40:54 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Project Sprouts]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/?p=200</guid>
		<description><![CDATA[This article will demonstrate how to use compile time variables to set a build number and environment type. I will be using Project Sprouts to compile a swf with the mxmlc compiler. We'll start by creating a new variable in our rakefile like this. Since this number will always show up when you run rakeI [...]]]></description>
			<content:encoded><![CDATA[<p>This article will demonstrate how to use compile time variables to set a build number and environment type.  I will be using <a href="http://www.projectsprouts.org/">Project Sprouts</a> to compile a swf with the mxmlc compiler.</p>
<p>We'll start by creating a new variable in our rakefile like this. Since this number will always show up when you run rakeI prefixed it with dev so my local build will never get confused others.</p>
<pre class="ruby">&nbsp;
build_number = <span style="color:#996600;">'&quot;<span style="color:#000099;">\'</span>dev.1.1.1.1001<span style="color:#000099;">\'</span>&quot;'</span>  
&nbsp;</pre>
<blockquote><p>Quark #1.  It took me a few tries to get the quotes right.  Since this var is passed through a command shell then into the mxmlc the triple quotes are necessary.  If you don't you will be likely to see some strange results and your swf just not compiling at all.  If you use the string above and just replace dev.1.1.1.1001 you should be in good shape.  </p></blockquote>
<p><br/></p>
<p>The next step it to add our version number to either the <a href="http://www.projectsprouts.org/rdoc/index.html">project model</a> or a <a href="http://www.projectsprouts.org/rdoc/index.html">task</a> via the <a href="http://www.projectsprouts.org/rdoc/classes/Sprout/MXMLCTask.html#M000182">define</a> method.  I decided to add the define method to the task since I would need to change the production variable for the deploy task.  </p>
<pre class="ruby">&nbsp;
desc <span style="color:#996600;">'Compile and run the application for debugging'</span>
debug <span style="color:#ff3333; font-weight:bold;">:debug</span> <span style="color:#9966CC; font-weight:bold;">do</span> |d|
  d.<span style="color:#9900CC;">define</span> = <span style="color:#996600;">&quot;CONFIG::production,false -define=CONFIG::version,&quot;</span> + build_number
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
desc <span style="color:#996600;">'Compile and run the test harness'</span>
unit <span style="color:#ff3333; font-weight:bold;">:test</span> <span style="color:#9966CC; font-weight:bold;">do</span> |d|
  d.<span style="color:#9900CC;">define</span> = <span style="color:#996600;">&quot;CONFIG::production,false -define=CONFIG::version,&quot;</span> + build_number
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
desc <span style="color:#996600;">'Compile for deployment'</span>
deploy <span style="color:#ff3333; font-weight:bold;">:deploy</span>  <span style="color:#9966CC; font-weight:bold;">do</span> |p|
  <span style="color:#CC0066; font-weight:bold;">p</span>.<span style="color:#9900CC;">define</span> = <span style="color:#996600;">&quot;CONFIG::production,true -define=CONFIG::version,&quot;</span> + build_number
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;</pre>
<p>Did you notice how I'm passing multiple variables in the same line?  This is because the define method can't be called more then one time.  It doesn't look like this is by design and might be a little bug in the task.  Getting around this is easy enough.  You just need to append "-define=" for all other variables. </p>
<p>This next snippet is the ActionScript 3.0 code demonstrates how to access your variable. </p>
<pre class="actionscript">&nbsp;
package <span style="color: #66cc66;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">class</span> Constants <span style="color: #66cc66;">&#123;</span>
    <span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const <span style="color: #0066CC;">VERSION</span>:<span style="color: #0066CC;">String</span>        = <span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#40;</span>CONFIG::<span style="color: #0066CC;">version</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const IS_PRODUCTION:<span style="color: #0066CC;">Boolean</span> = CONFIG::production;
  <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre>
<p>Now that you have these lines of code in your project the next time you try to run AsDoc everything is going to melt down.  AsDoc is very finicky and doesn't like the CONFIG variable.  I was able to get around this by using a <a href="http://www.projectsprouts.org/rdoc.5/classes/Sprout/ToolTask.html#M000145">c preprocessor </a> to remove these lines before AsDoc executes.</p>
<p>Finally you'll want to have your <a href="http://en.wikipedia.org/wiki/Continuous_Integration">continuous integration system</a> insert the correct version number.  For example I have <a href="https://hudson.dev.java.net/">Hudson</a> use sed to insert the correct version number.</p>
<pre class="bash">&nbsp;
<span style="color: #c20cb9; font-weight: bold;">sed</span> -i <span style="color: #ff0000;">'s/dev.1.1.1.1001/{RELEASE_NUMBER}/'</span> rakefile.rb
&nbsp;</pre>
<p>And now you never have to manually update version numbers again!</p>
<p>If your using Flex to profile your application you will have to add these additional compiler arguments to the project properties.<br />
<a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2009/04/picture-4.png"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2009/04/picture-4-300x197.png" alt="" title="Flex Properties" width="300" height="197" class="alignleft size-medium wp-image-240" /></a></p>
<div class="clear"></div>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/automate-build-numbers-for-flash-applications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YouTube &amp; Twitter &#8211; Grease Monkey Script</title>
		<link>http://www.jonathanspooner.com/web-development/javascript/youtube-twitter-grease-monkey-script/</link>
		<comments>http://www.jonathanspooner.com/web-development/javascript/youtube-twitter-grease-monkey-script/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 03:50:31 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/?p=315</guid>
		<description><![CDATA[Greasemonkey is a popular Firefox Add-on that allows you to modify any web page after it has been loaded. This script is a mash up of YouTube and Twitter. Browse any page on youtube.com and Twitter results for that video are displayed. &#160; // ==UserScript== // @name VideoTweet // @namespace com.spooner.videoTweet // @description Twitter Video [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2009/07/picture-1-300x288.png" alt="" title="picture-1" width="300" height="288" class="alignright size-medium wp-image-321" /><a href="https://addons.mozilla.org/en-US/firefox/addon/748">Greasemonkey</a> is a popular Firefox Add-on that allows you to modify any web page after it has been loaded.  This script is a mash up of <a href="http://youtube.com">YouTube</a> and <a href="http://twitter.com">Twitter</a>.  Browse any page on <a href="http://youtube.com">youtube.com</a> and <a href="http://twitter.com">Twitter</a> results for that video are displayed.</p>
<div class="clear"></div>
<pre class="javascript">&nbsp;
<span style="color: #009900; font-style: italic;">// ==UserScript==</span>
<span style="color: #009900; font-style: italic;">// @name           VideoTweet</span>
<span style="color: #009900; font-style: italic;">// @namespace      com.spooner.videoTweet</span>
<span style="color: #009900; font-style: italic;">// @description    Twitter Video Comments</span>
<span style="color: #009900; font-style: italic;">// @include        http://youtube.com/watch?*</span>
<span style="color: #009900; font-style: italic;">// ==/UserScript==</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>      
	<span style="color: #003366; font-weight: bold;">function</span> create<span style="color: #66cc66;">&#40;</span>htmlStr<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
	    <span style="color: #003366; font-weight: bold;">var</span> frag = document.<span style="color: #006600;">createDocumentFragment</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	    <span style="color: #003366; font-weight: bold;">var</span> temp = document.<span style="color: #006600;">createElement</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'div'</span><span style="color: #66cc66;">&#41;</span>;
	    temp.<span style="color: #006600;">innerHTML</span> = htmlStr;
	    <span style="color: #000066; font-weight: bold;">while</span> <span style="color: #66cc66;">&#40;</span>temp.<span style="color: #006600;">firstChild</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
	        frag.<span style="color: #006600;">appendChild</span><span style="color: #66cc66;">&#40;</span>temp.<span style="color: #006600;">firstChild</span><span style="color: #66cc66;">&#41;</span>;
	    <span style="color: #66cc66;">&#125;</span>
	    <span style="color: #000066; font-weight: bold;">return</span> frag;
	<span style="color: #66cc66;">&#125;</span>
&nbsp;
    <span style="color: #003366; font-weight: bold;">var</span> primaryCollection;
	<span style="color: #000066; font-weight: bold;">try</span> <span style="color: #66cc66;">&#123;</span>
		  	primaryCollection = document.<span style="color: #006600;">getElementById</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;watch-vid-title&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">childNodes</span><span style="color: #66cc66;">&#91;</span><span style="color: #CC0000;">3</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">innerHTML</span>;
	<span style="color: #66cc66;">&#125;</span> <span style="color: #000066; font-weight: bold;">catch</span><span style="color: #66cc66;">&#40;</span>e<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><span style="color: #66cc66;">&#125;</span>
&nbsp;
	<span style="color: #000066; font-weight: bold;">if</span><span style="color: #66cc66;">&#40;</span>primaryCollection<span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#123;</span>
	    <span style="color: #003366; font-weight: bold;">var</span> fragment = create<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'&lt;div id=&quot;videoTweet&quot;&gt;&lt;iframe src=&quot;http://search.twitter.com/search?q='</span> + escape<span style="color: #66cc66;">&#40;</span>primaryCollection<span style="color: #66cc66;">&#41;</span> + <span style="color: #3366CC;">'&quot; width=&quot;100%&quot; height=&quot;200&quot; &gt;&lt;/iframe&gt;&lt;/div&gt;'</span><span style="color: #66cc66;">&#41;</span>
		document.<span style="color: #006600;">body</span>.<span style="color: #006600;">insertBefore</span><span style="color: #66cc66;">&#40;</span>fragment, document.<span style="color: #006600;">body</span>.<span style="color: #006600;">childNodes</span><span style="color: #66cc66;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;   		
	<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/javascript/youtube-twitter-grease-monkey-script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trip to Sao Paulo Brazil with the MegaRamp</title>
		<link>http://www.jonathanspooner.com/web-development/flash/sao-paulo-brazil-megaramp/</link>
		<comments>http://www.jonathanspooner.com/web-development/flash/sao-paulo-brazil-megaramp/#comments</comments>
		<pubDate>Thu, 12 Feb 2009 20:46:46 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[Veoh Networks]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/?p=187</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><object width="100%" height="341"><param name="movie" value="http://www.veoh.com/static/swf/webplayer/WebPlayer.swf?permalinkId=v17023301hGE7sm4G&player=videodetailsembedded&videoAutoPlay=0&id=anonymous"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.veoh.com/static/swf/webplayer/WebPlayer.swf?permalinkId=v17023301hGE7sm4G&player=videodetailsembedded&videoAutoPlay=0&id=anonymous" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="100%" height="341"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/flash/sao-paulo-brazil-megaramp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hug a developer today</title>
		<link>http://www.jonathanspooner.com/web-development/hug-a-developer-today/</link>
		<comments>http://www.jonathanspooner.com/web-development/hug-a-developer-today/#comments</comments>
		<pubDate>Fri, 05 Sep 2008 17:56:53 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/?p=127</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><embed src="http://blip.tv/play/AcGSagA" type="application/x-shockwave-flash" width="490" height="340" allowscriptaccess="always" allowfullscreen="true"></embed></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/hug-a-developer-today/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Charles Proxy for FLV Debugging</title>
		<link>http://www.jonathanspooner.com/web-development/charles-proxy-for-flv-debugging/</link>
		<comments>http://www.jonathanspooner.com/web-development/charles-proxy-for-flv-debugging/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 21:59:49 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/?p=97</guid>
		<description><![CDATA[Charles Proxy provides easy access to FLV file information such as video codec and embeded metadata. To find this information you will want to find and select the flv in Charles. When selected you will then want to select the "Response" tab in the opposite window to revel flv file info.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.charlesproxy.com/">Charles Proxy</a> provides easy access to <a href="http://en.wikipedia.org/wiki/FLV">FLV</a> file information such as video codec and embeded metadata.<br />
To find this information you will want to find and select the <a href="http://en.wikipedia.org/wiki/FLV">flv</a> in <a href="http://www.charlesproxy.com/">Charles</a>.  When selected you will then want to select the "Response" tab in the opposite window to revel <a href="http://en.wikipedia.org/wiki/FLV">flv</a> file info. </p>
<p><a href='http://www.jonathanspooner.com/blog/wp-content/uploads/2008/08/picture-1.png'><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2008/08/picture-1-300x136.png" alt="" title="Charles Proxy" width="300" height="136" class="alignleft size-medium wp-image-98" /></a></p>
<div class="clear"></div>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/charles-proxy-for-flv-debugging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adio Footwear</title>
		<link>http://www.jonathanspooner.com/web-development/adio-footwear/</link>
		<comments>http://www.jonathanspooner.com/web-development/adio-footwear/#comments</comments>
		<pubDate>Sun, 27 Jul 2008 04:51:07 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[Content Management System]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/?p=93</guid>
		<description><![CDATA[Client: Adio Footwear Work: Flash ActionScript 3.0, SWFAddress, SEO, Ruby on Rails, REST Link: www.adiofootwear.com Description: With SWFAddress at its core this full flash site manages state like a typical html web site. One of the most interesting patterns in this project is the management of multiple tiers of state and loaded assets. The admin [...]]]></description>
			<content:encoded><![CDATA[<p>Client: <a href="http://adiofootwear.com">Adio Footwear</a><br />
Work: <a href="http://www.adobe.com/devnet/actionscript/articles/actionscript3_overview.html">Flash ActionScript 3.0</a>, <a href="http://www.asual.com/swfaddress/">SWFAddress</a>, SEO, <a href="http://www.rubyonrails.org/">Ruby on Rails</a>, <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">REST</a><br />
Link: <a href="http://adiofootwear.com">www.adiofootwear.com</a><br />
Description:  With SWFAddress at its core this full flash site manages state like a typical html web site.  One of the most interesting patterns in this project is the management of multiple tiers of state and loaded assets.  The admin was built with Ruby on Rails, deployed with Capistrano and, served by a cluster of 4 Mongrels.</p>
<p>Results:  In this graph we can see an immediate 25% decrease in the bounce rate.  The orange line shows the bounce rate is know skewed due to an increase of traffic at the site launch.  The blue line shows the drop in the user bounce rate.  I attribute this improvement to the sites navigation improvements.  Visually the navigation is broken up into two consistent visual elements giving the user a familiar tool.  Functionally this site improves the user experience by showing state in the address bar and having working forward/back buttons.   </p>
<p><a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2008/08/picture-4.png"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2008/08/picture-4.png" alt="" title="picture-4" width="499" height="63" class="alignleft size-full wp-image-101" /></a></p>
<p>This graph compares the average time on site "Orange" improved by 2 minutes and bounce rate decreasing by 25%.</p>
<p><a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2008/08/picture-5.png"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2008/08/picture-5.png" alt="" title="adiofootwear.com" class="alignleft size-full wp-image-108" /></a></p>
<p><a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2008/08/picture-2.png"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2008/08/picture-2-300x215.png" alt="" title="adiofootwear.com" width="300" height="215" class="alignleft size-medium wp-image-102" /></a></p>
<p><a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2008/08/picture-3.png"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2008/08/picture-3-300x219.png" alt="" title="adiofootwear.com - sean white" width="300" height="219" class="alignleft size-medium wp-image-103" /></a><br />
<a href="http://www.jonathanspooner.com/blog/wp-content/uploads/2008/08/picture-11.png"><img src="http://www.jonathanspooner.com/blog/wp-content/uploads/2008/08/picture-11-300x215.png" alt="Footwear Page" title="adiofootwear.com" width="300" height="215" class="alignleft size-medium wp-image-106" /></a></p>
<div class="clear"></div>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/adio-footwear/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Veoh to Bring Behavior to Video Ads</title>
		<link>http://www.jonathanspooner.com/news/veoh-to-bring-behavior-to-video-ads/</link>
		<comments>http://www.jonathanspooner.com/news/veoh-to-bring-behavior-to-video-ads/#comments</comments>
		<pubDate>Mon, 14 Jul 2008 17:22:44 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Veoh Networks]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[veoh]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2008/07/14/veoh-to-bring-behavior-to-video-ads/</guid>
		<description><![CDATA[AdWeek published an article on Veoh's in-stream advertising strategy and behavioral targeting system. I've been working on the flash integration with our in-house targeting server add Freewheel's first ActionScript 3.0 SDK for ad delivery. Check out the article Veoh to Bring Behavior to Video Ads]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.adweek.com/aw/content_display/news/digital/e3i5dab627a6e5e9f67bf96eb988792f2da">AdWeek</a> published an article on Veoh's in-stream advertising strategy and behavioral targeting system.<br />
I've been working on the flash integration with our in-house targeting server add <a href="http://freewheel.tv">Freewheel's</a> first ActionScript 3.0 SDK for ad delivery. </p>
<p>Check out the article<br />
<a href="http://www.adweek.com/aw/content_display/news/digital/e3i5dab627a6e5e9f67bf96eb988792f2da">Veoh to Bring Behavior to Video Ads</a></p>
<p><object width="300" height="250" id="flashObj0" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param value="always" name="allowScriptAccess"/><param value="true" name="allowFullScreen"/><param value="http://admin.brightcove.com/viewer/federated_f8.swf?flashId=flashObj0&amp;servicesURL=http%3A%2F%2Fservices.brightcove.com%2Fservices&amp;viewerSecureGatewayURL=https%3A%2F%2Fconsole.brightcove.com%2Fservices%2Famfgateway&amp;cdnURL=http%3A%2F%2Fadmin.brightcove.com&amp;videoId=1662475231&amp;autoStart=false&amp;preloadBackColor=%23FFFFFF&amp;width=300&amp;height=250&amp;playerId=1227613352&amp;externalAds=false&amp;sendReports=false&amp;buildNumber=406&amp;ranNum=382070" name="movie"/><param value="window" name="wmode"/><param value="high" name="quality"/><param value="#FFFFFF" name="bgcolor"/><param value="http://admin.brightcove.com/viewer/" name="base"/><param value="false" name="SeamlessTabbing"/><embed width="300" height="250" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" swliveconnect="true" type="application/x-shockwave-flash" seamlesstabbing="false" wmode="window" name="flashObj0" allowscriptaccess="always" bgcolor="#FFFFFF" quality="high" base="http://admin.brightcove.com/viewer/" src="http://admin.brightcove.com/viewer/federated_f8.swf?flashId=flashObj0&amp;servicesURL=http%3A%2F%2Fservices.brightcove.com%2Fservices&amp;viewerSecureGatewayURL=https%3A%2F%2Fconsole.brightcove.com%2Fservices%2Famfgateway&amp;cdnURL=http%3A%2F%2Fadmin.brightcove.com&amp;videoId=1662475231&amp;autoStart=false&amp;preloadBackColor=%23FFFFFF&amp;width=300&amp;height=250&amp;playerId=1227613352&amp;externalAds=false&amp;sendReports=false&amp;buildNumber=406&amp;ranNum=382070"/></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/news/veoh-to-bring-behavior-to-video-ads/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10 Flex Builder 3 Tips</title>
		<link>http://www.jonathanspooner.com/web-development/10-flex-builder-3-tips/</link>
		<comments>http://www.jonathanspooner.com/web-development/10-flex-builder-3-tips/#comments</comments>
		<pubDate>Wed, 21 May 2008 21:52:49 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Source Control]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/?p=85</guid>
		<description><![CDATA[Draft Bookmarks Mark Occurrences. Highlight/SidebarMarkers Find Next/Previous Apple + Option + Up/Down Arrow Duplicate line Apple + D Delete current lines. Apple + Shift + R Open Resource like TextMate's find in project. Apple + K Go to next occurrence Apple + Shift + K Go to previous occurrence Use Flash Components in Flex ActionScript [...]]]></description>
			<content:encoded><![CDATA[<h4>Draft</h4>
<ol>
<li>Bookmarks</li>
<li>Mark Occurrences.  Highlight/SidebarMarkers </li>
<li>Find Next/Previous</li>
<li>Apple + Option + Up/Down Arrow Duplicate line</li>
<li>Apple + D Delete current lines.</li>
<li>Apple + Shift + R Open Resource like TextMate's find in project.</li>
<li>Apple + K Go to next occurrence</li>
<li>Apple + Shift + K Go to previous occurrence</li>
<li>Use Flash Components in Flex ActionScript Project.<br/><a href="http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&productId=2&postId=8604">Directions from the ActionScript 3.0 Cookbook</a> or see <a href="http://www.moock.org/blog/archives/000253.html">Colin Moock's post</a>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/10-flex-builder-3-tips/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to create AsDocs</title>
		<link>http://www.jonathanspooner.com/web-development/how-to-create-asdocs/</link>
		<comments>http://www.jonathanspooner.com/web-development/how-to-create-asdocs/#comments</comments>
		<pubDate>Wed, 02 Apr 2008 15:28:40 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2008/04/02/how-to-create-asdocs/</guid>
		<description><![CDATA[I'll write on this soon, until then use this link or the line below. Documents from Adobe asdoc -doc-sources /Users/jspooner/Documents/veoh/FlashPlayer/branches/ActionScriptSDK/src/com/veoh -output /Users/jspooner/Documents/veoh/FlashPlayer/branches/ActionScriptSDK/docs/]]></description>
			<content:encoded><![CDATA[<p>I'll write on this soon, until then use this link or the line below.<br />
<a href="http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&file=asdoc_127_9.html">Documents from Adobe</a></p>
<pre class="bash">
asdoc -doc-sources /Users/jspooner/Documents/veoh/FlashPlayer/branches/ActionScriptSDK/src/com/veoh -output /Users/jspooner/Documents/veoh/FlashPlayer/branches/ActionScriptSDK/docs/</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/how-to-create-asdocs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to set environmental variables in Unix</title>
		<link>http://www.jonathanspooner.com/news/how-to-set-environmental-variables-in-terminal/</link>
		<comments>http://www.jonathanspooner.com/news/how-to-set-environmental-variables-in-terminal/#comments</comments>
		<pubDate>Wed, 02 Apr 2008 15:18:41 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[Source Control]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2008/04/02/how-to-set-environmental-variables-in-terminal/</guid>
		<description><![CDATA[I often use SubVersion from the command line to manage my projects and I quickly became tired of typing in the full urls to repositories. I'm now storing these long paths in environmental variables. So for example I previously had to type svn copy http://repo/svn/spoonermedia/projectname/trunk http://repo/svn/spoonermedia/projectname/branch/feature1 to make a branch. After setting up an environmental [...]]]></description>
			<content:encoded><![CDATA[<p>I often use <a href="http://subversion.tigris.org">SubVersion</a> from the command line to manage my projects and I quickly became tired of typing in the full urls to repositories.  I'm now storing these long paths in <a href="http://en.wikipedia.org/wiki/Environment_variable">environmental variables</a>.  So for example I previously had to type<br/> <code>svn copy http://repo/svn/spoonermedia/projectname/trunk http://repo/svn/spoonermedia/projectname/branch/feature1</code> to make a branch.  After setting up an environmental variable I only have to type  </p>
<pre class="bash">svn copy $R/trunk $R/branch/feature1</pre>
<p>Okay if your sold on <a href="http://en.wikipedia.org/wiki/Environment_variable">Environmental Variables</a> this is how you do it.</p>
<ol>
<li>Look in "/Users/your-user-name" for a .profile or .bash_login file.  If you have both then open up .bash_login or if you have neither create a .profile file.</li>
<li>In that file you can use the export command to set all the variables you need.  Each of these variables should be in uppercase.
<pre class="bash">export W=/Users/jspooner/Documents/veoh/FlashPlayer/branches/wolverine
export T=/Users/jspooner/Documents/veoh/FlashPlayer/tags
export B=/Users/jspooner/Documents/veoh/FlashPlayer/branches
export SVNROOT=http://repo/svn/src/FlashPlayer/
</pre>
</li>
</ol>
<p>You can also use alias and functions to do other task like open and close projects.  Here are some of the other shortcuts I have.</p>
<pre class="bash">
## Open my current project
alias wolverine="cd /Users/jspooner/Documents/veoh/FlashPlayer/branches/wolverine && pwd && echo WELCOME TO WOLVERINE"
# mate
alias edithost="mate /private/etc/hosts"

alias stopmysql="sudo launchctl unload -w /Library/LaunchDaemons/com.mysql.mysqld.plist"
alias startmysql="sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysqld.plist"
# 
# # functions
# # change directories. echo PWD and show a list
cdd () { cd ${1}; echo $PWD; ls; }
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/news/how-to-set-environmental-variables-in-terminal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing Flex 3 Issues</title>
		<link>http://www.jonathanspooner.com/news/installing-flex-3-issues/</link>
		<comments>http://www.jonathanspooner.com/news/installing-flex-3-issues/#comments</comments>
		<pubDate>Wed, 05 Mar 2008 23:15:19 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2008/03/05/installing-flex-3-issues/</guid>
		<description><![CDATA[After installing Flex 3 form Flex 3 Beta 3 I had lots of issues with keyboard short cuts. I found that some hidden files from the beta were still on my system in ~/Documents/Flex Builder. I was able to solve all issues by changing the name on that directory and reinstalling Flex. If your having [...]]]></description>
			<content:encoded><![CDATA[<p>After installing Flex 3 form Flex 3 Beta 3 I had lots of issues with keyboard short cuts.  I found that some hidden files from the beta were still on my system in ~/Documents/Flex Builder.   I was able to solve all issues by changing the name on that directory and reinstalling Flex.</p>
<p>If your having issues and had Flex Beta <a href="http://www.adobe.com/support/documentation/en/flex/3/releasenotes_flex3_fb.html#clean_workspace">installed check out these instructions from adobe.</a>  The worked for me when upgrading from Beta 2 to Beta 3.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/news/installing-flex-3-issues/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby on Rails Videos</title>
		<link>http://www.jonathanspooner.com/web-development/ruby-on-rails-videos/</link>
		<comments>http://www.jonathanspooner.com/web-development/ruby-on-rails-videos/#comments</comments>
		<pubDate>Thu, 14 Feb 2008 18:11:51 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2008/02/14/ruby-on-rails-videos/</guid>
		<description><![CDATA[I found some funny Apple Commercial spoofs yesterday and wanted to share them.&#160; Apart from being funny they actually help show why Rails is such a great tool. Embedded Video Tags: rubyon rails, video]]></description>
			<content:encoded><![CDATA[<p>I found some funny Apple Commercial spoofs yesterday and wanted to share them.&nbsp; Apart from being funny they actually help show why Rails is such a great tool.</p>
<p><embed wmode="transparent" type="application/x-shockwave-flash" src="http://www.youtube.com/v/p5EIrSM8dCA" height="350" width="425">
<p class="citation"><cite cite="http://www.railsenvy.com/tags/Commercials"><a href="http://www.railsenvy.com/tags/Commercials">Embedded Video</a></cite></p>
<p><span id="more-78"></span></p>
<p><object height="355" width="425"><param name="movie" value="http://www.youtube.com/v/PQbuyKUaKFo&amp;rel=1&amp;border=0"><param name="wmode" value="transparent"><embed src="http://www.youtube.com/v/PQbuyKUaKFo&amp;rel=1&amp;border=0" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"></object></p>
<p><object height="355" width="425"><param name="movie" value="http://www.youtube.com/v/p5EIrSM8dCA&amp;rel=1&amp;border=0"><param name="wmode" value="transparent"><embed src="http://www.youtube.com/v/p5EIrSM8dCA&amp;rel=1&amp;border=0" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"></object></p>
<p><object height="355" width="425"><param name="movie" value="http://www.youtube.com/v/Ld919lziKgE&amp;rel=1&amp;border=0"><param name="wmode" value="transparent"><embed src="http://www.youtube.com/v/Ld919lziKgE&amp;rel=1&amp;border=0" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"></object></p>
<p><object height="355" width="425"><param name="movie" value="http://www.youtube.com/v/528BCJiRkks&amp;rel=1&amp;border=0"><param name="wmode" value="transparent"><embed src="http://www.youtube.com/v/528BCJiRkks&amp;rel=1&amp;border=0" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"></object></p>
<p><object height="355" width="425"><param name="movie" value="http://www.youtube.com/v/GQXqWkWqnSw&amp;rel=1&amp;border=0"><param name="wmode" value="transparent"><embed src="http://www.youtube.com/v/GQXqWkWqnSw&amp;rel=1&amp;border=0" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"></object></p>
<p><object height="355" width="425"><param name="movie" value="http://www.youtube.com/v/PLUS00QrYWw&amp;rel=1&amp;border=0"><param name="wmode" value="transparent"><embed src="http://www.youtube.com/v/PLUS00QrYWw&amp;rel=1&amp;border=0" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"></object></p>
<p><object height="355" width="425"><param name="movie" value="http://www.youtube.com/v/kU-4D51FY98&amp;rel=1&amp;border=0"><param name="wmode" value="transparent"><embed src="http://www.youtube.com/v/kU-4D51FY98&amp;rel=1&amp;border=0" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"></object></p>
<p><object height="355" width="425"><param name="movie" value="http://www.youtube.com/v/z99EHyG2jQA&amp;rel=1&amp;border=0"><param name="wmode" value="transparent"><embed src="http://www.youtube.com/v/z99EHyG2jQA&amp;rel=1&amp;border=0" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"></object><!-- technorati tags begin -->
<p style="font-size:10px;text-align:right;">Tags: <a href="http://technorati.com/tag/rubyon%20rails" rel="tag">rubyon rails</a>, <a href="http://technorati.com/tag/%20video" rel="tag"> video</a></p>
<p><!-- technorati tags end --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/ruby-on-rails-videos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OS X 10.5 Virtual Host and PHP</title>
		<link>http://www.jonathanspooner.com/news/os-x-105-virtual-host-and-php/</link>
		<comments>http://www.jonathanspooner.com/news/os-x-105-virtual-host-and-php/#comments</comments>
		<pubDate>Tue, 29 Jan 2008 17:51:01 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Content Management System]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Source Control]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2008/01/29/os-x-105-virtual-host-and-php/</guid>
		<description><![CDATA[I found instructions for editing the host file and enabling PHP at 456bereastreet.com. What is a host file? Lets say your editing website locally and would like to bypass any security errors caused by the localhost url. You can use the host file to redirect the real url "www.jonathanspooner.com" to point at your local copy. [...]]]></description>
			<content:encoded><![CDATA[<p>I found instructions for editing the host file and enabling PHP at <a href="http://www.456bereastreet.com/archive/200711/virtual_hosts_php_and_mysql_on_mac_os_x_105_leopard/">456bereastreet.com</a>.  </p>
<p>What is a host file?  Lets say your editing website locally and would like to bypass any security errors caused by the localhost url.  You can use the host file to redirect the real url "www.jonathanspooner.com" to point at your local copy. </p>
<p>I also added a short cut to my profile document so I can just type 'host' in terminal and TextMate will open the doc.<br />
To do this create a file named .profile in your users directory "/Users/yourusername/" and bash script like the one below.  I have a few other handy shortcuts in there too.</p>
<pre class="bash" >
alias host="mate /private/etc/hosts"
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/news/os-x-105-virtual-host-and-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ImageMagick on OS X 10.4</title>
		<link>http://www.jonathanspooner.com/web-development/imagemagick-on-os-x-104/</link>
		<comments>http://www.jonathanspooner.com/web-development/imagemagick-on-os-x-104/#comments</comments>
		<pubDate>Sun, 13 Jan 2008 17:23:55 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2008/01/13/imagemagick-on-os-x-104/</guid>
		<description><![CDATA[If you looking to add ImageMagick to your OS X 10.4 machine and your not super familiar with compiling your own binaries use this installer from entropy. Entropy has two installers for OS X 10.2 and 10.3. After a morning of trying to build my own binaries I decided to just give the 10.3 installer [...]]]></description>
			<content:encoded><![CDATA[<p>If you looking to add ImageMagick to your OS X 10.4 machine and your not super familiar with compiling your own binaries use this installer from entropy.  Entropy has two installers for OS X 10.2 and 10.3.  After a morning of trying to build my own binaries I decided to just give the 10.3 installer a try.  So far it works great with no problems.<br />
<a href="http://www.entropy.ch/software/macosx/#imagemagick">http://www.entropy.ch/software/macosx/#imagemagick</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/imagemagick-on-os-x-104/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TED Talks</title>
		<link>http://www.jonathanspooner.com/news/ted-talks/</link>
		<comments>http://www.jonathanspooner.com/news/ted-talks/#comments</comments>
		<pubDate>Wed, 02 Jan 2008 23:38:02 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2008/01/02/ted-talks/</guid>
		<description><![CDATA[TED &#124; Talks &#124; Blaise Aguera y Arcas: Jaw-dropping Photosynth demo (video)]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ted.com/index.php/talks/view/id/129">TED | Talks | Blaise Aguera y Arcas: Jaw-dropping Photosynth demo (video)</a><br />
<!--cut and paste--><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" id="VE_Player" align="middle" height="285" width="432"><param name="movie" value="http://static.videoegg.com/ted/flash/loader.swf"><param name="FlashVars" value="bgColor=FFFFFF&amp;file=http://static.videoegg.com/ted/movies/BLAISEAGUERAYARCAS-2007_high.flv&amp;autoPlay=false&amp;fullscreenURL=http://static.videoegg.com/ted/flash/fullscreen.html&amp;forcePlay=false&amp;logo=&amp;allowFullscreen=true"><param name="quality" value="high"><param name="allowScriptAccess" value="always"><param name="bgcolor" value="#FFFFFF"><param name="scale" value="noscale"><param name="wmode" value="window"><embed src="http://static.videoegg.com/ted/flash/loader.swf" flashvars="bgColor=FFFFFF&amp;file=http://static.videoegg.com/ted/movies/BLAISEAGUERAYARCAS-2007_high.flv&amp;autoPlay=false&amp;fullscreenURL=http://static.videoegg.com/ted/flash/fullscreen.html&amp;forcePlay=false&amp;logo=&amp;allowFullscreen=true" quality="high" allowscriptaccess="always" bgcolor="#FFFFFF" scale="noscale" wmode="window" name="VE_Player" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" align="middle" height="285" width="432"></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/news/ted-talks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Search Mistakes Shaun White for Rocky Dennis</title>
		<link>http://www.jonathanspooner.com/news/broken-google-search/</link>
		<comments>http://www.jonathanspooner.com/news/broken-google-search/#comments</comments>
		<pubDate>Thu, 22 Nov 2007 08:11:28 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2007/11/22/broken-google-search/</guid>
		<description><![CDATA[shaun white or rocky dennis ]]></description>
			<content:encoded><![CDATA[<p>When you search for Rocky Dennis a boy with craniodiaphyseal dysplasia disfiguration you get a picture of professional snowboarder Shawn White.  The resemblance between the photos is strange.  Google must have matched up the red hair. </p>
<p><a href="http://www.google.com/search?q=rocky+dennis&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a"><br />
<img src='http://www.jonathanspooner.com/blog/wp-content/uploads/2007/11/picture-4.png' alt='Shawn White and Rocky Dennis' /><br />
Google search for Rocky Dennis.</a></p>
<p><a href="http://digg.com/tech_news/Google_Search_Mistakes_Shaun_White_for_Rocky_Dennis/blog">Go digg the post</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/news/broken-google-search/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Android is a software stack for mobile devices.</title>
		<link>http://www.jonathanspooner.com/news/google-opensource-mobil-os/</link>
		<comments>http://www.jonathanspooner.com/news/google-opensource-mobil-os/#comments</comments>
		<pubDate>Mon, 12 Nov 2007 19:42:10 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2007/11/12/google-opensource-mobil-os/</guid>
		<description><![CDATA[Okay there is no gPhone rather an operating system called Android. Check out the video below. If the video doesn't spark any ideas maybe the 10 million dollars the Big G is putting up for the best applications built.]]></description>
			<content:encoded><![CDATA[<p>Okay there is no gPhone rather an operating system called <a href="http://code.google.com/android/what-is-android.htmlhttp://code.google.com/android/what-is-android.html">Android</a>.<br />
  Check out the video below.  If the video doesn't spark any ideas maybe the <a href="http://code.google.com/android/adc.html">10 million dollars the Big G</a> is putting up for the best applications built.  </p>
<p><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/1FJHYqE0RDg&rel=1"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/1FJHYqE0RDg&rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/news/google-opensource-mobil-os/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Social</title>
		<link>http://www.jonathanspooner.com/news/open-social/</link>
		<comments>http://www.jonathanspooner.com/news/open-social/#comments</comments>
		<pubDate>Mon, 05 Nov 2007 03:29:20 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2007/11/04/open-social/</guid>
		<description><![CDATA[So what is OpenSocial? First of all OpenSocial is not GoogleSocial. OpenSocial is an industry standard for social websites. Check out the video below.]]></description>
			<content:encoded><![CDATA[<p>So what is <a href="http://code.google.com/apis/opensocial/">OpenSocial</a>?  First of all <a href="http://code.google.com/apis/opensocial/">OpenSocial</a> is not GoogleSocial.  <a href="http://code.google.com/apis/opensocial/">OpenSocial</a> is an industry standard for social websites.  Check out the video below.</p>
<p><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/9KOEbAZJTTk&rel=1"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/9KOEbAZJTTk&rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/news/open-social/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fire Recovery</title>
		<link>http://www.jonathanspooner.com/news/fire-recovery/</link>
		<comments>http://www.jonathanspooner.com/news/fire-recovery/#comments</comments>
		<pubDate>Thu, 01 Nov 2007 20:17:00 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2007/11/01/fire-recovery/</guid>
		<description><![CDATA[http://strizver.blogspot.com/  ]]></description>
			<content:encoded><![CDATA[<p><a href="http://strizver.blogspot.com/" xtarget="" target="">http://strizver.blogspot.com/</a></p>
<p>
<div style=""><a href="http://www.flickr.com/photos/80709193@N00/1700304654/" target="_blank"><img src="http://farm3.static.flickr.com/2239/1700304654_0e9168fc0a_m.jpg" width="240" height="180" alt="IMG_0130.JPG" border="0"></a></div>
<div style=""><a href="http://www.flickr.com/photos/80709193@N00/1699432333/" target="_blank"><img src="http://farm3.static.flickr.com/2134/1699432333_3a565e6c43_m.jpg" width="240" height="180" alt="IMG_0885.JPG" border="0"></a></div>
<div style=""><a href="http://www.flickr.com/photos/80709193@N00/1699432333/" target="_blank"><img src="http://farm3.static.flickr.com/2134/1699432333_3a565e6c43_m.jpg" width="240" height="180" alt="IMG_0885.JPG" border="0"></a></div>
<div style=""><a href="http://www.flickr.com/photos/80709193@N00/1700302422/" target="_blank"><img src="http://farm3.static.flickr.com/2167/1700302422_d7a437ee17_m.jpg" width="240" height="180" alt="IMG_0122.JPG" border="0"></a></div>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/news/fire-recovery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AT&amp;T Text Message</title>
		<link>http://www.jonathanspooner.com/news/att-text-message/</link>
		<comments>http://www.jonathanspooner.com/news/att-text-message/#comments</comments>
		<pubDate>Thu, 25 Oct 2007 04:03:22 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2007/10/24/att-text-message/</guid>
		<description><![CDATA[Have you ever received a text message that says something like this? " I sent you a mulimedia message. You can view my message via the internet at viewmymessage.com using Msg ID w392gvgmn Password ors9vhem" If that isn't horrible user experience look at the website where you can read your message. They have about an [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever received a text message that says something like this?</p>
<blockquote><p>" I sent you a mulimedia message.  You can view my message via the internet at viewmymessage.com using Msg ID w392gvgmn Password ors9vhem"</p></blockquote>
<p>If that isn't horrible user experience look at the website where you can read your message.  They have about an 800 pixel wide<br />
page and they squish the message into a 150 pixel wide box at less than 8 point type.</p>
<p>Yeah, Congratulations AT&T, you guys rock!  </p>
<p><a href='http://www.jonathanspooner.com/blog/wp-content/uploads/2007/10/picture-1.png' title='AT&T Text Message'><img width="300" src='http://www.jonathanspooner.com/blog/wp-content/uploads/2007/10/picture-1.png' alt='AT&T Text Message' /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/news/att-text-message/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby on Rails and MediaTemple DV</title>
		<link>http://www.jonathanspooner.com/web-development/ruby-on-rails-and-mediatemple-dv/</link>
		<comments>http://www.jonathanspooner.com/web-development/ruby-on-rails-and-mediatemple-dv/#comments</comments>
		<pubDate>Wed, 12 Sep 2007 01:09:10 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2007/09/11/ruby-on-rails-and-mediatemple-dv/</guid>
		<description><![CDATA[Okay lets be honest. 10 hours later and this is not my favorite thing to do. RoR was much easier to get running on the GridServer, which seems to run the apps well. We purchased the DV for work and it hasn't been the fastest thing to set up. Here is the article from the [...]]]></description>
			<content:encoded><![CDATA[<p>Okay lets be honest.  10 hours later and this is not my favorite thing to do.  RoR was much easier to get running on the GridServer, which seems to run the apps well.<br />
We purchased the DV for work and it hasn't been the fastest thing to set up.  Here is the article from the MediaTemple knowledgebase for setting up a <a href="http://kb.mediatemple.net/article.php?id=279">Ruby on Rails with mongrel</a>.  It has you setting up a cluster of mongrels and the process is more difficult than the grid server.  I was also unable to get Capistrano working on the DV.  I found <a href="http://railswatcher.com/2007/6/19/capistrano-2-mongrel_cluster-recipe">this recipe</a> but things get hairy quickly. </p>
<p>Yikes!  I need to find a good solution that is packaged up and ready to go.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/ruby-on-rails-and-mediatemple-dv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deploying Ruby on Rails</title>
		<link>http://www.jonathanspooner.com/web-development/ruby-on-rails/deploying-ruby-on-rails/</link>
		<comments>http://www.jonathanspooner.com/web-development/ruby-on-rails/deploying-ruby-on-rails/#comments</comments>
		<pubDate>Wed, 12 Sep 2007 01:02:23 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2007/09/11/deploying-ruby-on-rails/</guid>
		<description><![CDATA[Okay so it's been several weeks (5 to be exact) since I tried to deploy the bagoflix.com site. Originally I was using Dreamhost but soon found that Ruby on Rails needed a little more juice to. I had a 3 month trial card for MediaTemple and decided to give their Grid Server a try. Vixiom [...]]]></description>
			<content:encoded><![CDATA[<p>Okay so it's been several weeks (5 to be exact) since I tried to deploy the bagoflix.com site.  Originally I was using <a href="http://dreamhost.com" target="_blank">Dreamhost</a> but soon found that Ruby on Rails needed a little more juice to.  I had a 3 month trial card for <a href="http://mediatemple.net" target="_blank">MediaTemple</a> and decided to give their Grid Server a try. <a href="http://blog.vixiom.com/2007/02/18/mt-ror-a-z-the-complete-guide-to-getting-rails-running-on-media-temple/" target="_blank">Vixiom</a> was a <strong>big </strong>help getting Ruby on Rails installed on the grid server.  He also helps you install Capistrano which is a wonderful tool to automatically deploy your rails app from SubVersion.  I don't know how to do this yet but Capistrano enables you to roll back to a previous release if something should go wrong.</p>
<p>I have since installed the whole RoR set up on a <a href="http://mediatemple.net" target="_blank">MediaTemple</a> DV server.  The process wasn't that bad.  You can see how to do it <a href="http://kb.mediatemple.net/article.php?id=279" target="_blank">here</a>.  I was able to follow their directions and get it to work first try.</p>
<p>In the mean time I decided to launch a small application on Rails just to get the process down before deploying a larger app.  There's all this talk that it won't scale and crap like that.  I want to see for myself.  So the app is called linkrook.com and it's a simple long url redirect program.  Check it out!</p>
<p>What do I think of Ruby on Rails now?<br />
I still love it.  I'm not a CS guy, just a guy that went to art school and learned ActionScript.  OOP is the way to go and  PHP drives me crazy, it's soo messy.  RoR helps you do things correctly with version control and clean objects... I could go on and on.  Yes it took a bit to get servers set up.  Much of that is because MediaTemple's GridServer has their own mtr commands instead of capistrano.</p>
<p>What Challenge is next?<br />
Getting the <a href="https://rubyforge.org/projects/activerevver/" target="_blank">ActiveRevver</a> Model to work on Rails 1.2.3.  Anyone want to give me any thoughts on how to do so?<br />
My other option is to just use the XML-RPC from <a href="http://developer.revver.com/">Revver</a>.  I'm just not exactly sure how to structure each xml request.  Revver showes the api but I'm just not quite sure how to use the xml-rpc in ruby.  I'll have to investigate more.</p>
<p>Resources I have found<br />
<a href="http://del.icio.us/jspooner/rails" target="_blank">http://del.icio.us/jspooner/rails </a><br />
<a href="http://del.icio.us/jspooner/rails_deploy" target="_blank">http://del.icio.us/jspooner/rails_deploy</a></p>
<p>Big thinks to <a href="http://developer.assaydepot.com/" target="_blank">Chris</a> at <a href="http://developer.assaydepot.com/" target="_blank">Assay Deopt</a> for helping me with Capistrano.  Check out his <a href="http://developer.assaydepot.com/" target="_blank">developer blog</a> for some good RoR stuff.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/ruby-on-rails/deploying-ruby-on-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Liberty Tax Franchise &#8211; Website</title>
		<link>http://www.jonathanspooner.com/news/liberty-tax-franchise-website/</link>
		<comments>http://www.jonathanspooner.com/news/liberty-tax-franchise-website/#comments</comments>
		<pubDate>Fri, 03 Aug 2007 19:00:38 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2007/08/03/liberty-tax-franchise-website/</guid>
		<description><![CDATA[Client: Liberty Tax Work: UI Design, Ektron CMS, Development Link:]]></description>
			<content:encoded><![CDATA[<p>Client: Liberty Tax<br />
Work: UI Design, Ektron CMS, Development<br />
Link: </p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/news/liberty-tax-franchise-website/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Callaway Eyewear Microsite</title>
		<link>http://www.jonathanspooner.com/web-development/callaway-eyewear-microsite/</link>
		<comments>http://www.jonathanspooner.com/web-development/callaway-eyewear-microsite/#comments</comments>
		<pubDate>Fri, 13 Jul 2007 16:12:26 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2007/07/13/callaway-eyewear-microsite/</guid>
		<description><![CDATA[Client: Callaway Eyewear Work: Design, Motion, and Develop Microsite for email campaign. Link: live / archive]]></description>
			<content:encoded><![CDATA[<p>Client: <a href="http://callawayeyewear.com">Callaway Eyewear</a><br />
Work:  Design, Motion, and Develop Microsite for email campaign.<br />
Link: <a href="http://callawayeyewear.com/leadbetter_video/">live</a> / <a href="http://jonathanspooner.com/archive/david_leadbetter">archive</a></p>
<p><a href="http://jonathanspooner.com/archive/david_leadbetter"><br />
<img src='http://www.jonathanspooner.com/blog/wp-content/uploads/2007/07/callaway_eyewear.jpg' alt='Callaway Eyewear Microsite' /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/callaway-eyewear-microsite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP 5.2.2 Bug</title>
		<link>http://www.jonathanspooner.com/news/php-522-bug/</link>
		<comments>http://www.jonathanspooner.com/news/php-522-bug/#comments</comments>
		<pubDate>Thu, 12 Jul 2007 15:42:18 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2007/07/12/php-522-bug/</guid>
		<description><![CDATA[XML-RPC (Remote Procedure Call) has a bug in a popular version of PHP 5.2.2. You will probably see a call to an undefined function call to xmlrpc_encode_request() Here is a link to the bug at php.net WordPress uses xmlrpc and there is a hack to correct the bug. The fix is to add the following [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.xmlrpc.com/">XML-RPC</a> (Remote Procedure Call) has a bug in a popular version of PHP 5.2.2.  You will probably see a call to an undefined function call to xmlrpc_encode_request()</p>
<p><a href="http://bugs.php.net/bug.php?id=41293">Here is a link to the bug at php.net</a></p>
<p><a href="http://bagoflix.com">WordPress</a> uses <a href="http://www.xmlrpc.com/">xmlrpc</a> and there is a hack to correct the bug.  The fix is to add the following line at the top of thte xmlrpc.php file.</p>
<p><code>$HTTP_RAW_POST_DATA = file_get_contents("php://input"); </code></p>
<p>I'm looking for a fix to the <a href="http://developer.revver.com">revver video api</a>.  If you find something let me know.<br />
I'll update this post when I find the fix too.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/news/php-522-bug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google click-to-call AdWord</title>
		<link>http://www.jonathanspooner.com/news/google-click-to-call-adword-2/</link>
		<comments>http://www.jonathanspooner.com/news/google-click-to-call-adword-2/#comments</comments>
		<pubDate>Wed, 11 Jul 2007 21:38:25 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2007/07/11/google-click-to-call-adword-2/</guid>
		<description><![CDATA[Google has come up with a way for an advertiser to get directly on the phone with you. Next time you see a phone icon in google ads click it and enter your phone number. They say with in 5 seconds your phone will ring. When you pick it up it will automatically be calling [...]]]></description>
			<content:encoded><![CDATA[<p>Google has come up with a way for an advertiser to get directly on the phone with you.  Next time you see a phone icon in google ads click it and enter your phone number.  They say with in 5 seconds your phone will ring.  When you pick it up it will automatically be calling the advertiser.  </p>
<p>Is this good functionality?  Are people really unable to dial the phone number their selves?  I think click-to-call is a good way to boost your phone call conversions.  Hey and it also lets us web people track how many people make that call.</p>
<p>You can read more here.<br />
<a href="http://www.yardley.ca/blog/index.php/archives/2005/11/23/google-tests-out-click-to-call-adwords/" target="_blank" > Yardley</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/news/google-click-to-call-adword-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Allen Group &#8211; Midstate 99 Industrial Park</title>
		<link>http://www.jonathanspooner.com/web-development/the-allen-group-midstate-99-industrial-park/</link>
		<comments>http://www.jonathanspooner.com/web-development/the-allen-group-midstate-99-industrial-park/#comments</comments>
		<pubDate>Wed, 13 Jun 2007 22:30:16 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Content Management System]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2007/06/13/the-allen-group-midstate-99-industrial-park/</guid>
		<description><![CDATA[Client: The Allen Group Work: Flash CMS Development, Server Side Programming C# Link: Live]]></description>
			<content:encoded><![CDATA[<p>Client: <a href="http://www.allengroup.com">The Allen Group</a><br />
Work:  Flash CMS Development, Server Side Programming C#<br />
Link: <a href="http://www.midstate99.com">Live</a><br />
<a href="http://www.midstate99.com"><img src='http://www.jonathanspooner.com/blog/wp-content/uploads/2007/07/ms99.jpg' alt='Midstate 99' /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/the-allen-group-midstate-99-industrial-park/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Allen Group &#8211; Property Search App</title>
		<link>http://www.jonathanspooner.com/web-development/the-allen-group-property-search-app/</link>
		<comments>http://www.jonathanspooner.com/web-development/the-allen-group-property-search-app/#comments</comments>
		<pubDate>Tue, 13 Mar 2007 16:32:59 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Content Management System]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2007/07/13/the-allen-group-property-search-app/</guid>
		<description><![CDATA[Client: The Allen Group Work: Concept, Design, and Develop Link: live]]></description>
			<content:encoded><![CDATA[<p>Client: The Allen Group<br />
Work: Concept, Design, and Develop<br />
Link: <a href="http://www.allengroup.com/Property-Search.aspx">live</a></p>
<p><a href="http://www.allengroup.com/Property-Search.aspx"><img src='http://www.jonathanspooner.com/blog/wp-content/uploads/2007/07/allen_group_property_locato.jpg' alt='The Allen Group - Property Search Application' /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/the-allen-group-property-search-app/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Franchise.org</title>
		<link>http://www.jonathanspooner.com/news/franchiseorg/</link>
		<comments>http://www.jonathanspooner.com/news/franchiseorg/#comments</comments>
		<pubDate>Sat, 13 Jan 2007 22:09:21 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Content Management System]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2007/07/13/franchiseorg/</guid>
		<description><![CDATA[Client: International Franchise Association Work: UI Design, CMS(ektron), and Programming C# Link: Live]]></description>
			<content:encoded><![CDATA[<p>Client: International Franchise Association<br />
Work: UI Design, CMS(<a href="http://ektron.com">ektron</a>), and Programming C#<br />
Link: <a href="http://franchise.org">Live</a></p>
<p><a href="http://franchise.org"><img src='http://www.jonathanspooner.com/blog/wp-content/uploads/2007/07/franchisedotorg.jpg' alt='Franchise.org Search Results Page' /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/news/franchiseorg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YUM Brands Franchise &#8211; Website</title>
		<link>http://www.jonathanspooner.com/web-development/yum-brands-franchise-website/</link>
		<comments>http://www.jonathanspooner.com/web-development/yum-brands-franchise-website/#comments</comments>
		<pubDate>Mon, 13 Nov 2006 23:00:51 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2006/11/13/yum-brands-franchise-website/</guid>
		<description><![CDATA[Client: YUM Brands Work: Design, Video, Flash Development, Streaming Server Link: yumbrandsfranchise.com]]></description>
			<content:encoded><![CDATA[<p>Client: <a href="http://www.yum.com">YUM Brands</a><br />
Work: Design, Video, Flash Development, Streaming Server<br />
Link: <a href="http://www.yumbrandsfranchise.com/">yumbrandsfranchise.com</a></p>
<p><a href="http://www.yumbrandsfranchise.com"><img src='http://www.jonathanspooner.com/blog/wp-content/uploads/2007/07/yum.jpg' alt='YUM Brands' /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/yum-brands-franchise-website/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dallas Logistics Hub</title>
		<link>http://www.jonathanspooner.com/web-development/dallas-logistics-hub/</link>
		<comments>http://www.jonathanspooner.com/web-development/dallas-logistics-hub/#comments</comments>
		<pubDate>Mon, 13 Nov 2006 22:34:37 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Content Management System]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2006/11/13/dallas-logistics-hub/</guid>
		<description><![CDATA[Client: The Allen Group Work: Design, Flash, and Develop with Ektron CMS Link: Live]]></description>
			<content:encoded><![CDATA[<p>Client: <a href="http://www.allengroup.com">The Allen Group</a><br />
Work: Design, Flash, and Develop with <a href="http://ektron.com">Ektron CMS</a><br />
Link: <a href="http://www.dallaslogisticshub.com/">Live</a></p>
<p><a href="http://www.dallaslogisticshub.com"><img src='http://www.jonathanspooner.com/blog/wp-content/uploads/2007/07/dallas.jpg' alt='Dallas Logistics Hub' /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/dallas-logistics-hub/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Help-U-Sell &#8211; Franchise Opportunity Center</title>
		<link>http://www.jonathanspooner.com/news/help-u-sell-franchise-opportunity-center/</link>
		<comments>http://www.jonathanspooner.com/news/help-u-sell-franchise-opportunity-center/#comments</comments>
		<pubDate>Mon, 13 Nov 2006 22:17:27 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Content Management System]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2007/07/13/help-u-sell-franchise-opportunity-center/</guid>
		<description><![CDATA[Client: Help-U-Sell Work: Programming and Interactive Design Link: Private Intranet]]></description>
			<content:encoded><![CDATA[<p>Client: Help-U-Sell<br />
Work: Programming and Interactive Design<br />
Link: Private Intranet</p>
<p><img src='http://www.jonathanspooner.com/blog/wp-content/uploads/2007/07/foc.jpg' alt='Help-U-Sell Franchise Opportunity Center' /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/news/help-u-sell-franchise-opportunity-center/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Internet Explorer 7 web site</title>
		<link>http://www.jonathanspooner.com/news/internet-explorer-7-web-site/</link>
		<comments>http://www.jonathanspooner.com/news/internet-explorer-7-web-site/#comments</comments>
		<pubDate>Tue, 05 Sep 2006 02:39:39 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2006/09/04/internet-explorer-7-web-site/</guid>
		<description><![CDATA[www.ie7.com]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ie7.com/">www.ie7.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/news/internet-explorer-7-web-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Island Hotel &#8211; Website</title>
		<link>http://www.jonathanspooner.com/web-development/island-hotel-website/</link>
		<comments>http://www.jonathanspooner.com/web-development/island-hotel-website/#comments</comments>
		<pubDate>Sun, 13 Aug 2006 23:07:58 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Content Management System]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2007/07/13/island-hotel-website/</guid>
		<description><![CDATA[Client: The Irvine Company Work: Ektron CMS, Development Link: islandhotel.com]]></description>
			<content:encoded><![CDATA[<p>Client: The Irvine Company<br />
Work: Ektron CMS, Development<br />
Link: <a href="http://www.islandhotel.com/">islandhotel.com</a></p>
<p><a href="http://www.islandhotel.com/"><img src='http://www.jonathanspooner.com/blog/wp-content/uploads/2007/07/island.jpg' alt='Island Hotel' /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/island-hotel-website/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Relax The Back Franchise &#8211; Website</title>
		<link>http://www.jonathanspooner.com/web-development/relax-the-back-franchise-website/</link>
		<comments>http://www.jonathanspooner.com/web-development/relax-the-back-franchise-website/#comments</comments>
		<pubDate>Sun, 13 Aug 2006 22:50:19 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Content Management System]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2006/08/13/relax-the-back-franchise-website/</guid>
		<description><![CDATA[Client: Relax The Back Work: Development, Project Manage Link: Live]]></description>
			<content:encoded><![CDATA[<p>Client: Relax The Back<br />
Work: Development, Project Manage<br />
Link: <a href="http://relaxthebackfranchise.com/">Live</a></p>
<p><a href="http://relaxthebackfranchise.com"><img src='http://www.jonathanspooner.com/blog/wp-content/uploads/2007/07/rb.jpg' alt='Relax The Back - Website' /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/relax-the-back-franchise-website/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Relative links get rewriten in Deamweaver Templates</title>
		<link>http://www.jonathanspooner.com/news/relative-links-get-rewriten-in-deamweaver-templates/</link>
		<comments>http://www.jonathanspooner.com/news/relative-links-get-rewriten-in-deamweaver-templates/#comments</comments>
		<pubDate>Fri, 16 Jun 2006 04:35:28 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2006/06/15/relative-links-get-rewriten-in-deamweaver-templates/</guid>
		<description><![CDATA[Here was the problem. In your template you have some links like &#60;a href=&#34;images/photo.jpg&#34;&#62;. When you save your template Dreamweaver places the template in a directory named Templates on the root. When this happens Dreamweaver took the liberty to rewrite all of your links to something like this &#60;a href=&#34;/Templates/images/photo.jpg&#34;&#62;. You could see how frustraing [...]]]></description>
			<content:encoded><![CDATA[<p> Here was the problem.  In your template you have some links like <code>&lt;a href=&quot;images/photo.jpg&quot;&gt;</code>.  When you save your template Dreamweaver places the template in a directory named Templates on the root.  When this happens Dreamweaver took the liberty to rewrite all of your links to something like this<code> &lt;a href=&quot;/Templates/images/photo.jpg&quot;&gt;</code>.  You could see how frustraing this would be since you don't want to keep your images inside the Templates folder.  The quick solution was to make urls that reference the root of the server like this <code>&lt;a href=&quot;/images/photo.jpg&quot;&gt;</code>.  This still created problems when using php includes.</p>
<p>I just updated Dreamweaver to version 8.0.2 and there is not an option to not rewrite document relative paths.  From your manage sites menu select a site to edit. In the bottom of the left column click on templates.  You will want to then uncheck the checkbox that says &quot;Don't rewrite document relative paths&quot;. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/news/relative-links-get-rewriten-in-deamweaver-templates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bright Star Healthcare</title>
		<link>http://www.jonathanspooner.com/web-development/bright-star-healthcare/</link>
		<comments>http://www.jonathanspooner.com/web-development/bright-star-healthcare/#comments</comments>
		<pubDate>Sat, 13 May 2006 22:38:12 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Content Management System]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2006/05/13/bright-star-healthcare/</guid>
		<description><![CDATA[Client: Bright Star Healthcare Work: Develop, Contribute CMS Link: Live]]></description>
			<content:encoded><![CDATA[<p>Client: Bright Star Healthcare<br />
Work: Develop, Contribute CMS<br />
Link: <a href="http://www.247brightstar.com/">Live</a><br />
<a href="http://www.247brightstar.com"><br />
<img src='http://www.jonathanspooner.com/blog/wp-content/uploads/2007/07/brightstar.jpg' alt='Bright Star Healthcare' /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/bright-star-healthcare/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dreamhost Discount Code</title>
		<link>http://www.jonathanspooner.com/news/dreamhost-promo-code/</link>
		<comments>http://www.jonathanspooner.com/news/dreamhost-promo-code/#comments</comments>
		<pubDate>Tue, 09 May 2006 04:33:02 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2006/05/08/dreamhost-promo-code/</guid>
		<description><![CDATA[You know how much I like]]></description>
			<content:encoded><![CDATA[<p>You know how much I like <a href="http://www.dreamhost.com/r.cgi?31409>Dreamhost.com</a> so I crated another promo code for you.  This one is a one year discount.  The code is "THESPOON_ONEYEAR"</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/news/dreamhost-promo-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BrightStar Franchise Website</title>
		<link>http://www.jonathanspooner.com/web-development/brightstar-franchise-website/</link>
		<comments>http://www.jonathanspooner.com/web-development/brightstar-franchise-website/#comments</comments>
		<pubDate>Thu, 13 Apr 2006 22:46:22 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Content Management System]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2007/07/13/brightstar-franchise-website/</guid>
		<description><![CDATA[Client: BrightStar Work: Development Link: Live]]></description>
			<content:encoded><![CDATA[<p>Client: BrightStar<br />
Work: Development<br />
Link: <a href="http://brightstarfranchise.com/">Live</a></p>
<p><a href="http://brightstarfranchise.com"><img src='http://www.jonathanspooner.com/blog/wp-content/uploads/2007/07/bright_star_franchise.jpg' alt='BrightStar Franchise Healthcare' /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/brightstar-franchise-website/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dreamhost Promo Code, Discount.</title>
		<link>http://www.jonathanspooner.com/news/dreamhost-promo-code-discount/</link>
		<comments>http://www.jonathanspooner.com/news/dreamhost-promo-code-discount/#comments</comments>
		<pubDate>Thu, 30 Mar 2006 05:18:10 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2006/03/29/dreamhost-promo-code-discount/</guid>
		<description><![CDATA[I have had many sites on Dreamhost for a few years now I must say they have been great. I now get 20GB of storage and 1T of bandwidth for $7.95 a month. They have many useful one click installs like word press and shopping carts. They have support for Ruby on Rails and they [...]]]></description>
			<content:encoded><![CDATA[<p>I have had <a href="http://jedidiahusa.com" target="_blank">many</a> <a href="http://rsrsports.com" target="_blank">sites</a> on <a href="http://dreamhost.com" target="_blank">Dreamhost</a> for a few years now I must say they have been great.  I now get 20GB of storage and 1T of bandwidth for $7.95 a month.  They have many useful one click installs like <a href="http://wordpress.org" target="_blank">word press</a> and shopping carts.  They have support for Ruby on Rails and they just added subVersion.  I created a promo code that gets you a discount when you sign up for a new service.  Just enter <b>THESPOON</b> in the promo field when signing up. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/news/dreamhost-promo-code-discount/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Seattle Seahawks</title>
		<link>http://www.jonathanspooner.com/news/12/</link>
		<comments>http://www.jonathanspooner.com/news/12/#comments</comments>
		<pubDate>Tue, 24 Jan 2006 06:17:48 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2006/01/23/12/</guid>
		<description><![CDATA[My client RSR Sports manages Seattle Seahawks kicker Josh Brown which will be playing in the Super Bowl. Josh will be using the blog on RSRSports.com to document his experience leading up to the Super Bowl. Keep an eye on his blog.]]></description>
			<content:encoded><![CDATA[<p>My client RSR Sports manages Seattle Seahawks kicker <a href="http://rsrsports.com/driven/josh_brown.html">Josh Brown</a> which will<br />
be playing in the Super Bowl.  Josh will be using the blog on <a href="http://rsrsports.com/news">RSRSports.com</a> to document his experience leading up to<br />
the Super Bowl.  <a href="http://rsrsports.com/news">Keep an eye on his blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/news/12/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google</title>
		<link>http://www.jonathanspooner.com/news/google/</link>
		<comments>http://www.jonathanspooner.com/news/google/#comments</comments>
		<pubDate>Tue, 29 Nov 2005 06:34:20 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/?p=11</guid>
		<description><![CDATA[I just found another google service named video.google.com. You can upload your own movie clips where they are compressed and hosted by google. There are several different ways you can add meta data to your video to make it searchable. I have been uploading all of my old video clips. You can see them here]]></description>
			<content:encoded><![CDATA[<p>I just found another google service named video.google.com.  You can upload your own movie clips where they are compressed and hosted by google.  There are several different ways you can add meta data to your video to make it searchable.  I have been uploading all of my old video clips.  <a href="http://video.google.com/videosearch?q=jonathan+spooner&page=1&lv=0" target="_blank">You can see them here</a><a></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/news/google/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aviatech &#8211; Website</title>
		<link>http://www.jonathanspooner.com/web-development/aviatech-website/</link>
		<comments>http://www.jonathanspooner.com/web-development/aviatech-website/#comments</comments>
		<pubDate>Sun, 13 Nov 2005 22:58:42 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Content Management System]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2005/11/13/aviatech-website/</guid>
		<description><![CDATA[Client: Aviatech Work: Concept, Design, Develop, Post Video Editing. Link: aviatech.com]]></description>
			<content:encoded><![CDATA[<p>Client: <a href="http://www.aviatech.com">Aviatech</a><br />
Work: Concept, Design, Develop, Post Video Editing.<br />
Link: <a href="http://www.aviatech.com">aviatech.com</a></p>
<p><a href="http://www.aviatech.com"><img src='http://www.jonathanspooner.com/blog/wp-content/uploads/2007/07/aviatech.jpg' alt='Aviatech Website' /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/web-development/aviatech-website/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Studio 8</title>
		<link>http://www.jonathanspooner.com/news/studio-8/</link>
		<comments>http://www.jonathanspooner.com/news/studio-8/#comments</comments>
		<pubDate>Tue, 09 Aug 2005 04:30:30 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2005/08/08/studio-8/</guid>
		<description><![CDATA[Macromedia has released Studio 8. I can not wait to get it....go check it outStudio 8]]></description>
			<content:encoded><![CDATA[<p>Macromedia has released Studio 8.  I can not wait to get it....go check it out<br /><a href="http://www.macromedia.com/cfusion/store/html/index.cfm?store=OLS-US&trackingid=BWLJ&event=displayProduct&categoryPath=/Software/Development/Studios/Studio">Studio 8</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/news/studio-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Matisyahu</title>
		<link>http://www.jonathanspooner.com/news/matisyahu/</link>
		<comments>http://www.jonathanspooner.com/news/matisyahu/#comments</comments>
		<pubDate>Fri, 22 Jul 2005 04:56:55 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2005/07/21/matisyahu/</guid>
		<description><![CDATA[I've never been into reggae very much until FM94.9 started playing Matisyahu. I got on the world wide web tonight and no I didn't go download his album, I found a great video of him performing "King without a crown" from his new live album "LIve at Strbbs". Go check it out. He's interesting to [...]]]></description>
			<content:encoded><![CDATA[<p>I've never been into reggae very much until FM94.9 started playing Matisyahu.  I got on the world wide web tonight and no I didn't go download his album, I found a great video of him performing "King without a crown" from his new live album "LIve at Strbbs".  Go check it out.  He's interesting to look at if nothing else. </p>
<p><a href="http://ormusic.com/ecard/matisyahu/player.html">Matisyahu</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/news/matisyahu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Macromedia &#8211; Flash Player : Macromedia Flash Player Public Beta</title>
		<link>http://www.jonathanspooner.com/news/macromedia-flash-player-macromedia-flash-player-public-beta/</link>
		<comments>http://www.jonathanspooner.com/news/macromedia-flash-player-macromedia-flash-player-public-beta/#comments</comments>
		<pubDate>Thu, 21 Jul 2005 15:49:13 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/2005/07/21/macromedia-flash-player-macromedia-flash-player-public-beta/</guid>
		<description><![CDATA[Macromedia has released a public beta of the next major version of the Flash Player. We are are very excited to take advantage of its new freatures like alpha video and hopefully some new Movie Clip Methods like slideTo() and tween(). The purpose of this beta test is to make sure that all previous flash [...]]]></description>
			<content:encoded><![CDATA[<p>Macromedia has released a public beta of the next major version of the Flash Player.  We are are very excited to take advantage of its new freatures like alpha video and hopefully some new Movie Clip Methods like slideTo() and tween().  </p>
<p>The purpose of this beta test is to make sure that all previous flash sites still work in the new player.  Go get it and participate.</p>
<p><a href="http://www.macromedia.com/software/flashplayer/public_beta/">Macromedia - Flash Player : Macromedia Flash Player Public Beta</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/news/macromedia-flash-player-macromedia-flash-player-public-beta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;m Back</title>
		<link>http://www.jonathanspooner.com/news/im-back/</link>
		<comments>http://www.jonathanspooner.com/news/im-back/#comments</comments>
		<pubDate>Mon, 18 Jul 2005 04:51:57 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.jonathanspooner.com/blog/?p=2</guid>
		<description><![CDATA[Feels good to be back up and blogging. I removed my Movable Type blog a couple of months ago to make room for my portfolio and I have missed it ever since. I thought that I would have all of this free time once I gradguated but it has been quite the opposite. I have [...]]]></description>
			<content:encoded><![CDATA[<p>Feels good to be back up and blogging.  I removed my Movable Type blog a couple of months ago to make room for my portfolio and I have missed it ever since.</p>
<p>I thought that I would have all of this free time once I gradguated but it has been quite the opposite.  I have been working with ActionScript 2.0 a lot lately.  I also found all of the seceret objects such as the movie_mc.tween() and movie_mc.scaleTo();  The rumor is that they will all be released in version 8.  I also just installed the beta version of the Flash Player 8 ( Maelstorm ).  <a href="http://www.macromedia.com/software/flashplayer/public_beta/">Go get it for your self.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathanspooner.com/news/im-back/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
