<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><description>Episode 0.8.1 - Celluloid, concurrency, and more with Tony Arcieri
            Wynn talked with Tony Arcieri, creator of Celluloid about concurrency in Ruby and his thoughts on Erlang, Clojure, and design patterns.
            Go to episode</description><title>The Changelog - Open Source moves fast. Keep up.</title><generator>Tumblr (3.0; @thechangelog)</generator><link>http://thechangelog.com/</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/thechangelog" /><feedburner:info uri="thechangelog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://tumblr.superfeedr.com/" /><feedburner:emailServiceId>thechangelog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item><title>RubyMotion toolchain now open source</title><description>&lt;a href="https://github.com/HipByte/RubyMotion"&gt;RubyMotion toolchain now open source&lt;/a&gt;: &lt;p&gt;&lt;a href="http://twitter.com/lrz"&gt;Laurent&lt;/a&gt; has &lt;a href="http://blog.rubymotion.com/post/24197887535/community-open-source-updates"&gt;just announced&lt;/a&gt; the release of Ruby Motion’s &lt;code&gt;lib&lt;/code&gt; folder which powers the command line tool chain. The &lt;a href="https://github.com/HipByte/RubyMotion"&gt;source is on GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Stay tuned, Laurent will be our guest on the next episode.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=4qUoVy1Mbd4:mcmM0gal3E4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=4qUoVy1Mbd4:mcmM0gal3E4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=4qUoVy1Mbd4:mcmM0gal3E4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=4qUoVy1Mbd4:mcmM0gal3E4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=4qUoVy1Mbd4:mcmM0gal3E4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=4qUoVy1Mbd4:mcmM0gal3E4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=4qUoVy1Mbd4:mcmM0gal3E4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thechangelog/~4/4qUoVy1Mbd4" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/thechangelog/~3/4qUoVy1Mbd4/24202858409</link><guid isPermaLink="false">http://thechangelog.com/post/24202858409</guid><pubDate>Fri, 01 Jun 2012 12:34:33 -0500</pubDate><category>github</category><category>ruby</category><category>rubymotion</category><category>ios</category><feedburner:origLink>http://thechangelog.com/post/24202858409</feedburner:origLink></item><item><title>Ostio - add a forum to your GitHub project</title><description>&lt;a href="https://github.com/paulmillr/ostio"&gt;Ostio - add a forum to your GitHub project&lt;/a&gt;: &lt;p&gt;&lt;a href="http://ost.io"&gt;Ostio&lt;/a&gt; from &lt;a href="http://twitter.com/paulmillr"&gt;Paul Miller&lt;/a&gt; lets you easily add a forum to your GitHub-hosted projects. Integrated with GitHub OAuth, Ostio syncs your orgs and public repos from your GitHub account. You can then create discussion threads with Markdown support.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://ost.io"&gt;&lt;img src="http://cl.ly/1M2P1I2E2C3m0Y3F2S1L/Screen%20Shot%202012-06-01%20at%2011.21.07%20AM.png" alt="screencap"/&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/paulmillr/ostio/"&gt;Frontend&lt;/a&gt; and &lt;a href="https://github.com/paulmillr/ostio-api/"&gt;API&lt;/a&gt; source on GitHub.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=1_ULym4t_8g:Pq2-dRCee1s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=1_ULym4t_8g:Pq2-dRCee1s:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=1_ULym4t_8g:Pq2-dRCee1s:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=1_ULym4t_8g:Pq2-dRCee1s:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=1_ULym4t_8g:Pq2-dRCee1s:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=1_ULym4t_8g:Pq2-dRCee1s:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=1_ULym4t_8g:Pq2-dRCee1s:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thechangelog/~4/1_ULym4t_8g" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/thechangelog/~3/1_ULym4t_8g/24200148598</link><guid isPermaLink="false">http://thechangelog.com/post/24200148598</guid><pubDate>Fri, 01 Jun 2012 11:35:02 -0500</pubDate><category>github</category><category>forums</category><feedburner:origLink>http://thechangelog.com/post/24200148598</feedburner:origLink></item><item><title>Backstop - Simple HTTP service for submitting metrics to Graphite</title><description>&lt;a href="https://github.com/obfuscurity/backstop"&gt;Backstop - Simple HTTP service for submitting metrics to Graphite&lt;/a&gt;: &lt;p&gt;We’ve &lt;a href="http://thechangelog.com/post/14316329178/graphiti-customizable-grap-dashboard-for-graphite-power"&gt;mentioned a couple of Graphite-related projects&lt;/a&gt; previously. &lt;a href="http://obfuscurity.com/"&gt;Jason Dixon&lt;/a&gt; and &lt;a href="https://twitter.com/#!/michaelgorsuch"&gt;Michael Gorsuch&lt;/a&gt; from Heroku have released &lt;a href="https://github.com/obfuscurity/backstop"&gt;Backstop&lt;/a&gt;, a simple HTTP-to-Graphite proxy to make it simple to send metrics. Using the &lt;code&gt;/publish&lt;/code&gt; method, metrics and annotations can be posted that match any approved prefixes found in the &lt;code&gt;PREFIXES&lt;/code&gt; environment variable, &lt;code&gt;custom&lt;/code&gt; in the following example:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# Send a metric
RestClient.post("https://backstop.example.com/publish/custom",
   [{:metric =&gt; key, :value =&gt; value, :measure_time =&gt; Time.now.to_i}].to_json)

# Send an annotation
RestClient.post("https://backstop.example.com/publish/note",
   [{:metric =&gt; "foobar.release", :value =&gt; "v214", :measure_time =&gt; Time.now.to_i}].to_json)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Check the &lt;a href="https://github.com/obfuscurity/backstop#readme"&gt;README&lt;/a&gt; for local usage and instructions for deploying to Heroku.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=4DuvW2xPs1o:n0uuHAJgOpY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=4DuvW2xPs1o:n0uuHAJgOpY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=4DuvW2xPs1o:n0uuHAJgOpY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=4DuvW2xPs1o:n0uuHAJgOpY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=4DuvW2xPs1o:n0uuHAJgOpY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=4DuvW2xPs1o:n0uuHAJgOpY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=4DuvW2xPs1o:n0uuHAJgOpY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thechangelog/~4/4DuvW2xPs1o" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/thechangelog/~3/4DuvW2xPs1o/24147669793</link><guid isPermaLink="false">http://thechangelog.com/post/24147669793</guid><pubDate>Thu, 31 May 2012 15:55:52 -0500</pubDate><category>github</category><category>stats</category><category>graphite</category><category>api</category><category>ruby</category><feedburner:origLink>http://thechangelog.com/post/24147669793</feedburner:origLink></item><item><title>Episode 0.8.1 - Celluloid, concurrency, and more with Tony Arcieri</title><description>&lt;a href="http://changelogshow.com/105/50052-episode-0-8-1-celluloid-concurrency-and-more-with-tony-arcieri"&gt;Episode 0.8.1 - Celluloid, concurrency, and more with Tony Arcieri&lt;/a&gt;: &lt;p&gt;Wynn talked with Tony Arcieri, creator of Celluloid, about concurrency in Ruby and his thoughts on Erlang, Clojure, and design patterns.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://changelogshow.com/105/50052-episode-0-8-1-celluloid-concurrency-and-more-with-tony-arcieri.mp3"&gt;Download MP3&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This week’s episode is brought to you by:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a style="display: block; background: #fff; padding: 2px; float: right; border: solid 1px #999; margin: 0 0 20px 20px; line-height: 0" href="http://pusher.com/?utm_source=thechangelog&amp;utm_medium=podcast&amp;utm_campaign=081"&gt;&lt;img alt="Pusher" src="http://cl.ly/2I0z3L270q2t460c201T/pusher-deck.jpg"/&gt;&lt;/a&gt;
&lt;a href="http://pusher.com/?utm_source=thechangelog&amp;utm_medium=podcast&amp;utm_campaign=081"&gt;Pusher&lt;/a&gt; is looking for system engineers who specialize in evented systems.  Go to → &lt;a href="http://pusher.com/jobs?utm_source=thechangelog&amp;utm_medium=podcast&amp;utm_campaign=081"&gt;pusher.com/jobs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;br style="clear:both;"/&gt;&lt;/p&gt;

&lt;p&gt;&lt;a style="display: block; background: #fff; padding: 2px; float: right; border: solid 1px #999; margin: 0 0 20px 20px; line-height: 0" href="http://www.hackernewsletter.com/?utm_source=thechangelog&amp;utm_medium=web&amp;utm_campaign=hnl5"&gt;&lt;img alt="Pusher" src="http://cl.ly/041B3U0s2s2T2Q2C0T3h/hnl-130x100.png"/&gt;&lt;/a&gt;
&lt;a href="http://www.hackernewsletter.com/?utm_source=thechangelog&amp;utm_medium=web&amp;utm_campaign=hnl5"&gt;Hacker Newsletter&lt;/a&gt; is a weekly newsletter delivered every Friday that shares some of the best articles on startups, technology, programming, and more. All links are curated by hand from the ever popular Hacker News site.&lt;/p&gt;

&lt;p&gt;Items mentioned in the show:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href="https://twitter.com/bascule"&gt;Tony Arcieri&lt;/a&gt;, creator of Celluloid.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://celluloid.io/"&gt;Celluloid&lt;/a&gt; is painless multithreaded programming for Ruby.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/celluloid/celluloid-io"&gt;Celluloid:IO&lt;/a&gt; provides evented I/O for Celluloid actors.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/celluloid/dcell"&gt;DCell&lt;/a&gt; lets you build distributed Celluloid apps over 0MQ.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://twitter.com/therealadam"&gt;Adam Keys&lt;/a&gt;, formerly of Gowalla, is now teammates with Tony at Living Social.&lt;/li&gt;
&lt;li&gt;Zed gave us the lowdown on &lt;a href="http://www.zeromq.org/"&gt;0MQ&lt;/a&gt; on &lt;a href="http://thechangelog.com/post/1087757312/episode-0-3-4-mongrel2-guitar-and-more-with-zed-shaw"&gt;0.3.4&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/celluloid/reel"&gt;Reel&lt;/a&gt; aims to be a fast, non-blocking evented web server &lt;em&gt;without&lt;/em&gt; a Rack API.&lt;/li&gt;
&lt;li&gt;Tony is aiming to get Reel working with &lt;a href="http://wiki.basho.com/Webmachine.html"&gt;Webmachine&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/seancribbs"&gt;Sean Cribbs&lt;/a&gt; talked Riak on a &lt;a href="http://thechangelog.com/post/397364245/episode-0-1-4-andy-gross-and-sean-cribbs-on-riak"&gt;previous episode&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://hubot.github.com/"&gt;Hubot&lt;/a&gt; is GitHub’s awesome Campfire bot.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://travis-ci.org/"&gt;Travis&lt;/a&gt; uses Celluloid, as discussed on &lt;a href="http://thechangelog.com/post/18847458083/episode-0-7-5-travis-ci-riak-and-more-with-josh-kalderim"&gt;0.7.5&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Tony is shutting down &lt;a href="https://github.com/lightness/lightrail"&gt;LightRail&lt;/a&gt; since the release of &lt;a href="https://github.com/spastorino/rails-api"&gt;Rails::API&lt;/a&gt;, from &lt;a href="https://twitter.com/#!/spastorino"&gt;Santiago Pastorino&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/josevalim/active_model_serializers"&gt;ActiveModel::Serializer&lt;/a&gt; aims to provide an object to encapsulate serialization of ActiveModel objects, including ActiveRecord objects.&lt;/li&gt;
&lt;li&gt;Wynn loves &lt;a href="https://github.com/rails/jbuilder"&gt;jbuilder&lt;/a&gt; despite its name.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://erights.org/"&gt;E&lt;/a&gt; is the secure distributed pure-object platform and p2p scripting language.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Data,_Context,_and_Interaction"&gt;Data, context and interaction&lt;/a&gt; is a paradigm used in computer software to program systems of communicating objects.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/warner/tahoe-lafs"&gt;Tahoe-LAFS&lt;/a&gt; is a Python-powered decentralized secure filesystem.&lt;/li&gt;
&lt;li&gt;Tony likes &lt;a href="http://clojure.org/"&gt;Clojure&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://twitter.com/joeerl"&gt;Joe Armstrong&lt;/a&gt; and &lt;a href="https://twitter.com/rvirding"&gt;Robert Virding&lt;/a&gt;, creators of Erlang are Tony’s programming heroes.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=VTg4iq_FMOQ:Cq3X3Wl6uOk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=VTg4iq_FMOQ:Cq3X3Wl6uOk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=VTg4iq_FMOQ:Cq3X3Wl6uOk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=VTg4iq_FMOQ:Cq3X3Wl6uOk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=VTg4iq_FMOQ:Cq3X3Wl6uOk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=VTg4iq_FMOQ:Cq3X3Wl6uOk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=VTg4iq_FMOQ:Cq3X3Wl6uOk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thechangelog/~4/VTg4iq_FMOQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/thechangelog/~3/VTg4iq_FMOQ/24130540569</link><guid isPermaLink="false">http://thechangelog.com/post/24130540569</guid><pubDate>Thu, 31 May 2012 10:10:56 -0500</pubDate><category>episode</category><category>ruby</category><category>concurrency</category><category>erlang</category><category>clojure</category><category>api</category><media:content url="http://feedproxy.google.com/~r/thechangelog/~5/8mp6EKqEdsU/50052-episode-0-8-1-celluloid-concurrency-and-more-with-tony-arcieri.mp3" fileSize="19017856" type="audio/mpeg" /><feedburner:origLink>http://thechangelog.com/post/24130540569</feedburner:origLink><enclosure url="http://feedproxy.google.com/~r/thechangelog/~5/8mp6EKqEdsU/50052-episode-0-8-1-celluloid-concurrency-and-more-with-tony-arcieri.mp3" length="19017856" type="audio/mpeg" /><feedburner:origEnclosureLink>http://changelogshow.com/105/50052-episode-0-8-1-celluloid-concurrency-and-more-with-tony-arcieri.mp3</feedburner:origEnclosureLink></item><item><title>Hammer.js - Easily add multi-touch to your websites</title><description>&lt;a href="https://github.com/eightmedia/hammer.js"&gt;Hammer.js - Easily add multi-touch to your websites&lt;/a&gt;: &lt;p&gt;With the continued growth of mobile devices, handling touch (and multi-touch) events is no longer optional. Hammer.js is a small - dependency free - library that makes handling touch events dead simple.&lt;/p&gt;

&lt;p&gt;You can easily add tap (touch/click), double tap, hold, drag (touchmove/mousemove), swipe, and transform (pinch) events to your website with very little code. &lt;/p&gt;

&lt;pre&gt;&lt;code&gt;var hammer = new Hammer(document.getElementById("hammertime"));
hammer.ondoubletap = function(e){
  console.log("CAN touch this!");
};
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Oh, and if jQuery is your thing, they have a simple plugin that you can download as well.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://eightmedia.github.com/hammer.js/"&gt;View the demo&lt;/a&gt; or &lt;a href="https://github.com/eightmedia/hammer.js" title="Browse the Source"&gt;browse the source on GitHub&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=vuOD56DRpwE:fZbvgR4888A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=vuOD56DRpwE:fZbvgR4888A:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=vuOD56DRpwE:fZbvgR4888A:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=vuOD56DRpwE:fZbvgR4888A:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=vuOD56DRpwE:fZbvgR4888A:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=vuOD56DRpwE:fZbvgR4888A:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=vuOD56DRpwE:fZbvgR4888A:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thechangelog/~4/vuOD56DRpwE" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/thechangelog/~3/vuOD56DRpwE/24108414798</link><guid isPermaLink="false">http://thechangelog.com/post/24108414798</guid><pubDate>Wed, 30 May 2012 22:14:00 -0500</pubDate><category>github</category><category>javascript</category><feedburner:origLink>http://thechangelog.com/post/24108414798</feedburner:origLink></item><item><title>Episode 0.8.0 - Lua, Luvit, want some more of it, with Tim Caswell</title><description>&lt;a href="http://changelogshow.com/105/49422-episode-0-8-0-lua-luvit-want-some-more-of-it-with-tim-caswell"&gt;Episode 0.8.0 - Lua, Luvit, want some more of it, with Tim Caswell&lt;/a&gt;: &lt;p&gt;Wynn caught up with Tim Caswell to talk about Luvit, his new project that provides Lua bindings for libuv.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://changelogshow.com/105/49422-episode-0-8-0-lua-luvit-want-some-more-of-it-with-tim-caswell.mp3"&gt;Download MP3&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This week’s episode is brought to you by:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a style="display: block; background: #fff; padding: 2px; float: right; border: solid 1px #999; margin: 0 0 20px 20px; line-height: 0" href="http://www.hackernewsletter.com/?utm_source=thechangelog&amp;utm_medium=web&amp;utm_campaign=hnl5"&gt;&lt;img alt="Pusher" src="http://cl.ly/041B3U0s2s2T2Q2C0T3h/hnl-130x100.png"/&gt;&lt;/a&gt;
&lt;a href="http://www.hackernewsletter.com/?utm_source=thechangelog&amp;utm_medium=web&amp;utm_campaign=hnl5"&gt;Hacker Newsletter&lt;/a&gt; is a weekly newsletter delivered every Friday that shares some of the best articles on startups, technology, programming, and more. All links are curated by hand from the ever popular Hacker News site.&lt;/p&gt;

&lt;p&gt;Items mentioned in the show:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Adam is recently hitched to the lovely &lt;a href="https://twitter.com/#!/heatherstac"&gt;Heather&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://twitter.com/creationix"&gt;Tim Caswell&lt;/a&gt; is a long time friend of the show, creator of the &lt;a href="http://howtonode.org/"&gt;How to Node blog&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lua.org/about.html"&gt;Lua&lt;/a&gt; is a powerful, fast, lightweight, embeddable scripting language.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://luvit.io"&gt;Luvit&lt;/a&gt; = Lua + libUV + jIT = pure awesomesauce.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://luajit.org/ext_ffi.html"&gt;LuaJIT’s FFI library&lt;/a&gt; allows calling external C functions and using C data structures from pure Lua code.&lt;/li&gt;
&lt;li&gt;Luvit can take advantage of most Node libraries as long as they use non-blocking IO.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.rackspace.com/"&gt;Rackspace&lt;/a&gt; is using Luvit in production already, but without HTTP.&lt;/li&gt;
&lt;li&gt;Tim likes the callback style of coding that V8 promotes.&lt;/li&gt;
&lt;li&gt;Wynn asks where Node.js is on &lt;a href="http://www.gartner.com/technology/research/methodologies/hype-cycle.jsp"&gt;the Gartner hype cycle&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/creationix/luvmonkey"&gt;Luvmonkey&lt;/a&gt; is a port of libuv bindings for &lt;a href="https://developer.mozilla.org/en/SpiderMonkey"&gt;SpiderMonkey&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Tim fails to see the use case for &lt;a href="http://requirejs.org/docs/whyamd.html"&gt;AMD&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Tim worked with &lt;a href="https://twitter.com/#!/jashkenas"&gt;Jeremy Ashkenas&lt;/a&gt; on CoffeeScript while at &lt;a href="http://thechangelog.com/post/272530971/episode-0-0-5-document-cloud"&gt;Document Cloud&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/indutny/candor"&gt;Candor&lt;/a&gt; is a language inspired by javascript, but with less features and, therefore, less complexity. So no semicolons, no exceptions and simplified anonymous function syntax (dart-like).&lt;/li&gt;
&lt;li&gt;Tim has played with &lt;a href="http://lg.gd/003"&gt;Go&lt;/a&gt; but likes &lt;a href="http://www.rust-lang.org/"&gt;Rust&lt;/a&gt; better.&lt;/li&gt;
&lt;li&gt;Tim is now working at &lt;a href="http://c9.io"&gt;Cloud9&lt;/a&gt; and their cloud-based IDE.&lt;/li&gt;
&lt;li&gt;Surely Tim isn’t “the only JavaScript developer within a hundred miles of” &lt;a href="http://g.co/maps/reaqu"&gt;Red Lick, TX&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://nodebits.org/"&gt;Nodebits&lt;/a&gt; is another Node.js blog.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/#!/piscisaureus"&gt;Bert Belder&lt;/a&gt; and &lt;a href="https://github.com/bnoordhuis"&gt;Ben Noordhuis&lt;/a&gt; are the “libuv guys” at Cloud9.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.mozilla.org/en-US/b2g/"&gt;Boot2Gecko&lt;/a&gt; is “an early-stage project to expose all device capabilities such that infrastructure like phone dialers can be built with Web APIs.”&lt;/li&gt;
&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=2HcKIU9d0cY:aWGFpLuaw5A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=2HcKIU9d0cY:aWGFpLuaw5A:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=2HcKIU9d0cY:aWGFpLuaw5A:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=2HcKIU9d0cY:aWGFpLuaw5A:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=2HcKIU9d0cY:aWGFpLuaw5A:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=2HcKIU9d0cY:aWGFpLuaw5A:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=2HcKIU9d0cY:aWGFpLuaw5A:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thechangelog/~4/2HcKIU9d0cY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/thechangelog/~3/2HcKIU9d0cY/23610112548</link><guid isPermaLink="false">http://thechangelog.com/post/23610112548</guid><pubDate>Wed, 23 May 2012 10:03:00 -0500</pubDate><category>episode</category><category>lua</category><category>luvit</category><category>node.js</category><category>v8</category><category>javascript</category><category>webos</category><media:content url="http://feedproxy.google.com/~r/thechangelog/~5/bulGKqJW22w/49422-episode-0-8-0-lua-luvit-want-some-more-of-it-with-tim-caswell.mp3" fileSize="11817088" type="audio/mpeg" /><feedburner:origLink>http://thechangelog.com/post/23610112548</feedburner:origLink><enclosure url="http://feedproxy.google.com/~r/thechangelog/~5/bulGKqJW22w/49422-episode-0-8-0-lua-luvit-want-some-more-of-it-with-tim-caswell.mp3" length="11817088" type="audio/mpeg" /><feedburner:origEnclosureLink>http://changelogshow.com/105/49422-episode-0-8-0-lua-luvit-want-some-more-of-it-with-tim-caswell.mp3</feedburner:origEnclosureLink></item><item><title>JASidePanels - Reveal side ViewControllers similar to Facebook/Path's menu</title><description>&lt;a href="https://github.com/gotosleep/JASidePanels"&gt;JASidePanels - Reveal side ViewControllers similar to Facebook/Path's menu&lt;/a&gt;: &lt;blockquote&gt;
  &lt;p&gt;JASidePanels is a UIViewController container designed for presenting a center panel with revealable side panels - one to the left and one to the right. The main inspiration for this project is the menuing system in Path 2.0 and Facebook’s iOS apps.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Recently, I was looking for a library for the Path and Facebook style menu. After trying several, JASidePanels was the clear winner. It’s highly customizable, supports orientation changes, and works on iPad too! Configuring is dead simple:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;JASidePanelController *viewController = [[JASidePanelController alloc] init];
viewController.leftPanel = [[JALeftViewController alloc] init];
viewController.centerPanel = [[UINavigationController alloc] initWithRootViewController:[[JACenterViewController alloc] init]];
viewController.rightPanel = [[JARightViewController alloc] init];
self.window.rootViewController = viewController;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The source and a demo project is &lt;a href="https://github.com/gotosleep/JASidePanels"&gt;on GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src="https://img.skitch.com/20120322-dx6k69577ra37wwgqgmsgksqpx.jpg" alt="JASidePanels in Float"/&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=V2bha3y5YUc:tBgLEa04-ac:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=V2bha3y5YUc:tBgLEa04-ac:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=V2bha3y5YUc:tBgLEa04-ac:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=V2bha3y5YUc:tBgLEa04-ac:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=V2bha3y5YUc:tBgLEa04-ac:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=V2bha3y5YUc:tBgLEa04-ac:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=V2bha3y5YUc:tBgLEa04-ac:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thechangelog/~4/V2bha3y5YUc" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/thechangelog/~3/V2bha3y5YUc/23547379023</link><guid isPermaLink="false">http://thechangelog.com/post/23547379023</guid><pubDate>Tue, 22 May 2012 10:55:49 -0500</pubDate><category>github</category><category>objective-c</category><category>iOS</category><feedburner:origLink>http://thechangelog.com/post/23547379023</feedburner:origLink></item><item><title>Sextant - view your Rails routes without waiting on Rake</title><description>&lt;a href="https://github.com/schneems/sextant"&gt;Sextant - view your Rails routes without waiting on Rake&lt;/a&gt;: &lt;p&gt;When given the option, I’ll always opt for text mode when completing a task. In Rails that usually means Rake. There’s a point in most Rails apps, however, when the time to boot Rails just to &lt;code&gt;rake -T&lt;/code&gt; is painful. So when &lt;a href="http://twitter.com/schneems"&gt;Richard Schneeman&lt;/a&gt; got tired of waiting on Rails to run &lt;code&gt;rake routes&lt;/code&gt;, he created &lt;a href="https://github.com/schneems/sextant"&gt;Sextant&lt;/a&gt;, a gem that lists your routes in development mode right in your browser.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/schneems/sextant"&gt;&lt;img src="http://cl.ly/0j3A390P132C0c2Z1I3N/Sextant%20Output.png" alt="screencap"/&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since your web server is presumably already booted, there’s no startup tax to see your routes. Check out Richard’s &lt;a href="http://schneems.com/post/23543653526/sextant-a-gem-to-help-you-find-your-routes"&gt;blog post&lt;/a&gt; or the &lt;a href="https://github.com/schneems/sextant"&gt;source on GitHub&lt;/a&gt; for more.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=Q42PDf_Ovxs:cpr-gPTRZmk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=Q42PDf_Ovxs:cpr-gPTRZmk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=Q42PDf_Ovxs:cpr-gPTRZmk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=Q42PDf_Ovxs:cpr-gPTRZmk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=Q42PDf_Ovxs:cpr-gPTRZmk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=Q42PDf_Ovxs:cpr-gPTRZmk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=Q42PDf_Ovxs:cpr-gPTRZmk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thechangelog/~4/Q42PDf_Ovxs" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/thechangelog/~3/Q42PDf_Ovxs/23545302399</link><guid isPermaLink="false">http://thechangelog.com/post/23545302399</guid><pubDate>Tue, 22 May 2012 09:54:48 -0500</pubDate><category>github</category><category>rails</category><category>ruby</category><category>rake</category><category>routes</category><feedburner:origLink>http://thechangelog.com/post/23545302399</feedburner:origLink></item><item><title>MPFoldTransition - Easily add custom folding and page-flipping transitions to UIViews and UIViewControllers</title><description>&lt;a href="https://github.com/mpospese/MPFoldTransition"&gt;MPFoldTransition - Easily add custom folding and page-flipping transitions to UIViews and UIViewControllers&lt;/a&gt;: &lt;blockquote&gt;
  &lt;p&gt;MPFoldTransition is a set of classes to add folding-style transitions to iOS 5 projects.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is a really amazing project. Making these fold and flip transitions is a ton of work and &lt;a href="https://github.com/mpospese"&gt;Mark Pospesel&lt;/a&gt; has made it dead simple.&lt;/p&gt;

&lt;p&gt;You can easily transition views using different styles with one method call:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;+ (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration style:(MPFoldStyle)style transitionAction:(MPTransitionAction)action completion:(void (^)(BOOL finished))completion;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;There are versions for UIViewControllers as well. Source and demo app &lt;a href="https://github.com/mpospese/MPFoldTransition"&gt;on GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src="https://a248.e.akamai.net/camo.github.com/1b7ffe0de30019e7e8153222e73d339b2cb54572/687474703a2f2f6d61726b706f73706573656c2e66696c65732e776f726470726573732e636f6d2f323031322f30352f6970686f6e652d666f6c64312e706e67" alt="MPFoldTransition"/&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=W-0lGeTdarA:CXff2GIiTBE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=W-0lGeTdarA:CXff2GIiTBE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=W-0lGeTdarA:CXff2GIiTBE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=W-0lGeTdarA:CXff2GIiTBE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=W-0lGeTdarA:CXff2GIiTBE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=W-0lGeTdarA:CXff2GIiTBE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=W-0lGeTdarA:CXff2GIiTBE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thechangelog/~4/W-0lGeTdarA" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/thechangelog/~3/W-0lGeTdarA/23517509228</link><guid isPermaLink="false">http://thechangelog.com/post/23517509228</guid><pubDate>Mon, 21 May 2012 20:33:58 -0500</pubDate><category>github</category><category>objective-c</category><category>ios</category><feedburner:origLink>http://thechangelog.com/post/23517509228</feedburner:origLink></item><item><title>SSPullToRefresh - Simple pull to refresh view for iPhone</title><description>&lt;a href="https://github.com/samsoffes/sspulltorefresh"&gt;SSPullToRefresh - Simple pull to refresh view for iPhone&lt;/a&gt;: &lt;p&gt;As I continue to dive into iOS development, I’m on the lookout for time saving Cocoa projects. &lt;a href="http://samsoff.es"&gt;Sam&lt;/a&gt;’s &lt;a href="https://github.com/samsoffes/sspulltorefresh"&gt;SSPullToRefresh&lt;/a&gt; is an easy, customizable way to add pull-to-refresh views like those made popular in &lt;a href="http://twitter.com/lorenb"&gt;Loren Brichter&lt;/a&gt;’s original Tweetie for iPhone app. SSPullToRefresh hides all the pulling and animating logic away, leaving you to implement what you care about - fetching and refreshing your view.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;- (void)viewDidLoad {
   [super viewDidLoad];
   self.pullToRefreshView = [[SSPullToRefreshView alloc] initWithScrollView:self.tableView delegate:self];
}


- (void)refresh {
   [self.pullToRefreshView startLoading];
   // Load data...
   [self.pullToRefreshView finishLoading];
}

- (void)pullToRefreshViewDidStartLoading:(SSPullToRefreshView *)view {
   [self refresh];
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You can use a couple of provided content views or you can subclass and implement your own. Check out the &lt;a href="https://github.com/samsoffes/sspulltorefresh"&gt;source on GitHub&lt;/a&gt; or see it in action in &lt;a href="https://cheddarapp.com/"&gt;Cheddar&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=XjK3UPKkeI8:9y7EEj4ED1E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=XjK3UPKkeI8:9y7EEj4ED1E:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=XjK3UPKkeI8:9y7EEj4ED1E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=XjK3UPKkeI8:9y7EEj4ED1E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=XjK3UPKkeI8:9y7EEj4ED1E:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=XjK3UPKkeI8:9y7EEj4ED1E:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=XjK3UPKkeI8:9y7EEj4ED1E:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thechangelog/~4/XjK3UPKkeI8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/thechangelog/~3/XjK3UPKkeI8/23289033753</link><guid isPermaLink="false">http://thechangelog.com/post/23289033753</guid><pubDate>Fri, 18 May 2012 08:33:00 -0500</pubDate><category>github</category><category>cocoa</category><category>ios</category><category>obj-c</category><feedburner:origLink>http://thechangelog.com/post/23289033753</feedburner:origLink></item><item><title>Bootstrap-powered viewer makes RFCs easier on the eyes</title><description>&lt;a href="https://github.com/mislav/rfc"&gt;Bootstrap-powered viewer makes RFCs easier on the eyes&lt;/a&gt;: &lt;p&gt;In what may be the most useful application of the &lt;a href="http://thechangelog.com/post/16966889481/twitter-bootstrap-html-css-and-js-toolkit-from"&gt;Twitter UI framework&lt;/a&gt;, &lt;a href="http://mislav.uniqpath.com/"&gt;Mislav Marohnić&lt;/a&gt; offers &lt;a href="https://github.com/mislav/rfc"&gt;RFC&lt;/a&gt;, a website that reformats The Internet Engineering Task Force (IETF) documents into something a bit more reader friendly:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://pretty-rfc.herokuapp.com/"&gt;&lt;img src="http://cl.ly/2v0h3t0z0R2L2G1Q1T3q/Screen%20Shot%202012-05-15%20at%204.37.04%20PM.png" alt="Comparison"/&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I know which I’d rather read. The &lt;a href="https://github.com/mislav/rfc"&gt;source is on GitHub&lt;/a&gt; and the live site is &lt;a href="http://pretty-rfc.herokuapp.com/"&gt;running on Heroku&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=tuEzJzAbz7A:3X31La18TCk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=tuEzJzAbz7A:3X31La18TCk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=tuEzJzAbz7A:3X31La18TCk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=tuEzJzAbz7A:3X31La18TCk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=tuEzJzAbz7A:3X31La18TCk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=tuEzJzAbz7A:3X31La18TCk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=tuEzJzAbz7A:3X31La18TCk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thechangelog/~4/tuEzJzAbz7A" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/thechangelog/~3/tuEzJzAbz7A/23171557621</link><guid isPermaLink="false">http://thechangelog.com/post/23171557621</guid><pubDate>Wed, 16 May 2012 12:20:07 -0500</pubDate><category>github</category><category>RFC</category><category>bootstrap</category><feedburner:origLink>http://thechangelog.com/post/23171557621</feedburner:origLink></item><item><title>rspec-rails-uncommitted - Selectively run specs based on git status</title><description>&lt;a href="https://github.com/marshally/rspec-rails-uncommitted"&gt;rspec-rails-uncommitted - Selectively run specs based on git status&lt;/a&gt;: &lt;p&gt;&lt;a href="https://twitter.com/#!/marshallyount"&gt;Marshall Yount&lt;/a&gt; has released &lt;a href="https://github.com/marshally/rspec-rails-uncommitted"&gt;a project&lt;/a&gt; to make it easier to run Rspec specs in Rails based on git status:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;rake rspec:uncommitted    
rake rspec:unpushed
rake rspec:unmerged
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;It looks like a nice way to filter specs for those using a git-based workflow. &lt;a href="https://github.com/marshally/rspec-rails-uncommitted"&gt;Source on GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;UPDATE: As &lt;a href="https://twitter.com/#!/soulim"&gt;Alex Soulim&lt;/a&gt; points out, it works with SVN, too.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=qAJ5xcAKdOI:FpMnCtrn11U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=qAJ5xcAKdOI:FpMnCtrn11U:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=qAJ5xcAKdOI:FpMnCtrn11U:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=qAJ5xcAKdOI:FpMnCtrn11U:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=qAJ5xcAKdOI:FpMnCtrn11U:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=qAJ5xcAKdOI:FpMnCtrn11U:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=qAJ5xcAKdOI:FpMnCtrn11U:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thechangelog/~4/qAJ5xcAKdOI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/thechangelog/~3/qAJ5xcAKdOI/23165488531</link><guid isPermaLink="false">http://thechangelog.com/post/23165488531</guid><pubDate>Wed, 16 May 2012 09:28:00 -0500</pubDate><category>github</category><category>rake</category><category>rspec</category><category>bdd</category><category>rails</category><category>ruby</category><feedburner:origLink>http://thechangelog.com/post/23165488531</feedburner:origLink></item><item><title>Redis-faina - query analyzer for Redis</title><description>&lt;a href="https://github.com/Instagram/redis-faina"&gt;Redis-faina - query analyzer for Redis&lt;/a&gt;: &lt;p&gt;From folks that know something about scale, the &lt;a href="https://github.com/Instagram"&gt;Instagram team&lt;/a&gt; has realeased &lt;a href="https://github.com/Instagram/redis-faina"&gt;Redis-faina&lt;/a&gt;, a tool that parses Redis’ &lt;code&gt;MONITOR&lt;/code&gt; command to provide stats on Redis queries:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# reading from stdin
redis-cli -p 6490 MONITOR | head -n &lt;NUMBER OF LINES TO ANALYZE&gt; | ./redis-faina.py

Overall Stats
========================================
Lines Processed     117773
Commands/Sec        11483.44

Top Prefixes
========================================
friendlist          69945
followedbycounter   25419
followingcounter    10139
recentcomments      3276
queued              7

Top Keys
========================================
friendlist:zzz:1:2     534
followingcount:zzz     227
friendlist:zxz:1:2     167
friendlist:xzz:1:2     165
friendlist:yzz:1:2     160
friendlist:gzz:1:2     160
friendlist:zdz:1:2     160
friendlist:zpz:1:2     156

...
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Check out &lt;a href="https://github.com/Instagram/redis-faina"&gt;the source on GitHub&lt;/a&gt;. If you’re new to Redis, &lt;a href="http://thechangelog.com/post/2801342864/episode-0-4-5-redis-with-salvatore-sanfilippo"&gt;Episode 0.4.5&lt;/a&gt; with @&lt;a href="http://twitter.com/antirez"&gt;antirez&lt;/a&gt; is a classic.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=Ks8zixmvkS8:DJTy9RMVVMY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=Ks8zixmvkS8:DJTy9RMVVMY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=Ks8zixmvkS8:DJTy9RMVVMY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=Ks8zixmvkS8:DJTy9RMVVMY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=Ks8zixmvkS8:DJTy9RMVVMY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=Ks8zixmvkS8:DJTy9RMVVMY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=Ks8zixmvkS8:DJTy9RMVVMY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thechangelog/~4/Ks8zixmvkS8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/thechangelog/~3/Ks8zixmvkS8/23163440220</link><guid isPermaLink="false">http://thechangelog.com/post/23163440220</guid><pubDate>Wed, 16 May 2012 08:17:27 -0500</pubDate><category>github</category><category>redis</category><category>stats</category><category>monitoring</category><feedburner:origLink>http://thechangelog.com/post/23163440220</feedburner:origLink></item><item><title>MGTileMenu - pop-up tile-based contextual menu for iOS5</title><description>&lt;a href="https://github.com/mattgemmell/MGTileMenu"&gt;MGTileMenu - pop-up tile-based contextual menu for iOS5&lt;/a&gt;: &lt;p&gt;&lt;a href="https://github.com/mattgemmell/MGTileMenu"&gt;MGTileMenu&lt;/a&gt; is an innovative context menu for iOS from &lt;a href="http://mattgemmell.com/"&gt;Matt Gemmell&lt;/a&gt;. Resembling Path’s &lt;a href="http://lab.victorcoulon.fr/css/path-menu/"&gt;oft imitated&lt;/a&gt; corner menu in some respects, it appears to be more contextual than navigational, as the &lt;a href="http://www.youtube.com/watch?feature=player_embedded&amp;v=_xIttBW6BI4"&gt;screencast demonstrates&lt;/a&gt;:&lt;/p&gt;

&lt;iframe width="500" height="369" src="http://www.youtube.com/embed/7YcrFVUK5lI" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;

&lt;p&gt;Matt’s &lt;a href="http://mattgemmell.com/2012/05/14/mgtilemenu/"&gt;introductory blog post&lt;/a&gt; provides a deep introduction on the design or you can grab the &lt;a href="https://github.com/mattgemmell/MGTileMenu"&gt;source on GitHub&lt;/a&gt;. The license requires attribution, or you can &lt;a href="http://sites.fastspring.com/mattgemmell/product/sourcecode"&gt;purchase a non-attribution license online&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=BIgFjbbLQ0k:zA7Rq0rp4D8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=BIgFjbbLQ0k:zA7Rq0rp4D8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=BIgFjbbLQ0k:zA7Rq0rp4D8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=BIgFjbbLQ0k:zA7Rq0rp4D8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=BIgFjbbLQ0k:zA7Rq0rp4D8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=BIgFjbbLQ0k:zA7Rq0rp4D8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=BIgFjbbLQ0k:zA7Rq0rp4D8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thechangelog/~4/BIgFjbbLQ0k" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/thechangelog/~3/BIgFjbbLQ0k/23036630690</link><guid isPermaLink="false">http://thechangelog.com/post/23036630690</guid><pubDate>Mon, 14 May 2012 08:24:16 -0500</pubDate><category>github</category><category>ios</category><category>cocoa</category><feedburner:origLink>http://thechangelog.com/post/23036630690</feedburner:origLink></item><item><title>Plumbum - Pythonic, cross-platform shell syntax</title><description>&lt;a href="https://github.com/tomerfiliba/plumbum"&gt;Plumbum - Pythonic, cross-platform shell syntax&lt;/a&gt;: &lt;p&gt;&lt;a href="https://github.com/tomerfiliba/plumbum"&gt;&lt;img src="http://cl.ly/2u2f3F1w2y1S1E1v3w2I/Logo.png" alt="Plubmum logo"/&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/tomerfiliba/plumbum"&gt;Plumbum&lt;/a&gt; is an interesting project from &lt;a href="https://twitter.com/tomerfiliba"&gt;Tomer Filiba&lt;/a&gt; that aims to bring shell syntax to Python scripts:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The motto of the library is “Never write shell scripts again”, and thus it attempts to mimic the shell syntax (shell combinators) where it makes sense, while keeping it all pythonic and cross-platform.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A piping example:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&gt;&gt;&gt; chain = ls["-a"] | grep["-v", "\\.py"] | wc["-l"]
&gt;&gt;&gt; print chain
/bin/ls -a | /bin/grep -v '\.py' | /usr/bin/wc -l
&gt;&gt;&gt; chain()
u'13\n'
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;In addition to piping, Plumbum supports redirection and even &lt;a href="http://plumbum.readthedocs.org/en/latest/remote.html"&gt;remote commands over SSH&lt;/a&gt;. Check out the &lt;a href="https://github.com/tomerfiliba/plumbum"&gt;source on GitHub&lt;/a&gt;, Tomer’s &lt;a href="http://tomerfiliba.com/blog/Plumbum/"&gt;introductory blog post&lt;/a&gt; or the &lt;a href="http://plumbum.readthedocs.org/en/latest/"&gt;excellent project docs&lt;/a&gt; for more.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=Zv8K9whEoP0:8pXVZrMgCNU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=Zv8K9whEoP0:8pXVZrMgCNU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=Zv8K9whEoP0:8pXVZrMgCNU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=Zv8K9whEoP0:8pXVZrMgCNU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=Zv8K9whEoP0:8pXVZrMgCNU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=Zv8K9whEoP0:8pXVZrMgCNU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=Zv8K9whEoP0:8pXVZrMgCNU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thechangelog/~4/Zv8K9whEoP0" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/thechangelog/~3/Zv8K9whEoP0/22899863659</link><guid isPermaLink="false">http://thechangelog.com/post/22899863659</guid><pubDate>Sat, 12 May 2012 08:27:31 -0500</pubDate><category>github</category><category>python</category><category>shell</category><feedburner:origLink>http://thechangelog.com/post/22899863659</feedburner:origLink></item><item><title>fr_public: Demoscene tools</title><description>&lt;a href="https://github.com/farbrausch/fr_public"&gt;fr_public: Demoscene tools&lt;/a&gt;: &lt;p&gt;Hey everyone! It’s Friday, and a good friend of mine (@DeMarko) just tipped me off to a really interesting repository.&lt;/p&gt;

&lt;p&gt;If you’re not aware of the &lt;a href="http://en.wikipedia.org/wiki/Demoscene"&gt;Demoscene&lt;/a&gt;, you should be. Basically, they make awesome crazy videos with computer graphics. That sounds boring, until you realize that they work within crazy constraints.&lt;/p&gt;

&lt;p&gt;For example, here’s a ten minute Demo made on the Amiga:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=k8JbAdEzvMA"&gt;http://www.youtube.com/watch?v=k8JbAdEzvMA&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here’s one on the Commodore 64, in 1982:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=8Nfgdr4fOS8"&gt;http://www.youtube.com/watch?v=8Nfgdr4fOS8&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While these videos are old, the Demoscene certainly isn’t dead. Here’s another C64 demo, this time from 2010:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=L8onlB0F1_A"&gt;http://www.youtube.com/watch?v=L8onlB0F1_A&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Anyway, I could go on and on. Point is, many modern demos are made on modern computers, but with a different constraint: file size. Generally, it’s “make an awesome video with graphics and sound that’s less than 4k.” That’s smaller than a blank word document. Here’s an example of one of these:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.youtube.com/watch?feature=player_embedded&amp;v=0w_xEUoK79o"&gt;http://www.youtube.com/watch?feature=player_embedded&amp;v=0w_xEUoK79o&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Make sure to tell YouTube you want the 1080p (!) version.&lt;/p&gt;

&lt;p&gt;Anyway, I’ll stop with the history. Here’s the point: There’s a repository that’s basically just a raw dump of the code people have written to make these kinds of demos. An archive of the last ten years of a bunch of people making awesome things.&lt;/p&gt;

&lt;p&gt;The README warns that much of the code is hard to compile, and if you don’t know C or C++, you probably won’t be able to make heads or tails of it. Note also that these are tools used to make demos, not necessarily the code of the demo itself. Point is, there be dragons in this repo. Lots of dragons.&lt;/p&gt;

&lt;p&gt;You can check out the Farbrausch tools repo &lt;a href="https://github.com/farbrausch/fr_public"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;UPDATE: One of my other friends (@davewilkinsonii) pointed me to this article, which refers to the above repository, but also has links to download source code of a TON of demos: &lt;a href="http://www.displayhack.org/2012/the-great-demoscene-sourcecode-giveaway/"&gt;http://www.displayhack.org/2012/the-great-demoscene-sourcecode-giveaway/&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=aNsKO8aFs48:IcsCtl5K3To:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=aNsKO8aFs48:IcsCtl5K3To:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=aNsKO8aFs48:IcsCtl5K3To:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=aNsKO8aFs48:IcsCtl5K3To:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=aNsKO8aFs48:IcsCtl5K3To:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=aNsKO8aFs48:IcsCtl5K3To:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=aNsKO8aFs48:IcsCtl5K3To:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thechangelog/~4/aNsKO8aFs48" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/thechangelog/~3/aNsKO8aFs48/22846753142</link><guid isPermaLink="false">http://thechangelog.com/post/22846753142</guid><pubDate>Fri, 11 May 2012 12:05:00 -0500</pubDate><category>demo</category><feedburner:origLink>http://thechangelog.com/post/22846753142</feedburner:origLink></item><item><title>Gitspective - Facebook style timeline for your GitHub feed</title><description>&lt;a href="https://github.com/zmoazeni/gitspective"&gt;Gitspective - Facebook style timeline for your GitHub feed&lt;/a&gt;: &lt;p&gt;A great looking use of the &lt;a href="http://develop.github.com/"&gt;GitHub API&lt;/a&gt; from &lt;a href="http://twitter.com/zmoazeni"&gt;Zach Moazeni&lt;/a&gt; to visualize your GitHub timeline.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://zmoazeni.github.com/gitspective/#/timeline/pengwynn"&gt;&lt;img src="http://cl.ly/1u1r183Z3v0J3b3S0I3y/Screen%20Shot%202012-05-09%20at%208.46.37%20AM.png" alt="Screencap"/&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create &lt;a href="http://zmoazeni.github.com/gitspective"&gt;your own timeline&lt;/a&gt; or browse the &lt;a href="https://github.com/zmoazeni/gitspective"&gt;source on GitHub&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=2rJ9qo_p3Sw:goUZ4ZxY_xI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=2rJ9qo_p3Sw:goUZ4ZxY_xI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=2rJ9qo_p3Sw:goUZ4ZxY_xI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=2rJ9qo_p3Sw:goUZ4ZxY_xI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=2rJ9qo_p3Sw:goUZ4ZxY_xI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=2rJ9qo_p3Sw:goUZ4ZxY_xI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=2rJ9qo_p3Sw:goUZ4ZxY_xI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thechangelog/~4/2rJ9qo_p3Sw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/thechangelog/~3/2rJ9qo_p3Sw/22714892171</link><guid isPermaLink="false">http://thechangelog.com/post/22714892171</guid><pubDate>Wed, 09 May 2012 08:51:03 -0500</pubDate><category>github</category><category>api</category><category>facebook</category><category>timeline</category><category>social</category><feedburner:origLink>http://thechangelog.com/post/22714892171</feedburner:origLink></item><item><title>Imperator - Command pattern for Ruby apps</title><description>&lt;a href="https://github.com/karmajunkie/imperator"&gt;Imperator - Command pattern for Ruby apps&lt;/a&gt;: &lt;p&gt;Jon Leighton isn’t the only one &lt;a href="http://thechangelog.com/post/21493208725/focused-controller-aiming-for-real-oop-in-rails-controll"&gt;picking a fight with Rails controllers&lt;/a&gt;. &lt;a href="https://twitter.com/#!/karmajunkie"&gt;Keith Gaddis&lt;/a&gt; suggests in &lt;a href="http://karmajunkie.com/blog/2012/05/07/the-problem-with-controllers/"&gt;&lt;em&gt;The Problem With Controllers&lt;/em&gt;&lt;/a&gt; that we’ve &lt;a href="https://github.com/karmajunkie/imperator#why-use-commands"&gt;relegated the command pattern to the depths of our queuing frameworks&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The problem with controllers in Rails is that they’re a part of the web domain—their job is to respond to requests, and ONLY to respond to requests. Anything that happens between the receipt of a request and sending a response is Somebody Else’s Job™. Commands are that Somebody Else™. Commands are also very commonly utilized to put work into the background.&lt;/p&gt;
  
  &lt;p&gt;Why are commands an appropriate place to handle that logic? Commands give you the opportunity to encapsulate all of the logic required for an interaction in one spot. Sometimes that interaction is as simple as a method call—more often there are several method calls involved, not all of which deal with domain logic (and thus, are inappropriate for inclusion on the models). Commands give you a place to bring all of these together in one spot without increasing coupling in your controllers or models.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;He’s released &lt;a href="http://github.com/karmajunkie/imperator"&gt;Imperator&lt;/a&gt;, a Ruby gem to help move that logic, simplify our controllers, and make them less model-dependent.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;class DoSomethingCommand &lt; Imperator::Command
  attribute :some_object_id
  attribute :some_value

  validates_presence_of :some_object_id

  action do
    obj = SomeObject.find(self.some_object_id)
    obj.do_something(self.some_value)
    end
  end
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The project is brand new and will likely evolve so &lt;a href="https://github.com/karmajunkie/imperator"&gt;check the source on GitHub&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=CYvwLXwOk6g:Niu9-_ywWmM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=CYvwLXwOk6g:Niu9-_ywWmM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=CYvwLXwOk6g:Niu9-_ywWmM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=CYvwLXwOk6g:Niu9-_ywWmM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=CYvwLXwOk6g:Niu9-_ywWmM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=CYvwLXwOk6g:Niu9-_ywWmM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=CYvwLXwOk6g:Niu9-_ywWmM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thechangelog/~4/CYvwLXwOk6g" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/thechangelog/~3/CYvwLXwOk6g/22650376319</link><guid isPermaLink="false">http://thechangelog.com/post/22650376319</guid><pubDate>Tue, 08 May 2012 08:19:32 -0500</pubDate><category>github</category><category>ruby</category><category>command-pattern</category><category>rails</category><feedburner:origLink>http://thechangelog.com/post/22650376319</feedburner:origLink></item><item><title>twitter-text-objc — An Objective-C implementation of Twitter's text processing library</title><description>&lt;a href="https://github.com/twitter/twitter-text-objc"&gt;twitter-text-objc — An Objective-C implementation of Twitter's text processing library&lt;/a&gt;: &lt;p&gt;Twitter released a version of their twitter-text library for Objective-C today. It makes extracting entities from strings really easy.&lt;/p&gt;

&lt;p&gt;Here’s the header:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;+ (NSArray*)extractEntities:(NSString*)text;
+ (NSArray*)extractURLs:(NSString*)text;
+ (NSArray*)extractHashtags:(NSString*)text checkingURLOverlap:(BOOL)checkingURLOverlap;
+ (NSArray*)extractMentionedScreenNames:(NSString*)text;
+ (NSArray*)extractMentionsOrLists:(NSString*)text;
+ (TwitterTextEntity*)extractReplyScreenName:(NSString*)text;
+ (int)tweetLength:(NSString*)text;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Extracting the URLs from a string is super simple:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;NSArray *URLs = [TwitterText extractURLs:@"4 new HTTP status codes &lt;a href="http://tools.ietf.org/html/rfc6585"&gt;http://tools.ietf.org/html/rfc6585&lt;/a&gt;"];
TwitterTextEntity *entity = [URLs objectAtIndex:0];
NSLog(@"Entity range: %@", NSStringFromNSRange(entity.range));
// Entity range: {24, 34}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The &lt;a href="https://github.com/twitter/twitter-text-objc"&gt;source is on GitHub&lt;/a&gt;. There’s a &lt;a href="https://github.com/twitter/twitter-text-rb"&gt;Ruby&lt;/a&gt;, &lt;a href="https://github.com/twitter/twitter-text-js"&gt;JavaScript&lt;/a&gt;, and &lt;a href="https://github.com/twitter/twitter-text-java"&gt;Java&lt;/a&gt; version of this library as well.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=FMkwr8DdQhA:1SpzownLvK4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=FMkwr8DdQhA:1SpzownLvK4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=FMkwr8DdQhA:1SpzownLvK4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=FMkwr8DdQhA:1SpzownLvK4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=FMkwr8DdQhA:1SpzownLvK4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=FMkwr8DdQhA:1SpzownLvK4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=FMkwr8DdQhA:1SpzownLvK4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thechangelog/~4/FMkwr8DdQhA" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/thechangelog/~3/FMkwr8DdQhA/22607432623</link><guid isPermaLink="false">http://thechangelog.com/post/22607432623</guid><pubDate>Mon, 07 May 2012 16:28:00 -0500</pubDate><category>github</category><category>objective-c</category><category>twitter</category><feedburner:origLink>http://thechangelog.com/post/22607432623</feedburner:origLink></item><item><title>Opa - Event-driven, non-blocking, strongly statically typed web framework with JavaScript-like syntax</title><description>&lt;a href="https://github.com/MLstate/opalang"&gt;Opa - Event-driven, non-blocking, strongly statically typed web framework with JavaScript-like syntax&lt;/a&gt;: &lt;p&gt;It seems our industry’s search for a &lt;a href="http://en.wikipedia.org/wiki/Unified_field_theory"&gt;unified theory&lt;/a&gt; of web development is resulting in a &lt;a href="http://thechangelog.com/post/20901371045/meteor-javascript-framework-blurs-the-line-between-clien"&gt;blurring of the line between client and server&lt;/a&gt;. &lt;a href="http://opalang.org/"&gt;Opa&lt;/a&gt;, the latest on our radar even goes so far to introduce &lt;code&gt;client&lt;/code&gt; and &lt;code&gt;server&lt;/code&gt; keywords:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt; // Opa decides
function client_or_server(x, y) { ... }
 // Client-side
client function client_function(x, y) { ... }
 // Server-side
server function server_function(x, y) { ... }
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Personally, Opa’s &lt;a href="http://doc.opalang.org/"&gt;JavaScript-like syntax&lt;/a&gt; doesn’t &lt;a href="http://www.internetslang.com/OPA-meaning-definition.asp"&gt;get me excited&lt;/a&gt;. JavaScript’s strength lies in its ubiquity, not in its syntax.&lt;/p&gt;

&lt;p&gt;Opa’s &lt;a href="http://opalang.org/"&gt;web site&lt;/a&gt; is very well done and the &lt;a href="https://github.com/MLstate/opalang"&gt;source is on GitHub&lt;/a&gt; for your perusal.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=8lcgx_Lx5lc:de-ej7S-_Y8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=8lcgx_Lx5lc:de-ej7S-_Y8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=8lcgx_Lx5lc:de-ej7S-_Y8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=8lcgx_Lx5lc:de-ej7S-_Y8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=8lcgx_Lx5lc:de-ej7S-_Y8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thechangelog?a=8lcgx_Lx5lc:de-ej7S-_Y8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thechangelog?i=8lcgx_Lx5lc:de-ej7S-_Y8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thechangelog/~4/8lcgx_Lx5lc" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/thechangelog/~3/8lcgx_Lx5lc/22586197403</link><guid isPermaLink="false">http://thechangelog.com/post/22586197403</guid><pubDate>Mon, 07 May 2012 08:42:58 -0500</pubDate><category>github</category><category>opa</category><category>ocaml</category><category>javascript</category><category>web</category><feedburner:origLink>http://thechangelog.com/post/22586197403</feedburner:origLink></item><language>en-us</language><media:rating>nonadult</media:rating></channel></rss>

