<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>AlpineLakes</title>
	<atom:link href="http://blog.chrisrussell.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.chrisrussell.net</link>
	<description>Chris&#039; public blog &#38; notebook</description>
	<lastBuildDate>Mon, 21 May 2012 00:45:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.chrisrussell.net' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>AlpineLakes</title>
		<link>http://blog.chrisrussell.net</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.chrisrussell.net/osd.xml" title="AlpineLakes" />
	<atom:link rel='hub' href='http://blog.chrisrussell.net/?pushpress=hub'/>
		<item>
		<title>Tips: Managing the Queue in a Soundrop Room</title>
		<link>http://blog.chrisrussell.net/2012/05/20/tips-managing-the-queue-in-a-soundrop-room/</link>
		<comments>http://blog.chrisrussell.net/2012/05/20/tips-managing-the-queue-in-a-soundrop-room/#comments</comments>
		<pubDate>Mon, 21 May 2012 00:32:09 +0000</pubDate>
		<dc:creator>Chris Russell</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[expressions]]></category>
		<category><![CDATA[queue]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[soundrop]]></category>
		<category><![CDATA[spotify]]></category>
		<category><![CDATA[tracks]]></category>

		<guid isPermaLink="false">http://blog.chrisrussell.net/?p=573</guid>
		<description><![CDATA[Here are some tricks you can use to get the most out of the time you spend queuing and voting tracks in Soundrop listening rooms. Spotify Search Syntax Works in Soundrop You may or may not have discovered that the Spotify client supports complex search expressions. Full details are posted on the Spotify website article <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chrisrussell.net&#038;blog=18826557&#038;post=573&#038;subd=cedar64&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Here are some tricks you can use to get the most out of the time you spend queuing and voting tracks in <a href="http://soundrop.com">Soundrop</a> listening rooms.</p>
<p><strong>Spotify Search Syntax Works in Soundrop</strong></p>
<p>You may or may not have discovered that the Spotify client supports complex search expressions. Full details are posted on the Spotify website article <a href="http://www.spotify.com/us/blog/archives/2008/01/22/searching-spotify/">Searching Spotify</a>.</p>
<p>What&#8217;s cool is that you can use this same syntax inside Soundrop to search the current room&#8217;s queue (as well as the Spotify catalog). Briefly:</p>
<table style="border:1px solid gray;" width="100%">
<tbody>
<tr>
<td width="40%"><strong>Search Expression</strong></td>
<td width="60%"><strong>Explanation</strong></td>
</tr>
</tbody>
<tbody>
<tr>
<td>artist:Squarepusher</td>
<td>Returns all tracks by artist Squarepusher in the room queue followed by Squarepusher tracks in the Spotify catalog.</td>
</tr>
<tr>
<td>artist:&#8221;Ceephax Acid Crew&#8221;</td>
<td>Note the use of quotations around arguments containing spaces.</td>
</tr>
<tr>
<td>title:Exploding</td>
<td>Returns all tracks in the room queue containing the term &#8220;Exploding&#8221;</td>
</tr>
<tr>
<td>title:&#8221;Exploding Psychology&#8221;</td>
<td>Another quoting example.</td>
</tr>
<tr>
<td>label:Warp</td>
<td>Returns all tracks published on the Warp Records label.</td>
</tr>
<tr>
<td>album:&#8221;Ground State&#8221;</td>
<td>Returns tracks on albums entitled &#8220;Ground State&#8221;</td>
</tr>
<tr>
<td>genre:Blues</td>
<td>Return all tracks tagged in the Blues genre</td>
</tr>
<tr>
<td>artist:Burnside title:Heaven</td>
<td>Returns all tracks by artist Burnside containing the word Heaven in the track title.</td>
</tr>
<tr>
<td>artist:Yes year:1974</td>
<td>Return all tracks by artist Yes released in 1974.</td>
</tr>
<tr>
<td>artist:Yes year:1970-1974</td>
<td>Same as above in the time range 1970-1974.</td>
</tr>
<tr>
<td>SpotifyUser</td>
<td>Search the current room queue for all tracks queued and voted for by SpotifyUser. e.g. if you&#8217;re in a Soundrop room <a href="http://open.soundrop.fm/s/VnuOIvKEjZIE7qID">where I hang out</a> and you type my name in the Soundrop search you&#8217;ll see everything I&#8217;ve queued or voted for. (This is particularly useful).</td>
</tr>
</tbody>
</table>
<p><i>Credit to friends in the Electronica Room for pointing this out. I&#8217;m just writing it down because it&#8217;s useful <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </i></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cedar64.wordpress.com/573/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cedar64.wordpress.com/573/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cedar64.wordpress.com/573/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cedar64.wordpress.com/573/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cedar64.wordpress.com/573/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cedar64.wordpress.com/573/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cedar64.wordpress.com/573/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cedar64.wordpress.com/573/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cedar64.wordpress.com/573/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cedar64.wordpress.com/573/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cedar64.wordpress.com/573/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cedar64.wordpress.com/573/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cedar64.wordpress.com/573/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cedar64.wordpress.com/573/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chrisrussell.net&#038;blog=18826557&#038;post=573&#038;subd=cedar64&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.chrisrussell.net/2012/05/20/tips-managing-the-queue-in-a-soundrop-room/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b7a1dd8a249278ec648fed94b6d87d6a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cedar64</media:title>
		</media:content>
	</item>
		<item>
		<title>Building and Sharing Ordered Playlists in Spotify</title>
		<link>http://blog.chrisrussell.net/2012/05/17/building-and-sharing-ordered-playlists-in-spotify/</link>
		<comments>http://blog.chrisrussell.net/2012/05/17/building-and-sharing-ordered-playlists-in-spotify/#comments</comments>
		<pubDate>Thu, 17 May 2012 18:03:33 +0000</pubDate>
		<dc:creator>Chris Russell</dc:creator>
				<category><![CDATA[Music]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[playlists]]></category>
		<category><![CDATA[publish]]></category>
		<category><![CDATA[share]]></category>
		<category><![CDATA[soundrop]]></category>
		<category><![CDATA[spotify]]></category>

		<guid isPermaLink="false">http://blog.chrisrussell.net/?p=245</guid>
		<description><![CDATA[Over the past weekend I collected a bunch of tracks I&#8217;ve heard recently on Soundrop and put together a Spotify playlist to share with my friends online. For this specific playlist I wanted to order the tracks so that flowed together seamlessly when gapless / track cross-fade is enabled in the Spotify client. I collected <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chrisrussell.net&#038;blog=18826557&#038;post=245&#038;subd=cedar64&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Over the past weekend I collected a bunch of tracks I&#8217;ve heard recently on <a href="http://www.soundrop.com">Soundrop</a> and put together a <a href="http://www.spotify.com">Spotify</a> playlist to share with my friends online. For this specific playlist I wanted to order the tracks so that flowed together seamlessly when gapless / track cross-fade is enabled in the Spotify client.</p>
<p>I collected all the tracks I wanted into a new Spotify playlist, and then re-arranged them into the order I wanted, published the playlist and posted a link to my friends. Empirically, my friends can load the playlist and the tracks are in the correct order. However, they&#8217;re not in the correct order on all of the devices I have Spotify installed on.</p>
<p>It seems that before I published the playlist, my other devices (my laptop and phone) synchronized with Spotify and cached the playlist metadata. However, the meta-data that&#8217;s cached is not up-to-date and so although all the tracks are present in the playlist on my phone and laptop, they&#8217;re not in the correct order. So everyone else except me gets to listen in the intended order &gt;:/</p>
<p>Unfortunately, I don&#8217;t see any easy way to force my laptop or phone to re-synchronize. I think this is a bug in Spotify but likely not one they&#8217;re going to get fixed immediately. So here&#8217;s a simple work-around if you&#8217;re interested in building ordered Spotify playlists:</p>
<ul>
<li>In your Spotify settings, set &#8216;publish new playlists automatically&#8217; to disabled.</li>
<li>Create a new playlist called &#8220;working&#8221;.</li>
<li>Drag all the tracks you want in your final playlist into the &#8220;working&#8221; playlist.</li>
<li>Arrange the tracks in whatever order you want in the &#8220;working&#8221; playlist.</li>
<li>When you&#8217;re satisfied, create another new playlist with your final title.</li>
<li>Drag the entire &#8220;working&#8221; playlist into the final playlist. <strong>DO NOT EDIT </strong>the final playlist at all.</li>
<li>Delete the &#8220;working&#8221; playlist.</li>
<li>Publish the final playlist and share that link with your friends.</li>
</ul>
<p>In this way you will get the correct order synchronized on all your devices.</p>
<p>If you&#8217;re interested, the playlist I was working on is published here:</p>
<p><a href="http://open.spotify.com/user/alpinelakes/playlist/1QPNijrcXQmymzLRJClMjk">LOVE (AlpineLakes Picks from Soundrop Electronica Room &#8211; play in order w/max crossfade)</a></p>
<p>Here&#8217;s the intended track order: (note that you can get this by simply selecting all the tracks in the playlist and then Copy &amp; Paste)</p>
<p><a href="http://open.spotify.com/track/3LEu4ry3FdTqbZJURoXBUL">HQ Special FX – City / Town Garden Ambience</a><br />
<a href="http://open.spotify.com/track/1zBoM6iYSw64JJxbAo7tk4">Isotroph – Crossroads</a><br />
<a href="http://open.spotify.com/track/4Djf70qYrisCwdCR0Tinwh">SCSI-9 – Schaukel Duo &#8211; Original Mix</a><br />
<a href="http://open.spotify.com/track/1zPHm0JShFvhQdx6ThrqUX">Daso – Go Upstairs</a><br />
<a href="http://open.spotify.com/track/6VYfJmItMRlKLS9GYrt8Ma">Kosheen – Cover</a><br />
<a href="http://open.spotify.com/track/3udrW5GPhzREDo8EH4wWe0">Nicolas Masseyeff – Mugen</a><br />
<a href="http://open.spotify.com/track/5wS3DfeGWky8Qt1xyITeVu">Dennis Ferrer – Son Of Raw</a><br />
<a href="http://open.spotify.com/track/44VAp0xmmV3DVoIe3Hs7V1">Trifonic – Parks On Fire</a><br />
<a href="http://open.spotify.com/track/1OlVJj4s701sUZoMgvGC4m">Fritz Kalkbrenner – Facing The Sun</a><br />
<a href="http://open.spotify.com/track/0T5pkqKZheFaP5IE7PuvOs">Lee Jones – Westworld &#8211; Original Mix</a><br />
<a href="http://open.spotify.com/track/7766vcdq2TaEvZi3IVTbLe">Fort Fairfield – Falls Road</a><br />
<a href="http://open.spotify.com/track/5iOKc1vmklgRMHzhhqi1Bm">Sinewave – Wizard Of Ahhhs</a><br />
<a href="http://open.spotify.com/track/74wuB4ERudQLnuBOav3OtD">Brothomstates – Mdrmx</a><br />
<a href="http://open.spotify.com/track/3cp5fWLeVAqCG2IouQQhSI">Petter – Modern Eternity</a><br />
<a href="http://open.spotify.com/track/64bjh8OnM7X9KiCf7xhADF">Mark Ernestus – Mark Ernestus Meets BBC</a><br />
<a href="http://open.spotify.com/track/2ZJf8VQg8NVbdzJKFCNEoi">Dub Specimen – Journey</a><br />
<a href="http://open.spotify.com/track/0HdeZ0MFWni6PQhWp5htQj">Eastern Sun – Rapture At Sea</a><br />
<a href="http://open.spotify.com/track/2OU9MILzp1YonrAPrsvL2m">Marquez Ill – Regret (Vector Lovers Remix) &#8211; Vector Lovers Remix</a><br />
<a href="http://open.spotify.com/track/0iqixpZILMQWfqt1mU5Sww">Lawrence – Five Leaves</a><br />
<a href="http://open.spotify.com/track/29H23aXg3FjgsMtIa7FJ68">Eastern Sun – Days Gone By</a><br />
<a href="http://open.spotify.com/track/5AK87pEAvCIJ46MSN316aC">Floating Points – Myrtle Avenue</a><br />
<a href="http://open.spotify.com/track/7gSfh20GaEyGipWgU7jrq0">Julio Bashmore – Ask Yourself (Midland Remix)</a><br />
<a href="http://open.spotify.com/track/5Euoos3VdvsaodOXXnefhT">Dominik Eulberg – Der Tanz der Gluehwuermchen</a><br />
<a href="http://open.spotify.com/track/5XskKD00gs4XvV0J2PY3Wf">Fort Fairfield – The Dead Sea Scrolls</a><br />
<a href="http://open.spotify.com/track/1hB2LBkEsZ3BZdpMDBPUHT">Beta to the Max – Intergalactic Elevator</a><br />
<a href="http://open.spotify.com/track/04EA1NZwhK42UUcKoUp69Q">The Knife – Silent Shout</a><br />
<a href="http://open.spotify.com/track/2ZUJhPItXHqtrSFh4TuhnT">Pupkulies &amp; Rebecca – Save Me</a><br />
<a href="http://open.spotify.com/track/0MnrpvXOd71v0fqosubq9o">Paul Kalkbrenner – Plätscher</a><br />
<a href="http://open.spotify.com/track/07T10pXf7r3T05Xm0rWuXb">Laid Back – Bakerman (Soul Clap Remix) &#8211; Soul Clap Remix</a><br />
<a href="http://open.spotify.com/track/7s77pMaxqH87jp3EJSAjaq">Stimming – Una Pena &#8211; Original</a><br />
<a href="http://open.spotify.com/track/4baIA3A37HVY5jaVxRUkHK">Mooryc – All those Moments (Marek Hemmann Remix) &#8211; Marek Hemmann Remix</a><br />
<a href="http://open.spotify.com/track/0bHKGQcv70fN7GDvK9tBvZ">Stephan Bodzin – Callisto</a><br />
<a href="http://open.spotify.com/track/1kjALB52lwZ0HTk7ymvEFs">Joris Delacroix – Entourloupe</a><br />
<a href="http://open.spotify.com/track/4v1A7HYxbSKC0lMq7m9EBn">Dinky – Sealed</a><br />
<a href="http://open.spotify.com/track/2SbnasOUMRl3AxyNWsyPTE">Dakar – I&#8217;ve Got That Feeling &#8211; Original</a><br />
<a href="http://open.spotify.com/track/4YB2BrV7Rqq7oEBFLkKYHG">Elton D – Reflection &#8211; Hertz Mix</a><br />
<a href="http://open.spotify.com/track/0VvGKTrNmn4oWqeLNqq31o">Marmion – Schöneberg &#8211; Roberto Rodriguez Piano Edit</a><br />
<a href="http://open.spotify.com/track/5Ey1cZNEf1iXX1WsBwzzNK">SCSI-9 – Had I But Wings Like Thine &#8211; Original Mix</a><br />
<a href="http://open.spotify.com/track/6R3wH3d0LGOhnABcp384Bv">Sound Effects – Static</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cedar64.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cedar64.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cedar64.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cedar64.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cedar64.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cedar64.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cedar64.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cedar64.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cedar64.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cedar64.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cedar64.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cedar64.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cedar64.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cedar64.wordpress.com/245/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chrisrussell.net&#038;blog=18826557&#038;post=245&#038;subd=cedar64&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.chrisrussell.net/2012/05/17/building-and-sharing-ordered-playlists-in-spotify/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b7a1dd8a249278ec648fed94b6d87d6a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cedar64</media:title>
		</media:content>
	</item>
		<item>
		<title>Quick-n-Dirty Apache Setup on Ubuntu</title>
		<link>http://blog.chrisrussell.net/2012/05/09/quick-n-dirty-apache-setup-on-ubuntu/</link>
		<comments>http://blog.chrisrussell.net/2012/05/09/quick-n-dirty-apache-setup-on-ubuntu/#comments</comments>
		<pubDate>Wed, 09 May 2012 20:26:25 +0000</pubDate>
		<dc:creator>Chris Russell</dc:creator>
				<category><![CDATA[Compute]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Study This]]></category>

		<guid isPermaLink="false">http://blog.chrisrussell.net/?p=557</guid>
		<description><![CDATA[sudu apt-get install apache2 How to Install and Configure Apache In Ubuntu Google Search &#8216;installing apache on kubuntu&#<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chrisrussell.net&#038;blog=18826557&#038;post=557&#038;subd=cedar64&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>sudu apt-get install apache2</p>
<ul>
<li><a href="http://maketecheasier.com/install-and-configure-apache-in-ubuntu/2011/03/09">How to Install and Configure Apache In Ubuntu</a></li>
<li><a href="http://www.google.com/search?q=installing+apache+on+kubuntu&amp;ie=utf-8&amp;oe=utf-8&amp;client=ubuntu&amp;channel=fs">Google Search &#8216;installing apache on kubuntu&#8217;</a></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cedar64.wordpress.com/557/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cedar64.wordpress.com/557/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cedar64.wordpress.com/557/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cedar64.wordpress.com/557/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cedar64.wordpress.com/557/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cedar64.wordpress.com/557/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cedar64.wordpress.com/557/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cedar64.wordpress.com/557/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cedar64.wordpress.com/557/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cedar64.wordpress.com/557/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cedar64.wordpress.com/557/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cedar64.wordpress.com/557/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cedar64.wordpress.com/557/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cedar64.wordpress.com/557/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chrisrussell.net&#038;blog=18826557&#038;post=557&#038;subd=cedar64&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.chrisrussell.net/2012/05/09/quick-n-dirty-apache-setup-on-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b7a1dd8a249278ec648fed94b6d87d6a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cedar64</media:title>
		</media:content>
	</item>
		<item>
		<title>Git &#8211; Distributed Is the New Centralized</title>
		<link>http://blog.chrisrussell.net/2012/05/08/git-distributed-is-the-new-centralized-14-2/</link>
		<comments>http://blog.chrisrussell.net/2012/05/08/git-distributed-is-the-new-centralized-14-2/#comments</comments>
		<pubDate>Tue, 08 May 2012 20:35:41 +0000</pubDate>
		<dc:creator>Chris Russell</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Study This]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://blog.chrisrussell.net/2012/05/08/git-distributed-is-the-new-centralized-14/</guid>
		<description><![CDATA[Of all the version control systems I&#8217;ve used to date, by far my favorite has been Perforce. Perforce is very powerful, has excellent support for both command line and rich graphical tools (e.g. graphical branch history and diff tools are fantastic). And for individuals / small teams it&#8217;s free. Currently, every digital asset I care <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chrisrussell.net&#038;blog=18826557&#038;post=522&#038;subd=cedar64&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Of all the version control systems I&#8217;ve used to date, by far my favorite has been <a href="http://perforce.com/">Perforce</a>. Perforce is very powerful, has excellent support for both command line and rich graphical tools (e.g. graphical branch history and diff tools are fantastic). And for individuals / small teams it&#8217;s free.</p>
<p>Currently, every digital asset I care about is stored on my Perforce server (code, documents, photos, and music) and I use it to keep these items cleanly synchronized across OSX, Windows, and Linux devices. This works great for me and is super simple. However, it&#8217;s complicated and expensive to securely extend this system to ad-hoc collaboration with people on the Internet who I don&#8217;t necessarily know and trust. Enter <a href="http://git-scm.com/">Git</a> created by Linus Torvalds to address systemic challenges managing the evolution of the Linux kernel source.</p>
<p>The major advantage that Git has over VCS&#8217;s like Perforce is that it does not require a centralized server.</p>
<p>Seems you can hardly avoid Git these days. Time for me to make the jump. This post is another public notebook entry with useful links I&#8217;m saving off for reference:</p>
<ul>
<li><a href="http://git-scm.com/">Git Homepage</a></li>
<li><a href="http://git-scm.com/about/free-and-open-source">Git FOSS License</a></li>
<li><a href="http://git-scm.com/doc">Git Documentation</a></li>
<li><a href="http://git-scm.com/doc">Git Download</a></li>
<li><a href="http://help.github.com/">GitHub</a> &lt;&#8211; I am &#8216;ChrisRus&#8217; (chrisrus@encapsule.org) on GitHub</li>
</ul>
<p>In practice:</p>
<ul>
<li>println it blog: <a href="http://evgeny-goldin.com/blog/3-ways-install-git-linux-ubuntu/">3 ways to install Git on Linux (Ubuntu)</a></li>
<li><a href="http://help.github.com/linux-set-up-git/">Help.GitHub &#8211; Set Up Git</a></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cedar64.wordpress.com/522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cedar64.wordpress.com/522/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cedar64.wordpress.com/522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cedar64.wordpress.com/522/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cedar64.wordpress.com/522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cedar64.wordpress.com/522/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cedar64.wordpress.com/522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cedar64.wordpress.com/522/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cedar64.wordpress.com/522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cedar64.wordpress.com/522/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cedar64.wordpress.com/522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cedar64.wordpress.com/522/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cedar64.wordpress.com/522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cedar64.wordpress.com/522/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chrisrussell.net&#038;blog=18826557&#038;post=522&#038;subd=cedar64&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.chrisrussell.net/2012/05/08/git-distributed-is-the-new-centralized-14-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b7a1dd8a249278ec648fed94b6d87d6a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cedar64</media:title>
		</media:content>
	</item>
		<item>
		<title>Big Data Study Links</title>
		<link>http://blog.chrisrussell.net/2012/05/07/big-data-study-links/</link>
		<comments>http://blog.chrisrussell.net/2012/05/07/big-data-study-links/#comments</comments>
		<pubDate>Tue, 08 May 2012 06:30:55 +0000</pubDate>
		<dc:creator>Chris Russell</dc:creator>
				<category><![CDATA[Compute]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Study This]]></category>

		<guid isPermaLink="false">http://blog.chrisrussell.net/?p=483</guid>
		<description><![CDATA[This is public notebook entry. No original information here. Just links to big data resources on the web and in print that I&#8217;m finding useful as I begin to explore the substance behind the monikers and attempt wetware capture. Currently reading Pete Warden&#8217;s Big Data Glossary and it&#8217;s a great introduction. Michael Nielson&#8217;s blog post <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chrisrussell.net&#038;blog=18826557&#038;post=483&#038;subd=cedar64&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This is public notebook entry. No original information here. Just links to big data resources on the web and in print that I&#8217;m finding useful as I begin to explore the substance behind the monikers and attempt <a href="http://en.wikipedia.org/wiki/Wetware_%28brain%29">wetware</a> capture.</p>
<p>Currently reading <a href="http://shop.oreilly.com/product/0636920022466.do">Pete Warden&#8217;s Big Data Glossary</a> and it&#8217;s a great introduction.</p>
<p><a href="http://michaelnielsen.org/blog/consistent-hashing/">Michael Nielson&#8217;s blog post on Consistent Hashing</a></p>
<p><a href="http://www.julianbrowne.com/article/viewer/brewers-cap-theorem">Julian Browne&#8217;s blog post on Consistency, Availability, and Partition Tolerance (CAP)</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cedar64.wordpress.com/483/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cedar64.wordpress.com/483/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cedar64.wordpress.com/483/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cedar64.wordpress.com/483/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cedar64.wordpress.com/483/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cedar64.wordpress.com/483/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cedar64.wordpress.com/483/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cedar64.wordpress.com/483/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cedar64.wordpress.com/483/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cedar64.wordpress.com/483/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cedar64.wordpress.com/483/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cedar64.wordpress.com/483/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cedar64.wordpress.com/483/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cedar64.wordpress.com/483/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chrisrussell.net&#038;blog=18826557&#038;post=483&#038;subd=cedar64&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.chrisrussell.net/2012/05/07/big-data-study-links/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b7a1dd8a249278ec648fed94b6d87d6a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cedar64</media:title>
		</media:content>
	</item>
		<item>
		<title>C/C++ Header Encapsulation</title>
		<link>http://blog.chrisrussell.net/2012/05/06/cc-header-encapsulation/</link>
		<comments>http://blog.chrisrussell.net/2012/05/06/cc-header-encapsulation/#comments</comments>
		<pubDate>Mon, 07 May 2012 05:41:35 +0000</pubDate>
		<dc:creator>Chris Russell</dc:creator>
				<category><![CDATA[Ideas]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.chrisrussell.net/?p=460</guid>
		<description><![CDATA[I wrote a nice detailed blog post about ten years ago detailing a systematic and sane way to ensure that your large project collection of C/C++ headers don&#8217;t get out of control. Unfortunately, it was published on a blog that no longer exists (I&#8217;ve got the database somewhere on a CD but it&#8217;s more trouble <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chrisrussell.net&#038;blog=18826557&#038;post=460&#038;subd=cedar64&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I wrote a nice detailed blog post about ten years ago detailing a systematic and sane way to ensure that your large project collection of C/C++ headers don&#8217;t get out of control. Unfortunately, it was published on a blog that no longer exists (I&#8217;ve got the database somewhere on a CD but it&#8217;s more trouble than it&#8217;s worth to go digging for it). It absolutely amazes me how much code exists that absolutely sucks because the authors simply don&#8217;t understand C/C++ header encapsulation (or worse just don&#8217;t care).</p>
<p>Nothing drives me more nuts than including a header in my code written by someone else and breaking the build. When the build breaks in a case like this one of two things is going on: either there&#8217;s an actual error in the header (e.g. a syntax error), or the header&#8217;s declaration(s) depend on declarations that <em>you</em> don&#8217;t have in scope. Typically it&#8217;s the later case as few programmers worth their salt will knowingly give you a header that won&#8217;t even compile for them.</p>
<p>So what&#8217;s the deal? The deal is typically that the header author declared some stuff in the header in terms of declarations that themselves are not declared in the header you&#8217;re including. In other words they took a dependency on declarations included in another header and assumed it was obvious enough that it wouldn&#8217;t ever cause anyone any problems.</p>
<p>Here&#8217;s a simple example that has some hidden subtleties:</p>
<blockquote><p>// header_A.hpp<br />
#pragma once<br />
struct A { int a; };</p>
<p>// header_B.hpp (revision 1)<br />
#pragma once<br />
void Foo(A &amp; a_);</p></blockquote>
<p>Note that as written the function Foo declared in header_B.hpp takes as input a reference to an instance of struct A declared in header_A.hpp. This means that callers of function Foo cannot simply include header_B.hpp in their cpp file and call the function. Instead they must themselves track down the missing dependency and include header_A.hpp.</p>
<p>One might refer to the documentation for function Foo and see that it is declared in header_B.hpp and write a simple skeletal cpp like this to get started:</p>
<blockquote><p>// client1.cpp (revision 1)<br />
#include &#8220;header_B.hpp&#8221;<br />
void TryOutFunctionFoo() { /*I&#8217;m going to make a call to Foo here and see what it does*/ }</p></blockquote>
<p>This of course won&#8217;t compile because function Foo&#8217;s signature depends on struct A which is not in scope in client1.cpp. Where is it struct A declared? The documentation says that struct A is declared in header_A.hpp. Okay, let&#8217;s try this:</p>
<blockquote><p>// client1.cpp (revision 2)<br />
#include &#8220;header_B.hpp&#8221;<br />
<strong>#include &#8220;header_A.hpp&#8221;</strong><br />
void TryOutFunctionFoo() { /*I&#8217;m going to make a call to Foo here and see what it does*/ }</p></blockquote>
<p>Nope. Same compile error. The order that client1.cpp includes the headers matters so to get this to compile we need this:</p>
<blockquote><p>// client1.cpp (revision 3)<br />
<strong>#include &#8220;header_A.hpp&#8221;</strong><br />
#include &#8220;header_B.hpp&#8221;<br />
void TryOutFunctionFoo() { /*I&#8217;m going to make a call to Foo here and see what it does*/ }</p></blockquote>
<p>Okay, now that it compiles we can go ahead and create an instance of struct A, pass a reference to Foo and see what happens. But there&#8217;s obviously a problem with header_B.hpp because we all would expect revision 1 of client1.cpp to compile cleanly. Specifically, the author of header_B.hpp should have forward declared struct A:</p>
<blockquote><p>// header_B.hpp (revision 2)<br />
#pragma once<br />
<strong>struct A; // forward declare struct A</strong><br />
void Foo(A &amp; a_);</p></blockquote>
<p>Or, at least that&#8217;s the conventional wisdom and few people will argue with you if you do just that. There are well documented rules for when one should forward declare and include a header in another header and these are widely accepted. Here are several articles that talk about these rules in detail:</p>
<ul>
<li><a href="http://www.eventhelix.com/realtimemantra/headerfileincludepatterns.htm">C++ Header File Include Patterns</a></li>
<li><a href="http://www.cplusplus.com/forum/articles/10627/">Headers and Includes: Why and How</a></li>
</ul>
<p>In this example the programmer wishing to make a simple call to function Foo still needs to figure out which header struct A is declared in but because of the forward declaration of struct A in header_B.hpp, the order of include no longer matters (i.e all revisions of client1.cpp presented here now compile cleanly). So this is at least an improvement.</p>
<p>Now suppose we add another structure declaration to header_B.hpp as follows:</p>
<blockquote><p>// header_B.hpp (revision 3)<br />
#pragma once<br />
<span style="color:#808080;">// struct A; // forward declare struct A</span><br />
#include &#8220;header_A.hpp&#8221;<br />
void Foo(A &amp; a_);<br />
<strong>struct B : public A { int b; };</strong></p></blockquote>
<p>You&#8217;ll note that we commented out the forward declaration of struct A and replaced it with a nested include of header_A.hpp. This is actually required as the forward declaration will not suffice. The compiler needs to know the size of struct A in order to compile the declaration of struct B (see the links above for all the details &#8211; there&#8217;s a bit more to it than is presented here).</p>
<p>What&#8217;s interesting is that the programmer wanting to make a trivial test call to function Foo can now simply write:</p>
<blockquote><p>// client<strong>2</strong>.cpp (revision 1)<br />
#include &#8220;header_B.hpp&#8221;<br />
void TryOutFunctionFoo() { A a; a.a = 0 ; Foo(a); }</p></blockquote>
<p>&#8230; and it works. Likely they never even stopped to consider where struct A is declared because simply including header_B.hpp got the job done via the nested include of header_B.hpp.</p>
<p>Interestingly, if we had nest-included header_A.hpp in revision 2 of header_B.hpp instead of forward declaring struct A, the programmer writing client1.cpp would not have had to explicitly included header_A.hpp in the original example. For what it&#8217;s worth, I prefer nested includes over forward declaration because:</p>
<ul>
<li>I don&#8217;t have to waste time tracking down dependencies and explicitly including their declaration headers.</li>
<li>I like being able to look at the #include statements and seeing the filenames that I need to look at if I have further questions.</li>
</ul>
<p>In practice, it seems to work well and I can&#8217;t think of any cases where nesting includes instead of forward declaring actually breaks anything. If such cases do exist, I&#8217;m sure someone will point it out to me <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>My preference aside, the real point of this article is to talk about the evil that is headers that impose include ordering constraints. Do what you want with regards to forward declarations vs. nested includes.</p>
<p>Headers that impose include order are evil because as projects grow the amount of time you can waste figuring out the magic order required to get the build off the floor can be large. This is actually way more important than it might appear in the trivial examples presented in this article.</p>
<p>How many times have you had to take over code written by someone else to fix a bug or add a feature only to discover that you need to do a little refactoring? Looks simple enough so you tell your boss it will take an hour. And then you get into it and discover that the declarations are so snarled up that if you touch anything the build is on the floor. Or you initiate a new project using a set of unfamiliar libraries and waste hours or days trying to figure out the magic order to include their headers just to get a completely empty project analogous to the simple test client to compile.</p>
<p>Here&#8217;s a really simple little trick that ensures that the headers you write do not impose hidden include ordering constraints:</p>
<blockquote><p>// smoke_test_header_B.cpp<br />
#include &#8220;header_B.hpp&#8221;</p></blockquote>
<p>That&#8217;s it. Notice that smoke_test_header_B.cpp will not compile if anything declared in header_B.hpp depends on a declaration that has not been brought into scope by either a forward declaration or a nested include. For each header in your project create a simple smoke test wrapper and compile them all. If they don&#8217;t compile then you&#8217;ve got a problem. If they do, then anyone can include your header without regard to include order and this saves a ton of time.</p>
<hr />
<p>Thanks to <a href="http://www.linkedin.com/pub/john-sheehan/1/272/27">John Sheehan</a> for pointing out that my first revision header example was flawed. I initially presented a simple example in which header_A.hpp declared a structure and header_B.hpp declared a function that took as input a reference to the structure. In this case a forward declaration of the structure declared in header_A.hpp in header_B.hpp would have sufficed. This prompted me to rewrite the example and brought me to the sub-point that I actually prefer nested includes vs. forward declarations &#8211; even in cases where a forward declaration is all that&#8217;s strictly necessary.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cedar64.wordpress.com/460/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cedar64.wordpress.com/460/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cedar64.wordpress.com/460/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cedar64.wordpress.com/460/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cedar64.wordpress.com/460/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cedar64.wordpress.com/460/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cedar64.wordpress.com/460/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cedar64.wordpress.com/460/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cedar64.wordpress.com/460/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cedar64.wordpress.com/460/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cedar64.wordpress.com/460/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cedar64.wordpress.com/460/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cedar64.wordpress.com/460/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cedar64.wordpress.com/460/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chrisrussell.net&#038;blog=18826557&#038;post=460&#038;subd=cedar64&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.chrisrussell.net/2012/05/06/cc-header-encapsulation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b7a1dd8a249278ec648fed94b6d87d6a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cedar64</media:title>
		</media:content>
	</item>
		<item>
		<title>Publishing Previously Unreleased Information About Encapsule Project</title>
		<link>http://blog.chrisrussell.net/2012/05/04/publishing-previously-unreleased-information-about-encapsule-project/</link>
		<comments>http://blog.chrisrussell.net/2012/05/04/publishing-previously-unreleased-information-about-encapsule-project/#comments</comments>
		<pubDate>Sat, 05 May 2012 01:53:05 +0000</pubDate>
		<dc:creator>Chris Russell</dc:creator>
				<category><![CDATA[Compute]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Ideas]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.chrisrussell.net/2012/05/04/publishing-previously-unreleased-information-about-encapsule-project/</guid>
		<description><![CDATA[My friends, family, and several close business associates know of my quest to create a component software engineering platform based on digital hardware modeling and design metaphors ~10-years ago. Although the effort ultimately failed when I ran out of money and options, I still believe the core concepts are valuable and I&#8217;ve long considered publishing <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chrisrussell.net&#038;blog=18826557&#038;post=452&#038;subd=cedar64&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>My friends, family, and several close business associates know of my quest to create a component software engineering platform based on digital hardware modeling and design metaphors ~10-years ago. Although the effort ultimately failed when I ran out of money and options, I still believe the core concepts are valuable and I&#8217;ve long considered publishing the entire project as open source.</p>
<p>Recently I created another blog and Twitter account dedicated to this effort and have started the process of disclosing the previously unreleased details of the project. So far, I&#8217;ve just published some <a href="http://blog.encapsule.org/2004-encapsule-prototype-screen-shots/">screen shots</a> of the prototype and a <a href="http://blog.encapsule.org/2003-encapsule-aurora-platform-whitepaper/">whitepaper</a> I wrote in 2003 that details the goals, potential applications, and architecture of the platform. Source code is coming at some point in the future.</p>
<p>If you&#8217;re interested, check out the <a href="http://blog.encapsule.org">Encapsule Project Blog</a> and/or follow the project on Twitter (<a href="https://twitter.com/#!/encapsule">@encapsule</a>).</p>
<p><a href="http://cedar64.files.wordpress.com/2012/05/early-encapsule-ease-screenshot-2.jpg"><img class="size-full wp-image" src="http://cedar64.files.wordpress.com/2012/05/early-encapsule-ease-screenshot-2.jpg?w=1014" alt="Image" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cedar64.wordpress.com/452/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cedar64.wordpress.com/452/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cedar64.wordpress.com/452/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cedar64.wordpress.com/452/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cedar64.wordpress.com/452/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cedar64.wordpress.com/452/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cedar64.wordpress.com/452/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cedar64.wordpress.com/452/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cedar64.wordpress.com/452/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cedar64.wordpress.com/452/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cedar64.wordpress.com/452/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cedar64.wordpress.com/452/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cedar64.wordpress.com/452/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cedar64.wordpress.com/452/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chrisrussell.net&#038;blog=18826557&#038;post=452&#038;subd=cedar64&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.chrisrussell.net/2012/05/04/publishing-previously-unreleased-information-about-encapsule-project/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b7a1dd8a249278ec648fed94b6d87d6a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cedar64</media:title>
		</media:content>

		<media:content url="http://cedar64.files.wordpress.com/2012/05/early-encapsule-ease-screenshot-2.jpg?w=1014" medium="image">
			<media:title type="html">Image</media:title>
		</media:content>
	</item>
		<item>
		<title>Crunching Soundrop&#8217;s April Track Numbers</title>
		<link>http://blog.chrisrussell.net/2012/05/01/crunching-soundrops-april-track-numbers-48/</link>
		<comments>http://blog.chrisrussell.net/2012/05/01/crunching-soundrops-april-track-numbers-48/#comments</comments>
		<pubDate>Tue, 01 May 2012 20:18:31 +0000</pubDate>
		<dc:creator>Chris Russell</dc:creator>
				<category><![CDATA[Music]]></category>
		<category><![CDATA[growth]]></category>
		<category><![CDATA[numbers]]></category>
		<category><![CDATA[soundrop]]></category>
		<category><![CDATA[spotify]]></category>
		<category><![CDATA[tracks]]></category>
		<category><![CDATA[users]]></category>

		<guid isPermaLink="false">http://blog.chrisrussell.net/2012/05/01/crunching-soundrops-april-track-numbers-48/</guid>
		<description><![CDATA[Soundrop, the fantastic social music listening application for the Spotify platform, reported recently that they streamed 35 million tracks in April, 2012 (up from 15 million tracks in March). I was curious about the number and how it relates to the number of people using Soundrop so I did little number crunching and estimate that <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chrisrussell.net&#038;blog=18826557&#038;post=430&#038;subd=cedar64&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a title="Soundrop" href="http://soundrop.com/">Soundrop</a>, the fantastic social music listening application for the <a title="Spotify" href="http://www.spotify.com/">Spotify</a> platform, reported recently that they streamed <strong>35 million </strong>tracks in April, 2012 (up from 15 million tracks in March). I was curious about the number and how it relates to the number of people using Soundrop so I did little number crunching and estimate that this equates to ~19.5K active Soundrop users who spend 3-4 hours / day in the application.</p>
<p><strong>Assumptions:</strong></p>
<ul>
<li>35 million tracks &#8211; I assume this is measured by Spotify and corresponds to the number of Spotify clients that stream a particular track as directed by the Soundrop application. In other words, if I&#8217;m in the Electronica room with 250 other listeners, each song played is counted as 250 tracks streamed.</li>
<li>Having filled large MP3 players to capacity, a reasonable ballpark estimate is 12K tracks is ~1 month&#8217;s worth of 24&#215;7 music without a repeat. More detail on this later.</li>
<li>My guess (pure speculation actually) is that an average Soundrop user spends 3-4 hours / day in the application. I know it&#8217;s a lot more for me but I&#8217;m not sure how typical this is. So I&#8217;m being a bit more conservative.</li>
</ul>
<p><strong>Math:</strong></p>
<p>30 (days/month) * 24 (hours/day) * 60 (minutes/hour) = 43.2K (minutes/month)</p>
<p>43.2K (minutes/month) / 3.5 (minutes/track) = ~12.3K (tracks/month)<br />
<em>(i.e. if you have 12.3K tracks of length 3.5 minutes (just an estimate based on my observation of averages) you&#8217;ve got ~1 month&#8217;s worth of 24&#215;7 music without a repeat)</em></p>
<p><strong>35M</strong> tracks / ~12.3K (tracks/month) <em>=</em> ~2800 (24&#215;7 listeners)<em><br />
(my guess is that your average Soundrop listener tunes in 3-4 hours/day &#8211; this is just an guess)</em></p>
<p>24 (listening hours/day) / 4 (active listener hours / user day) = 6 (users)<br />
24 (listening hours/day) / 3 (active listener hours / user day) = 8  (users)<br />
<em>(i.e. for every 24-hour period, between 6 and 8 active listeners streaming 3-4 hours/day represent a single 24&#215;7 listener &#8211; again a total <a title="SWAG" href="http://en.wikipedia.org/wiki/List_of_U.S._Air_Force_acronyms_and_expressions">SWAG</a>)<br />
</em></p>
<p>~2800 (24&#215;7 listeners) * 6 (users) = ~17K monthly users who tune in 4 hours / day on average<br />
~2800 (24&#215;7 listeners) * 8 (users) = ~22K monthly users who tune in 3 hours / day on average</p>
<p><strong>May:</strong></p>
<p>I just pulled out my calculator and added up the listener count displayed in all the public Soundrop listening rooms visible to me and see ~8K people actively listening right now. What will May&#8217;s track number be?</p>
<p>My SWAG is 120 million tracks will be streamed in May, 2012.</p>
<p>It will be interesting to see if I&#8217;m at all close.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cedar64.wordpress.com/430/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cedar64.wordpress.com/430/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cedar64.wordpress.com/430/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cedar64.wordpress.com/430/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cedar64.wordpress.com/430/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cedar64.wordpress.com/430/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cedar64.wordpress.com/430/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cedar64.wordpress.com/430/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cedar64.wordpress.com/430/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cedar64.wordpress.com/430/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cedar64.wordpress.com/430/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cedar64.wordpress.com/430/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cedar64.wordpress.com/430/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cedar64.wordpress.com/430/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chrisrussell.net&#038;blog=18826557&#038;post=430&#038;subd=cedar64&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.chrisrussell.net/2012/05/01/crunching-soundrops-april-track-numbers-48/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b7a1dd8a249278ec648fed94b6d87d6a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cedar64</media:title>
		</media:content>
	</item>
		<item>
		<title>Fun with Spotify &amp; Soundrop</title>
		<link>http://blog.chrisrussell.net/2012/04/24/fun-with-spotify-soundrop-8/</link>
		<comments>http://blog.chrisrussell.net/2012/04/24/fun-with-spotify-soundrop-8/#comments</comments>
		<pubDate>Tue, 24 Apr 2012 19:45:47 +0000</pubDate>
		<dc:creator>Chris Russell</dc:creator>
				<category><![CDATA[Music]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[juke box]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[party]]></category>
		<category><![CDATA[remote control]]></category>
		<category><![CDATA[social]]></category>
		<category><![CDATA[soundrop]]></category>
		<category><![CDATA[spotify]]></category>

		<guid isPermaLink="false">http://blog.chrisrussell.net/2012/04/24/fun-with-spotify-soundrop-8/</guid>
		<description><![CDATA[I&#8217;ve been a big fan of the Spotify music platform since it launched in the U.S. last year. Spotify hosts a massive online archive of music available for streaming. Wikipedia states that Spotify&#8217;s catalog comprised 15-million tracks in July, 2011. According the Spotify website, there is over 80-years worth of HD music in their catalog <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chrisrussell.net&#038;blog=18826557&#038;post=327&#038;subd=cedar64&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been a big fan of the <a title="Spotify" href="http://spotify.com" target="_blank">Spotify</a> music platform since it launched in the U.S. last year. Spotify hosts a massive online archive of music available for streaming. Wikipedia states that Spotify&#8217;s catalog comprised 15-million tracks in July, 2011. According the Spotify website, there is over 80-years worth of HD music in their catalog currently and they&#8217;re adding 10K new tracks per day. So a lot of music.</p>
<p>If you&#8217;re casually into music, it&#8217;s worth checking out as large portions of the catalog are available for free streaming at an acceptably high bit-rate. However, if you&#8217;re a recovering collector of physical CD&#8217;s like me, a $10/month premium level subscription to Spotify is a must.</p>
<p>Spotify has been working hard to open up their platform to 3rd-party ISV&#8217;s and have made available a low-level C library (libspotify) as well as Javascript API&#8217;s that allow HTML5 applications embedded in Spotify&#8217;s native client application to interact with the platform. The result has been an explosion of really amazing social music applications.</p>
<p>In particular, the <a title="Soundrop" href="http://soundrop.com/" target="_blank">Soundrop</a> application has really captured my attention since I started using it two months ago. Soundrop is an instance of an embedded HTML5 application as mentioned above that allows Spotify users to enter into collaborative listening &#8216;rooms&#8217;. In many respects this is similar conceptually to &#8216;rooms&#8217; on <a title="turntable.fm" href="http://turntable.fm" target="_blank">turntable.fm</a>. But there are some important differences.</p>
<p>Turntable.fm, all the rage a year or two ago, is still an awesome browser-based music application in my opinion. The basic idea of turntable is that you can enter into a &#8216;room&#8217; and listen to a number of virtual DJ&#8217;s who take turns round-robin queuing tracks. Listeners and DJ&#8217;s can vote thumbs-up or down on the current track and depending on the policy set by the room&#8217;s creator, if enough people dislike the track it gets skipped. DJ&#8217;s get points for queuing tracks that are widely liked making it rather fun little game to DJ in a turntable.fm room.</p>
<p>Turntable.fm allows you to upload content from your local collection (so any MP3&#8242;s you have lying around) if you&#8217;re DJ&#8217;ing which is cool because there&#8217;s still many artists and tracks that are not available on Spotify. Hear something you like? Turntable.fm&#8217;s browser-based interface provides you with convenient links to iTunes, Amazon.com, last.fm and of course Spotify. This is really cool stuff and it&#8217;s a lot of fun but if you just want to passively listen (i.e. you&#8217;re not DJ&#8217;ing in a turntable.fm room) then the mix quality is hit-or-miss in my experience. Enter Soundrop on Spotify.</p>
<p>Soundrop, like turntable.fm, has &#8216;rooms&#8217;. There are 20-30 main rooms that are specific to different music genres (e.g. Classic Rock, Progressive Metal, Electronica&#8230;). Enter Soundrop, select a room, and you&#8217;re tuned into the stream with often hundreds of other music fans around the globe. Unlike turntable.fm however there are no DJ&#8217;s. Instead Soundrop is much more democratic allowing anyone to queue tracks available on Spotify, and vote on the tracks they like. The track with the highest vote tally in the queue shared by all room listeners gets played next.</p>
<p>This is really cool because you can drop into a Soundrop room, passively listen while you work, and occasionally focus the window to queue tracks, vote, or chat with other listeners. Integration with Spotify&#8217;s playlist facilities as well as deep integration with Facebook for sharing tracks and playlists makes the combination of Soundrop on Spotify a nearly perfect digital radio. But it gets cooler.</p>
<p>The other day I felt like listening to Reggae because it was sunny outside (one of the first really nice days in Puget Sound since last summer). What to listen to? Something new I think. I drop into the Reggae room in Soundrop and see that there about 200 people listening. What&#8217;s more the tracks at the top of the play queue have 7+ votes which is typically a good indication that the tracks are widely considered awesome by the room listeners. But I just want a couple of new tracks to check out and sync to my iPhone. Enter Soundrop &#8216;Save to playlist&#8230;&#8217;</p>
<p>One really great feature of Soundrop is the ability to capture the current play queue of any room to a Spotify playlist that you can later browse, preview, or raid for your own playlists offline. I&#8217;ve found hundreds of new artists and tracks this way in the two months I&#8217;ve been using Soundrop.</p>
<p>Recently I was in a bar and I didn&#8217;t like the music. This got me thinking and I came up with an idea: why not just connect a computer to the house PA, and create a Soundrop room for the entire bar? Then everyone with a smart phone can walk in, queue and vote, and enjoy the music. I hadn&#8217;t tried this out until last night while hanging out at my friend&#8217;s house.</p>
<p>My friend has his computer connected to his surround sound receiver (of course) and recently installed Spotify at my suggestion. We installed Soundrop inside of Spotify and then created a private room. I then pulled up the Soundrop application on my iPhone and because him and I are connected as friends on Facebook, his room got enumerated and displayed on my iPhone. I joined his room from my phone and we went back to eating pizza and talking about music.</p>
<p>&#8220;Oh I know&#8230; You&#8217;ve gotta hear this&#8230;&#8221; Couple swipes on my phone and it&#8217;s playing in his living room. That&#8217;s <strong>so</strong> cool! From now on, whenever I entertain the house will be rocking my Soundrop room effectively turning every smart phone in the house into a remote control.</p>
<p>Try it yourself and enjoy!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cedar64.wordpress.com/327/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cedar64.wordpress.com/327/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cedar64.wordpress.com/327/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cedar64.wordpress.com/327/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cedar64.wordpress.com/327/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cedar64.wordpress.com/327/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cedar64.wordpress.com/327/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cedar64.wordpress.com/327/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cedar64.wordpress.com/327/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cedar64.wordpress.com/327/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cedar64.wordpress.com/327/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cedar64.wordpress.com/327/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cedar64.wordpress.com/327/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cedar64.wordpress.com/327/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chrisrussell.net&#038;blog=18826557&#038;post=327&#038;subd=cedar64&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.chrisrussell.net/2012/04/24/fun-with-spotify-soundrop-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b7a1dd8a249278ec648fed94b6d87d6a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cedar64</media:title>
		</media:content>
	</item>
		<item>
		<title>TopCoder Tutorials</title>
		<link>http://blog.chrisrussell.net/2012/04/19/topcoder-tutorials/</link>
		<comments>http://blog.chrisrussell.net/2012/04/19/topcoder-tutorials/#comments</comments>
		<pubDate>Fri, 20 Apr 2012 03:57:23 +0000</pubDate>
		<dc:creator>Chris Russell</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.chrisrussell.net/?p=277</guid>
		<description><![CDATA[A series of interesting tutorials from TopCoder that are educational and fun. TopCoder Software Development Tutorials Also, I&#8217;ve found these high-level Wikipedia articles to be useful review. Wikipedia Algorithms Overview Wikipedia Analysis of Algorithms Wikipedia Big O Notation Wikipedia Computational Complexity Theory Wikipedia NP-complete From the Wikipedia Big O notation page, this handy table: &#160; <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chrisrussell.net&#038;blog=18826557&#038;post=277&#038;subd=cedar64&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A series of interesting tutorials from TopCoder that are educational and fun.</p>
<p><a title="TopCoder Tutorials" href="http://community.topcoder.com/tc?module=Static&amp;d1=tutorials&amp;d2=alg_index">TopCoder Software Development Tutorials</a></p>
<p>Also, I&#8217;ve found these high-level Wikipedia articles to be useful review.</p>
<p><a href="http://en.wikipedia.org/wiki/Algorithm">Wikipedia Algorithms Overview</a></p>
<p><a href="http://en.wikipedia.org/wiki/Algorithm_analysis">Wikipedia Analysis of Algorithms</a></p>
<p><a href="http://en.wikipedia.org/wiki/Big_O_notation">Wikipedia Big O Notation</a></p>
<p><a href="http://en.wikipedia.org/wiki/Computational_complexity_theory">Wikipedia Computational Complexity Theory</a></p>
<p><a href="http://en.wikipedia.org/wiki/NP-Complete">Wikipedia NP-complete</a></p>
<p>From the Wikipedia Big O notation page, this handy table:</p>
<p>&nbsp;</p>
<table>
<tbody>
<tr>
<th>Notation</th>
<th>Name</th>
<th>Example</th>
</tr>
<tr>
<td><img src="http://upload.wikimedia.org/wikipedia/en/math/3/c/a/3cafa487bd35dc5de745b73b42e41f8c.png" alt="O(1)\," /></td>
<td><a title="Constant time" href="http://en.wikipedia.org/wiki/Constant_time">constant</a></td>
<td>Determining if a number is even or odd; using a constant-size <a title="Lookup table" href="http://en.wikipedia.org/wiki/Lookup_table">lookup table</a> or <a title="Hash table" href="http://en.wikipedia.org/wiki/Hash_table">hash table</a></td>
</tr>
<tr>
<td><img src="http://upload.wikimedia.org/wikipedia/en/math/2/e/e/2eed40c44c1696160d04074665120a20.png" alt="O(\log \log n)\," /></td>
<td>double logarithmic</td>
<td>Finding an item using <a title="Interpolation search" href="http://en.wikipedia.org/wiki/Interpolation_search">interpolation search</a> in a sorted array of uniformly distributed values.</td>
</tr>
<tr>
<td><img src="http://upload.wikimedia.org/wikipedia/en/math/5/f/f/5ffe63dd51eb6795ef395eb4382065cc.png" alt="O(\log n)\," /></td>
<td><a title="Logarithmic time" href="http://en.wikipedia.org/wiki/Logarithmic_time">logarithmic</a></td>
<td>Finding an item in a sorted array with a <a title="Binary search algorithm" href="http://en.wikipedia.org/wiki/Binary_search_algorithm">binary search</a> or a balanced search <a title="Tree data structure" href="http://en.wikipedia.org/wiki/Tree_data_structure">tree</a> as well as all operations in a <a title="Binomial heap" href="http://en.wikipedia.org/wiki/Binomial_heap">Binomial heap</a>.</td>
</tr>
<tr>
<td><img src="http://upload.wikimedia.org/wikipedia/en/math/1/0/e/10eacfde0e0a901d1bba4a33d268f8dd.png" alt="O(n^c),\;0&lt;c&lt;1" /></td>
<td>fractional power</td>
<td>Searching in a <a title="Kd-tree" href="http://en.wikipedia.org/wiki/Kd-tree">kd-tree</a></td>
</tr>
<tr>
<td><img src="http://upload.wikimedia.org/wikipedia/en/math/6/e/8/6e85ed16b150a2e8c2dd03d09406ff4e.png" alt="O(n)\," /></td>
<td><a title="Linear time" href="http://en.wikipedia.org/wiki/Linear_time">linear</a></td>
<td>Finding an item in an unsorted list or a malformed tree (worst case) or in an unsorted array; Adding two <em>n</em>-bit integers by <a title="Ripple carry adder" href="http://en.wikipedia.org/wiki/Ripple_carry_adder">ripple carry</a>.</td>
</tr>
<tr>
<td><img src="http://upload.wikimedia.org/wikipedia/en/math/7/4/3/743201a39160a9f6a2fc706363af3cf5.png" alt="O(n\log n)=O(\log n!)\," /></td>
<td><a title="Linearithmic time" href="http://en.wikipedia.org/wiki/Linearithmic_time">linearithmic</a>, loglinear, or quasilinear</td>
<td>Performing a <a title="Fast Fourier transform" href="http://en.wikipedia.org/wiki/Fast_Fourier_transform">Fast Fourier transform</a>; <a title="Heapsort" href="http://en.wikipedia.org/wiki/Heapsort">heapsort</a>, <a title="Quicksort" href="http://en.wikipedia.org/wiki/Quicksort">quicksort</a> (best and average case), or <a title="Merge sort" href="http://en.wikipedia.org/wiki/Merge_sort">merge sort</a></td>
</tr>
<tr>
<td><img src="http://upload.wikimedia.org/wikipedia/en/math/2/5/0/2505c72066c2e1cc1a51e4be2f0a1085.png" alt="O(n^2)\," /></td>
<td><a title="Quadratic time" href="http://en.wikipedia.org/wiki/Quadratic_time">quadratic</a></td>
<td>Multiplying two <em>n</em>-digit numbers by a simple algorithm; <a title="Bubble sort" href="http://en.wikipedia.org/wiki/Bubble_sort">bubble sort</a> (worst case or naive implementation), <a title="Shell sort" href="http://en.wikipedia.org/wiki/Shell_sort">Shell sort</a>, quicksort (worst case), <a title="Selection sort" href="http://en.wikipedia.org/wiki/Selection_sort">selection sort</a> or <a title="Insertion sort" href="http://en.wikipedia.org/wiki/Insertion_sort">insertion sort</a></td>
</tr>
<tr>
<td><img src="http://upload.wikimedia.org/wikipedia/en/math/3/a/6/3a6946fab2dad8152e62c85a924deb13.png" alt="O(n^c),\;c&gt;1" /></td>
<td><a title="Polynomial time" href="http://en.wikipedia.org/wiki/Polynomial_time">polynomial</a> or algebraic</td>
<td><a title="Tree-adjoining grammar" href="http://en.wikipedia.org/wiki/Tree-adjoining_grammar">Tree-adjoining grammar</a> parsing; maximum <a title="Matching (graph theory)" href="http://en.wikipedia.org/wiki/Matching_%28graph_theory%29">matching</a> for <a title="Bipartite graph" href="http://en.wikipedia.org/wiki/Bipartite_graph">bipartite graphs</a></td>
</tr>
<tr>
<td><img src="http://upload.wikimedia.org/wikipedia/en/math/4/c/7/4c7865eedf738031608f23d47d2d51d3.png" alt="L_n[\alpha,c],\;0 &lt; \alpha &lt; 1=\," /><br />
<img src="http://upload.wikimedia.org/wikipedia/en/math/a/a/a/aaa734cf2ce4a61bcc3825416603a61f.png" alt="e^{(c+o(1)) (\ln n)^\alpha (\ln \ln n)^{1-\alpha}}" /></td>
<td><a title="L-notation" href="http://en.wikipedia.org/wiki/L-notation">L-notation</a> or <a title="Sub-exponential time" href="http://en.wikipedia.org/wiki/Sub-exponential_time">sub-exponential</a></td>
<td>Factoring a number using the <a title="Quadratic sieve" href="http://en.wikipedia.org/wiki/Quadratic_sieve">quadratic sieve</a> or <a title="Number field sieve" href="http://en.wikipedia.org/wiki/Number_field_sieve">number field sieve</a></td>
</tr>
<tr>
<td><img src="http://upload.wikimedia.org/wikipedia/en/math/c/0/d/c0dcf3a8da4f8216140b2d5f3d447cb9.png" alt="O(c^n),\;c&gt;1" /></td>
<td><a title="Exponential time" href="http://en.wikipedia.org/wiki/Exponential_time">exponential</a></td>
<td>Finding the (exact) solution to the <a title="Travelling salesman problem" href="http://en.wikipedia.org/wiki/Travelling_salesman_problem">travelling salesman problem</a> using <a title="Dynamic programming" href="http://en.wikipedia.org/wiki/Dynamic_programming">dynamic programming</a>; determining if two logical statements are equivalent using <a title="Brute-force search" href="http://en.wikipedia.org/wiki/Brute-force_search">brute-force search</a></td>
</tr>
<tr>
<td><img src="http://upload.wikimedia.org/wikipedia/en/math/e/1/f/e1fe6841751d0fd2041c14533582c7d4.png" alt="O(n!)\," /></td>
<td><a title="Factorial" href="http://en.wikipedia.org/wiki/Factorial">factorial</a></td>
<td>Solving the traveling salesman problem via brute-force search; generating all unrestricted permutations of a poset; finding the <a title="Determinant" href="http://en.wikipedia.org/wiki/Determinant">determinant</a> with <a title="Expansion by minors" href="http://en.wikipedia.org/wiki/Expansion_by_minors">expansion by minors</a>.</td>
</tr>
</tbody>
</table>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cedar64.wordpress.com/277/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cedar64.wordpress.com/277/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cedar64.wordpress.com/277/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cedar64.wordpress.com/277/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cedar64.wordpress.com/277/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cedar64.wordpress.com/277/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cedar64.wordpress.com/277/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cedar64.wordpress.com/277/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cedar64.wordpress.com/277/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cedar64.wordpress.com/277/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cedar64.wordpress.com/277/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cedar64.wordpress.com/277/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cedar64.wordpress.com/277/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cedar64.wordpress.com/277/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chrisrussell.net&#038;blog=18826557&#038;post=277&#038;subd=cedar64&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.chrisrussell.net/2012/04/19/topcoder-tutorials/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b7a1dd8a249278ec648fed94b6d87d6a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cedar64</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/wikipedia/en/math/3/c/a/3cafa487bd35dc5de745b73b42e41f8c.png" medium="image">
			<media:title type="html">O(1)\,</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/wikipedia/en/math/2/e/e/2eed40c44c1696160d04074665120a20.png" medium="image">
			<media:title type="html">O(\log \log n)\,</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/wikipedia/en/math/5/f/f/5ffe63dd51eb6795ef395eb4382065cc.png" medium="image">
			<media:title type="html">O(\log n)\,</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/wikipedia/en/math/1/0/e/10eacfde0e0a901d1bba4a33d268f8dd.png" medium="image">
			<media:title type="html">O(n^c),\;0&#60;c&#60;1</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/wikipedia/en/math/6/e/8/6e85ed16b150a2e8c2dd03d09406ff4e.png" medium="image">
			<media:title type="html">O(n)\,</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/wikipedia/en/math/7/4/3/743201a39160a9f6a2fc706363af3cf5.png" medium="image">
			<media:title type="html">O(n\log n)=O(\log n!)\,</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/wikipedia/en/math/2/5/0/2505c72066c2e1cc1a51e4be2f0a1085.png" medium="image">
			<media:title type="html">O(n^2)\,</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/wikipedia/en/math/3/a/6/3a6946fab2dad8152e62c85a924deb13.png" medium="image">
			<media:title type="html">O(n^c),\;c&#62;1</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/wikipedia/en/math/4/c/7/4c7865eedf738031608f23d47d2d51d3.png" medium="image">
			<media:title type="html">L_n[\alpha,c],\;0 &#60; \alpha &#60; 1=\,</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/wikipedia/en/math/a/a/a/aaa734cf2ce4a61bcc3825416603a61f.png" medium="image">
			<media:title type="html">e^{(c+o(1)) (\ln n)^\alpha (\ln \ln n)^{1-\alpha}}</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/wikipedia/en/math/c/0/d/c0dcf3a8da4f8216140b2d5f3d447cb9.png" medium="image">
			<media:title type="html">O(c^n),\;c&#62;1</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/wikipedia/en/math/e/1/f/e1fe6841751d0fd2041c14533582c7d4.png" medium="image">
			<media:title type="html">O(n!)\,</media:title>
		</media:content>
	</item>
	</channel>
</rss>
