<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>blogt0sk1</title>
	
	<link>http://blog.jerodsanto.net</link>
	<description>with Jerod Santo</description>
	<lastBuildDate>Mon, 30 Aug 2010 21:01:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/nomeanblog" /><feedburner:info uri="nomeanblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>LazerCatz!</title>
		<link>http://feedproxy.google.com/~r/nomeanblog/~3/CAaqjCLSvbg/</link>
		<comments>http://blog.jerodsanto.net/2010/08/lazercatz/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 21:00:51 +0000</pubDate>
		<dc:creator>Jerod</dc:creator>
				<category><![CDATA[Node]]></category>

		<guid isPermaLink="false">http://blog.jerodsanto.net/?p=928</guid>
		<description>I competed in the first ever Node Knockout over the weekend with a couple of friends and the fruit of our labor is an 8-bit multiplayer shooter called LazerCatz! It was my first foray into Node and I have to say that event-based programming is a lot easier in the browser than it is on [...]</description>
			<content:encoded><![CDATA[<p>I competed in the first ever <a href="http://nodeknockout.com/">Node Knockout</a> over the weekend with a <a href="http://twitter.com/jmhobbs">couple</a> of <a href="http://twitter.com/codypeterson">friends</a> and the fruit of our labor is an 8-bit multiplayer shooter called LazerCatz!</p>
<p><a href="http://www.lazercatzthegame.com/"><img src="http://blog.jerodsanto.net/wp-content/uploads/2010/08/lazercatz.png" alt="" title="lazercatz" width="500" height="393" class="aligncenter size-full wp-image-931" /></a></p>
<p>It was my first foray into <a href="http://nodejs.org">Node</a> and I have to say that event-based programming is a lot easier in the browser than it is on the server, at least for me anyways. There was still tons of fun to be had and the awesome <a href="http://faye.jcoglan.com/">Faye</a> library made implementing a real-time game between many players a breeze.</p>
<p>Please <a href="http://www.lazercatzthegame.com">check out the game</a> and <a href="http://nodeknockout.com/teams/lazercatz">vote/review it</a> if you have some free time. Also, if you want to participate next year please let me know, we were short a person this time around and we could have benefited from another set of hands.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jerodsanto.net/2010/08/lazercatz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.jerodsanto.net/2010/08/lazercatz/</feedburner:origLink></item>
		<item>
		<title>Extract &amp; Edit A Safari Extension</title>
		<link>http://feedproxy.google.com/~r/nomeanblog/~3/sd3thmwpo30/</link>
		<comments>http://blog.jerodsanto.net/2010/08/extract-edit-a-safari-extension/#comments</comments>
		<pubDate>Sat, 21 Aug 2010 23:59:15 +0000</pubDate>
		<dc:creator>Jerod</dc:creator>
				<category><![CDATA[OS X]]></category>
		<category><![CDATA[extensions]]></category>
		<category><![CDATA[safari]]></category>

		<guid isPermaLink="false">http://blog.jerodsanto.net/?p=922</guid>
		<description>I asked this on Twitter the other day, but alas nobody came back with an answer. Turns out it&amp;#8217;s pretty easy to edit a Safari extension that you&amp;#8217;ve downloaded. The downloaded file will have a .safariextz file extension. To extract the contents of the file, use the xar command. I&amp;#8217;ll demonstrate with the BetterSource extension. [...]</description>
			<content:encoded><![CDATA[<p>I <a href="http://twitter.com/sant0sk1/status/21673729874">asked this on Twitter</a> the other day, but alas nobody came back with an answer.</p>
<p>Turns out it&#8217;s pretty easy to edit a Safari extension that you&#8217;ve downloaded. The downloaded file will have a <span class="keyword">.safariextz</span> file extension. To extract the contents of the file, use the <span class="keyword">xar</span> command. I&#8217;ll demonstrate with the <a href="http://www.awarepixel.com/safari/bettersource/">BetterSource</a> extension.</p>

<div class="wp_syntax"><div class="code"><pre class="generic-unix-shell" style="font-family:monospace;">jerod@mbp:~/Downloads$ xar -xf BetterSource-1.0.safariextz</pre></div></div>

<p>This will create a new directory called <span class="keyword">BetterSource-1.0.safariextension</span> which has the plugin&#8217;s source files (plists, html, js, css, etc.). You can add this to Safari&#8217;s Extension Builder by: </p>
<ol>
<li> Selecting Develop -> Extension Builder from Safari&#8217;s menu bar</li>
<li> Clicking the + button in the lower-left corner of the editor window</li>
<li> Pointing the open dialog box to the BetterSource-1.0.safariextension directory</li>
</ol>
<p>And that&#8217;s all there is to it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jerodsanto.net/2010/08/extract-edit-a-safari-extension/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.jerodsanto.net/2010/08/extract-edit-a-safari-extension/</feedburner:origLink></item>
		<item>
		<title>Some Great iOS Apps</title>
		<link>http://feedproxy.google.com/~r/nomeanblog/~3/hKOE-E3u8pw/</link>
		<comments>http://blog.jerodsanto.net/2010/06/some-great-ios-apps/#comments</comments>
		<pubDate>Sat, 19 Jun 2010 14:34:45 +0000</pubDate>
		<dc:creator>Jerod</dc:creator>
				<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://blog.jerodsanto.net/?p=915</guid>
		<description>I&amp;#8217;d like to give props to a handful of iOS apps that I think are exceptional. If you haven&amp;#8217;t used any of the following, I highly suggest you check them out. Instapaper Instapaper&amp;#8217;s &amp;#8220;read later&amp;#8221; bookmarklet will change (for the better) how you consume content online. The iOS app is exactly what you need to [...]</description>
			<content:encoded><![CDATA[<p>I&#8217;d like to give props to a handful of iOS apps that I think are exceptional. If you haven&#8217;t used any of the following, I highly suggest you check them out.</p>
<h2>Instapaper</h2>
<p>Instapaper&#8217;s &#8220;read later&#8221; bookmarklet will change (for the better) how you consume content online. The iOS app is exactly what you need to read the content you&#8217;ve saved and nothing more. It&#8217;s beautifully minimal.</p>
<h2>IMDb</h2>
<p>Just wow. The developers of this little gem have almost ensured I&#8217;ll never visit their website again.</p>
<h2>Amazon</h2>
<p>I was hooked the first time I made some significant purchases while traveling 80+ mph down I-80. Massive value.</p>
<h2>Kayak</h2>
<p>This app has tons of use cases, but the flight tracker alone makes it worth its weight in gold. Realtime updates on the status of your flights? Yes, please!</p>
<h2>Strategery</h2>
<p>An addictive game akin to risk.</p>
<h2>iSSH</h2>
<p>Best of breed SSH application. Perfect when you&#8217;re in a pinch.</p>
<h2>Reeder (iPad)</h2>
<p>Seriously gorgeous interface for your Google Reader feeds. I literally wait until I&#8217;m around my iPad to check my RSS now. It&#8217;s that good.</p>
<h2>iOctocat</h2>
<p>The best way to keep up with open-source activity on GitHub.</p>
<h2>Dropbox</h2>
<p>I&#8217;m sure you already know about Dropbox. Unsurprisingly, their iOS app is great too.</p>
<h2>USA Today (iPad)</h2>
<p>Even old people would ditch their paper versions of the USA Today if they had this application on hand. Sometimes I check up on the news just to use it.</p>
<h2>NPR (iPad)</h2>
<p>Peruse and listen to tons of NPR content. So good. </p>
<h2>Twitterific (iPad)</h2>
<p>Despite the constant Twitter API Errors, this is one of the best feeling Twitter clients I&#8217;ve ever used. It takes advantage of the iPad&#8217;s form factor in every way.</p>
<h2>Google Earth (iPad)</h2>
<p>This app is nothing short of amazing. It literally puts the world in your hands as you tap, pinch, and spin the world around with ease. This is future stuff, and we are fortunate to be able to use such technologies.</p>
<hr/>
<p>Sorry for no direct links, but I was too lazy to fetch all the iTunes URLs for the apps. Just run a search in the App Store and you&#8217;ll find them with no problem.</p>
<p>Do you have any iOS apps that you absolutely love? Please let me know as I&#8217;m always on the lookout for great software.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jerodsanto.net/2010/06/some-great-ios-apps/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://blog.jerodsanto.net/2010/06/some-great-ios-apps/</feedburner:origLink></item>
		<item>
		<title>Rack, and Firebug, and Fuel. Oh Hai!</title>
		<link>http://feedproxy.google.com/~r/nomeanblog/~3/JzhJVScJ5SY/</link>
		<comments>http://blog.jerodsanto.net/2010/03/rack-and-firebug-and-fuel/#comments</comments>
		<pubDate>Sat, 20 Mar 2010 06:36:37 +0000</pubDate>
		<dc:creator>Jerod</dc:creator>
				<category><![CDATA[Meta]]></category>
		<category><![CDATA[fuel]]></category>

		<guid isPermaLink="false">http://blog.jerodsanto.net/?p=894</guid>
		<description>So there is this really cool Rack middleware written by Simon Jefford which allows you to send arbitrary messages from your Rails controllers &amp;#038; views directly to Firebug&amp;#8217;s (or Web Inspector&amp;#8217;s) console. It is great for quick debugging. If that possibility excites you, head over to my recently published article on Fuel Your Coding to [...]</description>
			<content:encoded><![CDATA[<p><a href="http://fuelyourcoding.com"><img src="http://blog.jerodsanto.net/wp-content/uploads/2010/03/fuel_coding_logo.gif" alt="" title="fuel_coding_logo" width="200" height="126" class="alignright size-medium wp-image-897" /></a></p>
<p>So there is this really cool Rack middleware written by <a href="http://sjjdev.com/">Simon Jefford</a> which allows you to send arbitrary messages from your Rails controllers &#038; views directly to Firebug&#8217;s (or Web Inspector&#8217;s) console. It is great for quick debugging. If that possibility excites you, head over to my recently published article <a href="http://fuelyourcoding.com/set-rails-logging-on-fire/">on Fuel Your Coding</a> to read all about it.</p>
<p>You may be wondering, what&#8217;s up with this <a href="http://fuelyourcoding.com/">Fuel Your Coding</a> stuff? Well, I&#8217;ll tell you what&#8217;s up.</p>
<p>I&#8217;m very happy to announce that I&#8217;ve joined the <a href="http://www.fuelbrandnetwork.com/">Fuel Network</a> as co-editor of <a href="http://fuelyourcoding.com">FYC</a>! I&#8217;m excited to help improve upon an already awesome blog by cultivating more content on the technologies that I use and love. I won&#8217;t be authoring articles there too often, but will be actively seeking and promoting quality contributions (If you&#8217;d like an opportunity to write for <a href="http://fuelyourcoding.com/">FYC</a>, please contact me).</p>
<p>What does this mean for my blog? Not too much. Like before, I&#8217;ll be writing here as inspiration hits. Which is rarely, hah!</p>
<p>If you enjoy my blog, I highly encourage you to subscribe to FYC&#8217;s <a href="http://feeds.feedburner.com/FuelYourCoding">RSS feed</a> as I&#8217;m sure you&#8217;ll find future content there very interesting.</p>
<p>Cheers!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jerodsanto.net/2010/03/rack-and-firebug-and-fuel/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.jerodsanto.net/2010/03/rack-and-firebug-and-fuel/</feedburner:origLink></item>
		<item>
		<title>Exciting Projects I Watched In February</title>
		<link>http://feedproxy.google.com/~r/nomeanblog/~3/ByiFHs8-UCw/</link>
		<comments>http://blog.jerodsanto.net/2010/03/exciting-projects-i-watched-in-february/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 16:21:50 +0000</pubDate>
		<dc:creator>Jerod</dc:creator>
				<category><![CDATA[GitHub Watch]]></category>

		<guid isPermaLink="false">http://blog.jerodsanto.net/?p=890</guid>
		<description>Another month, another handful of great open-source projects I found on GitHub. Let&amp;#8217;s get straight to it, shall we? RLOfflineDataStore &amp;#8211; A simple Cappuccino wrapper for html5 offline data storage. SlickGrid &amp;#8211; A lightening fast JavaScript grid/spreadsheet. Finding a quality client-side grid tool is tough. This might just be one. Textmate-Minimap &amp;#8211; A minimap plugin [...]</description>
			<content:encoded><![CDATA[<p>Another month, another handful of great open-source projects I found on GitHub. Let&#8217;s get straight to it, shall we?</p>
<hr/>
<strong><a href="http://github.com/Me1000/RLOfflineDataStore">RLOfflineDataStore</a></strong> &#8211; <em>A simple Cappuccino wrapper for html5 offline data storage.</em></p>
<p><strong><a href="http://github.com/mleibman/SlickGrid">SlickGrid</a></strong> &#8211; <em>A lightening fast JavaScript grid/spreadsheet.</em> Finding a quality client-side grid tool is tough. This might just be one.</p>
<p><strong><a href="http://github.com/JulianEberius/Textmate-Minimap">Textmate-Minimap</a></strong> &#8211; <em>A minimap plugin for TextMate.</em> So great for those overly sized source documents we all hate to admit we have.<br />
<span id="more-890"></span><br />
<strong><a href="http://github.com/carlhuda/bundler">Bundler</a></strong> &#8211; <em>Gemfiles are fun.</em> &#8211; Like it or not, this will be the de facto for managing ruby gems. Might as well embrace it.</p>
<p><strong><a href="http://github.com/rails/jquery-ujs">jquery-ujs</a></strong> &#8211; Rails 3 has embraced unobtrusive JavaScript, and this is the official rails.js for jQuery.</p>
<p><strong><a href="http://github.com/razorjack/quicksand">quicksand</a></strong> &#8211; <em>jQuery plugin. Reorder and filter items with a nice shuffling animation.</em> GORGEOUS!</p>
<p><strong><a href="http://github.com/wbzyl/rack-codehighlighter">rack-codehighlighter</a></strong> &#8211; <em>Rack Middleware for code highlighting.</em> This will power my blog&#8217;s syntax highlighting when I switch platforms to toto (see below).</p>
<p><strong><a href="http://github.com/ruby/ruby">ruby</a></strong> &#8211; <em>The Ruby Programming Language.</em> The official git mirror.</p>
<p><strong><a href="http://github.com/yakischloba/ruby-cisco">ruby-cisco</a></strong> &#8211; <em>Cisco Library for Ruby.</em> Remote control Cisco routers with ease.</p>
<p><strong><a href="http://github.com/jaz303/tipsy">tipsy</a></strong> &#8211; <em>Facebook-style tooltips plugin for jQuery.</em> I&#8217;m using these on almost every new project.</p>
<p><strong><a href="http://github.com/cloudhead/toto">toto</a></strong> &#8211; <em>the 10 second blog-engine for hackers.</em> So awesome. Stay tuned for more on toto in the coming weeks.</p>
<hr/>
<p>That&#8217;s it for now!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jerodsanto.net/2010/03/exciting-projects-i-watched-in-february/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://blog.jerodsanto.net/2010/03/exciting-projects-i-watched-in-february/</feedburner:origLink></item>
		<item>
		<title>Exciting Projects I Watched In January</title>
		<link>http://feedproxy.google.com/~r/nomeanblog/~3/E4HpH1m7U4A/</link>
		<comments>http://blog.jerodsanto.net/2010/02/exciting-projects-i-watched-in-january/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 16:12:36 +0000</pubDate>
		<dc:creator>Jerod</dc:creator>
				<category><![CDATA[GitHub Watch]]></category>

		<guid isPermaLink="false">http://blog.jerodsanto.net/?p=849</guid>
		<description>One of my favorite GitHub features is the ability to find and track the progress of projects that interest me. I&amp;#8217;ve decided to post the new projects I find each month on this blog since there is a high likelihood that you and I have common interests (Hey, I&amp;#8217;m curating something on the internet!). So [...]</description>
			<content:encoded><![CDATA[<p>One of my favorite <a href="http://github.com">GitHub</a> features is the ability to find and track the progress of projects that interest me. I&#8217;ve decided to post the new projects I find each month on this blog since there is a high likelihood that you and I have common interests (<a href="http://twitter.com/sant0sk1/status/6934234494">Hey, I&#8217;m curating something on the internet!</a>).</p>
<p><img src="http://blog.jerodsanto.net/wp-content/uploads/2010/02/watch-3.png" alt="" title="watch-3" width="320" height="45" class="aligncenter size-full wp-image-876" /></p>
<p> So I wrote a little script using the GitHub API to track which new projects I watch during each month. I watched 17 new projects in January. They are linked below along with their authors&#8217; descriptions and some commentary of my own:<br />
<span id="more-849"></span></p>
<hr/>
<strong><a href="http://github.com/isaac/BirdWatch">BirdWatch</a></strong> &#8211; &#8220;<em>Twitter search client written in MacRuby</em>.&#8221; I&#8217;m dying to give MacRuby a go, especially now that it has hit 0.5.</p>
<p><strong><a href="http://github.com/jfahrenkrug/CPVideoKit">CPVideoKit</a></strong> &#8211; &#8220;<em>Cappuccino &#038; Objective-J wrapper for the YouTube JavaScript API.</em>&#8221; I love all the stuff coming out of the Cappuccino community lately.</p>
<p><strong><a href="http://github.com/hammerdr/Cappuccino-Test-Extensions">Cappuccino-Test-Extensions</a></strong> &#8211; &#8220;<em>A group of extensions, classes, and more that aid developers in testing Cappuccino applications.</em>&#8221;</p>
<p><strong><a href="http://github.com/eliasklughammer/EKImageReflection">EKImageReflection</a></strong> &#8211; &#8220;<em>With EKImageReflection you can extend a regular CPImageView for displaying a reflection on it&#8217;s bottom.</em>&#8221;</p>
<p><strong><a href="http://github.com/msanders/PNGSquash">PNGSquash</a></strong> &#8211; &#8220;<em>A PNG compressor app for OS X.</em>&#8221; Great tool for pre-processing images for web use.</p>
<p><strong><a href="http://github.com/jashkenas/coffee-script">coffee-script</a></strong> &#8211; &#8220;<em>Unfancy JavaScript</em>.&#8221; This is easily the most active project I follow. Dude codes all day and night.</p>
<p><strong><a href="http://github.com/jstorimer/delayed_paperclip">delayed_paperclip</a></strong> &#8211; &#8220;<em>Process your Paperclip attachments in the background with delayed_job.</em>&#8221; A nice implementation joining two of my favorite Rails-related gems.</p>
<p><strong><a href="http://github.com/plataformatec/has_scope">has_scope</a></strong> &#8211; &#8220;<em>Maps controller filters to your resource scopes.</em>&#8221; Super-useful for filtering on index actions.</p>
<p><strong><a href="http://github.com/jamespadolsey/jQuery-Lint">jQuery-Lint</a></strong> &#8211; &#8220;<em>jQuery Lint is a simple script you can download and use with jQuery. It works over the top of jQuery and diligently reports errors and any incorrect usage of jQuery.</em>&#8221; &#8211; I want this to support Web Inspector.</p>
<p><strong><a href="http://github.com/thumblemonks/jubilator">jubilator</a></strong> &#8211; &#8220;<em>Browse public GitHub repos in style!</em>&#8221; Great for when you don&#8217;t want to clone a repo just to grok its source.</p>
<p><strong><a href="http://github.com/nakajima/makers-mark">makers-mark</a></strong> &#8211; &#8220;<em>Syntax highlight your markdown.</em>&#8221; Could be useful for statically generated blogging.</p>
<p><strong><a href="http://github.com/ryanb/nested_form">nested_form</a></strong> &#8211; &#8220;Rails plugin to conveniently handle multiple models in a single form.&#8221; &#8216;Nuff said.</p>
<p><strong><a href="http://github.com/christkv/node-mongodb-native">node-mongodb-native</a></strong> &#8211; &#8220;<em>Mongo DB Native NodeJS Driver</em>.&#8221; Two technologies I&#8217;m looking for an excuse to play with.</p>
<p><strong><a href="http://github.com/jtrupiano/rack-rewrite">rack-rewrite</a></strong> &#8211; &#8220;<em>A web server agnostic rack middleware for defining and applying rewrite rules. In many cases you can get away with Rack::Rewrite instead of writing Apache mod_rewrite rules.</em>&#8221;</p>
<p><strong><a href="http://github.com/schacon/showoff">showoff</a></strong> &#8211; &#8220;<em>the best damn presentation software a developer could ever love.</em>&#8221; Bold claim. We&#8217;ll see.</p>
<p><strong><a href="http://github.com/technoweenie/twitter-node">twitter-node</a></strong> &#8211; &#8220;<em>node.js lib that creates a streaming connection with twitter and pushes any incoming statuses to a tweet event.</em>&#8221; Could be a good learning tool.</p>
<p><strong><a href="http://github.com/proutils/webme">webme</a></strong> &#8211; &#8220;Convert your README into a Website.&#8221; Uhm, yes please!</p>
<hr/>
That wraps it up for January. I hope you find one or more of these open-source projects interesting. Stay tuned for next month&#8217;s list and <a href="http://github.com/sant0sk1">follow me</a> on GitHub to follow along!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jerodsanto.net/2010/02/exciting-projects-i-watched-in-january/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.jerodsanto.net/2010/02/exciting-projects-i-watched-in-january/</feedburner:origLink></item>
		<item>
		<title>Cappuccino On Rails</title>
		<link>http://feedproxy.google.com/~r/nomeanblog/~3/KlSOMA21LuA/</link>
		<comments>http://blog.jerodsanto.net/2010/01/cappuccino-on-rails/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 03:16:32 +0000</pubDate>
		<dc:creator>Jerod</dc:creator>
				<category><![CDATA[Cappuccino]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://blog.jerodsanto.net/?p=825</guid>
		<description>I&amp;#8217;m happy to announce the release of CappuccinoResource (CR), a library dedicated to interfacing between a Cappuccino front-end and a Rails back-end. CR should feel very familiar to Rails developers. Its interface is akin to ActiveResource and it borrows heavily from the (very good) ObjectiveResource library for the iPhone. All basic CRUD operations are supported, [...]</description>
			<content:encoded><![CDATA[<p>I&#8217;m happy to announce the release of <a href="http://github.com/sant0sk1/CappuccinoResource" rel="external">CappuccinoResource</a> (CR), a library dedicated to interfacing between a <a href="http://cappuccino.org" rel="external">Cappuccino </a>front-end and a <a href="http://rubyonrails.org" rel="external">Rails</a> back-end.</p>
<p>CR should feel very familiar to Rails developers. Its interface is akin to <a href="http://api.rubyonrails.org/classes/ActiveResource/Base.html" rel="external">ActiveResource</a> and it borrows heavily from the (very good) <a href="http://iphoneonrails.com/" rel="external">ObjectiveResource</a> library for the iPhone.</p>
<p>All basic CRUD operations are supported, and you can perform advanced finds with arbitrary parameters. A brief example of fetching a record, modifying it, and saving it:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> post <span style="color: #000;">=</span> <span style="color: #000;">&#91;</span>Post find<span style="color: #000;">:@</span><span style="color: #D14;">&quot;42&quot;</span><span style="color: #000;">&#93;</span><span style="color: #000;">;</span>
<span style="color: #000;">&#91;</span>post setTitle<span style="color: #000;">:@</span><span style="color: #D14;">&quot;Why X is Better than Y&quot;</span><span style="color: #000;">&#93;</span><span style="color: #000;">;</span>
<span style="color: #000;">&#91;</span>post save<span style="color: #000;">&#93;</span><span style="color: #000;">;</span></pre></div></div>

<p>Check out the README on the project&#8217;s page <a href="http://github.com/sant0sk1/CappuccinoResource" rel="external">on GitHub</a> for more details and usage examples.</p>
<h2>Live Demo</h2>
<p>I also created a demo application which is a simplified clone of OS X&#8217;s Address Book. The demo is <a href="http://capp-resource-example.heroku.com" rel="external">live on Heroku</a>. Check it out. The source for the demo is also <a href="http://github.com/sant0sk1/CappResourceExample" rel="external">on GitHub</a>.</p>
<p>If you&#8217;re a Rails developer waiting for a good opportunity to try out Cappuccino, there&#8217;s no better time than now.</p>
<p>If you&#8217;re a Cappuccino developer looking for an easy-to-use, powerful back-end for your applications, Rails might be the answer for you.</p>
<p>CR is a young project, but it drives one of my client applications that is production-ready (albeit not deployed), so I believe it is ready for prime time. Please try it and let me know how it goes. </p>
<p>Fork, <a href="http://github.com/sant0sk1/CappuccinoResource/issues" rel="external">report  issues</a>, et cetera.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jerodsanto.net/2010/01/cappuccino-on-rails/feed/</wfw:commentRss>
		<slash:comments>38</slash:comments>
		<feedburner:origLink>http://blog.jerodsanto.net/2010/01/cappuccino-on-rails/</feedburner:origLink></item>
		<item>
		<title>Testing Cappuccino Notifications</title>
		<link>http://feedproxy.google.com/~r/nomeanblog/~3/p-uCyu9oS_A/</link>
		<comments>http://blog.jerodsanto.net/2010/01/testing-cappuccino-notifications/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 22:17:27 +0000</pubDate>
		<dc:creator>Jerod</dc:creator>
				<category><![CDATA[Cappuccino]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://blog.jerodsanto.net/?p=815</guid>
		<description>Writing a web app using Cappuccino has a lot of benefits, one of which is a really nice message passing system wherein certain objects can register to observe events and take action when other objects post notifications of those events. Here is a very basic way to test if your app is posting event notifications [...]</description>
			<content:encoded><![CDATA[<p>Writing a web app using <a href="http://cappuccino.org" rel="external">Cappuccino</a> has a lot of benefits, one of which is a really nice message passing system wherein certain objects can register to observe events and take action when other objects post notifications of those events.</p>
<p>Here is a very basic way to test if your app is posting event notifications as you expect it to. First, create an Observer class inside a test helper file, which will be included into your tests:<br />
<span id="more-815"></span></p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #6F6F6F;">// this is TestHelper.j</span>
<span style="color: #000;">@</span><span style="color: #003366; font-weight: bold;">import</span> <span style="color: #000;">&lt;</span>Foundation<span style="color: #000;">/</span>CPObject.<span style="color: #0086B3;">j</span><span style="color: #000;">&gt;</span>
&nbsp;
<span style="color: #000;">@</span>implementation Observer <span style="color: #000;">:</span> CPObject
<span style="color: #000;">&#123;</span>
    CPArray postedNotifications<span style="color: #000;">;</span>
<span style="color: #000;">&#125;</span>
&nbsp;
<span style="color: #000;">-</span> <span style="color: #000;">&#40;</span>id<span style="color: #000;">&#41;</span>init
<span style="color: #000;">&#123;</span>
    <span style="color: #000; font-weight: bold;">if</span> <span style="color: #000;">&#40;</span>self <span style="color: #000;">=</span> <span style="color: #000;">&#91;</span><span style="color: #003366; font-weight: bold;">super</span> init<span style="color: #000;">&#93;</span><span style="color: #000;">&#41;</span>
    <span style="color: #000;">&#123;</span>
        postedNotifications   <span style="color: #000;">=</span> <span style="color: #000;">&#91;</span>CPArray array<span style="color: #000;">&#93;</span><span style="color: #000;">;</span>
    <span style="color: #000;">&#125;</span>
    <span style="color: #000; font-weight: bold;">return</span> self<span style="color: #000;">;</span>
<span style="color: #000;">&#125;</span>
&nbsp;
<span style="color: #000;">-</span> <span style="color: #000;">&#40;</span><span style="color: #000; font-weight: bold;">void</span><span style="color: #000;">&#41;</span>startObserving<span style="color: #000;">:</span><span style="color: #000;">&#40;</span>CPString<span style="color: #000;">&#41;</span>aNotificationName
<span style="color: #000;">&#123;</span>
    <span style="color: #000;">&#91;</span><span style="color: #000;">&#91;</span>CPNotificationCenter defaultCenter<span style="color: #000;">&#93;</span> addObserver<span style="color: #000;">:</span>self
                                             selector<span style="color: #000;">:@</span>selector<span style="color: #000;">&#40;</span>notificationPosted<span style="color: #000;">:</span><span style="color: #000;">&#41;</span>
                                                 <span style="color: #0086B3;">name</span><span style="color: #000;">:</span>aNotificationName
                                               object<span style="color: #000;">:</span>nil<span style="color: #000;">&#93;</span><span style="color: #000;">;</span>
<span style="color: #000;">&#125;</span>
&nbsp;
<span style="color: #000;">-</span> <span style="color: #000;">&#40;</span><span style="color: #000; font-weight: bold;">void</span><span style="color: #000;">&#41;</span>notificationPosted<span style="color: #000;">:</span><span style="color: #000;">&#40;</span>id<span style="color: #000;">&#41;</span>sender
<span style="color: #000;">&#123;</span>
    <span style="color: #000;">&#91;</span>postedNotifications addObject<span style="color: #000;">:</span><span style="color: #000;">&#91;</span>sender <span style="color: #0086B3;">name</span><span style="color: #000;">&#93;</span><span style="color: #000;">&#93;</span><span style="color: #000;">;</span>
<span style="color: #000;">&#125;</span>
&nbsp;
<span style="color: #000;">-</span> <span style="color: #000;">&#40;</span>BOOL<span style="color: #000;">&#41;</span>didObserve<span style="color: #000;">:</span><span style="color: #000;">&#40;</span>CPString<span style="color: #000;">&#41;</span>aNotificationName
<span style="color: #000;">&#123;</span>
    <span style="color: #000; font-weight: bold;">return</span> <span style="color: #000;">&#91;</span>postedNotifications containsObject<span style="color: #000;">:</span>aNotificationName<span style="color: #000;">&#93;</span><span style="color: #000;">;</span>
<span style="color: #000;">&#125;</span>
&nbsp;
<span style="color: #000;">@</span>end</pre></div></div>

<p>This class can be configured to register for certain notifications via <span class="keyword">-startObserving</span> and when they are posted, it stores them in an array (postedNotifications). You can then ask it at any time if a notification has been observed using the <span class="keyword">-didObserve</span> method and it will respond with <span class="keyword">YES</span> or <span class="keyword">NO</span>.</p>
<p>So, to use this in your tests, do something like this:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #6F6F6F;">// This is MyTest.j</span>
<span style="color: #000;">@</span><span style="color: #003366; font-weight: bold;">import</span> <span style="color: #D14;">&quot;TestHelper.j&quot;</span>
&nbsp;
<span style="color: #000;">@</span>implementation MyTest <span style="color: #000;">:</span> OJTestCase
&nbsp;
<span style="color: #000;">-</span> <span style="color: #000;">&#40;</span><span style="color: #000; font-weight: bold;">void</span><span style="color: #000;">&#41;</span>setUp
<span style="color: #000;">&#123;</span>
    observer <span style="color: #000;">=</span> <span style="color: #000;">&#91;</span><span style="color: #000;">&#91;</span>Observer alloc<span style="color: #000;">&#93;</span> init<span style="color: #000;">&#93;</span><span style="color: #000;">;</span>
<span style="color: #000;">&#125;</span>
&nbsp;
<span style="color: #000;">-</span> <span style="color: #000;">&#40;</span><span style="color: #000; font-weight: bold;">void</span><span style="color: #000;">&#41;</span>testMyMethodDidPostNotification
<span style="color: #000;">&#123;</span>
    <span style="color: #000;">&#91;</span>observer startObserving<span style="color: #000;">:@</span><span style="color: #D14;">&quot;MyMethodDidFinishExecution&quot;</span><span style="color: #000;">&#93;</span><span style="color: #000;">;</span>
    <span style="color: #6F6F6F;">// do stuff that you would expect to get the notification posted</span>
    <span style="color: #000;">&#91;</span>self assertTrue<span style="color: #000;">:</span><span style="color: #000;">&#91;</span>observer didObserve<span style="color: #000;">:@</span><span style="color: #D14;">&quot;MyMethodDidFinishExecution&quot;</span><span style="color: #000;">&#93;</span><span style="color: #000;">;</span>
<span style="color: #000;">&#125;</span>
&nbsp;
<span style="color: #000;">@</span>end</pre></div></div>

<p>You could get more fancy with this (like allowing object observing and not just name observing), but the concept doesn&#8217;t change. Hope this helps anybody thinking about how to test their Capp apps!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jerodsanto.net/2010/01/testing-cappuccino-notifications/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://blog.jerodsanto.net/2010/01/testing-cappuccino-notifications/</feedburner:origLink></item>
		<item>
		<title>Rubular</title>
		<link>http://feedproxy.google.com/~r/nomeanblog/~3/DvSgfrOnink/</link>
		<comments>http://blog.jerodsanto.net/2009/12/rubular/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 14:12:29 +0000</pubDate>
		<dc:creator>Jerod</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://blog.jerodsanto.net/?p=810</guid>
		<description>Most of the online regular expression testers I&amp;#8217;ve used just aren&amp;#8217;t that useful, but Rubular is the exception. It uses AJAX appropriately, has a clean aesthetic, and the quick reference at the bottom of the page is so useful it hurts. Plus, it has great features such as match extraction and the ability to create [...]</description>
			<content:encoded><![CDATA[<p>Most of the online regular expression testers I&#8217;ve used just aren&#8217;t that useful, but <a href="http://rubular.com" rel="external">Rubular</a> is the exception. It uses AJAX appropriately, has a clean aesthetic, and the quick reference at the bottom of the page is so useful it hurts. Plus, it has great features such as match extraction and the ability to create permalinks to your results.</p>
<p><img src="http://blog.jerodsanto.net/wp-content/uploads/2009/12/rubular.png" alt="rubular" title="rubular" width="650" height="279" class="aligncenter size-full wp-image-812" /></p>
<p><a href="http://rubular.com" rel="external">Rubular</a> is only for Ruby regexes. I wish somebody would make one for JavaScript. Jubular, anyone?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jerodsanto.net/2009/12/rubular/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://blog.jerodsanto.net/2009/12/rubular/</feedburner:origLink></item>
		<item>
		<title>280 Atlas Introductory Screencast</title>
		<link>http://feedproxy.google.com/~r/nomeanblog/~3/V97wqvYWMW0/</link>
		<comments>http://blog.jerodsanto.net/2009/11/280-atlas-introductory-screencast/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 19:03:01 +0000</pubDate>
		<dc:creator>Jerod</dc:creator>
				<category><![CDATA[Cappuccino]]></category>
		<category><![CDATA[atlas]]></category>
		<category><![CDATA[screencast]]></category>

		<guid isPermaLink="false">http://blog.jerodsanto.net/?p=801</guid>
		<description>The much anticipated 280 Atlas developer beta is under way and I recorded a brief screencast introducing the basic concepts of creating applications with Atlas. In it I build a simplified version of the payment calculator from chapter 2 of Cocoa Design Patterns. Topics covered include creating a Cib-based project, laying out an interface and [...]</description>
			<content:encoded><![CDATA[<p>The much anticipated <a href="https://atlas-beta.heroku.com/" rel="external">280 Atlas developer beta</a> is under way and I recorded a brief screencast introducing the basic concepts of creating applications with Atlas.</p>
<p>In it I build a simplified version of the payment calculator from chapter 2 of <a href="http://www.amazon.com/gp/product/0321535022?ie=UTF8&#038;tag=standadeviat-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0321535022">Cocoa Design Patterns</a>.</p>
<p>Topics covered include creating a Cib-based project, laying out an interface  and binding outlets/actions to working code.</p>
<p>Hope it helps!</p>
<p><object width="640" height="360"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=7646585&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=7646585&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="640" height="360"></embed></object>
<p><a href="http://vimeo.com/7646585">280 Atlas Introductory Screencast</a> from <a href="http://vimeo.com/sant0sk1">Jerod Santo</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>Related Posts:</p>
<ul>
<li><a href="/2009/11/learning-cappuccino-a-linked-list">Learning Cappuccino: Resource List</a></li>
<li><a href="/2009/10/cappuccinoflow">CappuccinoFlow</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.jerodsanto.net/2009/11/280-atlas-introductory-screencast/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		<feedburner:origLink>http://blog.jerodsanto.net/2009/11/280-atlas-introductory-screencast/</feedburner:origLink></item>
	</channel>
</rss>
