<?xml version="1.0" encoding="UTF-8"?>
<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>Trevor Turk</title>
	
	<link>http://trevorturk.com</link>
	<description />
	<lastBuildDate>Thu, 26 Aug 2010 13:52:17 +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/trevorturk" /><feedburner:info uri="trevorturk" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>How to get started with Rails</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/sxtomc1E5f8/</link>
		<comments>http://trevorturk.com/2010/08/26/how-to-get-started-with-rails/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 13:52:17 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://trevorturk.com/?p=2148</guid>
		<description><![CDATA[I&#8217;ve got a buddy that wants to learn Rails. He doesn&#8217;t have much (if any) experience with web development, but he&#8217;s a smart dude and I expect he&#8217;ll be able to pick this stuff up quickly. So, I&#8217;ve concocted a 3-part &#8220;getting started with Rails&#8221; class that he&#8217;s taking&#8230; where by &#8220;class he&#8217;s taking&#8221; I [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve got a buddy that wants to learn Rails. He doesn&#8217;t have much (if any) experience with web development, but he&#8217;s a smart dude and I expect he&#8217;ll be able to pick this stuff up quickly. </p>
<p>So, I&#8217;ve concocted a 3-part &#8220;getting started with Rails&#8221; class that he&#8217;s taking&#8230; where by &#8220;class he&#8217;s taking&#8221; I mean I&#8217;m sending him 3 emails, 1 at a time, and forcing him to go through all of the headaches and bullshit associated with &#8220;getting started&#8221; with as little help from me as possible. This is a good thing because it&#8217;ll take less of my time, sure, but mainly because you can&#8217;t learn anything about anything when someone is holding your hand the whole way through. </p>
<p><b>Step 1</b>: Complete the <a href="http://guides.rubyonrails.org/getting_started.html">Getting Started with Rails</a> tutorial</p>
<p>First, I&#8217;ve sent my friend to the absolutely fantastic (and free!) Rails Guides. The instructions I&#8217;ve provided are essentially to skip the first &#8220;assumptions&#8221; section (since he&#8217;s using OS X) and to email me when he&#8217;s finished. This is a great way to get someone started quickly. Sure, they&#8217;re going to miss out on some of the finer points about the Ruby language itself, but we&#8217;ll come back to that after getting him hooked on Rails first. </p>
<p><b>Step 2</b>: Push your app to <a href="http://github.com">GitHub</a> and deploy it to <a href="http://heroku.com/">Heroku</a></p>
<p>Second, I told my friend to figure out how to push his code up to GitHub for me to review, and then to deploy it to Heroku for me to play with. The hints I&#8217;ve given him are to start by installing <a href="http://github.com/mxcl/homebrew">Homebrew</a> and then Git with Homebrew. This is a great way to get someone familiar with the tools they&#8217;re going to be using if they stick with Rails. Plus, I know from first-hand experience that there&#8217;s a great feeling of accomplishment associated with putting your first app up on the world wide webs. </p>
<p><b>Step 3</b>: Make something</p>
<p>Third, I&#8217;ll be telling this friend to think up a project and to make it happen. This is the most important step, in my opinion. At this point, he knows the bare minimum necessary to &#8220;get started&#8221; so it&#8217;s time to remove the training wheels and to go for a ride. Of course, I&#8217;ll be available to help him out when he gets stuck along the way, but what better way is there to learn than by doing? </p>
<p><b>Extra credit</b></p>
<p>Finally, I have in mind 3 additional things that I&#8217;d like my friend to consider while he&#8217;s embarking on his journey. The first is to apply for membership into <a href="http://weblog.rubyonrails.org/2008/5/2/help-improve-rails-documentation-on-git-branch">docrails</a>, because he&#8217;s in a great position to help improve the documentation and guides with his fresh set of newbie eyes. The second is to read the fanatically helpful (and short) <a href="http://pine.fm/LearnToProgram/">Learn to Program</a> book. This should help fill in the gaps that we smoothed over when we skipped ahead to building Rails apps right out of the gate. Finally, I&#8217;ll guilt him into reading the <a href="http://guides.rubyonrails.org/testing.html">Guide to Testing Rails Applications</a> because testing is super important ;)</p>
<p><b>Conclusion</b></p>
<p>That&#8217;s about it, then. I&#8217;m hoping that this little strategy will work, and I&#8217;m interested in hearing your experiences about getting people started with Rails or web development in general. Shouldn&#8217;t there be some kind of online school for this sort of thing? It surely doesn&#8217;t take a masters degree in computer science to get started building web apps, but I feel like there&#8217;s some kind of middle ground that&#8217;s missing&#8230; </p>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/sxtomc1E5f8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2010/08/26/how-to-get-started-with-rails/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2010/08/26/how-to-get-started-with-rails/</feedburner:origLink></item>
		<item>
		<title>Links for 10-25-10</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/ocFTSbUlT5c/</link>
		<comments>http://trevorturk.com/2010/08/25/links-for-10-25-10/#comments</comments>
		<pubDate>Wed, 25 Aug 2010 20:03:22 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://trevorturk.com/?p=2146</guid>
		<description><![CDATA[Extensible Autocomplete « jQuery UI Blog The release of the Autocomplete widget in jQuery UI 1.8 was a pretty important milestone for the jQuery UI team. If you’ve looked at the widget, you may have noticed that there are only four options, far fewer than our other plugins. Unlike progressbar, our plugin with the fewest [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.jqueryui.com/2010/08/extensible-autocomplete/">Extensible Autocomplete « jQuery UI Blog</a></p>
<blockquote><p>The release of the Autocomplete widget in jQuery UI 1.8 was a pretty important milestone for the jQuery UI team. If you’ve looked at the widget, you may have noticed that there are only four options, far fewer than our other plugins. Unlike progressbar, our plugin with the fewest options, Autocomplete’s small API isn’t a direct result of the plugin’s simplicity. In fact, Autocomplete is quite complex.</p>
</blockquote>
<p><a href="http://dmathieu.com/en/rails/create-your-own-carrierwave-processors">Create your own CarrierWave processors</a></p>
<blockquote><p>As you can see, CarrierWave allows us to create generic processors so you can get your images exactly as you want them. I&#8217;m actually quite surprise to see there&#8217;s not a lot of open source processors running wild.</p>
</blockquote>
<p><a href="http://tom.preston-werner.com/2010/08/23/readme-driven-development.html">Readme Driven Development</a></p>
<blockquote><p>Consider the process of writing the Readme for your project as the true act of creation. This is where all your brilliant ideas should be expressed. This document should stand on its own as a testament to your creativity and expressiveness. The Readme should be the single most important document in your codebase; writing it first is the proper thing to do.</p>
</blockquote>
<p><a href="http://pieratt.tumblr.com/post/977179815/in-praise-of-quitting-your-job">In Praise of Quitting Your Job</a></p>
<blockquote><p>Creativity is the manifestation of lateral thinking, and without tangible results, it becomes stunted. We have to see the fruits of our labors, good or bad, or there’s no motivation to proceed, nothing to learn from to inform the next decision.</p>
</blockquote>
<p><a href="http://wiki.nginx.org/NginxHttpProxyModule#proxy_cache">NginxHttpProxyModule</a></p>
<blockquote><p>The cache honors backend&#8217;s &#8220;Expires&#8221;, &#8220;Cache-Control: no-cache&#8221;, and &#8220;Cache-Control: max-age=XXX&#8221; headers since version 0.7.48. Since version 7.66, &#8220;private&#8221; and &#8220;no-store&#8221; are also honored. [Somewhat of an alternative to Varnish, built right into nginx.]</p>
</blockquote>
<p><a href="http://labs.headlondon.com/2010/07/skinny-daemons/">Skinny daemons</a></p>
<blockquote><p>The basic idea here is to use the thin webserver as a container for whatever app or service you want to run inside it. The whole thing can then be packaged as a rubygem, and you end up with an easily installable service which can be used by any programmer who can send an HTTP request – not just Rubyists.</p>
</blockquote>
<p><a href="http://ryanfreitas.tumblr.com/post/968361763/35-lessons-in-35-years">35 Lessons in 35 Years</a></p>
<blockquote><p>My father always told me that the day we stop learning is the day we die. I wrote this as a sort of preparation for my 35th birthday last week.</p>
</blockquote>
<p><a href="http://www.softwarebyrob.com/2010/08/18/why-free-plans-dont-work/">Why Free Plans Don’t Work</a></p>
<blockquote><p>If we have thousands of users that don’t increase awareness and will never pay for our product, why do we insist in offering something that’s going to hurt our business? Maybe we should just skip that free plan and focus on making money instead.</p>
</blockquote>
<p><a href="http://jquerymobile.com/blog/">jQuery Mobile</a></p>
<blockquote><p>The jQuery project is really excited to announce the work that we’ve been doing to bring jQuery to mobile devices. Not only is the core jQuery library being improved to work across all of the major mobile platforms, but we’re also working to release a complete, unified, mobile UI framework.</p>
</blockquote>
<p><a href="http://blog.cloudant.com/dynamo-and-couchdb-clusters?c=1">Dynamo and CouchDB Clusters &#8211; Cloudant</a></p>
<blockquote><p>For a while, CouchDB was described as a &#8220;distributed, fault-tolerant and schema-free document-oriented database accessible via a RESTful HTTP/JSON API.&#8221; The story about CouchDB&#8217;s &#8216;distributed&#8217; description has always involved its multi-master replication.  In this sense, it is not truly a horizontally scalable database, as noted here.  With the availability of Cloudant&#8217;s new hosted service, a new option has entered the scene.  Our clustering is similar to Voldemort, Cassandra, or Riak, as it implements a version of Amazon&#8217;s Dynamo.</p>
</blockquote>
<p><a href="http://www.nytimes.com/2010/08/08/business/08consume.html?_r=2&#038;pagewanted=all">Consumers Find Ways to Spend Less and Find Happiness</a></p>
<blockquote><p>“The idea that you need to go bigger to be happy is false,” she says. “I really believe that the acquisition of material goods doesn’t bring about happiness.”</p>
</blockquote>
<p><a href="http://brainspl.at/articles/2010/08/13/4-years-at-engine-yard-what-a-long-strange-trip-its-been">4 years at Engine Yard, what a long strange trip it&#8217;s been.</a></p>
<blockquote><p>So by now most folks who know me know that I have resigned from the startup I co-founded, namely Engine Yard Inc.</p>
</blockquote>
<p><a href="http://cotweet.com/">CoTweet</a></p>
<blockquote><p>CoTweet is a platform that helps companies reach and engage customers using Twitter.</p>
</blockquote>
<p><a href="http://articles.slicehost.com/2010/8/6/basic-linux-task-scheduling-with-cron">Slicehost Articles: Basic Linux task scheduling with cron</a></p>
<blockquote><p>Sometimes you want to run commands nightly or weekly. You could just log in and run them yourself, but scheduling those tasks with cron is less hassle in the long run. [Awesome 3 part series on cron basics.]</p>
</blockquote>
<p><a href="http://robots.thoughtbot.com/post/913789769/reward-your-zoomers">Reward your zoomers!</a></p>
<blockquote><p>When you’re viewing content on a mobile device one of the most common uses is to zoom in on content to view it larger so it’s easier to read or tap. This makes text look crisp and beautiful, especially on the latest high resolution mobile screens, but a side effect is something terrible: images look much much worse. Why should mobile users be punished for zooming in?</p>
</blockquote>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/ocFTSbUlT5c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2010/08/25/links-for-10-25-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2010/08/25/links-for-10-25-10/</feedburner:origLink></item>
		<item>
		<title>Easy ajax forms with Rails 3 and jQuery</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/L2im6pEp1j8/</link>
		<comments>http://trevorturk.com/2010/08/24/easy-ajax-forms-with-rails-3-and-jquery/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 21:47:10 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://trevorturk.com/?p=2097</guid>
		<description><![CDATA[Here&#8217;s a little trick you can use to dynamically create remote forms with very little effort. This particular example shows how to create checkboxes that, when clicked, will submit the form and update the record in the database all without leaving the page. First, we&#8217;ll create the form anywhere in our app: Note the remote [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a little trick you can use to dynamically create remote forms with very little effort. This particular example shows how to create checkboxes that, when clicked, will submit the form and update the record in the database all without leaving the page. </p>
<p>First, we&#8217;ll create the form anywhere in our app:</p>
<p><script src="http://gist.github.com/548387.js?file=index.html.erb"></script></p>
<p>Note the <i>remote => true</i> form option and <i>submittable</i> css class. </p>
<p>In order to accept the form, we&#8217;ll need to create the corresponding controller action:</p>
<p><script src="http://gist.github.com/548387.js?file=tickets_controller.rb"></script></p>
<p>Then, we&#8217;ll use a little bit of jQuery that tells the browser to submit the form if any element with the class <i>submittable</i> is clicked:</p>
<p><script src="http://gist.github.com/548387.js?file=application.js"></script></p>
<p>Finally, we may want to perform some action after the form is submitted:</p>
<p><script src="http://gist.github.com/548387.js?file=update.js.erb"></script></p>
<p>This is just a quick little example, but you can imagine how the technique could be applied to a lot of different things. Rails 3 and jQuery make it really, really easy to submit forms on the fly without reloading the page or even having the user click <i>submit</i>. </p>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/L2im6pEp1j8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2010/08/24/easy-ajax-forms-with-rails-3-and-jquery/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2010/08/24/easy-ajax-forms-with-rails-3-and-jquery/</feedburner:origLink></item>
		<item>
		<title>Links for 8-5-10</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/-GLy9FigsLw/</link>
		<comments>http://trevorturk.com/2010/08/05/links-for-8-5-10/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 22:41:52 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://trevorturk.com/?p=2081</guid>
		<description><![CDATA[Not weekly, officially. Quickly Generate Random Dates in Ruby It&#8217;s easy to use and obviously gives you more varied results than doing Time.now like most of us do all the time we need a date. Just say Time.random instead. What the HTTP is CouchApp? This blog post is in response to a lot of well-deserved [...]]]></description>
			<content:encoded><![CDATA[<p>Not weekly, officially.</p>
<p><a href="http://www.jroller.com/obie/entry/quickly_generate_random_dates_in">Quickly Generate Random Dates in Ruby</a></p>
<blockquote><p>It&#8217;s easy to use and obviously gives you more varied results than doing Time.now like most of us do all the time we need a date. Just say Time.random instead.</p>
</blockquote>
<p><a href="http://wiki.couchapp.org/page/what-is-couchapp#/">What the HTTP is CouchApp?</a></p>
<blockquote><p>This blog post is in response to a lot of well-deserved confusion in the community around CouchApps. We haven&#8217;t been clear enough in the past (either in technical description or in the notion of the project). I hope to change all that (with your help). This is just the beginning.</p>
</blockquote>
<p><a href="http://37signals.com/svn/posts/2486-bootstrapped-profitable-proud-github">Bootstrapped, Profitable, &#038; Proud: GitHub</a></p>
<blockquote><p>Q&#038;A with Chris Wanstrath, CEO and Co-Founder of GitHub. This is part of our “Bootstrapped, Profitable, &#038; Proud” series which profiles companies that have $1MM+ in revenues, didn’t take VC, and are profitable.</p>
</blockquote>
<p><a href="http://jamesgolick.com/2010/8/1/introducing-rollout-condionally-roll-out-features-with-redis..html">Introducing rollout: Condionally roll out features with redis</a></p>
<blockquote><p>When we&#8217;re ready to alpha the feature, we&#8217;ll roll it out to staff. For beta, we might roll it out to some specific friends or people who request access. Then, when it&#8217;s time to go live, we&#8217;ll roll it out to a percentage of people at a time to make sure that any remaining performance issues are caught without bringing down the entire application. If we do find a problem, we need to be able to disable the feature in real-time. We do all of this using a tool we put together called rollout.</p>
</blockquote>
<p><a href="http://blog.darkhax.com/2010/07/30/auto-scale-your-resque-workers-on-heroku">Auto-scale your Resque workers on Heroku</a></p>
<blockquote><p>This app I’m working on, I’m hopefully going to have to pay for at some point, as I hope enough people will want to use it that the free stuff from Heroku just won’t cut it. However, the less I can pay the better, and background job workers aren’t free on Heroku. They are, fortunately, billed by the second.</p>
</blockquote>
<p><a href="http://blog.redistogo.com/2010/07/26/resque-with-redis-to-go/">Resque with Redis To Go</a></p>
<blockquote><p>Resque is a queueing system that is backed by Redis. Common use cases include sending emails and processing data. This tutorial will cover setting up Resque with Rails and Redis To Go [and Heroku]</p>
</blockquote>
<p><a href="http://craigmod.com/journal/kickstartup/">Kickstartup</a></p>
<blockquote><p>Successful fundraising with Kickstarter.com &#038; (re)making Art Space Tokyo</p>
</blockquote>
<p><a href="http://pivotallabs.com/talks/103-agile-the-pivotal-way">Agile the Pivotal Way</a></p>
<blockquote><p>Ian McFarland, Principal and VP of Technology for Pivotal Labs, reprises his popular RailsConf 2010 talk. Ian describes the technical and social aspects of how Pivotal practices agile software development. [interesting talk. Subscribed to the podcast, too.]</p>
</blockquote>
<p><a href="http://zachholman.com/2010/07/enslaving-branches-how-github-does-enterprise/">Enslaving Branches: How GitHub Does Enterprise</a></p>
<blockquote><p>FI is aimed at larger companies that want to host their own version of GitHub on their own hardware. We ship them a full, self-contained stack, and once installed they have their own private github.com on their network.</p>
</blockquote>
<p><a href="http://paulgraham.com/addiction.html">The Acceleration of Addictiveness</a></p>
<blockquote><p>Most people I know have problems with Internet addiction. We&#8217;re all trying to figure out our own customs for getting free of it.</p>
</blockquote>
<p><a href="http://blog.envylabs.com/2010/07/no-callbacks-no-threads-ruby-1-9/?utm_source=twitterfeed&#038;utm_medium=twitter">No Callbacks, No Threads &#038; Ruby 1.9</a></p>
<blockquote><p>In the talk he discusses the state of the Ruby VM and why we should standardize an asynchronous Ruby stack which takes advantage of Ruby 1.9, Fibers, and non-blocking database drivers to make Ruby (and Rails) more scalable.</p>
</blockquote>
<p><a href="http://blog.facebook.com/blog.php?post=409753352130">500 Million Stories | Facebook</a></p>
<blockquote><p>As of this morning, 500 million people all around the world are actively using Facebook to stay connected with their friends and the people around them.</p>
</blockquote>
<p><a href="http://laughingmeme.org/2006/12/08/twitter-curve/">Twitter Curve</a></p>
<blockquote><p>Bad mornings are the ones where I sit at home compulsively unbolding things hoping that somewhere in there there will be the gem of connection and stimuli that gets me out the door.</p>
</blockquote>
<p><a href="http://www.ftrain.com/editors-ship-dammit.html">Real Editors Ship</a></p>
<blockquote><p>&#8230;and I grieve for the spirit of Work, killed by her evil child, Workflow.</p>
</blockquote>
<p><a href="http://librelist.com/browser/hacketyhack/2010/7/20/on-camping-vs-sinatra/">On Camping vs Sinatra</a></p>
<blockquote><p>[Makes me want to take another look at Camping, since I only checked it out when I was just getting started with Ruby.]</p>
</blockquote>
<p><a href="http://blog.heroku.com/archives/2010/7/20/nosql/">NoSQL, Heroku, and You</a></p>
<blockquote><p>Why is NoSQL generating so much buzz? What does it mean for you, the application developer? And what place does NoSQL have for apps running on the Heroku platform?</p>
</blockquote>
<p><a href="http://transloadit.com/">Transloadit</a></p>
<blockquote><p>Fantastic file uploading for your web application. [Resize images, encode videos, extract thumbnails, store in s3.]</p>
</blockquote>
<p><a href="http://wrttn.in/">wrttn.in</a></p>
<blockquote><p>a simple online notepad</p>
</blockquote>
<p><a href="http://dirpy.com/">Dirpy</a></p>
<blockquote><p>YouTube to Mp3 Converter and YouTube Video Downloader</p>
</blockquote>
<p><a href="http://www.paulhammond.org/2010/06/trunk/">Always ship trunk</a></p>
<blockquote><p>I spoke at the O&#8217;Reilly Velocity conference this afternoon about using version control to manage web services.</p>
</blockquote>
<p><a href="http://code.google.com/p/rails-twelve-hour-time-plugin/">rails-twelve-hour-time-plugin</a></p>
<blockquote><p>This view plugin adds AM/PM (12 hour time) support to the core DateHelper methods.</p>
</blockquote>
<p><a href="http://wiki.postgresql.org/wiki/Illustrated_9_0">What&#8217;s new in PostgreSQL 9.0</a></p>
<blockquote><p>This document showcases many of the latest developments in PostgreSQL 9.0, compared to the last major release – PostgreSQL 8.4. There are more than 200 improvements in this release.</p>
</blockquote>
<p><a href="http://www.quora.com/Why-does-Quora-use-MySQL-as-the-data-store-rather-than-NoSQLs-such-as-Cassandra-MongoDB-CouchDB-etc.">Why does Quora use MySQL as the data store rather than NoSQLs such as Cassandra, MongoDB, CouchDB, etc.?</a></p>
<blockquote><p>What were the considerations they took into account when choosing MySQL as the data store?</p>
</blockquote>
<p><a href="http://www.infoq.com/news/2010/05/7-Lessons-Reddit">InfoQ: 7 Lessons Learned at Reddit</a></p>
<blockquote><p>Steve Huffman, co-founder of Reddit, shares the main lessons he learned scaling Reddit from a small web application to a large social website.</p>
</blockquote>
<p><a href="http://blog.leetsoft.com/2007/5/22/the-secret-to-memcached">The Secret to Memcached</a></p>
<blockquote><p>There are many ways to use this elaborate hash table and many ways which are more trouble then they are worth. In our experience the key to use memcached effectively is to ask it for the exact thing you want, but i’m getting ahead of myself.</p>
</blockquote>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/-GLy9FigsLw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2010/08/05/links-for-8-5-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2010/08/05/links-for-8-5-10/</feedburner:origLink></item>
		<item>
		<title>Using Embedly the Quick and Dirty Way</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/juqGkW32CXM/</link>
		<comments>http://trevorturk.com/2010/06/27/using-embedly-the-quick-and-dirty-way/#comments</comments>
		<pubDate>Sun, 27 Jun 2010 22:41:31 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://trevorturk.com/?p=2079</guid>
		<description><![CDATA[The Embedly API allows developers to embed videos, images and rich media from 102 (and counting) services through one API. To me, it&#8217;s essentially a one-stop shop for getting oEmbed responses from just about every service that supports embedding rich media. I know there are a few open source Ruby libraries that help you accomplish [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://api.embed.ly/">Embedly</a> API allows developers to embed videos, images and rich media from 102 (and counting) services through one API. To me, it&#8217;s essentially a one-stop shop for getting <a href="http://oembed.com/">oEmbed</a> responses from just about every service that supports embedding rich media. </p>
<p>I know there are <a href="http://github.com/search?type=Repositories&#038;language=ruby&#038;q=oembed&#038;repo=&#038;langOverride=&#038;x=24&#038;y=24&#038;start_value=1">a few open source Ruby libraries</a> that help you accomplish this kind of thing, but I&#8217;ve found that using Embedly in a quick and dirty fashion is really quite easy. Here&#8217;s an example that I&#8217;m using to embed videos on a new site I&#8217;m working on:</p>
<p><script src="http://gist.github.com/454990.js?file=gistfile1.builder"></script></p>
<p><script src="http://gist.github.com/454990.js?file=gistfile2.builder"></script></p>
<p>This uses <a href="http://github.com/archiloque/rest-client">rest-client</a> and <a href="http://flori.github.com/json/">JSON</a>. It&#8217;s about all I&#8217;ve needed so far. </p>
<p>I know I should be validating the provided URL against Embedly&#8217;s <a href="http://api.embed.ly/documentation#services">services API</a>, but I haven&#8217;t gotten to that quite yet. I&#8217;ll whip up another post when I do, though. </p>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/juqGkW32CXM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2010/06/27/using-embedly-the-quick-and-dirty-way/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2010/06/27/using-embedly-the-quick-and-dirty-way/</feedburner:origLink></item>
		<item>
		<title>Please update your RSS reader</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/bwfS2U-8LYc/</link>
		<comments>http://trevorturk.com/2010/06/23/please-update-your-rss-reader/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 22:41:07 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://trevorturk.com/?p=2076</guid>
		<description><![CDATA[I&#8217;ve changed the location of this RSS feed to the following: http://feeds.feedburner.com/trevorturk Please update your RSS reader if you haven&#8217;t already, as the old &#8220;almosteffortless&#8221; feed will be removed.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve changed the location of this RSS feed to the following:</p>
<p><a href="http://feeds.feedburner.com/trevorturk">http://feeds.feedburner.com/trevorturk</a></p>
<p>Please update your RSS reader if you haven&#8217;t already, as the old &#8220;almosteffortless&#8221; feed will be removed.</p>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/bwfS2U-8LYc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2010/06/23/please-update-your-rss-reader/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2010/06/23/please-update-your-rss-reader/</feedburner:origLink></item>
		<item>
		<title>Sprinkle Packages</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/GPOjqv6IrJA/</link>
		<comments>http://trevorturk.com/2010/06/23/sprinkle-packages/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 22:40:36 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://trevorturk.com/?p=2073</guid>
		<description><![CDATA[I just pushed a small collection of packages for Sprinkle up to Github: http://github.com/trevorturk/sprinkle-packages I want to give a big thanks to Timelines, Inc. for sponsoring the development of these packages. Check out http://timelines.com if you&#8217;re interested in historical events and what happened on this week in history. Sprinkle is a software provisioning tool you [...]]]></description>
			<content:encoded><![CDATA[<p>I just pushed a small collection of packages for <a href="http://github.com/crafterm/sprinkle">Sprinkle</a> up to Github:</p>
<p><a href="http://github.com/trevorturk/sprinkle-packages">http://github.com/trevorturk/sprinkle-packages</a></p>
<p>I want to give a big thanks to <a href="http://timelines.com">Timelines, Inc.</a> for sponsoring the development of these packages.</p>
<p>Check out <a href="http://timelines.com">http://timelines.com</a> if you&#8217;re interested in historical events and what happened on this week in history.</p>
<p><a href="http://github.com/crafterm/sprinkle">Sprinkle</a> is a software provisioning tool you can use to build remote servers. It&#8217;s kind of like a simple version of <a href="http://github.com/opscode/chef">Chef</a>, I think.</p>
<p>Some of these examples packages include ones for nginx with Passenger, Ruby Enterprise, Monit, memcached, Capistrano, Varnish, etc.</p>
<p>I don&#8217;t really intend to update these packages, nor do I think they&#8217;re entirely complete or exactly right for your needs. I&#8217;ve pulled them out of existing Sprinkle stacks, so they probably won&#8217;t even run as-is. Still, they may serve as a useful starting point for someone&#8230;. they&#8217;ve definitely been handy for me.</p>
<p>Enjoy!</p>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/GPOjqv6IrJA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2010/06/23/sprinkle-packages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2010/06/23/sprinkle-packages/</feedburner:origLink></item>
		<item>
		<title>Weekly Digest, 6-22-10</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/84JsdcMAyM0/</link>
		<comments>http://trevorturk.com/2010/06/22/weekly-digest-6-22-10/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 22:40:18 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://trevorturk.com/?p=2070</guid>
		<description><![CDATA[Github &#8211; Tom Preston-Werner A chat with Tom Preston-Werner to talk about Github and their server/software architecture. Introducing Sencha Touch On Tuesday, we announced that Ext JS, jQTouch and Raphaël were combining to form Sencha. We said you wouldn’t have long to wait to see some amazing results. So here they are! Today, we’re overwhelmingly, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://webpulp.tv/post/708686185/github-tom-preston-werner">Github &#8211; Tom Preston-Werner</a></p>
<blockquote><p>A chat with Tom Preston-Werner to talk about Github and their server/software architecture.</p>
</blockquote>
<p><a href="http://www.sencha.com/blog/2010/06/17/introducing-sencha-touch-html5-framework-for-mobile/">Introducing Sencha Touch</a></p>
<blockquote><p>On Tuesday, we announced that Ext JS, jQTouch and Raphaël were combining to form Sencha. We said you wouldn’t have long to wait to see some amazing results. So here they are! Today, we’re overwhelmingly, insanely, ridiculously excited to introduce Sencha Touch, the first HTML5 framework for mobile devices.</p>
</blockquote>
<p><a href="http://thingsaaronmade.com/blog/improving-application-throughput-900-percent-with-asynchronous-responses-in-rails-3.html">Improving application throughput 9x with asynchronous responses in Rails 3</a></p>
<blockquote><p>My research turned up a lot of work by Ilya Grigorik and Mike Perham that pushed toward this goal. Rack/Fiber-Pool by Mike is a piece of Rack middleware that runs each request in it&#8217;s own Fiber, allowing the possibility of easy cooperative scheduling in Rack applications. While EM-Synchrony provides a set of Fiber-aware EventMachine clients for common things like HTTP requests, Memcached, MySQL and Mongo.</p>
</blockquote>
<p><a href="http://github.com/ioquatix/jquery-syntax">ioquatix&#8217;s jquery-syntax</a></p>
<blockquote><p>JavaScript client-side syntax highlighting</p>
</blockquote>
<p><a href="http://paulgraham.com/int.html">An Interview about Programmers from a 7th Grader</a></p>
<blockquote><p>Programming is something you learn by doing. So don&#8217;t be passive. Don&#8217;t wait for classes to teach you how to program. The way you learn is by starting projects of your own.</p>
</blockquote>
<p><a href="http://www.lettersofnote.com/2010/06/pixar-films-dont-get-finished-they-just.html">Letters of Note: Pixar films don&#8217;t get finished, they just get released</a></p>
<blockquote><p>You are sure right about the importance of a good story in movies. Unfortunately, it&#8217;s not as easy as it sounds. It takes a lot of work (and rework, and rework and rework) to get it right. And even then quite often we&#8217;re not 100% pleased. As John Lasseter likes to say, our films don&#8217;t get finished, they just get released.</p>
</blockquote>
<p><a href="http://meyerweb.com/eric/thoughts/2010/06/03/app-shopping/">App Shopping</a></p>
<blockquote><p>If you thought mobile number portability was cool, imagine what you’ll think of mobile app portability.</p>
</blockquote>
<p><a href="http://github.com/ddollar/shoebox">ddollar&#8217;s shoebox</a></p>
<blockquote><p>Shoebox helps you manage styles and scripts as first-class citizens in Rails.</p>
</blockquote>
<p><a href="http://kballcodes.com/2009/09/05/rails-memcached-a-better-solution-to-the-undefined-classmodule-problem/">Rails + Memcached: A better solution to the undefined class/module problem</a></p>
<blockquote><p>So far, this has completely removed for us the development headache of undefined class/module. Try using this instead of including class names everywhere you use memcache.</p>
</blockquote>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/84JsdcMAyM0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2010/06/22/weekly-digest-6-22-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2010/06/22/weekly-digest-6-22-10/</feedburner:origLink></item>
		<item>
		<title>Weekly Digest, 5-29-10</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/XxH0vZiS5RA/</link>
		<comments>http://trevorturk.com/2010/05/29/weekly-digest-5-29-10/#comments</comments>
		<pubDate>Sat, 29 May 2010 22:39:51 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://trevorturk.com/?p=2067</guid>
		<description><![CDATA[jonathan3&#8242;s nxccs-thumbnailer The Thumbnailer is a Google App Engine application which gets a thumbnail out of any URL you throw at it. AGPL. [Embed.ly seems to be gather quite a following!] jQuery Shuffle Plugin A jQuery plugin for shuffling a set of elements. My colossal task burden When AJ Jacobs learned multitasking was bad for [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://github.com/jonathan3/nxccs-thumbnailer">jonathan3&#8242;s nxccs-thumbnailer</a></p>
<blockquote><p>The Thumbnailer is a Google App Engine application which gets a thumbnail out of any URL you throw at it. AGPL. [Embed.ly seems to be gather quite a following!]</p>
</blockquote>
<p><a href="http://mktgdept.com/jquery-shuffle">jQuery Shuffle Plugin</a></p>
<blockquote><p>A jQuery plugin for shuffling a set of elements.</p>
</blockquote>
<p><a href="http://www.guardian.co.uk/lifeandstyle/2010/may/22/multitaking-unitasking-aj-jacobs">My colossal task burden</a></p>
<blockquote><p>When AJ Jacobs learned multitasking was bad for you, he decided to kick his chronic addiction to mental juggling.</p>
</blockquote>
<p><a href="http://mizage.com/divvy/">Divvy</a></p>
<blockquote><p>Divvy is an entirely new way of managing your workspace. It allows you to quickly and efficiently &#8220;divvy up&#8221; your screen into exact portions. [A good companion for SizeUp]</p>
</blockquote>
<p><a href="http://nathanmarz.com/blog/open-source-policies/">Why your company should have a very permissive open source policy</a></p>
<blockquote><p>&#8230;great programmers will be less inclined to work for you if you have a restrictive open source policy because being involved in open source projects is one of the best ways for a programmer to increase his market value.</p>
</blockquote>
<p><a href="http://www.voltdb.com/">VoltDB</a></p>
<blockquote><p>Designed by DBMS design pioneer Mike Stonebraker for companies that have outgrown the performance limitations of traditional SQL databases, open-source VoltDB provides a very fast, scalable, fault-tolerant and ACID-compliant, distributed SQL database for transactional (OLTP) applications. Unlike NoSQL Key-Value stores (K-V stores) or sharding, which require the application developer to manage the complexities of data consistency, VoltDB handles data integrity and consistency for you.</p>
</blockquote>
<p><a href="http://railslab.newrelic.com/2010/05/25/state-of-the-stack-a-ruby-on-rails-benchmarking-report-25-may-2010">State of the Stack: A Ruby on Rails Benchmarking Report</a></p>
<blockquote><p>Because New Relic RPM is used by more than 4,000 organizations to manage their Ruby on Rails and Java applications in production, we have unique insight into how thousands of applications are deployed.</p>
</blockquote>
<p><a href="http://www.igvita.com/2010/05/20/scalable-work-queues-with-beanstalk/">Scalable Work Queues with Beanstalk</a></p>
<blockquote><p>There is an abundance of different job and message queue systems, in part because they are so seemingly simple to write. However, if you ever tried to build your own, you will also know that the scaling and the features available in Beanstalk are non-trivial to replicate.</p>
</blockquote>
<p><a href="http://37signals.com/svn/posts/2342-profitable-and-proud-campaign-monitor">Profitable and proud: Campaign Monitor</a></p>
<blockquote><p>Never lose sight of the fact that you’re starting a business to give you more freedom to do what you enjoy in life. Don’t let it consume the very thing you’re aiming to improve.</p>
</blockquote>
<p><a href="http://alestic.com/2009/06/ec2-user-data-scripts">Automate EC2 Instance Setup with user-data Scripts</a></p>
<blockquote><p>The Ubuntu and Debian EC2 images published on http://alestic.com allow you to send in a startup script using the EC2 user-data parameter when you run a new instance. This functionality is useful for automating the installation and configuration of software on EC2 instances.</p>
</blockquote>
<p><a href="http://frogboy.impulsedriven.net/article/382461/iPad_definitely_a_threat_to_Windows">iPad definitely a threat to Windows</a></p>
<blockquote><p>I can check my email, look at my various RSS feeds and scan my schedule in less than 30 seconds.  On a Windows based PC, I’d still be waiting for Outlook to get done doing its thing or dealing with some Windows update that came in during the night that rebooted my machine.</p>
</blockquote>
<p><a href="http://x264dev.multimedia.cx/?p=377">The first in-depth technical analysis of VP8</a></p>
<blockquote><p>VP8 is definitely better compression-wise than Theora and Dirac, so if its claim to being patent-free does stand up, it’s an upgrade with regard to patent-free video formats. [Skip to Addendum C: Summary for the lazy]</p>
</blockquote>
<p><a href="http://googleblog.blogspot.com/2010/05/google-io-2010-day-1-more-powerful-web.html?utm_source=feedburner&#038;utm_medium=feed&#038;utm_campaign=Feed%3A+blogspot%2FMKuf+%28Official+Google+Blog%29&#038;utm_content=Google+Reader">Google I/O 2010 Day 1</a></p>
<blockquote><p>[Lots of interesting announcements]</p>
</blockquote>
<p><a href="http://news.ycombinator.com/item?id=1356140">Hacker News | I am a junior angel in Silicon Valley. AMA</a></p>
<blockquote><p>I occasionally invest in startups. Please chime in if you are also an angel. [The founder of Delicious on angel investing]</p>
</blockquote>
<p><a href="http://www.avc.com/a_vc/2010/05/from-twitter-and-facebook-to-boxee.html?utm_source=feedburner&#038;utm_medium=feed&#038;utm_campaign=Feed%3A+AVc+%28A+VC%29&#038;utm_content=Google+Reader">From Twitter and Facebook To Boxee</a></p>
<blockquote><p>I&#8217;ve stopped interrupting my day watching videos that I come across on the web and email and I load up Boxee after dinner and do my video watching from the comfort of my family room. Now I can do that with Facebook and Twitter too. Very cool. Thanks Boxee.</p>
</blockquote>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/XxH0vZiS5RA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2010/05/29/weekly-digest-5-29-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2010/05/29/weekly-digest-5-29-10/</feedburner:origLink></item>
		<item>
		<title>Homebrew is my Homie</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/VtNbcKpD0Dg/</link>
		<comments>http://trevorturk.com/2010/05/19/homebrew-is-my-homie/#comments</comments>
		<pubDate>Wed, 19 May 2010 22:39:23 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://trevorturk.com/?p=2064</guid>
		<description><![CDATA[If you&#8217;re doing any kind of development on a Mac and you aren&#8217;t using Homebrew, you&#8217;re missing out. Homebrew is the best package manager for OS X by leaps and bounds. It makes it incredibly easy to install things like git, mysql, mongodb, node.js and tons more. All of the &#8220;Formula&#8221; are written in Ruby [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re doing any kind of development on a Mac and you aren&#8217;t using <a href="http://mxcl.github.com/homebrew/">Homebrew</a>, you&#8217;re missing out. Homebrew is the best package manager for OS X by leaps and bounds. It makes it incredibly easy to install things like git, mysql, mongodb, node.js and <a href="http://github.com/mxcl/homebrew/tree/master/Library/Formula/">tons more</a>. All of the &#8220;Formula&#8221; are written in Ruby and hosted on GitHub, so it&#8217;s easy to understand what&#8217;s going on and to contribute. </p>
<p>You can read more about it on the <a href="http://mxcl.github.com/homebrew">Homebrew home page</a> or the <a href="http://www.engineyard.com/blog/2010/homebrew-os-xs-missing-package-manager/">Engine Yard blog</a>, so I won&#8217;t bore you with a long description here. Use it; you won&#8217;t regret it. </p>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/VtNbcKpD0Dg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2010/05/19/homebrew-is-my-homie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2010/05/19/homebrew-is-my-homie/</feedburner:origLink></item>
		<item>
		<title>Tools of the Trade</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/Gr4UAVH1dQ8/</link>
		<comments>http://trevorturk.com/2010/05/19/tools-of-the-trade/#comments</comments>
		<pubDate>Wed, 19 May 2010 22:38:31 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://trevorturk.com/?p=2062</guid>
		<description><![CDATA[Since I recently shared this list of Mac apps I use with a friend, I thought I might share them here as well: SizeUp is the first thing I install on a new Mac. It&#8217;s a fantastic window moving/resizing utility that I can&#8217;t imagine living without. Note that you can use Command+Tab to switch between [...]]]></description>
			<content:encoded><![CDATA[<p>Since I recently shared this list of <b>Mac apps I use</b> with a friend, I thought I might share them here as well:</p>
<p><a href="http://irradiatedsoftware.com/sizeup/">SizeUp</a> is the first thing I install on a new Mac. It&#8217;s a fantastic window moving/resizing utility that I can&#8217;t imagine living without.</p>
<p>Note that you can use Command+Tab to switch between active apps, that you can use a mouse to choose one more quickly, and that F3 is your friend. You can always use an app launcher to bypass window management altogether, though. I&#8217;ve configured Spotlight to only search Applications and Documents. Since I have an SSD, this setup seems fast enough. Some people swear by <a href="http://www.obdev.at/products/launchbar/index.html">LaunchBar</a>, <a href="http://quicksilver.en.softonic.com/mac">Quicksilver</a>, or <a href="http://code.google.com/p/qsb-mac/">Google Quick Search Box</a>, though, and I think that&#8217;s fine. No matter what you do, though, empty your dock and hide it. </p>
<p><a href="http://macromates.com/">TextMate</a> is (still) the best text editor for the Mac. <a href=http://www.barebones.com/products/textwrangler/">TextWranger</a> is a reasonable alternative, especially since it&#8217;s free. </p>
<p><a href="http://agilewebsolutions.com/products/1Password">1Password</a> is a great password management app, but I&#8217;m mad at them because they&#8217;re taking <i>forever</i> to support Chrome. </p>
<p><a href="http://www.haystacksoftware.com/arq/">Arq</a> is an easy to use backup app that stores your files on Amazon S3. It&#8217;s not perfect (yet), but I love it.  </p>
<p><a href="http://flyingmeat.com/acorn/">Acorn</a> is great for simple image editing. <a href="http://adium.im/">Adium</a> is for chat. <a href="http://colloquy.info/">Colloquy</a> is for irc.</p>
<p>Of course I use <a href="http://dropbox.com">Dropbox</a>. </p>
<p><a href="http://fluidapp.com/">Fluid</a> is great for making websites into standalone apps. You can make one for Gmail and set that to be your default maito client. Highly recommended. </p>
<p><a href="http://gitx.frim.nl/">Gitx</a> is a good git gui for looking through changesets when you don&#8217;t feel like opening up <a href="http://github.com">GitHub</a>. </p>
<p><a href="http://tinygrab.com/">TinyGrab</a> is nice for sharing screenshots. <a href="http://www.panic.com/transmit/">Transmit</a> is for ftp. <a href="http://www.videolan.org/vlc/">VLC</a> has a Mac client. <a href="http://www.atebits.com/tweetie-mac/">Tweetie</a> is for Twitter. <a href="http://www.transmissionbt.com/">Transmission</a> is for bit torrent.</p>
<p><a href="http://iconfactory.com/software/xscope">xScope</a> is invaluable when designing webpages and/or graphics. </p>
<p>So&#8230; that&#8217;s a quick list of my &#8220;must have&#8221; Map apps. I hope you find them as valuable as I have. </p>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/Gr4UAVH1dQ8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2010/05/19/tools-of-the-trade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2010/05/19/tools-of-the-trade/</feedburner:origLink></item>
		<item>
		<title>Weekly Digest, 5-17-10</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/J-UckOfm7Z4/</link>
		<comments>http://trevorturk.com/2010/05/18/weekly-digest-5-17-10/#comments</comments>
		<pubDate>Tue, 18 May 2010 22:37:17 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://trevorturk.com/?p=2060</guid>
		<description><![CDATA[Since this is the first Weekly Digest I&#8217;ve posted since this blog has been running on Heroku, I thought I&#8217;d clean up the way the links are generated. Here&#8217;s the new script I&#8217;m using: &#8230;and the links&#8230; Enjoy! Why I Steal Movies… Even Ones I&#8217;m In If you&#8217;re in the business of promoting a band, [...]]]></description>
			<content:encoded><![CDATA[<p>Since this is the first Weekly Digest I&#8217;ve posted since this blog has been running on Heroku, I thought I&#8217;d clean up the way the links are generated. Here&#8217;s the new script I&#8217;m using:</p>
<p><script src="http://gist.github.com/404555.js?file=gistfile1.builder"></script></p>
<p>&#8230;and the links&#8230;</p>
<p>Enjoy!</p>
<p><a href="http://gizmodo.com/5539417/why-i-steal-movies-even-ones-im-in">Why I Steal Movies… Even Ones I&#8217;m In</a></p>
<blockquote><p>If you&#8217;re in the business of promoting a band, why would you want to stop people watching their promotional video?</p>
</blockquote>
<p><a href="http://m.onkey.org/2008/11/18/ruby-on-rack-2-rack-builder">Ruby on Rack #2 &#8211; The Builder</a></p>
<blockquote><p>Rack::Builder is the thing that glues various Rack middlewares and applications together and convert them into a single entity/rack application. A good analogy is comparing Rack::Builder object with a stack, where at the very bottom is your actual rack application and all middlewares on top of it, and the whole stack itself is a rack application too.</p>
</blockquote>
<p><a href="http://www.simplehelp.net/2008/06/25/how-to-download-all-of-your-flickr-photos-using-os-x/">How to download all of your Flickr photos using OS X</a></p>
<blockquote><p>Whatever your reason, downloading all of your Flickr photos at once is pretty easy, with the help of Photo Grabbr.</p>
</blockquote>
<p><a href="http://blogs.adobe.com/jnack/2010/05/absolute_power_vs_the_pirate_flag.html">Absolute Power vs. the Pirate Flag</a></p>
<blockquote><p>Will my decision to speak publicly about these concerns harm our ability to deliver iPad apps? I don&#8217;t know; that&#8217;s up to Apple. But can you imagine a world where, say, constructively criticizing Microsoft could destroy your ability to ship a Windows application? It&#8217;s almost unthinkable, and yet that&#8217;s the position in which Apple&#8217;s App Store puts us.</p>
</blockquote>
<p><a href="http://www.marco.org/595644480">Feature removal</a></p>
<blockquote><p>If I could never remove features, I’d never add any.</p>
</blockquote>
<p><a href="http://www.cloudvox.com/">Cloudvox</a></p>
<blockquote><p>An open phone API platform (Asterisk/AGI, HTTP/JSON, SIP, Adhearsion/Ruby, Asterisk-Java)</p>
</blockquote>
<p><a href="http://blog.reddit.com/2010/05/reddits-may-2010-state-of-servers.html">reddit&#8217;s May 2010 &#8220;State of the Servers&#8221; report</a></p>
<blockquote><p>We promised we&#8217;d make a blog post about last week&#8217;s issues, but every time we sat down to write it, a new issue popped up. It&#8217;s been a crappy week. Anyway, although we&#8217;re still knee-deep in looking for ways to make the site more stable, it&#8217;s probably time to write up that, uh, writeup.</p>
</blockquote>
<p><a href="http://api.embed.ly/documentation">Embedly &#8211; API &#8211; Documentation</a></p>
<blockquote><p>Embedly strives to be the go to place for previewing and embedding urls. We offer methods to make it simple to embed content from multiple sources via one API. Embedly uses the oEmbed spec when returning an embed object.</p>
</blockquote>
<p><a href="http://www.marco.org/579412944">iPad Hot zones</a></p>
<blockquote><p>With universal auto-rotation, the massive touch screen, and highly reactive apps, the iPad is always “hot” &#8230;maybe you think you broke something, maybe you lost your place, or maybe you’re disoriented for a few seconds.</p>
</blockquote>
<p><a href="http://www.paperplanes.de/2010/5/7/activerecord_callbacks_ruined_my_life.html">ActiveRecord&#8217;s Callbacks Ruined My Life</a></p>
<blockquote><p>Recently I&#8217;ve been having a foul taste in my mouth, or just a bad feeling, if you will. Whenever I started adding validations and callbacks to a model in a Rails application. It just felt wrong.</p>
</blockquote>
<p><a href="http://www.nytimes.com/slideshow/2010/05/06/business/businessspecial/20100506-pack-ss.html?src=me&#038;ref=general">10 Days In a Carry-On</a></p>
<blockquote><p>Heather Poole, a flight attendant from Los Angeles, demonstrates how to pack enough for a 10-day trip into a single standard carry-on.</p>
</blockquote>
<p><a href="http://vimeo.com/10506751">Lessons Learned while at Reddit on Vimeo</a></p>
<blockquote><p>Steve Huffman at the Future of Web Apps Miami 2010</p>
</blockquote>
<p><a href="http://www.scribd.com/documents/30964170/Scribd-in-HTML5">Scribd in HTML5</a></p>
<blockquote><p>Introducing Scribd in HTML5 [Fantastic]</p>
</blockquote>
<p><a href="http://blog.meatinthesky.com/introduction-to-online-payments-tldr-its-a-to">Introduction To Online Payments</a></p>
<blockquote><p>As far as I&#8217;m concerned, there are three real options: PayPal Website Payments Pro; Braintree Gateway + Account; Authorize.net + Merchant Account</p>
</blockquote>
<p><a href="http://www.apple.com/hotnews/thoughts-on-flash/">Thoughts on Flash</a></p>
<blockquote><p>Steve Jobs &#8211; April, 2010</p>
</blockquote>
<p><a href="http://blog.heroku.com/archives/2010/4/28/node_js_support_experimental/">Heroku Experimental node.js Support</a></p>
<blockquote><p>Today we’re offering experimental support for node.js</p>
</blockquote>
<p><a href="http://www.robbyonrails.com/articles/2007/08/01/designers-developers-and-the-x_-factor">Designers, Developers, and the x_ Factor</a></p>
<blockquote><p>The third idea that was discussed, was specifying a naming convention for any elements that were needed by our Ajax code. We played around on the whiteboard with some ideas and settled on the idea that we’d prefix our id’s with something easy to remember for both designers and developers.</p>
</blockquote>
<p><a href="http://desandro.com/resources/jquery-masonry/">jQuery Masonry</a></p>
<blockquote><p>Masonry is a layout plugin for jQuery. Think of it as the flip side of CSS floats. Whereas floating arranges elements horizontally then vertically, Masonry arranges elements vertically then horizontally according to a grid. The result minimizes vertical gaps between elements of varying height, just like a mason fitting stones in a wall.</p>
</blockquote>
<p><a href="http://www.zeldman.com/2010/04/21/stop-chasing-followers/">Stop chasing followers</a></p>
<blockquote><p>The internet is not a numbers game. It’s about dialog, persuasion, and influence.</p>
</blockquote>
<p><a href="http://railscasts.com/episodes/209-introducing-devise">Railscasts &#8211; Introducing Devise</a></p>
<blockquote><p>Devise is a full-featured authentication solution which handles all of the controller logic and frm views for you. Learn how to set it up in this episode.</p>
</blockquote>
<p><a href="http://developers.facebook.com/docs/authentication/">Authentication &#8211; Facebook Developers</a></p>
<blockquote><p>The Facebook Platform uses the OAuth 2.0 protocol for authentication and authorization. We support a number of flows so that you can authenticate users in web applications via redirects, in JavaScript, or in desktop and mobile applications.</p>
</blockquote>
<p><a href="http://www.avc.com/a_vc/2010/04/a-look-back-at-summize.html?utm_source=feedburner&#038;utm_medium=feed&#038;utm_campaign=Feed%3A+AVc+%28A+VC%29&#038;utm_content=Google+Reader">A Look Back At Summize</a></p>
<blockquote><p>In July 2008, Twitter acquired a company called Summize. The stated reason was to bring search into Twitter. And that was the main reason that Twitter did the deal. But Twitter also got a very strong engineering team in that acquisition. I remember asking Ev and Jack at the time &#8220;how are we going to integrate the engineering team?&#8221; and Jack replying &#8220;we aren&#8217;t going to integrate them, they are going to integrate us&#8221;.</p>
</blockquote>
<p><a href="http://www.slideshare.net/nkallen/q-con-3770885">Big Data in Real-Time at Twitter</a></p>
<blockquote></blockquote>
<p><a href="http://blogs.nullvision.com/?p=275">Mac OS X SSD tweaks</a></p>
<blockquote><p>I usually don’t leave my MacBook to sleep for so long that the battery rans out, and even if I do, I usually save all my work, so… I will assume the risk of not awaking from sleep (and a couple of HFS log replays) to save 8 GB on my SSD.</p>
</blockquote>
<p><a href="http://googlewebmastercentral.blogspot.com/2010/04/using-site-speed-in-web-search-ranking.html">Google: Using site speed in web search ranking</a></p>
<blockquote><p>We encourage you to start looking at your site&#8217;s speed (the tools above provide a great starting point) — not only to improve your ranking in search engines, but also to improve everyone&#8217;s experience on the Internet.</p>
</blockquote>
<p><a href="http://www.infoq.com/interviews/wiggins-heroku-ec2-cloud">Adam Wiggins on Building Heroku on Top of Amazon EC2</a></p>
<blockquote><p>Adam Wiggins explains the experience with building Heroku on top of Amazon EC2, the pros and cons of virtualization, and the importance of automation.</p>
</blockquote>
<p><a href="http://www.jbarnette.com/2009/01/21/note-to-self.html">Note to Self</a></p>
<blockquote></blockquote>
<p><a href="http://tammersaleh.com/posts/managing-heroku-environment-variables-for-local-development">Managing Heroku environment variables for local development</a></p>
<blockquote><p>&#8230;I simply load a local file called heroku_env.rb before the Rails.initialize call inside environment.rb&#8230;</p>
</blockquote>
<p><a href="http://www.taoeffect.com/blog/2010/04/steve-jobs-response-on-section-3-3-1/">Steve Jobs’ response on Section 3.3.1</a></p>
<blockquote><p>After posting my reaction to clause 3.3.1 of the iPhone SDK terms I decided to write Steve Jobs the following email&#8230;</p>
</blockquote>
<p><a href="http://www.haystacksoftware.com/arq/">Arq</a></p>
<blockquote><p>Online Backup for Mac [Highly recommended.]</p>
</blockquote>
<p><a href="http://arstechnica.com/apple/reviews/2010/04/ipad-review.ars">Ars Technica reviews the iPad</a></p>
<blockquote><p>The iPad isn&#8217;t a big iPod touch—an iPod touch is a miniature iPad that restricts the full multitouch experience in exchange for offering greater portability. With the iPad, in contrast, you get multitouch the way it was meant to be done.</p>
</blockquote>
<p><a href="https://rails.lighthouseapp.com/projects/8994/tickets/1274-patch-add-support-for-order-random-in-queries">:order => :random in queries &#8211; Ruby on Rails</a></p>
<blockquote><p>Koz: If you want to efficiently select random records something like this will work&#8230;</p>
</blockquote>
<p><a href="http://www.engineyard.com/blog/2010/the-lowdown-on-routes-in-rails-3/">The Lowdown on Routes in Rails 3</a></p>
<blockquote><p>In this post, we’ll walk through the underpinnings of Routes in Rails 3. They’ve been rewritten—for good reason—and after we get through the explanation, I’m confident you’ll agree.</p>
</blockquote>
<p><a href="http://37signals.com/svn/posts/2244-shoes-and-software">Shoes and software</a></p>
<blockquote><p>It all reminds me of the software business. The industry is obsessed with touting features while the public is obsessed an entirely different set of criteria: Does it solve my basic problems and is it easy to use? Does it make sense? Do I understand it?</p>
</blockquote>
<p><a href="http://robots.thoughtbot.com/post/486653439/hopping-in-the-cloud">Hopping in the cloud</a></p>
<blockquote><p>Hoptoad has been running on the Engine Yard cloud for more than a week now, with excellent performance. We’ve been looking forward to this for quite some time, and want to share a little about our motivations and experiences.</p>
</blockquote>
<p><a href="http://wasitup.com/">was it up?</a></p>
<blockquote><p>&#8230;make sure this site is up&#8230;if not, email me at&#8230;</p>
</blockquote>
<p><a href="http://kovshenin.com/archives/custom-post-types-in-wordpress-3-0/">Custom Post Types in WordPress 3.0</a></p>
<blockquote><p>In version 3.0 the developers of WordPress introduce the custom post types. I’m not sure whether it’ll be solely built into the API or also displayed as a GUI somewhere in the settings, but it doesn’t require too much coding skills to add a couple via your functions.php or a perhaps a plugin.</p>
</blockquote>
<p><a href="http://blog.darkhax.com/2009/12/12/heroku-backup-with-single-bundle">Heroku Backup with Single Bundle</a></p>
<blockquote><p>It assumes you have a single bundle enabled for your app, which is free. I destroy any bundle there, create a new one, download it, and push it up to Amazon’s S3 service.</p>
</blockquote>
<p><a href="https://chrome.google.com/extensions/detail/bfbameneiokkgbdmiekhjnmfkcnldhhm">Web Developer &#8211; Google Chrome Extension</a></p>
<blockquote><p>The Web Developer extension adds a toolbar button to the browser with various web developer tools. This is the official port of the popular Web Developer extension for Firefox written by the same person.</p>
</blockquote>
<p><a href="http://www.fngtps.com/2010/02/moving-to-a-safer-password-solution">Moving to a safer password solution</a></p>
<blockquote><p>In an application we wrote back in 2004 I found MD5 hashed passwords. We decided this was too weak for modern standards so we wanted to switch to bcrypt. During the move we wanted the user to be affected as little as possible.</p>
<p>In order to compute the crypted password we need the cleartext version. We only have a hashed version so the user has to type her password. Luckily they do this every time they authenticate, so that is a nice opportunity to upgrade their password.</p>
</blockquote>
<p><a href="http://robots.thoughtbot.com/post/392707640/the-more-you-know-custom-time-descriptions">The More You Know: custom time descriptions</a></p>
<blockquote><p>it took me mildly by surprise when I learned that you can override distance_in_words with the i18n API (and, by extension, time_ago_in_words).</p>
</blockquote>
<p><a href="http://zachholman.com/2010/01/impress-the-ladies-with-legacy-migrations/">Impress the Ladies with Legacy Migrations</a></p>
<blockquote><p>If there&#8217;s one thing I&#8217;ve learned from my experiences with women, it&#8217;s that they secretly can&#8217;t control themselves if a man is there to sweep them off their feet with tales of legacy data migration suavity.</p>
</blockquote>
<p><a href="http://lonelysandwich.com/post/374473607/adaptation">Adaptation</a></p>
<blockquote><p>What we want from our technology, in its most elemental form, is to make our thoughts happen. Sure, it’s still very much sci-fi in 2010, but what every calculating machine and telephone and computer and phonograph and light bulb and hammer and every tool ever invented is about at its core is our desire, our evolutionary imperative to control our environment at our will. And we’re getting closer and closer to that happening.</p>
</blockquote>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/J-UckOfm7Z4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2010/05/18/weekly-digest-5-17-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2010/05/18/weekly-digest-5-17-10/</feedburner:origLink></item>
		<item>
		<title>Finding out the current version of stuff on Heroku</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/Nlrp6JOPhNQ/</link>
		<comments>http://trevorturk.com/2010/04/16/finding-out-the-current-version-of-stuff-on-heroku/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 15:53:52 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://almosteffortless.com/?p=2043</guid>
		<description><![CDATA[You can use the Herkou console to run system commands to get version info. For example, to get the current version of Bundler: heroku console %x{bundle -v} &#8230;or the current version of ImageMagick: heroku console %x{identify -version}]]></description>
			<content:encoded><![CDATA[<p>You can use the Herkou console to run system commands to get version info. </p>
<p>For example, to get the current version of Bundler:</p>
<pre>heroku console %x{bundle -v}</pre>
<p>&#8230;or the current version of ImageMagick:</p>
<pre>heroku console %x{identify -version}</pre>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/Nlrp6JOPhNQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2010/04/16/finding-out-the-current-version-of-stuff-on-heroku/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2010/04/16/finding-out-the-current-version-of-stuff-on-heroku/</feedburner:origLink></item>
		<item>
		<title>Automated Heroku Backups</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/mHJ0RTkWoL0/</link>
		<comments>http://trevorturk.com/2010/04/14/automated-heroku-backups/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 04:05:14 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://almosteffortless.com/?p=2021</guid>
		<description><![CDATA[It&#8217;s easy to enable automatic nightly PostgreSQL database backups from Heroku to Amazon S3. Nick Merwin and Derek Perez have shown us a couple of techniques for this sort of thing already, but I&#8217;ve got another one for you. Start by adding the following to your Rakefile: It&#8217;s OK if you already have a cron [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s easy to enable automatic nightly <a href="http://www.postgresql.org/">PostgreSQL</a> database backups from <a href="http://heroku.com">Heroku</a> to <a href="s3.amazonaws.com/">Amazon S3</a>. <a href="http://nickmerwin.com/easily-backup-your-heroku-database-to-s3">Nick Merwin</a> and <a href="http://github.com/perezd/heroku_tools/">Derek Perez</a> have shown us a couple of techniques for this sort of thing already, but I&#8217;ve got another one for you.</p>
<p>Start by adding the following to your <i>Rakefile</i>:</p>
<p><script src="http://gist.github.com/366598.js?file=gistfile1.ru"></script></p>
<p>It&#8217;s OK if you already have a cron task defined. Did you know that <a href="http://blog.jayfields.com/2008/02/rake-task-overwriting.html">rake tasks append behavior</a> by default? Weird, I know. Anyway&#8230;</p>
<p>Add <i>right_aws</i> to your <i>.gems</i> file:</p>
<pre>echo right_aws >> .gems</pre>
<p>Commit your changes and push to Heroku:</p>
<pre>git add .
git commit -m 'heroku backups'
git push heroku master</pre>
<p>Enable the cron:daily addon:</p>
<pre>heroku addons:add cron:daily</pre>
<p>Provide Heroku with your Amazon S3 keys:</p>
<pre>heroku config:add s3_access_key_id=YOUR_ID s3_secret_access_key=YOUR_KEY</pre>
<p>Run the <i>cron</i> Rake task manually, for testing purposes:</p>
<pre>heroku rake cron</pre>
<p>If all goes well, a new private bucket named <i>APP_NAME-heroku-backups</i> will be created and will contain a backup file named <i>APP_NAME-YEAR-MONTH-DAY-HOURMINUTESECOND.dump</i>. </p>
<p>Confirm that the backups are working by downloading the archive and attempting to reload it into a freshly created database:</p>
<pre>createdb NEW_DB
pg_restore -d NEW_DB BACKUP_FILE</pre>
<p>It may complain about some users and roles from Heroku that are missing, but I think those warnings are safe to ignore. In any case, I&#8217;d suggest trying to use this new database with your local app in development, just to make sure it&#8217;s working as expected. </p>
<p>From here on out, Heroku will automatically invoke the <i>cron</i> Rake task automatically for you on a daily basis. This will create a new backup file that will be stored on S3. The backups on S3 aren&#8217;t being rotated or deleted automatically, which is only a minor annoyance for me. Please do let me know if you take the time to set up some kind of backup rotation, though. </p>
<p>It is highly recommended that you periodically confirm that the backup task is running properly:</p>
<pre>heroku logs:cron</pre>
<p>You should also periodically verify that the backups are valid like we did when we downloaded the backup file, used <i>pg_restore</i>, and tested the rehydrated database with the app that we have running locally. </p>
<p>Additionally, I&#8217;d recommend using <a href="http://hoptoadapp.com/">Hoptoad</a> in conjunction with <a href="http://github.com/toolmantim/toadhopper">Toadhopper</a> so that you can receive a notifications if/when something goes wrong with your backups. </p>
<p>Add <i>toadhopper</i> to your <i>.gems</i> file:</p>
<pre>echo toadhopper >> .gems</pre>
<p>Uncomment the relevant lines in the heroku:backup Rake task:</p>
<pre># rescue Exception => e
#   require 'toadhopper'
#   Toadhopper(ENV['hoptoad_key']).post!(e)</pre>
<p>Commit your changes and push to Heroku:</p>
<pre>git add .
git commit -m 'todhopper for Heroku backups'
git push heroku master</pre>
<p>Provide Heroku with your Hoptoad API key:</p>
<pre>heroku config:add hoptoad_key=YOUR_HOPTOAD_KEY</pre>
<p>Run the <i>cron</i> Rake task again, just to make sure it&#8217;s not broken:</p>
<pre>heroku rake cron</pre>
<p>This way, you&#8217;ll be notified if something goes wrong with your backup task. I&#8217;d still suggest manually verifying the backup files as frequently as possible, though. There&#8217;s no such thing as a &#8220;set it and forget it&#8221; database backup. Viva due diligence!</p>
<p>Finally, please note that I&#8217;m not sure if large databases will work with this backup method due to Heroku&#8217;s filesystem restrictions. It&#8217;s working for me, but your milage may vary.</p>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/mHJ0RTkWoL0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2010/04/14/automated-heroku-backups/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2010/04/14/automated-heroku-backups/</feedburner:origLink></item>
		<item>
		<title>Reel Roulette</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/eUxtZQKh-aA/</link>
		<comments>http://trevorturk.com/2010/03/26/reel-roulette/#comments</comments>
		<pubDate>Fri, 26 Mar 2010 22:41:43 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://almosteffortless.com/?p=1891</guid>
		<description><![CDATA[Reel Roulette &#8212; an easy way to find motion designers &#8212; has just been launched. I&#8217;m really pleased with this one because it took so little time from concept to launch. It&#8217;s based on an idea hatched with my buddy Nick during the plane ride to SXSW Interactive a couple of weeks ago. He&#8217;s been [...]]]></description>
			<content:encoded><![CDATA[<div style="float:right;margin-left:25px;">
<a href="http://www.flickr.com/photos/trevorturk/4444121341/"><img src="http://farm5.static.flickr.com/4023/4444121341_13d6a88fa7.jpg" style="width:200px;" /></a></p>
<p><a href="http://www.flickr.com/photos/trevorturk/4444119699/"><img src="http://farm5.static.flickr.com/4001/4444119699_451e221c43_m.jpg" style="width:200px;" /></a></p>
<p><a href="http://www.flickr.com/photos/trevorturk/4464993783/"><img src="http://farm5.static.flickr.com/4034/4464993783_ae68c2fce9_m.jpg" style="width:200px;" /></a></p>
<p><a href="http://www.flickr.com/photos/trevorturk/4465838756/"><img src="http://farm5.static.flickr.com/4059/4465838756_8f9d39347f_m.jpg" style="width:200px;" /></a>
</div>
<p><a href="http://reelroulette.net/">Reel Roulette</a> &#8212; an easy way to find motion designers &#8212; has just been launched. I&#8217;m really pleased with this one because it took so little time from concept to launch. </p>
<p>It&#8217;s based on an idea hatched with my buddy <a href="http://greyscalegorilla.com/blog/">Nick</a> during the plane ride to SXSW Interactive a couple of weeks ago. </p>
<p>He&#8217;s been running around the world talking to students about how to <a href="http://greyscalegorilla.com/blog/2009/02/presentation-how-to-be-creative-and-get-paid/">be creative and get paid</a>&#8230; but how do you get your work in front of the people that can hire you? </p>
<p>After pondering this over a couple of beers at the Ginger Man and spending some time on <a href="http://chatroulette.com/">Chat Roulette</a> looking for <a href="http://www.youtube.com/watch?v=JTwJetox_tU">Piano Improve Guy</a>, we decided that we should put something together. Something small. Something quick. </p>
<p>We recruited Nick&#8217;s main man <a href="http://www.joshuaschaible.com/about">Joshua</a> and got down to work!</p>
<p>It started with a two-hour iChat session where we sorted out the details. This resulted in a lot of ideas, some tough decision making, and a pruned-down set of of to-do items that made it into our <a href="http://basecamphq.com/">Basecamp</a>. </p>
<p>Before we&#8217;d even started, we decided to use an idea from <a href="http://www.amazon.com/Linchpin-Are-Indispensable-Seth-Godin/dp/1591843162/permissionmarket">Seth Godin&#8217;s <i>Linchpin</i></a> and set some hard deadlines. An idea is one thing, a promise is another, but the prospect of paying your buddy $100 for missing a deadline is the real deal &#8212; so we signed a makeshift contract. It turns out that embracing constraints is actually really powerful. Thanks for the advice, <a href="http://37signals.com/rework/">Rework</a>! ;)</p>
<p>So, once we&#8217;d sorted out our to-dos, Nick and Joshua worked up a design while I hacked out the backend using some of my favorite web tools like <a href="http://rubyonrails.org/">Rails</a>, <a href="http://github.com/plataformatec/devise">Devise</a>, and <a href="http://heroku.com/">Heroku</a>. </p>
<p>Once I was done Nick and Josh applied the design, and we had a site up within about 30 hours of work between us. </p>
<p>I&#8217;d say it&#8217;s the fastest I&#8217;ve ever seen a site come together, and I&#8217;m really proud of what we&#8217;ve done in such a small amount of time. </p>
<p>So&#8230; go check it out! <a href="http://reelroulette.net/">http://reelroulette.net/</a></p>
<p><a href="http://reelroulette.net/"><img src="http://almosteffortless.s3.amazonaws.com/reel-roulette.png" /></a></p>
<p><a href="http://reelroulette.net/random">Find Great Talent</a></p>
<blockquote><p>Click “Next Reel” to see a random motion design reel. If you see a reel you like, just hit “Like This Reel”. This will help bring the best reels to the top. Connect with your favorite artists and give them a job, will ya?</p></blockquote>
<p><a href="http://reelroulette.net/users/sign_up">Show Your Work Off</a></p>
<blockquote><p>Are you a freelancer or someone looking for a job? Add your own reel to the mix by clicking on “Submit Your Reel”. Show off your best work to people that are hiring.</p></blockquote>
<p><a href="http://reelroulette.net/">http://reelroulette.net/</a></p>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/eUxtZQKh-aA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2010/03/26/reel-roulette/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2010/03/26/reel-roulette/</feedburner:origLink></item>
		<item>
		<title>The pg_query_analyzer gem: PostgreSQL query analysis in your development logs</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/MALQEGhcIxs/</link>
		<comments>http://trevorturk.com/2010/03/24/the-pg_query_analyzer-gem-postgresql-query-analysis-in-your-development-logs/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 04:05:56 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://almosteffortless.com/?p=1863</guid>
		<description><![CDATA[I just wrapped up a small gem called pg_query_analyzer that&#8217;s based on some old code that can be found on the interwebs in various states of disrepair. This latest incarnation is a simple gem that provides a PostgreSQL query analysis in the development log of a Rails app. This is useful for finding indexes that [...]]]></description>
			<content:encoded><![CDATA[<p>I just wrapped up a small gem called <a href="http://github.com/trevorturk/pg_query_analyzer">pg_query_analyzer</a> that&#8217;s based on some old code that can be found on the interwebs in various states of disrepair. This latest incarnation is a simple gem that provides a PostgreSQL query analysis in the development log of a Rails app. </p>
<p>This is useful for finding indexes that your database may benefit from. There are alternatives available (e.g. <a href="http://github.com/eladmeidar/rails_indexes">rails_indexes</a>) that evaluate your application and guess at which indexes might help you, and provide example migrations to add them. That kind of thing is definitely cool, but I&#8217;ve found that performing a manual analysis using tools like this gem I&#8217;m releasing will typically lead to the best results. Perhaps you would consider using both techniques? It&#8217;s smart, at least, to verify that the database indexes you add to your application are having the intended effect of speeding things up!</p>
<p>I hope you&#8217;ll find the <a href="http://github.com/trevorturk/pg_query_analyzer">README</a> I&#8217;ve provided with this gem to be helpful in your quest for a fast and scalable application using PostgreSQL. </p>
<p>Good luck, and good indexing ;)</p>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/MALQEGhcIxs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2010/03/24/the-pg_query_analyzer-gem-postgresql-query-analysis-in-your-development-logs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2010/03/24/the-pg_query_analyzer-gem-postgresql-query-analysis-in-your-development-logs/</feedburner:origLink></item>
		<item>
		<title>Weekly Digest, 3-24-10</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/9yVl-ZyNkR8/</link>
		<comments>http://trevorturk.com/2010/03/24/weekly-digest-3-24-10/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 04:05:37 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://almosteffortless.com/?p=1873</guid>
		<description><![CDATA[Seriously. Not weekly at all. Still, it&#8217;s a digest of links, I&#8217;d say. Sinatra 1.0 Released: Major Milestone for Ruby’s Best Webapp DSL In November 2007, we casually mentioned a new Ruby webapp library called Sinatra. It took a year to capture the imagination of the Ruby community as a whole and we eventually covered [...]]]></description>
			<content:encoded><![CDATA[<p>Seriously. Not weekly <i>at all</i>. Still, it&#8217;s a digest of links, I&#8217;d say. </p>
<p><a href="http://www.rubyinside.com/sinatra-1-0-released-3162.html">Sinatra 1.0 Released: Major Milestone for Ruby’s Best Webapp DSL</a></p>
<blockquote><p>In November 2007, we casually mentioned a new Ruby webapp library called Sinatra. It took a year to capture the imagination of the Ruby community as a whole and we eventually covered it in more depth but today we&#8217;re proud to (exclusively) announce that Sinatra has today reached its landmark 1.0 release!</p></blockquote>
<p><a href="http://m.onkey.org/2010/1/7/introducing-cramp">Introducing Cramp</a></p>
<blockquote><p>Cramp is an asynchronous framework, always running inside EventMachine reactor loop. Cramp isn’t a good fit for most of the web applications out there. However, Cramp is good at holding and working with a large number of open connections. Hence it’ll work great for things like comet, long polling, streaming API or even when your application needs to handle thousands of concurrent connections.</p></blockquote>
<p><a href="http://www.igvita.com/2010/03/22/untangling-evented-code-with-ruby-fibers">Untangling Evented Code with Ruby Fibers</a></p>
<blockquote><p>Ruby 1.9 Fibers are a means of creating code blocks which can be paused and resumed by our application (think lightweight threads, minus the thread scheduler and less overhead). Each fiber comes with a small 4KB stack, which makes them cheap to spin up, pause and resume.</p></blockquote>
<p><a href="http://googleblog.blogspot.com/2010/03/new-approach-to-china-update.html">Official Google Blog: A new approach to China: an update</a></p>
<blockquote><p>Finally, we would like to make clear that all these decisions have been driven and implemented by our executives in the United States, and that none of our employees in China can, or should, be held responsible for them.</p></blockquote>
<p><a href="http://github.com/datagraph/rack-throttle">datagraph&#8217;s rack-throttle</a></p>
<blockquote><p>Rack middleware for rate-limiting incoming HTTP requests.</p></blockquote>
<p><a href="http://gizmodo.com/5491404/raiding-eternity">Raiding Eternity</a></p>
<blockquote><p>The Cloud is just the internet. And the internet is just a bunch of hard drives. The internet is really good at replicating discrete bits of self-contained data. There are probably a few million copies of any given Loretta Lynn song out on all the hard drives of the world, because lots of people care about Loretta Lynn. But my photos on Flickr only live on a few hard drives in the world. The hard drives in the database servers. The hard drives in the networked-attached storage devices that are used to backup the database servers.</p></blockquote>
<p><a href="http://adam.blog.heroku.com/past/2010/3/19/consuming_the_twitter_streaming_api/">Consuming the Twitter Streaming API</a></p>
<blockquote><p>How do you integrate this into a Ruby app? Standard HTTP clients such as RestClient and HTTParty aren’t appropriate, since they’re designed for atomic HTTP requests, not streaming. With this API, you want to keep the socket open indefinitely, decoding JSON one line at a time.</p></blockquote>
<p><a href="http://notational.net/">Notational Velocity</a></p>
<blockquote><p>NOTATIONAL VELOCITY is an application that stores and retrieves notes.</p></blockquote>
<p><a href="http://adam.blog.heroku.com/past/2010/3/15/graph_databases/">Graph Databases</a></p>
<blockquote><p>Graph databases are a type of datastore which treat the relationship between things as equally important to the things themselves.</p></blockquote>
<p><a href="http://github.com/simplabs/highlight">simplabs&#8217;s highlight at master &#8211; GitHub</a></p>
<blockquote><p>Highlight is a simple syntax highlighting plugin for Ruby on Rails. It&#8217;s basically a wrapper around the popular pygments highlighter that&#8217;s written in Python. If pygments is installed on the machine and in the PATH, that binary is used, otherwise the plugin falls back to the web API created by Trevor Turk. [Awesome!]</p></blockquote>
<p><a href="http://about.digg.com/node/564">Saying Yes to NoSQL; Going Steady with Cassandra</a></p>
<blockquote><p>Digg is committed to the use and development of open source software and we&#8217;re keen to avoid the cost of proprietary large-scale storage solutions. We were inspired by Google and Amazon&#8217;s broad use of their non-relational BigTable and Dynamo systems. We evaluated all the usual open source NoSQL suspects. After considerable debate, we decided to go with Cassandra.</p></blockquote>
<p><a href="http://www.marco.org/438103070">News flash</a></p>
<blockquote><p>We don’t deserve anything. Publishers can do whatever they want. If you don’t like it, don’t send them nasty emails or browse their sites with ad-blockers: just don’t support them. Don’t read their content, don’t link to them, and don’t talk about them. Since money’s not usually involved, vote with your attention and read elsewhere.</p></blockquote>
<p><a href="http://articles.marco.org/299">Curing RSS addiction and continuous partial attention</a></p>
<blockquote><p>The fundamental problem is the disconnect between when we find good content and when we actually want to read it: these occur at completely different times in our day and in completely different contexts.</p></blockquote>
<p><a href="http://www.wired.com/magazine/2010/02/ff_google_algorithm/all/1">How Google’s Algorithm Rules the Web</a></p>
<blockquote><p>Throughout its history, Google has devised ways of adding more signals, all without disrupting its users’ core experience. Every couple of years there’s a major change in the system — sort of equivalent to a new version of Windows — that’s a big deal in Mountain View but not discussed publicly.</p></blockquote>
<p><a href="http://daringfireball.net/2010/02/tits_and_apps">Daring Fireball: Tits and Apps</a></p>
<blockquote><p>These apps were allowed for about a year and a half. Some developers were prospering by them. And then, boom, they were gone. The reason Apple ought to be concerned about this is that it unsettles all developers — even those whose apps and ideas for future apps were nowhere along the lines of girls-in-bikinis. What developers see here isn’t Apple managing its own brand. What developers see is that the App Store is a shaky foundation upon which to build a business.</p></blockquote>
<p><a href="http://drnicwilliams.com/2010/02/25/customized-google-forms/">Customized Google Forms</a></p>
<blockquote><p>Google Forms are a great, free way to collect information from anyone, stored directly into a Google Spreadsheet, and then have Google notify you each time a form is submitted (optionally). The downside is that you can only use one of their pre-packaged themes. You can’t have your company logo and corporate “look”. Pooey to Google, we say. So we wrote custom_google_forms.</p></blockquote>
<p><a href="http://edgerails.info/articles/what-s-new-in-edge-rails/2010/02/23/the-skinny-on-scopes-formerly-named-scope/">The Skinny on Scopes (Formerly named_scope)</a></p>
<blockquote><p>So here we are with Rails 3 completely refactoring the internals of ActiveRecord &#8211; what’s up with our beloved named_scope? Well, the simple answer is that it’s been renamed to scope and you can use it just as you’re used to … but that’s taking the easy way out. Let’s see what else we can do with scope in Rails 3.</p></blockquote>
<p><a href="http://www.instapaper.com/go/24438219/text">Be lucky &#8211; it&#8217;s an easy skill to learn</a></p>
<blockquote><p>My research revealed that lucky people generate good fortune via four basic principles. They are skilled at creating and noticing chance opportunities, make lucky decisions by listening to their intuition, create self-fulfilling prophesies via positive expectations, and adopt a resilient attitude that transforms bad luck into good.</p></blockquote>
<p><a href="http://www.paperplanes.de/2010/2/25/notes_on_mongodb.html">Notes on MongoDB</a></p>
<blockquote><p>For an article in a German magazine I&#8217;ve been researching MongoDB over the last week or so. While I didn&#8217;t need a lot of the information I came across I collected some nicely distilled notes on some of its inner workings.</p></blockquote>
<p><a href="http://nosql.mypopescu.com/post/407159447/cassandra-twitter-an-interview-with-ryan-king">Cassandra @ Twitter: An Interview with Ryan King</a></p>
<blockquote><p>I received a short email from Ryan King, the lead of Cassandra efforts at Twitter simply saying that he would be glad to talk about these efforts.</p></blockquote>
<p><a href="http://github.com/mzsanford/twitter-text-rb">mzsanford&#8217;s twitter-text-rb</a></p>
<blockquote><p>Twitter text processing library (auto linking and extraction of usernames, lists and hashtags)</p></blockquote>
<p><a href="http://perpetualbeta.com/release/2009/11/why-the-gpl-does-not-apply-to-premium-wordpress-themes/">Why the GPL does not apply to premium WordPress themes</a></p>
<blockquote><p>At its core, the GPL is simply a fancy way of controlling other people’s work through the imposition of copyright restrictions. Those who seek to extend the GPL beyond the bounds allowed by copyright law, do not promote freedom but instead take freedom away.</p></blockquote>
<p><a href="http://github.com/defunkt/resque">defunkt&#8217;s resque</a></p>
<blockquote><p>Resque is a Redis-backed library for creating background jobs, placing those jobs on multiple queues, and processing them later.</p></blockquote>
<p><a href="http://www.kk.org/thetechnium/archives/2010/01/the_2-billion-e.php">The 2-Billion-Eyed Intermedia</a></p>
<blockquote><p>We are developing an intense, sustained conversation with this large thing. The fact that it is made up of a million loosely connected pieces is distracting us. The producers of Websites, and the hordes of commenters online, and the movie moguls reluctantly letting us stream their movies, don&#8217;t believe they are mere pixels in a big global show, but they are. It is one thing now, an intermedia with 2 billion screens peering into it.</p></blockquote>
<p><a href="http://blog.serverminds.com/?p=60">EngineYard to exit Herakles and the infrastructure business in 6 months or less?</a></p>
<blockquote><p>I think EngineYard, in spite of the fact they made their salt on being a hosting and infrastructure company, is sensibly getting out of the plumbing business.  They are going much more to the software-as-a-service (expertise in virtual / cloud Rails hosting, general and specific Rails expertise, etc.)  vs infrastructure-as-a-service side and their propensity for Xen and virtualization makes the decision much more logical and transparent.</p></blockquote>
<p><a href="http://blog.plataformatec.com.br/2010/02/happy-birthday-devise/">Happy Birthday Devise</a></p>
<blockquote><p>Let’s celebrate and talk a bit about history.</p></blockquote>
<p><a href="http://boldr.net/upgrade-plugins-gems-rails-3/">How to upgrade plugins to Rails 3.0</a></p>
<blockquote><p>Rails 3.0 beta is out and it’s now time to upgrade all the plugins available. To show you how to do it I’ve decided to create a small plugin compatible with Rails 2.x and Rails 3.0. It’s a wrapper around Rack::Cache to insert it automatically in a Rails application.</p></blockquote>
<p><a href="http://www.codinghorror.com/blog/archives/001320.html">Cultivate Teams, Not Ideas</a></p>
<blockquote><p>Success is rarely determined by the quality of your ideas. But it is frequently determined by the quality of your execution. So instead of worrying about whether the Next Big Idea you&#8217;re all working on is sufficiently brilliant, worry about how well you&#8217;re executing.</p></blockquote>
<p><a href="http://www.youtube.com/disco">YouTube Disco</a></p>
<blockquote><p>YouTube Music Discovery Project and Playlist Creation Tool</p></blockquote>
<p><a href="http://kevin.vanzonneveld.net/techblog/article/run_nodejs_as_a_service_on_ubuntu_karmic/">Run Node.js as a Service on Ubuntu Karmic</a></p>
<blockquote><p>The core of our new project runs on Node.js. With Node you can write very fast JavaScript programs serverside. It&#8217;s pretty easy to install Node, code your program, and run it. But how do you make it run nicely in the background like a true server?</p></blockquote>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/9yVl-ZyNkR8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2010/03/24/weekly-digest-3-24-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2010/03/24/weekly-digest-3-24-10/</feedburner:origLink></item>
		<item>
		<title>KZAK: an open source web-based jukebox</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/RhPh7Pq-SuM/</link>
		<comments>http://trevorturk.com/2010/02/08/kzak-an-open-source-web-based-jukebox/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 05:34:39 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://almosteffortless.com/?p=1835</guid>
		<description><![CDATA[I&#8217;m happy to announce that I&#8217;ve made my latest side-project open source. It&#8217;s called KZAK. It&#8217;s a simple web-based jukebox that you can use to share and listen to music with your friends. The feature set is pretty limited right, but I hope to continue to improve things over time. I&#8217;m already encouraged by how [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m happy to announce that I&#8217;ve made my latest side-project open source. It&#8217;s called <a href="http://github.com/trevorturk/kzak">KZAK</a>. It&#8217;s a simple web-based jukebox that you can use to share and listen to music with your friends. </p>
<p>The feature set is pretty limited right, but I hope to continue to improve things over time. I&#8217;m already encouraged by how quickly some of my friends have taken to the app, and I think you&#8217;ll enjoy it &#8211; even in this early form.</p>
<p>So far you can:</p>
<ul>
<li>Invite people to use the site via email</li>
<li>Upload mp3, mp4, and m4a (iTunes) tracks with an upload queue and progress</li>
<li>Listen to the uploaded music as a playlist, even in an inactive browser tab</li>
</ul>
<p>Like I said, it&#8217;s pretty basic (invite, upload, listen) but surprisingly functional. Plus, I&#8217;m using all kinds of interesting stuff behind the scenes, which is why I really wanted to share the code ;) </p>
<p>To begin with, we&#8217;ve got a Rails app that&#8217;s using the latest and greatest in user authentication technology: <a href="http://github.com/plataformatec/devise">Devise</a>. If you&#8217;re using something like restful_authentication or Authlogic, I implore you to take a look at Devise. It&#8217;s a phenomenal improvement from these other two popular options, and it&#8217;s being actively supported by <a href="http://github.com/josevalim">José Valim</a>, the latest Rails committer. Essentially, it&#8217;s a Rails Engine that sits on top of <a href="http://github.com/hassox/warden">Warden</a> &#8211; a generalized Rack authentication framework. This combination is extraordinarily flexible and easy to use. It&#8217;s opinionated (in a good way) while simultaneously doing a good job of staying out of the way. It introduces very little code into your application, and the source is well documented, well tested, and easy to follow. A++ highly recommended. </p>
<p>To handle the file uploads, I&#8217;ve switched from <a href="http://github.com/thoughtbot/paperclip">Paperclip</a> to <a href="http://github.com/jnicklas/carrierwave">CarrierWave</a>. While Paperclip has (and continues) to serve me well in many applications I work with, I really appreciate the modular approach that CarrierWave takes. It&#8217;s agnostic as to which of the popular S3 clients you use, supporting both <a href="http://amazon.rubyforge.org/">aws/s3</a> and <a href="http://rightaws.rubyforge.org/">right_aws</a>. It&#8217;s also ORM agnostic and not tightly coupled to Active Record. The tight coupling of Paperclip has caused us some grief at work, and I&#8217;m also confused about the state of Paperclip&#8217;s support for aws/s3 and right_aws. So, I was happy to find this new project, and the maintainer <a href="http://github.com/jnicklas/">Jonas Nicklas</a> seems to be an extremely responsive and helpful dude, which is always good thing. The code looks great, and I&#8217;ve had an easy time working with this library so far. </p>
<p>In concert with CarrierWave, I&#8217;m also using the venerable <a href="http://swfupload.org/"> SWFUpload</a> to support upload queues and progress meters. I&#8217;m absolutely baffled as to why this kind of thing isn&#8217;t easy/possible to support without Flash, but here we are. Of course, I have a fallback &#8220;regular upload form&#8221; that still uses some ajax to make things a little easier. There are a few blog posts and tutorial applications around on GitHub that helped me get SWFUpload working with Rails and jQuery, and I&#8217;m happy to put back out an example application that other people can refer to if they&#8217;re interested in supporting upload queues and/or upload progress meters. </p>
<p>Next, to support audio playback while I work on supporting html5 properly, I&#8217;m using the extremely awesome <a href="http://www.schillmania.com/projects/soundmanager2/"> SoundManager 2</a>. Unfortunately, this is another part of the infrastructure using Flash, but the features and functionality of SoundManager are really something special. I&#8217;ve only scratched the surface of what this library can do, but I&#8217;m already enjoying it quite a bit. If you&#8217;re working with jQuery and SoundManager, you may find the KZAK source code worth perusing. You might also take a look at <a href="http://github.com/adriengibrat/jQuery-SoundManager/">Adrien Gibrat&#8217;s plugin</a>, which is a cool jQuery plugin that packs a lot of functionality. </p>
<p>Also running in the background of KZAK is a Twitter-style following/unfollowing system that I haven&#8217;t exposed much of yet. It&#8217;s basically the same system that&#8217;s powering <a href="http://flowcoder.com">Flowcoder</a>. You can check out this <a href="http://github.com/trevorturk/tweets">example app</a> I made if you&#8217;re interested in seeing that on its own. Currently, all users in the system follow (and are followed by) all of the other users. I plan to allow for &#8220;unfollowing&#8221; users some time soon, which will allow for some healthy splintering of the community in the case that you&#8217;re not interested in everything that everyone is uploading. </p>
<p>Finally &#8211; and perhaps best of all &#8211; KZAK is fully compatible with and easy to install on Heroku. All you need is an S3 account and you&#8217;re ready to get started with a web-based jukebox for you and your friends <i>for free</i>. </p>
<p><a href="http://github.com/trevorturk/kzak">http://github.com/trevorturk/kzak</a></p>
<p>Anyway, please feel free to dig around the source code if you&#8217;re interested in any of this. I think there&#8217;s a lot of good stuff in there, especially considering that the Ruby portion of the app is clocking in at under ~250 LOC right now. Thanks, open source community ;)</p>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/RhPh7Pq-SuM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2010/02/08/kzak-an-open-source-web-based-jukebox/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2010/02/08/kzak-an-open-source-web-based-jukebox/</feedburner:origLink></item>
		<item>
		<title>Cloudfront: no-brainer CDN support for S3</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/-S0wHIOaMdo/</link>
		<comments>http://trevorturk.com/2010/02/08/cloudfront-no-brainer-cdn-support-for-s3/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 01:01:05 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://almosteffortless.com/?p=1688</guid>
		<description><![CDATA[Amazon&#8217;s CloudFront is a phenomenal addition to their S3 file-hosting service. Amazon CloudFront is a web service for content delivery. It integrates with other Amazon Web Services to give developers and businesses an easy way to distribute content to end users with low latency, high data transfer speeds, and no commitments. Amazon CloudFront delivers your [...]]]></description>
			<content:encoded><![CDATA[<p>Amazon&#8217;s <a href="http://aws.amazon.com/cloudfront/">CloudFront</a> is a phenomenal addition to their <a href="https://s3.amazonaws.com/">S3</a> file-hosting service.</p>
<blockquote><p>Amazon CloudFront is a web service for content delivery. It integrates with other Amazon Web Services to give developers and businesses an easy way to distribute content to end users with low latency, high data transfer speeds, and no commitments. </p>
<p>Amazon CloudFront delivers your static and streaming content using a global network of edge locations. Requests for your objects are automatically routed to the nearest edge location, so content is delivered with the best possible performance. Amazon CloudFront works seamlessly with Amazon Simple Storage Service (Amazon S3) which durably stores the original, definitive versions of your files. Like other Amazon Web Services, there are no contracts or monthly commitments for using Amazon CloudFront – you pay only for as much or as little content as you actually deliver through the service.</p></blockquote>
<p>If you&#8217;re using S3 and you&#8217;re not using CloudFront, you should take a moment to check it out. You&#8217;ll be surprised at how little work it takes to set up, how much it speeds up your assets serving, and how little it costs. </p>
<p>CloudFront is a part of the Amazon <a href="https://console.aws.amazon.com/">Console</a> now, so it&#8217;s very easy to set up. All you need to do is to create a distribution, which means enabling CloudFront for a specific S3 bucket and choosing a CNAME that you&#8217;ll serve your assets from. Then, you need to set up the CNAME in your DNS configuration on GoDaddy and you&#8217;re done. </p>
<p>The following two screenshots illustrate the process. </p>
<p>Step one is to creating the distribution in Amazon&#8217;s Console:</p>
<p><img src="http://almosteffortless.s3.amazonaws.com/cloudfront-1.png" style="width:580px" /></p>
<p>Note the <b>Domain Name</b> and <b>CNAMEs</b> sections in the lower half of the screen. I&#8217;ve chosen the CNAME of &#8220;s3.kzak.org&#8221; because I want my S3 bucket to be aliased such that URLs will look like this:</p>
<p>http://s3.kzak.org/example.jpg</p>
<p>CloudFront has provided me with the domain name that I need to provide to GoDaddy. Since I&#8217;m using their &#8220;Total DNS&#8221; option, all I have to do is add the CNAME like so:</p>
<p><img src="http://almosteffortless.s3.amazonaws.com/cloudfront-2.png" style="width:580px" /></p>
<p>Notice that the CNAME of &#8220;s3&#8243; is set to the domain name that CloudFront provided me. </p>
<p>These changes seem to take about 30 minutes to percolate through the internets, but that&#8217;s all it takes to get started with CloudFront. </p>
<p>For bonus points, you may want to read up about <a href="http://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html">using multiple asset hosts in Rails</a> and apply this technique in your applications for additional throughput. </p>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/-S0wHIOaMdo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2010/02/08/cloudfront-no-brainer-cdn-support-for-s3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2010/02/08/cloudfront-no-brainer-cdn-support-for-s3/</feedburner:origLink></item>
		<item>
		<title>Flowcoder: Share, refactor, and tweet code snippets</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/133xCRAWGow/</link>
		<comments>http://trevorturk.com/2010/02/08/flowcoder-share-refactor-and-tweet-code-snippets/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 00:38:33 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://almosteffortless.com/?p=1619</guid>
		<description><![CDATA[I just realized that I never posts about our entry into the Rails Rumble last year. Flowcoder: An Evolution of the Code Snippet Site Coded and designed by @gbuesing, @scottymac, and @trevorturk for @railsrumble in 2009. Flowcoder has what you would expect from a code snippet side: multiple language support, raw code view, and support [...]]]></description>
			<content:encoded><![CDATA[<p>I just realized that I never posts about our entry into the Rails Rumble last year.</p>
<p><a href="http://flowcoder.com">Flowcoder</a>: An Evolution of the Code Snippet Site</p>
<p>Coded and designed by @<a href="http://twitter.com/gbuesing">gbuesing</a>, @<a href="http://twitter.com/scottymac">scottymac</a>, and @<a href="http://twitter.com/trevorturk">trevorturk</a> for @<a href="http://twitter.com/railsrumble/">railsrumble</a> in 2009.</p>
<p><a href="http://flowcoder.com"><img style="width:590px;" src="http://s3.amazonaws.com/almosteffortless/flowcoder_screen.png" /></a></p>
<p><a href="http://flowcoder.com">Flowcoder</a> has what you would expect from a code snippet side: multiple language support, raw code view, and support for embedding on other sites. </p>
<p>What was missing for us and what we really wanted was a site that featured not just the code, but the people creating the code. Just as we glean interesting tidbits about people&#8217;s lives from Twitter, we wanted to learn from our favorite coders by being able to follow the kind of code snippets they create. We wanted to share our own code snippets and have others refactoring them: to fix, optimize, and make them better, and learn in the process. And we wanted to be kept informed: when your code is refactored on Flowcoder, you&#8217;ll see an @reply from @flowcoderbot with some information and a link. This closes the loop in a casual, low bandwidth fashion and highlights the advantage of using Twitter as both an identity and notification system.</p>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/133xCRAWGow" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2010/02/08/flowcoder-share-refactor-and-tweet-code-snippets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2010/02/08/flowcoder-share-refactor-and-tweet-code-snippets/</feedburner:origLink></item>
		<item>
		<title>Weekly Digest, 2-1-10</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/IXM_g6THw9E/</link>
		<comments>http://trevorturk.com/2010/02/01/weekly-digest-2-1-10/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 04:52:46 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://almosteffortless.com/?p=1820</guid>
		<description><![CDATA[If you enjoy these links, you should follow me on GitHub here. iPhone / iPad icon PSD template I’ve decided to work with my good friend, Sean Patrick O‘Brien to create a PSD based off the exact overlays, outlines, and masks the iPhone and iPad OS use to mask icons. visionmedia&#8217;s express Sinatra-like JavaScript node.js [...]]]></description>
			<content:encoded><![CDATA[<p>If you enjoy these links, you should follow me on GitHub <a href="http://github.com/trevorturk/">here</a>.</p>
<p><a href="http://blog.cocoia.com/2010/iphone-ipad-icon-psd-template/">iPhone / iPad icon PSD template</a></p>
<blockquote><p>I’ve decided to work with my good friend, Sean Patrick O‘Brien to create a PSD based off the exact overlays, outlines, and masks the iPhone and iPad OS use to mask icons.</p></blockquote>
<p><a href="http://github.com/visionmedia/express">visionmedia&#8217;s express</a></p>
<blockquote><p>Sinatra-like JavaScript node.js web development framework &#8212; insanely fast, insanely sexy</p></blockquote>
<p><a href="http://github.com/rails/rails/commit/8ae25a8e41168801590fdb95891cc5990b4db21c">Commit 8ae25 to rails</a></p>
<blockquote><p>Introduce class_attribute to declare inheritable class attributes. Writing an attribute on a subclass behaves just like overriding the superclass reader method. Unifies and replaces most usage of cattr_accessor, class_inheritable_attribute, superclass_delegating_attribute, and extlib_inheritable_attribute.</p></blockquote>
<p><a href="http://github.com/jed/fab">jed&#8217;s fab</a></p>
<blockquote><p>(fab) is a lightweight (~2KB minified and gzipped) toolkit that makes it easy to build asynchronous web apps. It takes advantage of the flexibility of javascript to create a concise DSL without pre-compilation or magic scope hackery.</p></blockquote>
<p><a href="http://manalang.com/static-websites-with-heroku">Static websites with Heroku</a></p>
<blockquote><p>I recently moved off of Dreamhost in favor of Heroku.  I have a few static sites I needed to move over and here&#8217;s how I did it&#8230;</p></blockquote>
<p><a href="http://speirs.org/blog/2010/1/29/future-shock.html">Future Shock</a></p>
<blockquote><p>If the iPad and its successor devices free these people to focus on what they do best, it will dramatically change people&#8217;s perceptions of computing from something to fear to something to engage enthusiastically with. I find it hard to believe that the loss of background processing isn&#8217;t a price worth paying to have a computer that isn&#8217;t frightening anymore.</p></blockquote>
<p><a href="http://news.ycombinator.com/item?id=1087596">Hacker News | Tinkerer’s Sunset</a></p>
<blockquote><p>The iPad has really brought out a lot of old, crochety &#8220;well in my day&#8221; engineers that are now to the point where its embarassing. The iPad will draw more people towards software engineering, because for the first time we will have a general purpose computer that doesn&#8217;t suck horribly for normal people.</p></blockquote>
<p><a href="http://joehewitt.com/post/ipad/">Joe Hewitt: iPad</a></p>
<blockquote><p>iPad is an incredible opportunity for developers to re-imagine every single category of desktop and web software there is. Seriously, if you&#8217;re a developer and you&#8217;re not thinking about how your app could work better on the iPad and its descendants, you deserve to get left behind.</p></blockquote>
<p><a href="http://www.jslint.com/">JSLint</a></p>
<blockquote><p>The JavaScript Code Quality Tool</p></blockquote>
<p><a href="http://github.com/jeffkreeftmeijer/navvy">jeffkreeftmeijer&#8217;s navvy at master &#8211; GitHub</a></p>
<blockquote><p>Simple Ruby background job processor inspired by delayed_job, but aiming for database agnosticism.</p></blockquote>
<p><a href="http://danieltenner.com/posts/0015-ipad-an-apple-for-mom.html">iPad: an Apple for Mom</a></p>
<blockquote><p>Most people have a computer at home. For some (like my mom), it’s an ancient Dell laptop they bought years ago. Others have bought into the netbook trend and invested a small amount of money into a machine that, for most people, can only be irritating to use (slow, small, ugly, and burns your lap – not a recipe for success). A few have actually paid good money for what was supposed to be a modern machine, and actually turned out to be yet another annoying slow, painful-to-use, Windows-based machine infested with trial software, spyware, and sometimes viruses.</p></blockquote>
<p><a href="http://github.com/documentcloud/underscore">documentcloud&#8217;s underscore</a></p>
<blockquote><p>Functional Programming Aid for Javascript. Works well with jQuery.</p></blockquote>
<p><a href="http://github.com/neerajdotname/admin_data">neerajdotname&#8217;s admin_data</a></p>
<blockquote><p>Browse and Manage your data using browser</p></blockquote>
<p><a href="http://plasmasturm.org/log/gitidxpraise/">In praise of git’s index</a></p>
<blockquote><p>The key to understanding it is how it interacts with git diff. Once you add something to the index (also referred to as staging it), it disappears off the diff. You can pass &#8211;cached to see what changes you have staged, but by default, it doesn’t show you the changes that you have asserted are ready for commit.</p></blockquote>
<p><a href="http://github.com/jnicklas/capybara">jnicklas&#8217;s capybara</a></p>
<blockquote><p>webrat alternative which aims to support all browser simulators</p></blockquote>
<p><a href="http://github.com/thoughtbot/pacecar">thoughtbot&#8217;s pacecar</a></p>
<blockquote><p>Generated scopes for ActiveRecord classes</p></blockquote>
<p><a href="http://github.com/quirkey/sammy">quirkey&#8217;s sammy</a></p>
<blockquote><p>Sammy is a tiny javascript framework built on top of jQuery, It&#8217;s RESTful Evented Javascript.</p></blockquote>
<p><a href="http://lindsaar.net/2010/1/26/new-actionmailer-api-in-rails-3">New ActionMailer API in Rails 3.0</a></p>
<blockquote><p>Action Mailer has long been the black sheep of the Rails family. Somehow, through many arguments, you get it doing exactly what you want. But it takes work! Well, we just fixed that. Action Mailer now has a new API.</p></blockquote>
<p><a href="http://ecorner.stanford.edu/authorMaterialInfo.html?mid=2334">Stanford&#8217;s Entrepreneurship Corner: David Heinemeier Hansson, 37signals &#8211; Unlearn Your MBA</a></p>
<blockquote><p>David Heineimeier Hansson, the creator of Ruby on Rails and partner at 37signals in Chicago, says that planning is guessing, and for a start-up, the focus must be on today and not on tomorrow. He argues that constraints&#8211;fiscal, temporal, or otherwise&#8211;drive innovation and effective problem-solving. The most important thing, Hansson believes, is to make a dent in the universe with your company.</p></blockquote>
<p><a href="http://arstechnica.com/open-source/news/2010/01/bumps-ahead-as-vimeo-youtube-respond-to-html5-video-demand.ars">Bumps ahead as Vimeo, YouTube respond to HTML5 video demand</a></p>
<blockquote><p>Although there are still a number of important problems to solve before open video can displace Flash-based video playback on the Web, it seems likely that we will see more progress now that the major players are all on board and the users are enthusiastically calling for better standards support.</p></blockquote>
<p><a href="http://blog.plataformatec.com.br/2010/01/discovering-rails-3-generators/?utm_source=feedburner&#038;utm_medium=feed&#038;utm_campaign=Feed%3A+PlataformaBlog+%28Plataforma+Blog%29&#038;utm_content=Google+Reader">Discovering Rails 3 generators</a></p>
<blockquote><p>This weekend during Rails Bugmash I stumbled across some nice posts about Rails 3 generators which motivated me to share them and add some comments!</p></blockquote>
<p><a href="http://m.onkey.org/2010/1/22/active-record-query-interface?utm_source=feedburner&#038;utm_medium=feed&#038;utm_campaign=Feed%3A+monkeyonrails+%28m.onkey+on+rails%29&#038;utm_content=Google+Reader">Active Record Query Interface 3.0</a></p>
<blockquote><p>I’ve been working on revamping the Active Record query interface for the last few weeks ( while taking some time off in India from consulting work, before joining 37signals ), building on top of Emilio’s GSOC project of integrating ARel and ActiveRecord. So here’s an overview of how things are going to work in Rails 3.</p></blockquote>
<p><a href="http://gizmodo.com/5451242/show-and-sell-the-secret-to-apples-magic">Show and Sell: The Secret to Apple&#8217;s Magic</a></p>
<blockquote><p>Flash an exotic prototype, then—Presto!—get people to buy your more boring stuff. That kind of thinking still rules at most electronics companies. Apple under Steve Jobs only shows off actual products. The difference? Apple&#8217;s arcane secret to success.</p></blockquote>
<p><a href="http://omgbloglol.com/post/344792822/the-path-to-rails-3-introduction">omgbloglol Rails 3 Introduction</a></p>
<blockquote><p>This post is kicking off a series that I’m doing about moving your skills and migrating your code to Rails 3. I’ll be sharing some practical insights and covering some pretty in-depth topics as we go along (I’ve got some notes for entries about upgrading plugins, taking advantage of new features like the agnosticism, migrating applications, and so on), but before I go into a lot of specifics, I thought it might be useful to go over some of the high-level philosophical and architectural changes that have gone on in the Rails code between versions 2 and 3.</p></blockquote>
<p><a href="http://mixergy.com/twitpic-noah-everett/">How A Spare Computer Became Twitpic</a></p>
<blockquote><p>In 2008, Noah Everett wanted to share photos on Twitter. Since there was no way to do it, he grabbed an old server and created Twitpic as a side project&#8230; A $1.5+ Million A Year Twitter Success Story&#8230;</p></blockquote>
<p><a href="http://wiki.apache.org/couchdb/API_Cheatsheet">API_Cheatsheet &#8211; Couchdb Wiki</a></p>
<blockquote><p>Server, database, and document level.</p></blockquote>
<p><a href="https://chartbeat.com/">chartbeat</a></p>
<blockquote><p>The web doesn&#8217;t work with a 24-hour lag and neither should your analytics. Chartbeat gives you real-time analytics so that you know what&#8217;s happening when it&#8217;s happening. Control the story, track a product launch, exploit an opportunity from the moment they happen.</p></blockquote>
<p><a href="http://madebymany.co.uk/the-concept-is-the-execution-002574">The Concept *is* the Execution</a></p>
<blockquote><p>You cannot design a great service without an obsessional focus on the details.</p></blockquote>
<p><a href="http://graffitianalysis.com/">Graffiti Analysis</a></p>
<blockquote><p>Graffiti Analysis is an extensive ongoing study in the motion of graffiti. Custom software designed for graffiti writers creates visualizations of the often unseen motion involved in the creation of a tag.</p></blockquote>
<p><a href="http://maxklein.posterous.com/how-i-solved-email-overload-using-gmail">How I solved email overload using gmail</a></p>
<blockquote><p>It&#8217;s simple. Every single email that arrives in my in-box is immediately put in a filter.</p></blockquote>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/IXM_g6THw9E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2010/02/01/weekly-digest-2-1-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2010/02/01/weekly-digest-2-1-10/</feedburner:origLink></item>
		<item>
		<title>Weekly Digest, 1-6-09</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/yf-ExDFMNm0/</link>
		<comments>http://trevorturk.com/2010/01/06/weekly-digest-1-6-09/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 06:37:27 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://almosteffortless.com/?p=1816</guid>
		<description><![CDATA[If you enjoy these links, you should follow me on GitHub here. Steve Krug on Usability I can’t think of a better intro to the essential points of usability than this presentation by Steve Krug. I especially appreciate his “least you can do” approach. Enjoy. iBusted &#8230;the Sun-Times is forwarding every page request to http://mobile.suntimes.com [...]]]></description>
			<content:encoded><![CDATA[<p>If you enjoy these links, you should follow me on GitHub <a href="http://github.com/trevorturk/">here</a>.</p>
<p><a href="http://37signals.com/svn/posts/2092-i-cant-think-of-a-better-intro-to-the-essential">Steve Krug on Usability</a></p>
<blockquote><p>I can’t think of a better intro to the essential points of usability than this presentation by Steve Krug. I especially appreciate his “least you can do” approach. Enjoy.</p></blockquote>
<p><a href="http://blog.whiskyvangoghgo.com/post/318544275/ibusted">iBusted</a></p>
<blockquote><p>&#8230;the Sun-Times is forwarding every page request to http://mobile.suntimes.com (the root “home page” of the optimized site), thus breaking every link to every single article they’ve published. This is the very definition of a broken website.</p></blockquote>
<p><a href="http://getcaliper.com/caliper">Caliper: Hosted Ruby Metrics</a></p>
<blockquote><p>Ruby metrics don&#8217;t get any easier than this.</p></blockquote>
<p><a href="http://adminnoob.com/">Admin Noob</a></p>
<blockquote><p>System Administration for Noobs</p></blockquote>
<p><a href="http://mentalized.net/journal/2005/11/29/ajax_activity_indicators/">AJAX activity indicators</a></p>
<blockquote><p>An important design element that’s part of the whole AJAX business is somehow letting your user know that stuff is actually happening while the server crunches away. A common way to do so, is to add a little animated GIF that is only shown when the AJAX request is happening.</p></blockquote>
<p><a href="http://www.ruby-toolbox.com/">The Ruby Toolbox</a></p>
<blockquote><p>The Ruby Toolbox gives you an overview of these tools, sorted in categories and rated by the amount of watchers and forks in the corresponding source code repository on GitHub so you can find out easily what options you have and which are the most common ones in the Ruby community.</p></blockquote>
<p><a href="http://blogobaggins.com/2009/03/31/waging-war-on-whitespace.html">Waging War on Whitespace (using TextMate)</a></p>
<blockquote><p>To avoid diff cruft you’ll need to instruct your text editor to remove trailing whitespace, preferably every time you save so you don’t have to remember to do it.</p></blockquote>
<p><a href="http://github.com/roman/warden_oauth/">roman&#8217;s warden_oauth</a></p>
<blockquote><p>warden_oauth enhances the Warden authentication framework, offering a simple interface for creating oauth strategies.</p></blockquote>
<p><a href="http://github.com/ffmike/has_messages">ffmike&#8217;s has_messages</a></p>
<blockquote><p>This plugin provides a nice and easy way to create simple internal messaging system in your application.</p></blockquote>
<p><a href="http://github.com/jpignata/temping">jpignata&#8217;s temping</a></p>
<blockquote><p>Temping allows you to create arbitrary ActiveRecord models backed by a temporary SQL table for use in tests.</p></blockquote>
<p><a href="http://litanyagainstfear.com/blog/2009/10/14/gem-bundler-is-the-future/">Gem Bundler is the Future</a></p>
<blockquote><p>This guide went over how to use Bundler today, with a Rails 2.3.4 app. According to Yehuda, this eventually will be packaged in Rails 3, so the commands will be baked into Rails…so something like script/bundle. The nice thing is that you can use the bundler with any Ruby project, so this is good to know in general.</p></blockquote>
<p><a href="http://onehackoranother.com/projects/jquery/tipsy/">tipsy</a></p>
<blockquote><p>Tipsy is a jQuery for creating a Facebook-like tooltips effect based on an anchor tag&#8217;s title attribute.</p></blockquote>
<p><a href="http://blog.plataformatec.com.br/2009/12/one-in-three-inherited-resources-has-scope-and-responders/">One in Three: Inherited Resources, Has Scope and Responders</a></p>
<blockquote><p>So we were there, building an application based on scaffold, and as we saw duplicated code we started to realize Inherited Resources contains a lot of tools that could be used outside its context. And this is what is happening right now, two new gems are being launched: Responders and HasScope.</p></blockquote>
<p><a href="http://www.johndcook.com/blog/2009/12/23/why-programmers-are-not-paid-in-proportion-to-their-productivity/">Why programmers are not paid in proportion to their productivity</a></p>
<blockquote><p>The romantic image of an über-programmer is someone who fires up Emacs, types like a machine gun, and delivers a flawless final product from scratch. A more accurate image would be someone who stares quietly into space for a few minutes and then says “Hmm. I think I’ve seen something like this before.”</p></blockquote>
<p><a href="http://www.wired.com/magazine/2009/12/fail_duke_nukem/all/1">Learn to Let Go: How Success Killed Duke Nukem</a></p>
<blockquote><p>It’s a dilemma all artists confront, of course. When do you stop creating and send your work out to face the public? Plenty of Hollywood directors have delayed for months, dithering in the editing room. But in videogames, the problem is particularly acute, because the longer you delay, the more genuinely antiquated your product begins to look — and the more likely it is that you’ll need to rip things down and start again. All game designers know this, so they pick a point to stop improving — to “lock the game down” — and then spend a frantic year polishing. But Broussard never seemed willing to do that.</p></blockquote>
<p><a href="http://github.com/jzawodn/mytop">jzawodn&#8217;s mytop</a></p>
<blockquote><p>a &#8220;top&#8221; clone for MySQL</p></blockquote>
<p><a href="http://railstips.org/2009/12/18/why-i-think-mongo-is-to-databases-what-rails-was-to-frameworks">Why I think Mongo is to Databases what Rails was to Frameworks // RailsTips by John Nunemaker</a></p>
<blockquote><p>Below are 7 Mongo and MongoMapper related features that I have found to be really awesome while working on switching Harmony, a new website management system by my company, Ordered List, to Mongo from MySQL.</p></blockquote>
<p><a href="http://www.readwriteweb.com/archives/server-side_javascript_back_with_a_vengeance.php">Server-Side Javascript: Back With a Vengeance</a></p>
<blockquote><p>Last month was Javascript season in Europe, with two conferences dedicated to the language that powers interactive web applications, and a third, which featured it heavily. If a common theme emerged, it was the buzz about Javascript leaping out of the browser to serve other domains, and the noise has only become louder in the aftermath.</p></blockquote>
<p><a href="http://blog.plataformatec.com.br/2009/12/subdomains-and-sessions-to-the-rescue/">Subdomains and sessions to the rescue!</a></p>
<blockquote><p>After some research we decided to go with the subdomain-fu gem, which is great to give your application the ability of handling subdomains. Another great resource we have used is Ryan Bates’ screencast about the subject. But they did not solve our problem completely, so here we are going to document a few steps to help you get up and running easily with subdomains and sessions.</p></blockquote>
<p><a href="http://coderack.org/users/reagent/entries/93-racksnapshot">CodeRack: Rack::Snapshot</a></p>
<blockquote><p>Rack::Snapshot is a quick way to expand image urls for the popular image sharing services. If you have a URL to a public page for an image on Skitch, Img.ly, Twitpic, Yfrog, Flickr, or Twitgoo, this middleware will embed the direct image URL for you.</p></blockquote>
<p><a href="http://github.com/tobi/imagery/blob/master/config/deploy.rb">config/deploy.rb from tobi&#8217;s imagery</a></p>
<blockquote><p>Capistrano tasks for a GitHub-style deployment.</p></blockquote>
<p><a href="http://github.com/sickill/racksh">sickill&#8217;s racksh</a></p>
<blockquote><p>Console for any Rack based ruby web app.</p></blockquote>
<p><a href="http://github.com/tobi/clarity">tobi&#8217;s clarity</a></p>
<blockquote><p>Web interface for the grep and tail -f unix tools. Useful for real-time log analysis. Remotely related to splunk.</p></blockquote>
<p><a href="http://github.com/tobi/imagery">tobi&#8217;s imagery</a></p>
<blockquote><p>Image server / proxy that can resize images on demand based on common file prefixes ( such as _small, _medium ) and apply other rmagick effects. Supposed to be used between a Squid/Varnish and S3.</p></blockquote>
<p><a href="http://pivotallabs.com/users/brian/blog/articles/352-introducing-rr">Introducing RR</a></p>
<blockquote><p>I&#8217;m pleased to introduce a new Test Double (or mock) framework named RR, which is short for Double Ruby.</p></blockquote>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/yf-ExDFMNm0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2010/01/06/weekly-digest-1-6-09/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2010/01/06/weekly-digest-1-6-09/</feedburner:origLink></item>
		<item>
		<title>Weekly Digest, 12-11-09</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/tdqMB-7mu6Q/</link>
		<comments>http://trevorturk.com/2009/12/11/weekly-digest-12-11-09/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 06:44:10 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://almosteffortless.com/?p=1809</guid>
		<description><![CDATA[This time I have an excuse for the non-weekly nature of the weekly digest&#8230; I&#8217;ve been traveling! Please do check out some photos if you&#8217;re interested on that sort of thing. Video of Node.js by Ryan Dahl at JSConf.eu Node.js might be the most exciting single piece of software in the current JavaScript universe. Ryan [...]]]></description>
			<content:encoded><![CDATA[<p>This time I have an excuse for the non-weekly nature of the weekly digest&#8230; I&#8217;ve been traveling! Please do <a href="http://www.flickr.com/photos/trevorturk/">check out some photos</a> if you&#8217;re interested on that sort of thing. </p>
<p><a href="http://jsconf.eu/2009/video_nodejs_by_ryan_dahl.html">Video of Node.js by Ryan Dahl at JSConf.eu</a></p>
<blockquote><p>Node.js might be the most exciting single piece of software in the current JavaScript universe. Ryan received standing ovations for his talk and he really deserved it!</p></blockquote>
<p><a href="http://oscardelben.com/articles/2009/12/06/how-to-test-rails-3.html">How to Begin Playing With Rails 3</a></p>
<blockquote><p>Curious to take a look at Rails 3?</p></blockquote>
<p><a href="http://brianleroux.github.com/lawnchair/">Lawnchair</a></p>
<blockquote><p>Sorta like a couch except smaller and outside, also, a client side JSON document store. Perfect for webkit mobile apps that need a lightweight, simple and elegant persistence solution.</p></blockquote>
<p><a href="http://robots.thoughtbot.com/post/162185884/stupid-ruby-tricks">stupid ruby tricks</a></p>
<blockquote><p>Over the past few months of slinging Ruby here at Thoughtbot, I’ve picked up quite a few stupid ruby tricks smart ruby techniques that really help out your code.</p></blockquote>
<p><a href="http://labnotes.org/2009/11/19/vanity-experiment-driven-development-for-rails/">Vanity: Experiment Driven Development for Rails</a></p>
<blockquote><p>You’ve got your TDD, your BDD, your load testing, your user testing, your code metrics. All tools for testing your code and improving it. Here’s a question for you: what are you using to test your ideas?</p></blockquote>
<p><a href="http://www.selectorgadget.com/">SelectorGadget: point and click CSS selectors</a></p>
<blockquote><p>SelectorGadget is an open source bookmarklet that makes CSS selector generation and discovery on complicated sites a breeze.</p></blockquote>
<p><a href="http://blog.jayfields.com/2006/06/ruby-kernel-system-exec-and-x.html">Ruby Kernel system, exec and %x</a></p>
<blockquote><p>The Ruby Core Library documentation is very similar for Kernel.system, Kernel.exec and %x[..]. Recently I needed to kick off a system process, so I spent some time working with all 3 options.</p></blockquote>
<p><a href="http://simonwillison.net/2009/Nov/23/node/">Node.js is genuinely exciting</a></p>
<blockquote><p>I don’t see myself switching all of my server-side development over to JavaScript, but Node has definitely earned a place in my toolbox. It shouldn’t be at all hard to mix Node in to an existing server-side environment—either by running both behind a single HTTP proxy (being event-based itself, nginx would be an obvious fit) or by putting Node applications on a separate subdomain. Node is a tempting option for anything involving comet, file uploads or even just mashing together potentially slow loading web APIs. Expect to hear a lot more about it in the future.</p></blockquote>
<p><a href="http://github.com/dcparker/ruby-gmail">dcparker&#8217;s ruby-gmail</a></p>
<blockquote><p>A Rubyesque interface to Gmail. Connect to Gmail via IMAP and manipulate emails and labels. Send email with your Gmail account via SMTP. Includes full support for parsing and generating MIME messages.</p></blockquote>
<p><a href="http://www.codinghorror.com/blog/archives/001313.html">Version 1 Sucks, But Ship It Anyway</a></p>
<blockquote><p>There&#8217;s no question that, for whatever time budget you have, you will end up with better software by releasing as early as practically possible, and then spending the rest of your time iterating rapidly based on real world feedback.</p></blockquote>
<p><a href="http://aws.typepad.com/aws/2009/12/new-amazon-ec2-feature-boot-from-elastic-block-store.html">New Amazon EC2 Feature: Boot from Elastic Block Store</a></p>
<blockquote><p>You can now launch Amazon EC2 instances from an AMI backed by Amazon EBS (Elastic Block Store). This new functionality enables you to launch an instance with an Amazon EBS volume that serves as the root device.</p></blockquote>
<p><a href="http://www.zeldman.com/2009/12/06/the-stars-look-down/#comment-50635">The Stars Look Down</a></p>
<blockquote><p>&#8230;much as you and I may enjoy being encouraged through recognition and praise and dislike being saddened by rejection or indifference&#8230; deriving personal value from these transactions&#8230; is just plain faulty thinking, of the sort that makes otherwise capable, centred people all loopy and weird.</p></blockquote>
<p><a href="http://www.nytimes.com/2009/12/06/magazine/06fob-q4-t.html?_r=2">Questions for Jeffrey P. Bezos</a></p>
<blockquote><p>For every 100 copies of a physical book we sell, where we have the Kindle edition, we will sell 48 copies of the Kindle edition. It won’t be too long before we’re selling more electronic books than we are physical books. It’s astonishing.</p></blockquote>
<p><a href="http://developer.37signals.com/campfire/streaming">Campfire API</a></p>
<blockquote><p>The Streaming API allows you to monitor a room in real time.</p></blockquote>
<p><a href="http://pancakestacks.wordpress.com/2009/11/23/mounted-web-apps-sites/">Mounted Web Apps Sites</a></p>
<blockquote><p>&#8230;and between the two of use we had a Pancake stack that was proxying to couchdb in pretty short order.</p></blockquote>
<p><a href="http://pivotallabs.com/users/jpignata/blog/articles/1077-converting-rails-application-data-from-mysql-to-postgresql">Converting Rails application data from MySQL to PostgreSQL</a></p>
<blockquote><p>Our antiquely Perl-like script worked better than we expected — our application started right up with all of its data intact.</p></blockquote>
<p><a href="http://www.igvita.com/2009/11/20/state-of-ruby-vms-ruby-renaissance/?utm_source=feedburner&#038;utm_campaign=Feed%3A+igvita+%28igvita.com%29&#038;utm_content=feed">State of Ruby VMs: Ruby Renaissance</a></p>
<blockquote><p>In a short span of just a couple of years, the Ruby VM space has evolved to more than just a handful of choices: MRI, JRuby, IronRuby, MacRuby, Rubinius, MagLev, REE and BlueRuby. In fact, keeping up with all of the most recent developments within each VM is now easily a full-time job. For that reason, and with RubyConf ‘09 in full swing, let’s take a quick survey of the space and where it’s taking us.</p></blockquote>
<p><a href="http://www.techcrunch.com/2006/07/15/is-twttr-interesting/#comments">Odeo Releases Twttr</a></p>
<blockquote><p>There is also a privacy issue with Twttr. Every user has a public page that shows all of their messages. Messages from that person’s extended network are also public. I imagine most users are not going to want to have all of their Twttr messages published on a public website.</p></blockquote>
<p><a href="http://www.drunkenbastardman.co.za/horror/19music.htm">Why I Don&#8217;t Care That I&#8217;m Killing Music</a></p>
<blockquote><p>&#8230;and brought to their knees they should be, without a doubt. For years they have enjoyed a monopoly, where they controlled the price of music and kept it artifically high to fuck us over. Personally, I don&#8217;t think I would feel so good about stealing shit from people if they hadn&#8217;t spent the last 4 decades rubbing our noses in it&#8230;</p></blockquote>
<p><a href="http://www.patrickmoberg.com/internet-vices/">Internet Vices</a></p>
<blockquote><p>[Double True.]</p></blockquote>
<p><a href="http://www.kungfugrippe.com/post/243861520/marco">Three things about Marco Arment</a></p>
<blockquote><p>All of this happens with zero intervention from me. Which means substantial, challenging prose that used to get skipped in the rush of the day now becomes available anyplace it suits me. In the line at the ATM. On a plane. Wherever.</p></blockquote>
<p><a href="http://www.rogueamoeba.com/utm/2009/11/13/airfoil-speakers-touch-1-0-1-finally-ships/">Airfoil Speakers Touch 1.0.1 Finally Ships</a></p>
<blockquote><p>The chorus of disenchanted developers is growing and we’re adding our voices as well. Rogue Amoeba no longer has any plans for additional iPhone applications, and updates to our existing iPhone applications will likely be rare. The iPhone platform had great promise, but that promise is not enough, so we’re focusing on the Mac.</p></blockquote>
<p><a href="http://blog.leahculver.com/2009/11/log-in-or-sign-up.html">Log in or sign up? &#8211; Leah Culver&#8217;s Blog</a></p>
<blockquote><p>&#8230;we have just added the concept of user accounts. This includes the need for registration and log in (as well as log out and forgot password and so on). Leafy Chat only requires an email address and a password for both registration and log in, so it would be great to have some clever way to have both forms on the homepage.</p></blockquote>
<p><a href="http://www.randsinrepose.com/archives/2007/11/11/the_nerd_handbook.html">The Nerd Handbook</a></p>
<blockquote><p>A nerd needs a project because a nerd builds stuff. All the time. Those lulls in the conversation over dinner? That’s the nerd working on his project in his head.</p></blockquote>
<p><a href="http://news.ycombinator.com/item?id=937430">Hacker News: Help: I&#8217;m lost</a></p>
<blockquote><p>From the outside you&#8217;d be amazed to know that inside I am in terrible turmoil. You know me because of code I&#8217;ve written, books I&#8217;ve published, and my contributions here. Perhaps you follow me on Twitter. But I have reached a point in my life where I do not know what to do, or where to turn.</p></blockquote>
<p><a href="http://yehudakatz.com/2009/11/03/using-the-new-gem-bundler-today/">Using the New Gem Bundler Today</a></p>
<blockquote><p>As you might have heard, Carl and I released a new project that allows you to bundle your gems (both pure-ruby and native) with your application.</p></blockquote>
<p><a href="http://www.engineyard.com/blog/2009/using-the-rubygems-bundler-for-your-app/">Using the Rubygems Bundler for Your App</a></p>
<blockquote><p>The new Rubygems bundler makes managing your application’s gem dependencies easy. And for applications with many components, it makes separating components’ dependencies easy too.</p></blockquote>
<p><a href="http://www.mnot.net/cache_docs/">Caching Tutorial for Web Authors and Webmasters</a></p>
<blockquote><p>A Web cache sits between one or more Web servers (also known as origin servers) and a client or many clients, and watches requests come by, saving copies of the responses — like HTML pages, images and files (collectively known as representations) — for itself. Then, if there is another request for the same URL, it can use the response that it has, instead of asking the origin server for it again.</p></blockquote>
<p><a href="http://howsoftwareisbuilt.com/2009/11/09/interview-with-ezra-zygmuntowicz-engine-yard/">Interview with Ezra Zygmuntowicz – Engine Yard</a></p>
<blockquote><p>The cloud providers are splitting into a few camps.  On one side, you have companies like Amazon that offer infrastructure as a service (IaaS), and Google who offers platform as a service (PaaS).  PaaS offers rapid development, and no server administration, but it locks you into a specific provider. Enter Engine Yard, a company that&#8217;s enhancing Ruby on Rails to run on on top of arbitrary IaaS.  In this interview Ezra Zygmuntowicz paints the picture.</p></blockquote>
<p><a href="http://mail-archives.apache.org/mod_mbox/couchdb-user/200911.mbox/<6b5356e60911071609i23a87a33o256c0891f04815e2@mail.gmail.com>&#8220;>CouchDB Twitter Clone Architecture</a></p>
<blockquote><p>So I&#8217;ve been thinking through the architecture of a Twitter-esque system in Couch as a kind of thought exercise to get a better handle on some of the more difficult corners of view generation. What would be the most effective manner of creating Twitter-like status streams?</p></blockquote>
<p><a href="http://alestic.com/2009/11/ec2-credentials">Understanding Access Credentials for AWS/EC2</a></p>
<blockquote><p>Amazon Web Services (AWS) has a dizzying proliferation of credentials, keys, ids, usernames, certificates, passwords, and codes which are used to access and control various account and service features and functionality. I have never met an AWS user who, when they started, did not have trouble figuring out which ones to use when and where, much less why.</p></blockquote>
<p><a href="http://webdeveloperplus.com/jquery/multiple-file-upload-with-progress-bar-using-jquery/">Multiple File Upload With Progress Bar Using jQuery</a></p>
<blockquote><p>Today I am going to show you how to create a multiple file upload form that allows multiple file selection using Ctrl/Shift keys and also displays a progress bar for each of the selected files while they are uploading.</p></blockquote>
<p><a href="http://blogs.bigfish.tv/adam/2009/06/14/swfupload-jquery-plugin/">SWFUpload jQuery Plugin</a></p>
<blockquote><p>When I first stumbled across SWFUpload about two years ago I was impressed by how easy it was to implement. However, their example code has always bugged me as being rather crap, having to assign a separate global event handler for each event, and the lack of multiple handlers for a single event.</p></blockquote>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/tdqMB-7mu6Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2009/12/11/weekly-digest-12-11-09/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2009/12/11/weekly-digest-12-11-09/</feedburner:origLink></item>
		<item>
		<title>Weekly Digest, 11-6-09</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/PrcLd29pl10/</link>
		<comments>http://trevorturk.com/2009/11/06/weekly-digest-11-6-09/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 20:27:15 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://almosteffortless.com/?p=1806</guid>
		<description><![CDATA[How to Gemify your Rails Plugins Ever since Rails added support for declaring gem dependencies, there is really no (good) reason to use plain ol’ plugins. Plugging Rack into Rails Rails 2.3 has Rack baked in. It uses Rack for things like sessions and parameter parsing. But what if you want to add your own [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://opensoul.org/2009/10/5/how-to-gemify-your-rails-plugins">How to Gemify your Rails Plugins</a></p>
<blockquote><p>Ever since Rails added support for declaring gem dependencies, there is really no (good) reason to use plain ol’ plugins.</p></blockquote>
<p><a href="http://opensoul.org/2009/3/3/plugging-rack-into-rails">Plugging Rack into Rails</a></p>
<blockquote><p>Rails 2.3 has Rack baked in. It uses Rack for things like sessions and parameter parsing. But what if you want to add your own middleware to a Rails app?</p></blockquote>
<p><a href="http://magicscalingsprinkles.wordpress.com/2009/11/02/the-meaning-of-information-technology/">The Meaning of Information Technology</a></p>
<blockquote><p>The first commercial computer was the Lyons Electronic Office I and was used in 1951 to perform vast calculations pertaining to the making and consumption of biscuits. You see, after the war, J. Lyons &#038; Co., a popular chain of British tea shops, was confronted with an appetite for pastries so astronomical (which is understandable given years of tedious disputes with Germany), that the human mind was incapable of solving unaided the problem of distributing tea cakes to their customers.</p></blockquote>
<p><a href="http://librelist.com/">librelist.com</a></p>
<blockquote><p>Librelist.com is a free as in freedom mailing list site for open source projects. It is a place for FOSS communities to discuss all the things they want without ads, censorship, signup requirements, bundled apps, or requirements that you use any particular email client or service.</p></blockquote>
<p><a href="http://github.com/blog/542-introducing-resque">Introducing Resque &#8211; GitHub</a></p>
<blockquote><p>Resque is our Redis-backed library for creating background jobs, placing those jobs on multiple queues, and processing them later.</p></blockquote>
<p><a href="http://www.persistentfs.com/">PersistentFS.com</a></p>
<blockquote><p>PersistentFS is a fast and efficient POSIX-compliant file system that provides unlimited online storage in the Amazon Web Services (AWS) storage cloud. A PersistentFS file system can be mounted on any Linux computer connected to the internet and accessed like local storage. All data written to the file system is uploaded to Amazon S3 for reliable and cost effective off-site storage, while remaining instantly accessible. This allows you to take advantage of Amazon S3 using your existing software, without writing a single line of code.</p></blockquote>
<p><a href="http://coderack.org/users/tylerhunt/entries/6-canonical-host">CodeRack: Canonical Host</a></p>
<blockquote><p>There are often times when you&#8217;ll need to redirect requests for some domains or subdomains to a single canonical host. This middleware lets you specify the canonical host for your application, and will perform a 301 redirect for all non-canonical requests.</p></blockquote>
<p><a href="http://www.slideshare.net/ihower/rails-best-practices">Rails Best Practices</a></p>
<blockquote><p>[Nice overview.]</p></blockquote>
<p><a href="http://diveintomark.org/archives/2009/11/02/why-do-we-have-an-img-element">Why do we have an IMG element?</a></p>
<blockquote><p>But none of this answers the original question: why do we have an <img> element? Why not an <icon> element? Or an <include> element? Why not a hyperlink with an include attribute, or some combination of rel values? Why an <img> element? Quite simply, because Marc Andreessen shipped one, and shipping code wins.</p></blockquote>
<p><a href="http://github.com/gabriel/shrub">gabriel&#8217;s shrub</a></p>
<blockquote><p>S3 Proxy for Google App Engine [Awesome.]</p></blockquote>
<p><a href="http://s3hub.com/">S3Hub: S3 Client (for Mac OS X)</a></p>
<blockquote><p>View your S3 online storage, upload, download, set permissions, share with friends and more.</p></blockquote>
<p><a href="http://googleblog.blogspot.com/2009/10/this-week-in-search-103009.html">Official Google Blog: This week in search 10/30/09</a></p>
<blockquote><p>On Wednesday, we rolled out our new music search feature, fully integrated into Google&#8217;s web search. Now, when you search for a band, singer, song name, or album title, Google will recognize it and return a special music result on the top of the page. These new special music results do exactly what you want &#8211; they let you listen to the full song.</p></blockquote>
<p><a href="http://incubator.apache.org/projects/trafficserver.html">Traffic Server Podling Status Page &#8211; Apache Incubator</a></p>
<blockquote><p>Traffic Server fills the need for a fast, extensible and scalable HTTP 1.1 proxy and cache. We have a production proven piece of software that can deliver HTTP traffic at high rates, and can scale well on modern SMP hardware. We have benchmarked Traffic Server to handle in excess of 35,000 RPS on a single box. Traffic Server has a rich feature set, implementing most of HTTP/1.1 to the RFC specifications.</p></blockquote>
<p><a href="http://entrepreneur.venturebeat.com/2009/10/30/start-up-studies-a-pop-quiz/">Start-up studies: A pop quiz</a></p>
<blockquote><p>There’s a classroom exercise that’s a part of the  Stanford technology venture program hits its students with each year: If you had five dollars and two hours, what would you do to make as much money as possible?</p></blockquote>
<p><a href="http://kottke.org/09/10/one-handed-computing-with-the-iphone">One-handed computing with the iPhone</a></p>
<blockquote><p>The easy single-handed operation of the iPhone1 is not one of its obvious selling points but is one of those little features that grows on you and becomes nearly indispensable. A portable networked computing and gaming device that can be easily operated with one hand can be used in a surprising variety of situations.</p></blockquote>
<p><a href="http://www.wired.com/techbiz/it/magazine/17-10/ff_netflix?currentPage=all">Netflix Everywhere: Sorry Cable, You&#8217;re History</a></p>
<blockquote><p>There are a million different ways for Netflix to fail. But that has always been the case. Netflix should have failed already, taken down by Blockbuster or Wal-Mart, kneecapped by Hollywood, made irrelevant by BitTorrent or iTunes. Yet time and again, the company has not only survived but quietly thrived—on the strength of its unique algorithms and its relentless focus on getting customers content they didn&#8217;t even know they wanted.</p></blockquote>
<p><a href="http://37signals.com/svn/posts/1989-speakers-tip-dont-tell-the-audience-you-arent-prepared">Speaker&#8217;s Tip: Don&#8217;t tell the audience you aren&#8217;t prepared</a></p>
<blockquote><p>People take days off of work, spend hundreds on a conference ticket, travel for thousands of miles, and pay hefty rates for flights and hotels to come hear you speak, and you tell them you didn’t have time to prepare a talk? What’s cool about that?</p></blockquote>
<p><a href="http://documentcloud.github.com/underscore/">Underscore.js</a></p>
<blockquote><p>Underscore is a utility-belt library for JavaScript that provides a lot of the functional programming support that you would expect in Prototype.js (or Ruby), but without extending any of the built-in JavaScript objects.</p></blockquote>
<p><a href="http://journal.markbao.com/2009/10/startup-school-2009-summary/">The Y Combinator Startup School 2009 Summary</a></p>
<blockquote><p>Y Combinator’s Startup School 2009 was an incredible learning experience for new and experienced entrepreneurs alike. There are ten talks. Here are their key points.</p></blockquote>
<p><a href="http://rack.rubyforge.org/doc/classes/Rack/Utils.html">Module: Rack::Utils</a></p>
<blockquote><p>Rack::Utils contains a grab-bag of useful methods for writing web applications adopted from all kinds of Ruby libraries.</p></blockquote>
<p><a href="http://radar.oreilly.com/2009/10/whitehouse-switch-drupal-opensource.html">Thoughts on the Whitehouse.gov switch to Drupal</a></p>
<blockquote><p>Yesterday, the new media team at the White House announced via the Associated Press that whitehouse.gov is now running on Drupal, the open source content management system. That Drupal implementation is in turn running on a Red Hat Linux system with Apache, MySQL and the rest of the LAMP stack. Apache Solr is the new White House search engine. This move is obviously a big win for open source.</p></blockquote>
<p><a href="http://tomayko.com/writings/things-caches-do">Things Caches Do</a></p>
<blockquote><p>There are different kinds of HTTP caches that are useful for different kinds of things. I want to talk about gateway caches — or, “reverse proxy caches” — and consider their effects on modern, dynamic web application design.</p></blockquote>
<p><a href="http://www.websequencediagrams.com/">WebSequenceDiagrams.com &#8211; Create sequence diagrams in seconds</a></p>
<blockquote><p>Don&#8217;t waste your afternoon drawing UML Sequence Diagrams. Just enter the description here, and click &#8220;draw&#8221;. The SD/MSC Generator is an easy alternative to using mouse-centric tools like Microsoft Visio.</p></blockquote>
<p><a href="http://github.com/stefankroes/ancestry">stefankroes&#8217;s ancestry</a></p>
<blockquote><p>Ancestry allows the records of a Ruby on Rails ActiveRecord model to be organised as a tree structure (or hierarchy). It uses a single, intuitively formatted database column, using a variation on the materialised path pattern. It exposes all the standard tree structure relations (ancestors, parent, root, children, siblings, descendants) and all of them can be fetched in a single sql query.</p></blockquote>
<p><a href="http://www.codinghorror.com/blog/archives/001306.html">Treating User Myopia</a></p>
<blockquote><p>When I said users don&#8217;t read anything you put on the screen, I was lying. Users do read. But users will only read the absolute minimum amount of text on the screen necessary to complete their task. I can&#8217;t quite explain it, but this kind of user myopia is epidemic. It&#8217;s the same problem, everywhere I turn.</p></blockquote>
<p><a href="http://www.allthingsdistributed.com/2009/10/amazon_relational_database_service.html">The Amazon Relational Database Service (RDS)</a></p>
<blockquote><p>Today marks the launch of Amazon RDS &#8211; the Amazon Relational Database Service. Amazon RDS is a web service that makes it easy to set up, operate, and scale a relational database in the cloud. Amazon RDS handles all the &#8220;muck&#8221; of relational database management freeing up its users to focus on their applications and business.</p></blockquote>
<p><a href="http://blog.flickr.net/2009/10/21/people-in-photos/">Flickr! It’s made of people</a></p>
<blockquote><p>We’ve launched People in Photos, a new feature that will help put a face to the Flickrverse and enable you to highlight members that you’ve photographed in a whole new way. People in Photos lets you add a member to a photo, find photos of people you know, and manage which photos you’re in.</p></blockquote>
<p><a href="http://github.com/blog/530-how-we-made-github-fast">How We Made GitHub Fast</a></p>
<blockquote><p>Now that things have settled down from the move to Rackspace, I wanted to take some time to go over the architectural changes that we’ve made in order to bring you a speedier, more scalable GitHub.</p></blockquote>
<p><a href="http://www.rubyenterpriseedition.com/documentation.html#_garbage_collector_performance_tuning">Ruby Enterprise Edition Features Guide</a></p>
<blockquote><p>With REE, one can tune the garbage collector’s behavior for better server performance. It is possible to specify the initial heap size to start with. The heap size will never drop below the initial size. By carefully selecting the initial heap size one can decrease startup time and increase throughput of server applications.</p></blockquote>
<p><a href="http://blog.phusion.nl/2008/12/16/passing-environment-variables-to-ruby-from-phusion-passenger/">Passing environment variables to Ruby from Phusion Passenger</a></p>
<blockquote><p>Some environment variables must be set before Ruby is started because the Ruby interpreter itself uses them. The RailsBench GC settings environment variables, which are now supported by Ruby Enterprise Edition, are examples of such environment variables.</p></blockquote>
<p><a href="http://www.pauldix.net/2009/10/using-the-nginx-memcached-module-with-passenger.html">Using the Nginx Memcached module with Passenger</a></p>
<blockquote><p>Nginx, everyone&#8217;s favorite speedy web server has a module to hook in directly to memcached. For those of us running Ruby servers behind nginx we can avoid hitting our running Ruby processes completely on a cache hit.</p></blockquote>
<p><a href="http://collison.ie/blog/2009/10/surprises">Surprises</a></p>
<blockquote><p>Now, when coding, I try to think: “how can I write this such that if people saw my code, they’d be amazed at how little there is and how little it does”.</p></blockquote>
<p><a href="http://m.onkey.org/2009/10/18/railssummit-slides">Railssummit Slides</a></p>
<blockquote><p>Here are the slides of [Pratik Naik's] presentation at Railssummit 2009&#8230;  about Rails focused tips/tricks.</p></blockquote>
<p><a href="http://vimeo.com/6960507">Mint CEO Aaron Patzer on Startups</a></p>
<blockquote><p>Mint CEO Aaron Patzer talks with entrepreneurs at a JuicePitcher event about the history of his startup, Mint.</p></blockquote>
<p><a href="http://frozenplague.net/2009/10/connecting-to-multiple-databases-using-activerecord/">Connecting to Multiple Databases Using ActiveRecord</a></p>
<blockquote><p>You can call establish_connection with the key that points to another database config in your config/database.yml file</p></blockquote>
<p><a href="http://shortwaveapp.com/">Shortwave</a></p>
<blockquote><p>&#8230;is an extensible quick-search and shortcut bookmark. [Awesome.]</p></blockquote>
<p><a href="http://danieltenner.com/posts/0012-google-wave.html">What problems does Google Wave solve?</a></p>
<blockquote><p>It will probably take years before Wave fully penetrates large corporations and replaces the email systems everyone is used to. But it solves so many thorny problems with email that it might well manage to do so, where so many other tentative “email fixes” have failed.</p></blockquote>
<p><a href="http://www.rubyinside.com/21-rack-middlewares-2649.html">21 Rack Middlewares To Turbocharge Your Ruby Webapps</a></p>
<blockquote><p>In this post, we&#8217;re going to highlight various Rack middlewares from CodeRack, an on-going Rack middleware competition&#8230;</p></blockquote>
<p><a href="http://github.com/hiddenloop/paging_keys_js/tree">hiddenloop&#8217;s paging_keys_js</a></p>
<blockquote><p>Keyboard short cuts for paging through listings one item at at time (and across entire pages). Inspired by the navigation at FFFFOUND!</p></blockquote>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/PrcLd29pl10" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2009/11/06/weekly-digest-11-6-09/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2009/11/06/weekly-digest-11-6-09/</feedburner:origLink></item>
		<item>
		<title>no-www Rack Middleware</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/HBp7exIrFn0/</link>
		<comments>http://trevorturk.com/2009/11/05/no-www-rack-middleware/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 00:59:58 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://almosteffortless.com/?p=1790</guid>
		<description><![CDATA[I&#8217;m pleased to present my submission to the CodeRack contest: no-www. This middleware catches requests that begin with “www” and redirects them to the more reasonable &#8220;non-www&#8221; address. For example: http://www.example.com -> http://example.com While such redirects might better be performed from within an Apache or nginx config, some hosts (i.e. Heroku) don&#8217;t give you access [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m pleased to present my submission to the <a href="http://coderack.org/">CodeRack</a> contest: <b>no-www</b>. </p>
<p>This middleware catches requests that begin with “www” and redirects them to the more reasonable &#8220;non-www&#8221; address. </p>
<p>For example: http://www.example.com -> http://example.com</p>
<p>While such redirects might better be performed from within an Apache or nginx config, some hosts (i.e. <a href="http://heroku.com">Heroku</a>) don&#8217;t give you access to configure the server as such. </p>
<p>If you&#8217;re unfamiliar with the <i>no-www</i> movement, the philosophy is simple. Websites should have a canonical address. This address shouldn’t begin with “www” because the use of &#8220;www&#8221; is unnecessary and wasteful. See <a href="http://no-www.org/">http://no-www.org/</a> for details. </p>
<p>And, without further ado:</p>
<p><script src="http://gist.github.com/224812.js"></script></p>
<p>If you know what <a href="http://rack.rubyforge.org">Rack</a> is, you problably already know how to use this. Still, an example usage for a Rails app wouldn&#8217;t hurt. Start by copying the above middleware into <i>lib/no_www.rb</i>. Then, configure your application to use the middleware by placing the following in <i>config/environment.rb</i>: </p>
<pre lang="ruby">
Rails::Initializer.run do |config|
  config.middleware.use “NoWWW” if RAILS_ENV == ‘production’
end</pre>
<p>No more www. </p>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/HBp7exIrFn0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2009/11/05/no-www-rack-middleware/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2009/11/05/no-www-rack-middleware/</feedburner:origLink></item>
		<item>
		<title>Installing Varnish with nginx, Passenger, and Monit on Ubuntu 8.10 intrepid</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/vqf5Fg0JSLA/</link>
		<comments>http://trevorturk.com/2009/10/22/installing-varnish-with-nginx-passenger-and-monit-on-ubuntu-8-10-intrepid/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 02:32:23 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://almosteffortless.com/?p=1761</guid>
		<description><![CDATA[Varnish is a state-of-the-art, high-performance HTTP accelerator. I first came to know about it thanks to Heroku, where they use it to provide built-in HTTP Caching. As their docs describe, using Varnish is easy: # This tells the cache (Varnish) to serve the page for 300 seconds (5 minutes). class MyController < ApplicationController def index [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://varnish.projects.linpro.no/">Varnish</a> is a state-of-the-art, high-performance HTTP accelerator. I first came to know about it thanks to <a href="http://heroku.com/">Heroku</a>, where they use it to provide built-in <a href="http://docs.heroku.com/http-caching">HTTP Caching</a>. </p>
<p>As their docs describe, using Varnish is easy:</p>
<pre lang="ruby"># This tells the cache (Varnish) to serve the page for 300 seconds (5 minutes).

class MyController < ApplicationController
  def index
    response.headers['Cache-Control'] = 'public, max-age=300'
    render :text => "Rendered at #{Time.now}"
  end
end</pre>
<p>Simply setting the &#8220;Cache-Control&#8221; header like so allows you to serve up a page extremely quickly because requests completely bypass your application logic, database, and all of that related overhead and read straight from the cache. </p>
<p>If you&#8217;re serving up the same page to all visitors, then setting up Varnish HTTP caching is a no-brainer. If you&#8217;re serving up pages that are mostly the same for all users but have a custom header or something, you can still take advantage of the caching speed boost if you&#8217;re willing to investigate the ins and outs of ESI and/or serving partials with Javascript. If you&#8217;re serving pages that are different for each user, then you&#8217;re out of luck :)</p>
<p>So, using Varnish for HTTP acceleration is great, but unfortunately for me the version of Ubuntu (8.10 intrepid) that we&#8217;re using has a painfully out of date package in aptitude. If you&#8217;re already running Varnish, you can check to make sure you&#8217;re using a relatively recent release by running <i>varnishd -V</i>. If you see anything less than <i>2.0.4</i>, you should seriously consider upgrading. </p>
<p>Thanks to the <a href="http://projects.linpro.no/pipermail/varnish-dist/2009-October/thread.html">helpful people on the Varnish mailing lists</a>, I was able to get things up and running by doing the following:</p>
<blockquote><p>Note that there’s a new version of Varnish out now. The 2.0.4 tag is still pretty good, but you should check all the available tags and decide if you’d rather use a newer version. If so, you’ll have to adjust the installation instructions found at the top of this post slightly.</p></blockquote>
<blockquote><p>Note that the .deb files generated by the “dpkg-buildpackage” command may be different from those generated at the time this post was written. The basic steps still apply, though.</p></blockquote>
<pre>apt-get update
apt-get install subversion autotools-dev automake1.9 libtool autoconf libncurses-dev xsltproc quilt
cd /tmp
svn co http://varnish.projects.linpro.no/svn/tags/varnish-2.0.4
cd varnish-2.0.4/varnish-cache
dpkg-buildpackage
cd ..
dpkg -i libvarnish1_2.0.4-6_i386.deb
dpkg -i varnish_2.0.4-6_i386.deb</pre>
<p>You can then use <i>/etc/init.d/varnish</i> to stop/start/restart the service. </p>
<p>But, we&#8217;re not done yet. Since it took me a while to get the whole app server stack configured, I thought it might help someone else out if I covered the rest of the steps it took to get Varnish working properly with my Ruby application. </p>
<p>You can get <a href="http://nginx.net/">nginx</a> installed with <a href="http://www.rubyenterpriseedition.com/">Ruby Enterprise Edition</a> and <a href="http://www.modrails.com/">Passenger</a> by following the excellent documentation <a href="http://www.modrails.com/documentation/Users%20guide%20Nginx.html#install_passenger">on the Phusion website</a>. </p>
<p>I might suggest, however, doing the installation <a href="http://gist.github.com/216561">like this</a> in order to get the latest (secure) version of nginx. Even before that, you&#8217;ll probably want to install Ruby Enterprise Edition, which I like to do <a href="http://gist.github.com/216587">the old fashioned way</a>.</p>
<p>You may also be interested in this <a href="http://gist.github.com/216549">example nginx init.d config</a>, which allows you to use nginx as you would if installed from a package. Make sure to consider doing some kind of log rotation with this kind of setup as well.</p>
<p>&#8230;</p>
<p>Now that you&#8217;re using the fantastic nginx web server, you&#8217;ll want to configure it to listen to port 8080, so that Varnish can listen to port 80 and forward any requests that aren&#8217;t in its cache to the backend server (nginx). I&#8217;ll just post the complete config we&#8217;re using, and you can pick out the relevant details for your case. </p>
<p>Some interesting things to note is that this setup is configured to use <a href="http://www.sinatrarb.com/">Sinatra</a>, the lightweight Ruby web framework. If the application throws an exception, we&#8217;re routing to the /error page. We&#8217;re also using various other settings that you may or may not agree with. The important part with regard to Varnish and nginx cooperating, however, is that you set nginx to listen to port 8080 in your config file. My config is located in <i>/opt/nginx/conf/nginx.conf</i>:</p>
<pre>worker_processes 1;
pid /var/run/nginx.pid;

events {
  worker_connections  1024;
}

http {
  access_log /var/log/nginx_access.log;
  error_log /var/log/nginx_error.log;
  passenger_root /opt/ruby-enterprise/lib/ruby/gems/1.8/gems/passenger-2.2.5;
  passenger_ruby /opt/ruby-enterprise/bin/ruby;
  passenger_max_pool_size 10;
  include mime.types;
  default_type application/octet-stream;
  sendfile on;
  tcp_nopush on;
  keepalive_timeout 65;
  gzip on;
  gzip_comp_level 2;
  gzip_buffers 16 8k;
  gzip_disable "MSIE [1-6]\.";
  gzip_proxied any;
  gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

  server {
    listen 8080; # the important part!
    root /var/www/example/current/public;
    passenger_enabled on;
    passenger_use_global_queue on;
    rack_env production; # use rails_env for a rails app
    # serve static files without running more rewrite tests
    if (-f $request_filename) {
      break;
    }
    # disable site via capistrano (cap deploy:web:disable)
    if (-f $document_root/system/maintenance.html) {
      rewrite ^(.*)$ /system/maintenance.html break;
    }
    # expires headers
    location ~* \.(ico|css|js|gif|jp?g|png)(\?[0-9]+)?$ {
      expires max;
      break;
    }
  }
}</pre>
<p>Now, I&#8217;m fairly new to using Varnish, so perhaps someone can advise me about how to better configure things, but I&#8217;ll cover how I did it. Varnish comes with a few example configs loaded up in <i>/etc/default/varnish</i>. I ended up using the following:</p>
<pre>NFILES=131072
MEMLOCK=82000
INSTANCE=$(uname -n)
DAEMON_OPTS="-a :80 -f /etc/varnish/default.vcl -s file,/var/lib/varnish/$INSTANCE/varnish_storage.bin,1G"</pre>
<p>You can review the examples provided and see how you want to go about it, though. </p>
<p>Once you&#8217;re all set with the general config, you&#8217;ll need to provide a <a href="http://varnish.projects.linpro.no/wiki/VCL">VCL config</a>. I&#8217;m putting ours in <i>/etc/varnish/default.vcl</i> and it looks like this:</p>
<pre>backend default {
  .host = "127.0.0.1";
  .port = "8080";
}

# Warning: read the following before using this config:
# http://varnish.projects.linpro.no/wiki/VCLExampleCacheCookies

sub vcl_recv {
  unset req.http.cookie;
}</pre>
<p>The first part tells Varnish to forward any requests that aren&#8217;t in its cache to a webserver running on localhost port 8080. That&#8217;s nginx!</p>
<p>The second part unsets any cookies that are sent along with any requests. You won&#8217;t want to do this unless you&#8217;re serving the same pages for all users for your entire application. If you aren&#8217;t careful here, you can very easily end up serving pages meant for one user to another. Be careful!</p>
<p>In my case this works fine because we&#8217;re serving a site with no user-specific actions or views. It&#8217;s all public. You&#8217;re case might be different. Perhaps you can cache things like static files (images, etc) or certain areas of your application. Maybe you have a CMS with an admin interface that can&#8217;t be cached, but with publically viewable pages that could be cached. I dunno. In any case, you should definitely read more about this <a href="http://varnish.projects.linpro.no/wiki/VCLExampleCacheCookies">on the Varnish wiki</a>.</p>
<p>Finally, since we&#8217;re using <a href="http://mmonit.com/monit/">Monit</a> to monitor the health of our systems, I&#8217;ll throw in an example config that covers SSH, nginx, and Varnish. This Monit config would email you using a Google Apps Domain if there was a problem. You probably wouldn&#8217;t want to use this as-is, but it should serve as a decent starting point for you to create your own. We&#8217;ve got the config in <i>/etc/monit/monitrc</i>:</p>
<pre># Alerts
set daemon 120
set logfile syslog facility log_daemon
set mailserver smtp.gmail.com port 587
    username "noreply@example.com" password "sldkjkfdsj"
    using tlsv1
    with timeout 30 seconds
set alert tech@example.com with reminder on 30 cycles
set httpd port 2812
allow example:slkdjlskdjflskjd

# SSH
check process sshd with pidfile /var/run/sshd.pid
start program "/etc/init.d/ssh start"
stop program "/etc/init.d/ssh stop"
if failed port 22 protocol ssh then restarts
if 5 restarts within 5 cycles then timeout

# nginx
check process nginx with pidfile /var/run/nginx.pid
start program = "/etc/init.d/nginx start"
stop  program = "/etc/init.d/nginx stop"
if failed host 127.0.0.1 port 8080 then restart
if cpu is greater than 40% for 2 cycles then alert
if cpu > 60% for 5 cycles then restart
if 10 restarts within 10 cycles then timeout

# Varnish
check process varnish with pidfile /var/run/varnishd.pid
start program = "/etc/init.d/varnish start"
stop  program = "/etc/init.d/varnish stop"
if failed host 127.0.0.1 port 80 then restart
if cpu is greater than 40% for 2 cycles then alert
if cpu > 60% for 5 cycles then restart
if 10 restarts within 10 cycles then timeout</pre>
<p>That&#8217;s all folks!</p>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/vqf5Fg0JSLA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2009/10/22/installing-varnish-with-nginx-passenger-and-monit-on-ubuntu-8-10-intrepid/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2009/10/22/installing-varnish-with-nginx-passenger-and-monit-on-ubuntu-8-10-intrepid/</feedburner:origLink></item>
		<item>
		<title>Weekly Digest, 10-12-09</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/EwAUsyGX1aM/</link>
		<comments>http://trevorturk.com/2009/10/12/weekly-digest-10-12-09/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 15:17:43 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://almosteffortless.com/?p=1756</guid>
		<description><![CDATA[Monthly Digest? ;) Pomodoro Pomodoro Desktop is a desktop application for Time Management on your Mac OSX. It is a simple but effective way to manage your (coding) time, and it&#8217;s based on the Pomodoro technique Clean CSS Optmize and Format your CSS Hacker News &#124; GitHub&#8217;s Unicorn Setup [Interesting comments as usual.] Picnik Photo [...]]]></description>
			<content:encoded><![CDATA[<p>Monthly Digest? ;)</p>
<p><a href="http://pomodoro.ugolandini.com/">Pomodoro</a></p>
<blockquote><p>Pomodoro Desktop is a desktop application for Time Management on your Mac OSX. It is a simple but effective way to manage your (coding) time, and it&#8217;s based on the Pomodoro technique</p></blockquote>
<p><a href="http://www.cleancss.com/">Clean CSS</a></p>
<blockquote><p>Optmize and Format your CSS</p></blockquote>
<p><a href="http://news.ycombinator.com/item?id=872283">Hacker News | GitHub&#8217;s Unicorn Setup</a></p>
<blockquote><p>[Interesting comments as usual.]</p></blockquote>
<p><a href="http://www.picnik.com/">Picnik</a></p>
<blockquote><p>Photo editing the easy way, online in your browser. Picnik makes your photos fabulous with easy to use yet powerful editing tools. Tweak to your heart’s content, then get creative with oodles of effects, fonts, shapes, and frames.</p></blockquote>
<p><a href="http://github.com/blog/517-unicorn">Unicorn! &#8211; GitHub</a></p>
<blockquote><p>We’ve been running Unicorn for more than a month. Time to talk about it.</p></blockquote>
<p><a href="http://munin.projects.linpro.no/">Munin</a></p>
<blockquote><p>Munin the monitoring tool surveys all your computers and remembers what it saw. It presents all the information in graphs through a web interface. Its emphasis is on plug and play capabilities. After completing a installation a high number of monitoring plugins will be playing with no more effort.</p></blockquote>
<p><a href="http://litanyagainstfear.com/blog/2009/10/09/on-gem-forking/">On Gem Forking</a></p>
<blockquote><p>So, GitHub has recommended Gemcutter as an alternative to hosting gems on GitHub&#8230;</p></blockquote>
<p><a href="http://cloudvox.com/">Cloudvox</a></p>
<blockquote><p>API-driven phone calls, in minutes (call your code: AGI/AMI, HTTP, Asterisk-Java, Adhearsion). Cloudvox is the most practical, stable, open environment for API-driven phone calls.</p></blockquote>
<p><a href="http://github.com/blog/515-gem-building-is-defunct">Gem Building is Defunct</a></p>
<blockquote><p>We will continue to serve old gems at http://gems.github.com/ for at least one year. [New gems can't be built, though.]</p></blockquote>
<p><a href="http://jacobian.org/writing/star-is-unix/">* is Unix</a></p>
<blockquote><p>Ryan’s I like Unicorn because it’s Unix appears to have started a mini-meme of folks writing simple forking network servers in their language of choice. I’m really enjoying reading ‘em — they’re a sort of Rosetta Stone of network code&#8230;</p></blockquote>
<p><a href="http://chargify.com/index.html">Chargify</a></p>
<blockquote><p>Chargify simplifies recurring billing for Web 2.0 and SaaS companies.</p></blockquote>
<p><a href="http://www.slideshare.net/atmosorg/everything-i-know-about-open-source-i-learned-from-indie-hip-hop">Everything I know about Open Source I learned from Indie Hip Hop</a></p>
<blockquote><p>Slides from an Aloha on Rails presentation.</p></blockquote>
<p><a href="http://www.apple.com/downloads/dashboard/status/flipclock_thedashboardwidgetandgadgetdevelopment.html">FlipClock</a></p>
<blockquote><p>Get the FlipClock Widget for your Dashboard!</p></blockquote>
<p><a href="http://tomster.org/blog/nginx-and-varnish-on-mac-os-x">nginx and varnish on Mac OS X</a></p>
<blockquote><p>Since I&#8217;m a happy user of the macports collection already anyway, I let it do the &#8216;heavy lifting&#8217; of actually installing nginx and varnish. In addition I provided a launchd startup item for varnish and also added a host entry for wahlcomputer to enable virtual hosting for nginx and varnish.</p></blockquote>
<p><a href="http://github.com/atmos/rack_hoptoad">atmos&#8217;s rack_hoptoad</a></p>
<blockquote><p>A gem that provides exception notifications to hoptoad as rack middleware.</p></blockquote>
<p><a href="http://articles.slicehost.com/2009/3/4/ubuntu-intrepid-adding-an-nginx-init-script">Ubuntu Intrepid &#8211; adding an Nginx init script</a></p>
<blockquote><p>&#8230;let&#8217;s go ahead and create one for easy control of Nginx, and to ensure it restarts on a reboot.</p></blockquote>
<p><a href="http://blog.madeofcode.com/post/194902314/generate-gem-yml-and-gems-for-rails">Generate gem.yml and .gems for Rails</a></p>
<blockquote><p>A rake task which will generate gem configuration files based on your “config.gem” specifications in Rails. This comes in handy when deploying to Engine Yard, or Heroku.</p></blockquote>
<p><a href="http://www.engineyard.com/blog/2009/custom-chef-recipes-with-engine-yard-cloud/">Custom Chef Recipes with Engine Yard Cloud</a></p>
<blockquote><p>One of the power user features of Engine Yard Cloud is the ability to use custom Chef recipes to install or configure anything that can run on Gentoo Linux that we have not already automated as part of the platform. This allows for extensive customizations of your environments and empowers you to run virtually all custom software you might need.</p></blockquote>
<p><a href="http://shjs.sourceforge.net/">SHJS</a></p>
<blockquote><p>SHJS is a JavaScript program which highlights source code passages in HTML documents. Documents using SHJS are highlighted on the client side by the web browser.</p></blockquote>
<p><a href="http://zdzolton.wordpress.com/2009/09/04/getting-ready-for-couchdb-0-10/">Getting ready for CouchDB 0.10</a></p>
<blockquote><p>I’ve setup a local copy of CouchDB, from the 0.10 branch, just to see if my application code could handle its awesome powers. Here are my two big takeaways&#8230;</p></blockquote>
<p><a href="http://blog.madeofcode.com/post/201282903/paperclip-s3-delayed-job-in-rails">Paperclip, S3 &#038; Delayed Job in Rails</a></p>
<blockquote><p>Here’s how I use Paperclip (with storage on S3) and delayed_job to process images after they’re uploaded in the background.</p></blockquote>
<p><a href="http://37signals.com/svn/posts/1952-i-gave-a-talk-on-ui-fundamentals-for-programmers">Ryan Singer of 37signals &#8211; UI Fundamentals for Programmers</a></p>
<blockquote><p>I gave a talk on “UI Fundamentals for Programmers” at WindyCityRails in Chicago last month. The talks covered modeling, breaking apps into screens, visual techniques, flows, and a few coding tips. [This is a great talk. Highly recommended viewing.]</p></blockquote>
<p><a href="http://www.hilite.me/">Source code beautifier / syntax highlighter – convert code snippets to HTML</a></p>
<blockquote><p>hilite.me converts your code snippets into pretty-printed HTML format, easily embeddable into blog posts and websites.</p></blockquote>
<p><a href="http://themomorohoax.com/2009/09/21/keeping-controllers-empty-with-faux-attributes">Keeping controllers empty with faux attributes &#8211; Momoro Machine</a></p>
<blockquote><p>The barely any code way&#8230; use a fake attribute. Define an attribute setter on User, and then just make a small form in the view to set it.</p></blockquote>
<p><a href="http://garry.posterous.com/build-it-9">Build it</a></p>
<blockquote><p>The good innovation &#8212; the innovation that makes the world a better place and builds real wealth in society &#8212; that stuff is done by radically self-reliant creators who get their hands dirty. Not talkers. Not dreamers. Builders.</p></blockquote>
<p><a href="http://actionrails.com/services.html">ActionRails</a></p>
<blockquote><p>At ActionRails, we offer a variety of services designed to push your Rails developers to the next level&#8230; Application Evaluation; Weekly Code Reviews; Developer Hotline.</p></blockquote>
<p><a href="http://sivers.org/1pct">And if only 1% of those people&#8230;</a></p>
<blockquote><p>&#8230;he forgot there was a number lower than one percent&#8230;</p></blockquote>
<p><a href="http://www.caterina.net/archive/001196.html">Working hard is overrated</a></p>
<blockquote><p>Much more important than working hard is knowing how to find the right thing to work on.</p></blockquote>
<p><a href="http://wiki.apache.org/couchdb/Nginx_As_a_Reverse_Proxy">Nginx_As_a_Reverse_Proxy &#8211; Couchdb Wiki</a></p>
<blockquote><p>Nginx can serve as a reverse proxy to CouchDB for scenarios such as URL rewriting, load-balancing, access restriction, etc.</p></blockquote>
<p><a href="http://s3sync.net/wiki">S3Sync</a></p>
<blockquote><p>This is a ruby program that easily transfers directories between a local<br />
directory and an S3 bucket:prefix. It behaves somewhat, but not precisely, like the rsync program. [I can verify that this is an awesome little tool.]</p></blockquote>
<p><a href="http://japhr.blogspot.com/2009/09/full-stack-etag-support.html">Full Stack ETag Support</a></p>
<blockquote><p>The conclusion that I draw is that I definitely want to use Rack::Cache—100% improvement over reassembling the HTML on each request is too good to pass up. As for the 20% speed boost that full stack ETag buys me, I am not sure that the complexity that is introduced warrants the speed boost.</p></blockquote>
<p><a href="http://yuiblog.com/blog/2007/01/04/performance-research-part-2/">Browser Cache Usage Exposed</a></p>
<blockquote><p>&#8230;reducing the number of HTTP requests has the biggest impact on reducing response time&#8230;</p></blockquote>
<p><a href="http://googleblog.blogspot.com/2009/09/place-pages-for-google-maps-there-are.html">Place Pages for Google Maps</a></p>
<blockquote><p>A Place Page is a webpage for every place in the world, organizing all the relevant information about it. By every place, we really mean *every* place — there are Place Pages for businesses, points of interest, transit stations, neighborhoods, landmarks and cities all over the world.</p></blockquote>
<p><a href="http://github.com/couchapp/couchapp">couchapp</a></p>
<blockquote><p>CouchApp is designed to structure standalone CouchDB application development for maximum application portability. CouchApp is a set of scripts and a jQuery plugin designed to bring clarity and order to the freedom of CouchDB&#8217;s document-based approach.</p></blockquote>
<p><a href="http://groups.google.com/group/phusion-passenger/browse_thread/thread/c004030ab1471e01">nginx, worker_processes, and passenger_max_pool_size</a></p>
<blockquote><p>The Phusion Passenger pool size is independent from the number of<br />
Nginx worker processes that you have. Setting the number of Nginx workers to the number of CPU cores should be sufficient.</p></blockquote>
<p><a href="http://www.sinatrarb.com/extensions.html">Sinatra: Writing Extensions</a></p>
<blockquote><p>Sinatra includes an API for extension authors to help ensure that consistent behavior is provided for application developers.</p></blockquote>
<p><a href="http://daringfireball.net/2009/09/how_should_mac_apps_be_distributed">How Should Mac Apps Be Distributed?</a></p>
<blockquote><p>&#8230;but to make this work for apps delivered by disk image, users have to understand that they must copy the app from the image to their startup drive. This is where some get lost.</p></blockquote>
<p><a href="http://www.quirkey.com/blog/2009/09/15/sammy-js-couchdb-and-the-new-web-architecture/">Sammy.js, CouchDB, and the new web architecture</a></p>
<blockquote><p>Welcome to the new world. HTTP Databases and JSON Storage. The simple act of making the database and the browser more powerful on either end has destroyed the need for the middle tier.</p></blockquote>
<p><a href="http://github.com/blog/493-github-is-moving-to-rackspace">GitHub is Moving to Rackspace!</a></p>
<blockquote><p>In just a few short weeks we will be moving GitHub to a new home at Rackspace. We’re aware of the current stability and performance issues, and we want to let you know what we’re doing about it.</p></blockquote>
<p><a href="http://hurl.it/">hurl</a></p>
<blockquote><p>Hurl makes HTTP requests. Enter a URL, set some headers, then view the response. Perfect for APIs.</p></blockquote>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/EwAUsyGX1aM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2009/10/12/weekly-digest-10-12-09/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2009/10/12/weekly-digest-10-12-09/</feedburner:origLink></item>
		<item>
		<title>Pygments</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/XD_AIzfsM80/</link>
		<comments>http://trevorturk.com/2009/09/16/pygments/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 05:38:38 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://almosteffortless.com/?p=1719</guid>
		<description><![CDATA[I&#8217;m pleased to announce the immediate availability of http://pygments.appspot.com. It&#8217;s an unofficial API for the Pygments syntax highlighting library. It&#8217;s designed to provide syntax highlighting for web applications that don&#8217;t have Python installed. You can think of it as an HTTP interface for Pygments. To use it, simply POST to http://pygments.appspot.com with &#8220;lang&#8221; and &#8220;code&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m pleased to announce the immediate availability of <a href="http://pygments.appspot.com">http://pygments.appspot.com</a>. It&#8217;s an unofficial API for the <a href="http://pygments.org/">Pygments</a> syntax highlighting library. It&#8217;s designed to provide syntax highlighting for web applications that don&#8217;t have Python installed. You can think of it as an HTTP interface for Pygments. </p>
<p>To use it, simply POST to http://pygments.appspot.com with &#8220;lang&#8221; and &#8220;code&#8221; parameters in the body. You&#8217;ll receive pygmentized HTML back, which you can store for later display on your site.</p>
<p><script src="http://gist.github.com/188359.js"></script></p>
<p>I&#8217;m using it so that I can host <a href="http://flowcoder.com">Flowcoder</a> on <a href="http://heroku.com">Heroku</a>. I was really impressed with the ease of getting this Pygments app running on <a href="http://appengine.google.com/">Google App Engine</a>. GAE is very much like a Python version of Heroku, which means it&#8217;s awesome.</p>
<p> I&#8217;m hoping that this little project will spike my interest in learning a bit more about Python, which actually doesn&#8217;t seem as evil as all my Ruby friends have made it out to be :P</p>
<p>The <a href="http://github.com/trevorturk/pygments">source code is on github</a>, in case you&#8217;re curious about how this all works. </p>
<p>Enjoy!</p>
<p><a href="http://pygments.appspot.com">http://pygments.appspot.com</a></p>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/XD_AIzfsM80" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2009/09/16/pygments/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2009/09/16/pygments/</feedburner:origLink></item>
		<item>
		<title>Passenger with nginx on Mac OS X</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/6KOtkcRdVns/</link>
		<comments>http://trevorturk.com/2009/09/16/passenger-with-nginx-on-mac-os-x/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 20:19:42 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://almosteffortless.com/?p=1690</guid>
		<description><![CDATA[Setting up nginx with Passenger support turns out to be fairly easy. Start by making sure you have the most recent version of Passenger, then install the nginx module. This will actually install and compile nginx with the Passenger module enabled, which is handy. Choose the recommended/default options when the installer prompts you. sudo gem [...]]]></description>
			<content:encoded><![CDATA[<p>Setting up <a href="http://www.nginx.net/">nginx</a> with <a href="http://www.modrails.com/">Passenger</a> support turns out to be fairly easy. </p>
<p>Start by making sure you have the most recent version of Passenger, then install the nginx module. This will actually install and compile nginx with the Passenger module enabled, which is handy. Choose the recommended/default options when the installer prompts you.</p>
<pre>sudo gem update passenger
sudo passenger-install-nginx-module</pre>
<p>Then, open up the nginx config file:</p>
<pre>mate /opt/nginx/conf/nginx.conf</pre>
<p>Add the following line to the top of the file:</p>
<pre>daemon off;</pre>
<p>This will prevent the &#8220;502 Bad Gateway&#8221; error you may see otherwise. I&#8217;m not sure why this is necessary, but I read about it <a href="http://www.ruby-forum.com/topic/161424">here</a>, and it seems to do the trick. nginx specifies that this should only be used for development, though. </p>
<p>Next, find the <i>http {</i> block, which should start around line 15 or so. You&#8217;ll want to add a <i>server {</i> block within the <i>http {</i> block for each of your Rails/Rack applications, like so:</p>
<pre>server {
   listen 80;
   server_name eldorado.local;
   root /Users/trevorturk/Code/eldorado/public;
   passenger_enabled on;
   rails_env development;
}</pre>
<p>You&#8217;ll need an entry in your <i>hosts</i> file if you don&#8217;t already have one. Simply open up the file:</p>
<pre>mate /etc/hosts</pre>
<p>&#8230;and add lines for each of the apps you plan to run, like so:</p>
<pre>127.0.0.1 eldorado.local </pre>
<p>Now, we can set up a launchd item, so that nginx will start up automatically after a system reboot. Create a new plist file by opening it up in TextMate:</p>
<pre>mate /System/Library/LaunchDaemons/nginx.plist</pre>
<p>&#8230;and paste the following code in, which was kindly provided for us by this <a href="http://innenin.blogspot.com/2009/05/running-nginx-on-osx.html">helpful person</a>:</p>
<p><script src="http://gist.github.com/188167.js"></script></p>
<p>Then, run the following command to load it:</p>
<pre>launchctl load /Library/LaunchDaemons/nginx.plist</pre>
<p>Now, you can reboot your system and make sure it&#8217;s all working as expected by visiting <a href="http://eldorado.local">http://eldorado.local</a>, or whatever address you&#8217;ve configured your application to be on. </p>
<p>I believe this nginx installation will override the existing Apache installation you may have running. This doesn&#8217;t bother me, so I opened up my System Preferences -> Sharing prefpane and unchecked the Web Sharing box, so Apache is no longer running. If you have any ideas about how to keep both services running cooperatively, please do let me know. </p>
<p><b>Update</b>: Here are some additionally configuration options I&#8217;m using, which I cobbled together from various sources after Googling for things like &#8220;nginx, rails, gzip, expires&#8221; and such. Their powers combined, and I seem to have a <a href="http://developer.yahoo.com/yslow/">YSlow</a>-approved setup.</p>
<p>Just above your <i>server {</i> block, around line 40, add the following:</p>
<pre>gzip on;
gzip_buffers 16 8k;
gzip_disable "MSIE [1-6]\.";
gzip_proxied any;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;</pre>
<p>That should cover gzip well enough. </p>
<p>Then, amend the aforementioned <i>server {</i> block to include some far future expires goodness that takes advantage of the Rails asset_tag helpers:</p>
<pre>server {
  listen 80;
  server_name eldorado.local;
  root /Users/trevorturk/Code/eldorado/public;
  passenger_enabled on;
  rails_env development;
  location ~* \.(ico|css|js|gif|jp?g|png)(\?[0-9]+)?$ {
      expires max;
      break;
  }
}</pre>
<p>These two configuartion tweeks are, I believe, the rough equivalent of the <a href="http://almosteffortless.com/2009/06/11/speed-up-your-apachepassenger-rails-app-in-2min/">technique previously discussed</a> on this blog for Apache. </p>
<p>Of course, any additional suggestions, comments, or insights you may have would be most welcome. I&#8217;m new to this whole nginx thing, but I&#8217;m enjoying it so far. </p>
<p><b>Update</b>: Here&#8217;s an easy way to reload nginx, if you need to make a change to your conf. Make sure to have the following in your <i>/opt/nginx/conf/nginx.conf</i> file:</p>
<pre>pid /var/run/nginx.pid;</pre>
<p>Then, you can make an alias for the reload task in your <i>~/.bash_profile</i>:</p>
<pre>alias nr='sudo kill -HUP `cat /var/run/nginx.pid`'</pre>
<p>In case you&#8217;re interested, you can check out my full <i>nginx.conf</i> file for local development here: </p>
<p><a href="http://gist.github.com/191331">http://gist.github.com/191331</a></p>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/6KOtkcRdVns" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2009/09/16/passenger-with-nginx-on-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2009/09/16/passenger-with-nginx-on-mac-os-x/</feedburner:origLink></item>
		<item>
		<title>Static: a super simple Rails CMS for Heroku</title>
		<link>http://feedproxy.google.com/~r/trevorturk/~3/vKnR_hRZroI/</link>
		<comments>http://trevorturk.com/2009/09/11/static-a-super-simple-rails-cms-for-heroku/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 22:20:18 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://almosteffortless.com/?p=1665</guid>
		<description><![CDATA[Static is a super simple Rails CMS built for Heroku. It supports file uploads to S3, makes image thumbnails, lets you make pages, has an optional admin password, and a customizable application layout that supports erb. It&#8217;s really easy to install and deploy to Heroku. If you have an S3 account, you can get up [...]]]></description>
			<content:encoded><![CDATA[<p>Static is a super simple Rails CMS built for Heroku. It supports file uploads to S3, makes image thumbnails, lets you make pages, has an optional admin password, and a customizable application layout that supports erb. It&#8217;s really easy to install and deploy to Heroku. If you have an S3 account, you can get up and running in under 5 minutes. </p>
<p>I made this little app a few weekends back because it scratched a personal itch of mine. I maintain a few small &#8220;static&#8221; or &#8220;brochure&#8221; <a href="http://seemaxwork.com/">sites</a> <a href="http://psalmuno.com/">for</a> <a href="http://amandagad.com/">friends</a>, which means I get to do boring HTML updates whenever they have a new picture or video they want to add. I figured that I could do a little upfront work and let them to do the rest. So, I looked around for a simple Rails CMS, but I couldn&#8217;t find anything simple enough. Thusly, Static was born. </p>
<p>It doesn&#8217;t do much for you, but that&#8217;s the point. You get a really simple little Rails app that lets you add pages, upload stuff, and wrap everything in a layout that can be updated online. If you ever need to add any cool new functionality (like displaying recent Twitter updates?) you can do it using Ruby/Rails. No more lame old hacked-together PHP sites ;) Static&#8217;s well-tested, 175 line code base could be the solid foundation for a site that grows over time. </p>
<p>This thing does exactly and only what I need it to do, but I&#8217;m happy to accept patches and such. Give it a shot, fork away, and let me know if you have something good for me to pull. </p>
<p><a href="http://github.com/trevorturk/static/">http://github.com/trevorturk/static/</a></p>
<p><a href="http://github.com/trevorturk/static/"><img style="margin-left:-30px;" src="http://s3.amazonaws.com/almosteffortless/static.png" /></a></p>
<p>Enjoy!</p>
<img src="http://feeds.feedburner.com/~r/trevorturk/~4/vKnR_hRZroI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorturk.com/2009/09/11/static-a-super-simple-rails-cms-for-heroku/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://trevorturk.com/2009/09/11/static-a-super-simple-rails-cms-for-heroku/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 0.811 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-09-02 07:14:29 --><!-- Compression = gzip -->
