<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>kbps &#187; statistics</title>
	<atom:link href="http://www.kilobitspersecond.com/tag/statistics/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kilobitspersecond.com</link>
	<description>A blog about Ubuntu, typography, and contemporary technologies.</description>
	<lastBuildDate>Wed, 11 Jan 2012 18:48:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>I’m in a Rut</title>
		<link>http://www.kilobitspersecond.com/2009/12/31/im-in-a-rut/</link>
		<comments>http://www.kilobitspersecond.com/2009/12/31/im-in-a-rut/#comments</comments>
		<pubDate>Fri, 01 Jan 2010 02:01:22 +0000</pubDate>
		<dc:creator>Jay</dc:creator>
				<category><![CDATA[journal]]></category>
		<category><![CDATA[Last.fm]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[statistics]]></category>

		<guid isPermaLink="false">http://www.kilobitspersecond.com/?p=2443</guid>
		<description><![CDATA[My top ten most-listened artists of 2009 (according to Last.fm [i.e., disregarding CDs and most of my iPod plays]) The Decemberists Destroyer Pants Yell! Brian Eno Belle and Sebastian The Clientele Electrelane Pastels/Tenniscoats Pale Saints Broadcast and The Focus Group I blame Rhythmbox, Banshee, and Songbird.]]></description>
			<content:encoded><![CDATA[<p>My top ten most-listened artists of 2009 (according to Last.fm [i.e., disregarding CDs and most of my iPod plays])</p>
<ol>
<li>The Decemberists</li>
<li>Destroyer</li>
<li>Pants Yell!</li>
<li>Brian Eno</li>
<li>Belle and Sebastian</li>
<li>The Clientele</li>
<li>Electrelane</li>
<li>Pastels/Tenniscoats</li>
<li>Pale Saints</li>
<li>Broadcast and The Focus Group</li>
</ol>
<p>I blame Rhythmbox, Banshee, and Songbird.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kilobitspersecond.com/2009/12/31/im-in-a-rut/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alphabetization: Part II</title>
		<link>http://www.kilobitspersecond.com/2008/08/21/alphabetization-part-ii/</link>
		<comments>http://www.kilobitspersecond.com/2008/08/21/alphabetization-part-ii/#comments</comments>
		<pubDate>Thu, 21 Aug 2008 12:32:42 +0000</pubDate>
		<dc:creator>Jay</dc:creator>
				<category><![CDATA[music]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[Last.fm]]></category>
		<category><![CDATA[Songbird]]></category>
		<category><![CDATA[statistics]]></category>

		<guid isPermaLink="false">http://www.kilobitspersecond.com/?p=618</guid>
		<description><![CDATA[First, some good news: Songbird is now in public beta! It’s amazing how stable things have gotten just over the last six months. And, significantly, it now features a Playback History API, which by the looks of things allows developers access to the entire play history of any song in a library, something that is [...]]]></description>
			<content:encoded><![CDATA[<p><span class="dropcap">F</span>irst, some good news: <a href="http://blog.songbirdnest.com/2008/08/20/songbird-beta-is-released/">Songbird is now in public beta</a>!  It’s amazing how stable things have gotten just over the last six months.  And, significantly, it now features a <a href="http://src.songbirdnest.com/source/xref/client/components/mediacore/playback/history/public/">Playback History API</a>, which by the looks of things allows developers access to the <strong>entire play history</strong> of any song in a library, something that is crucial to the kind of deep library scavenging I’ve been pining for.</p>
<p>Since <a href="http://www.kilobitspersecond.com/?p=522">I last wrote</a>, everything I see or read seems to inspire my half-baked ideas about the better ways we can browse our unmanageably large music libraries.  After telling a friend about these ideas, he said:</p>
<blockquote><p>Yeah, it’s actually really frustrating.  I intentionally keep the number of artists on my iPod small so I don’t have to sort to find things I’m currently into.</p></blockquote>
<p>Me too.</p>
<p>Then there are the people who are doing a lot of (real) work towards novel interfaces like the (hypothetical) ones I’m describing; <a href="http://playground.last.fm/iom">Last.fm’s “Islands of Music”</a> (explained <a href="http://www.last.fm/user/E1i45/journal/2008/05/20/1zjmr8_islands_of_music">here</a>) demonstrates the kind of artist-similarity topology that would make browsing your library a more pleasant experience; <a href="http://www.leebyron.com/what/lastfm/">Lee Byron explains</a> in more detail how he developed that Last Graph infovis; necimal releases a <a href="http://addons.songbirdnest.com/addon/1297">Music Recommendations extension</a> for Songbird that promises to use Last.fm’s data to find within your library artists similar to the one playing; and <a href="http://adaptivepath.com/aurora/">the Aurora project</a>, part of the Mozilla Labs concept browser series, depicts a radical three-dimensional view of files and data with auto-clustering, which, if applied to a music library, would be nothing short of incredible.</p>
<p>I’ve also thrown together a pitiful little mock-up of what Songbird might look like when you start it up with the kind(s) of extensions I’m hoping for:</p>
<p><a href="http://www.kilobitspersecond.com/stuff/mockup-songbird.png"><img src="http://www.kilobitspersecond.com/stuff/mockup-songbird-500x408.png" alt="" title="mockup-songbird" width="500" height="408" class="aligncenter size-medium wp-image-725" /></a></p>
<p>The two core components depicted are the Start Page and the Timeline View.  The Start Page I feel would be seriously valuable, one of the ideas behind all these blatherings of course being that one doesn’t always have a destination in mind when opening their music library.  The Start Page would offer a number of convenient “jumping-off” points, pulling you into your library to explore it further — by artist similarity, maybe, or by play history proximity, after just a couple clicks.</p>
<p>The Timeline View is a zoomable timeline, shown here zoomed to a daily view.  Zooming out could show you albums played within recent weeks; then months, quarters, etc.  These albums might be sorted by Periodical Impact, something I explained in depth <a href="http://www.kilobitspersecond.com/?p=362">here</a>; essentially they would be sorted not by the raw number of times they were played within any given period, but by how distinct they were to that period.</p>
<p>Even these meager ideas are leagues ahead of what’s available, and I’m not even a data analyst.  Just imagine how a library’s play history data could be exploited by somebody trained in these things.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kilobitspersecond.com/2008/08/21/alphabetization-part-ii/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Last.fm Seasonal Impact Indices</title>
		<link>http://www.kilobitspersecond.com/2008/07/31/lastfm-seasonal-impact-indices/</link>
		<comments>http://www.kilobitspersecond.com/2008/07/31/lastfm-seasonal-impact-indices/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 16:24:39 +0000</pubDate>
		<dc:creator>Jay</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[infovis]]></category>
		<category><![CDATA[Last.fm]]></category>
		<category><![CDATA[statistics]]></category>

		<guid isPermaLink="false">http://www.kilobitspersecond.com/?p=362</guid>
		<description><![CDATA[Everyone’s experienced that thing where you’re listening to something, and you think to yourself, “Holy shit does this remind me of fall 2004.” How strongly certain music is correlated with certain periods of your life depends on many things, including but probably not limited to when you first heard it, when you first liked it, [...]]]></description>
			<content:encoded><![CDATA[<p><span class="dropcap">E</span>veryone’s experienced that thing where you’re listening to something, and you think to yourself, “Holy shit does this remind me of fall 2004.”  How strongly certain music is correlated with certain periods of your life depends on many things, including but probably not limited to when you first heard it, when you first liked it, and when your listening to it was most highly concentrated.  So, for instance, in my case, most Destroyer albums will recall times and places that are vague at best, and that depend mostly upon first exposure rather than concentration — this as a result of the fact that I listen to every Destroyer album all the time, approximately.</p>
<p>Blueboy’s <em>Unisex</em>, on the other hand, will probably always remind me of the winter of 2006–7, as I listened to it for the first time that season, nine additional times within that season (racking up about 150 tracks listened, according to Last.fm), and virtually never again once spring hit.</p>
<p>Ever since I began submitting listening data to Last.fm in November of 2004, I’ve wondered whether I’d ever enjoy direct access to all those numbers.  Then came <a href="http://build.last.fm/item/34">Last.fm Extra Stats</a>, mercifully collecting all my listening data for me in a tab-separated file that can be pulled into Excel and manipulated to my heart’s content.  Here, as a small example of the data, are my top ten artists (by tracks listened) from winter 2006–7, along with total listens for each artist (since November 2004) (now that I’m finally getting around to publishing this post, all the following data is very old):</p>
<table class="spreadsheet">
<tr>
<th colspan="3">Winter 2006–7</th>
</tr>
<tr>
<td>Artist</td>
<td>Winter (S) ↓</td>
<td>Total (T)</td>
</tr>
<tr>
<td>Trans Am</td>
<td class="number">163</td>
<td class="number">163</td>
</tr>
<tr>
<td>Blueboy</td>
<td class="number">148</td>
<td class="number">163</td>
</tr>
<tr>
<td>The Lucksmiths</td>
<td class="number">69</td>
<td class="number">105</td>
</tr>
<tr>
<td>Ratatat</td>
<td class="number">50</td>
<td class="number">126</td>
</tr>
<tr>
<td>The Moldy Peaches</td>
<td class="number">49</td>
<td class="number">51</td>
</tr>
<tr>
<td>White Flight</td>
<td class="number">36</td>
<td class="number">41</td>
</tr>
<tr>
<td>Television Personalities</td>
<td class="number">35</td>
<td class="number">35</td>
</tr>
<tr>
<td>Beach House</td>
<td class="number">35</td>
<td class="number">64</td>
</tr>
<tr>
<td>Revolving Paint Dream</td>
<td class="number">32</td>
<td class="number">58</td>
</tr>
<tr>
<td>RJD2</td>
<td class="number">31</td>
<td class="number">52</td>
</tr>
</table>
<p>Now for some methodology.<span id="more-362"></span>  We only have two numbers available to us here; let’s call them S (seasonal total) and T (total total).  As I said, the psychological impact of a band/record over a given time period depends on both the amount of listening during that period (S) and the percentage of total listening within that period (S/T).  Neither figure is good enough on its own; I may have listened to Destroyer 102 times this summer (I did), but that’s insignificant given my 1,500 overall listens.  And I may have <em>only</em> listened to The Ladybug Transistor this summer (yielding a 100% concentration), but 3 listens is hardly enough to make an impact.</p>
<p>But, since both figures are positive indicators of impact, we can just multiply them (S<sup>2</sup>/T).  This would give Ladybug Transistor a summer 2007 impact index of 3, and Destroyer, 6.92.</p>
<p>Let’s see how this multiplication affects winter’s top ten artists by tracks played:</p>
<table class="spreadsheet">
<tr>
<th colspan="4">Winter 2006–7</th>
</tr>
<tr>
<td>Artist</td>
<td>Winter (S) ↓</td>
<td>Total (T)</td>
<td>Impact (S<sup>2</sup>/T)</td>
</tr>
<tr>
<td>Trans Am</td>
<td class="number">163</td>
<td class="number">163</td>
<td class="number">163.00</td>
</tr>
<tr>
<td>Blueboy</td>
<td class="number">148</td>
<td class="number">163</td>
<td class="number">134.38</td>
</tr>
<tr>
<td>The Lucksmiths</td>
<td class="number">69</td>
<td class="number">105</td>
<td class="number">45.34</td>
</tr>
<tr>
<td>Ratatat</td>
<td class="number">50</td>
<td class="number">126</td>
<td class="number">19.84</td>
</tr>
<tr>
<td>The Moldy Peaches</td>
<td class="number">49</td>
<td class="number">51</td>
<td class="number">47.08</td>
</tr>
<tr>
<td>White Flight</td>
<td class="number">36</td>
<td class="number">41</td>
<td class="number">31.61</td>
</tr>
<tr>
<td>Television Personalities</td>
<td class="number">35</td>
<td class="number">35</td>
<td class="number">35.00</td>
</tr>
<tr>
<td>Beach House</td>
<td class="number">35</td>
<td class="number">64</td>
<td class="number">19.14</td>
</tr>
<tr>
<td>Revolving Paint Dream</td>
<td class="number">32</td>
<td class="number">58</td>
<td class="number">17.66</td>
</tr>
<tr>
<td>RJD2</td>
<td class="number">31</td>
<td class="number">52</td>
<td class="number">18.48</td>
</tr>
</table>
<p>Most notably, Ratatat is knocked down a few notches (on account of how consistently I listen to them), The Moldy Peaches go up a few spots — and if we reorder the entire list (of 78 artists) by impact index, a couple more eke into the top ten:</p>
<table class="spreadsheet">
<tr>
<th colspan="2">Winter 10 Impacters</th>
</tr>
<tr>
<td>Artist</td>
<td>Impact (S<sup>2</sup>/T) ↓</td>
</tr>
<tr>
<td>Trans Am</td>
<td class="number">163.00</td>
</tr>
<tr>
<td>Blueboy</td>
<td class="number">134.38</td>
</tr>
<tr class="up">
<td>The Moldy Peaches</td>
<td class="number">47.08</td>
</tr>
<tr class="down">
<td>The Lucksmiths</td>
<td class="number">45.34</td>
</tr>
<tr class="up">
<td>Television Personalities</td>
<td class="number">35.00</td>
</tr>
<tr>
<td>White Flight</td>
<td class="number">31.61</td>
</tr>
<tr class="new">
<td>The Six Parts Seven</td>
<td class="number">24.00</td>
</tr>
<tr class="down">
<td>Ratatat</td>
<td class="number">19.84</td>
</tr>
<tr class="new">
<td>Loney, Dear</td>
<td class="number">19.70</td>
</tr>
<tr class="new">
<td>Andrew Bird</td>
<td class="number">19.31</td>
</tr>
</table>
<p>This last table is what we’re really after, theoretically giving us the ten artists who will most strongly remind me of the winter of 2006–7.  It seems a bit boring at this point, since it’s pretty close in its results to the standard top-ten-by-listens chart; but the methodology is sound, and under more extreme listening conditions (e.g., a Destroyer obsession), it will prove to be a reliable indicator of impact.</p>
<p>And don’t forget, as time passes and I listen to these artists more, their season-specific impacts will drop.  For instance, as things turned out, I listened to Television Personalities heavily over the spring, increasing their T value, and reducing their impact in the above table (which uses old data).  As a result of my TVP spring listening, their winter index dropped dramatically from 35 to 7.95 — their spring index, as of October 5, 2007, is 91.95.</p>
<p><span class="dropcap">D</span>epicting this analysis visually could go several ways; somehow I want to see a pie chart.  Making one from <em>every</em> artist would be impractical, leaving a circle with a hundred or more slivers.  Taking the top ten artists feels insensitive to the quirks of any given season; what if I don’t even listen to ten artists that season, for instance?  What if I listen to a thousand?  I could select only those artists who have indices greater than, say, 20; but this also feels arbitrary and vulnerable to seasonal quirks.</p>
<p>I think a pretty safe threshold above which to choose artists is at 50% of the sum of all impact values.  In other words: the sum of the impact indices of winter’s artists is 783.  If I take artists off the top of the list until I have half that, I stop after the fourth artist, The Moldy Peaches.  Admittedly, a four-sector pie chart is kinda dull, but I need to be consistent in the creation of these charts so that impacts are accurately represented from season to season.</p>
<p>So, roughly…here are what the last three seasons of 2007 “meant” to me:</p>
<p><img src="http://www.kilobitspersecond.com/stuff/lastfm-2007-autumn-2.png" alt="" title="lastfm-2007-autumn-2" width="480" height="492" class="aligncenter size-full wp-image-681 transparent" /></p>
<p><img src="http://www.kilobitspersecond.com/stuff/lastfm-2007-summer.png" alt="" title="lastfm-2007-summer" width="500" height="487" class="aligncenter size-full wp-image-610 transparent" /></p>
<p><img src="http://www.kilobitspersecond.com/stuff/lastfm-2007-spring.png" alt="" title="lastfm-2007-spring" width="497" height="518" class="aligncenter size-full wp-image-612 transparent" /></p>
<p>What I like about these is that they are not only internally consistent, but consistent with each other; Ariel Pink will remind me of the spring of 2007 more than M.I.A. will remind me of the summer, as represented by a larger sector in his season’s pie.  I could similarly generate these with a focus on albums, which would be slightly more specific and alter the results dramatically.  I know, for instance, that all my summer 2007 listening to M.I.A. was off her new record, songs that necessarily didn’t contribute to any prior M.I.A. listening — so, <em>Kala</em>, were it to have a sector in an album pie, would have one much larger than the less specific “M.I.A.” one.</p>
<p>Granted, there are more than a few problems with this whole endeavor, and here are the major three:</p>
<ol>
<li>Last.fm does not track things that I listen to on CD/vinyl.  This is a serious problem, as the things I purchase tend to be the things I like the <em>most</em>, and go totally unaccounted for.</li>
<li>The number of tracks you’ve listened to by an artist is only <em>kind of</em> related to how much time you’ve spent listening to them.  4 tracks can fill 2 CDs (<em>Lift Your Skinny Fists</em>), or you can cram 91 tracks into 40 minutes of music (<em>Irrevocably Overdriven</em>).</li>
<li>iPod listens are not properly documented.  Even if I remember to report them to Last.fm with <a href="http://homepage.sunrise.ch/mysunrise/ph_waeber/audiopod+/">AudioPod</a>, multiple listens on a single track only get counted as one — this is particularly damaging on long trips, for instance.</li>
</ol>
<p>The (S<sup>2</sup>/T) formula may have further applications, as I’ll touch on in a follow-up to my original post about <a href="/2008/06/16/alphabetization-is-not-fit-for-music-libraries/">alphabetization and digital music library navigation</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kilobitspersecond.com/2008/07/31/lastfm-seasonal-impact-indices/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Alphabetization Is Not Fit for Music Libraries</title>
		<link>http://www.kilobitspersecond.com/2008/06/16/alphabetization-is-not-fit-for-music-libraries/</link>
		<comments>http://www.kilobitspersecond.com/2008/06/16/alphabetization-is-not-fit-for-music-libraries/#comments</comments>
		<pubDate>Mon, 16 Jun 2008 11:52:31 +0000</pubDate>
		<dc:creator>Jay</dc:creator>
				<category><![CDATA[music]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[AllMusic]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[foobar2000]]></category>
		<category><![CDATA[iTunes]]></category>
		<category><![CDATA[Last.fm]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[Songbird]]></category>
		<category><![CDATA[statistics]]></category>

		<guid isPermaLink="false">http://www.kilobitspersecond.com/?p=522</guid>
		<description><![CDATA[Wikipedia’s article on alphabetization explains: Advantages of sorted lists include: one can easily find the first n elements (e.g. the 5 smallest countries) and the last n elements (e.g. the 3 largest countries) one can easily find the elements in a given range (e.g. countries with an area between .. and .. square km) one [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Collation">Wikipedia’s article on alphabetization</a> explains:</p>
<blockquote><p>
Advantages of sorted lists include:</p>
<ul>
<li>one can easily find the first n elements (e.g. the 5 smallest countries) and the last n elements (e.g. the 3 largest countries)</li>
<li>one can easily find the elements in a given range (e.g. countries with an area between .. and .. square km)</li>
<li>one can easily search for an element, and conclude whether it is in the list</li>
</ul>
</blockquote>
<p><img src="http://www.kilobitspersecond.com/stuff/music-library-ipod.png" alt="" title="music-library-ipod" width="158" height="129" class="alignright size-full wp-image-575" />The first two advantages are things you almost never need to do with music libraries.  And the third has been supplanted by now-ubiquitous search boxes: if you <em>know</em> what you’re looking for, you search; and if you don’t, an alphabetized list is not the way to find it.</p>
<p>Web visionary Ted Nelson (&lt;mst3k&gt;<em>Dr.</em> Ted Nelson?&lt;/mst3k&gt;) has been <a href="http://www.futureofthebook.org/blog/archives/2007/10/ted_nelsons_still_on_the_job.html">paraphrased</a> as pointing out that “electronic documents have been designed to mimic their paper antecedents,” and that “this is where everything went wrong: electronic documents could and should behave entirely differently from paper ones.”  If <a href="http://en.wikipedia.org/wiki/Directory_(file_systems)#The_folder_metaphor">the folder metaphor</a> is inadequate for digital <em>documents</em>, no wonder it’s so pitiful at handling <em>music</em>.  The proximity between pieces of music in a library should <strong>least of all</strong> be based on the first letter in a band’s name – it’s as arbitrary as sorting them by the vocalist’s month of birth – yet this is how it’s universally done.</p>
<p>Music library organization needs to be re-thought from the ground up.  We need to consider how it is that people used to listen to music before it was all on their iTunes.  How are your CDs organized (or disorganized) on your shelf?  How are they organized in your head?  What is it that prompts you to listen to what you listen to when you listen to it?  <strong>And how can we use computers to adopt and enhance these ways of thinking, rather than forcing us to think like computers?</strong><span id="more-522"></span></p>
<h4>Multi-Dimensional Sorting</h4>
<p><a href='http://www.kilobitspersecond.com/stuff/music-library-artist-web.png'><img src="http://www.kilobitspersecond.com/stuff/music-library-artist-web-300x258.png" alt="" title="music-library-artist-web" width="300" height="258" class="alignleft size-medium wp-image-573" /></a><span class="dropcap">T</span>he most natural method for organizing music (if you can escape alphabetical thinking for a moment) is by similarity.  Last.fm does this, and it is invaluable.  When you are at an artist’s page at Last.fm, you feel that you are in that artist’s “neighborhood,” with links to similar bands, tags, listeners, and related groups.  The Last.fm architecture was designed to manifest organic, bottom-up communities around bands and genres.  This is an experience that cannot currently be replicated in any music player, at least not easily (with the possible exception of <a href="http://amarok.kde.org/">Amarok</a>).  But because <a href="http://www.audioscrobbler.net/">Last.fm’s data is extraordinarily accessible</a>, there are virtually no obstacles to incorporating this sense of “musical neighborhoods” into a piece of software.</p>
<p><img src="http://www.kilobitspersecond.com/stuff/music-library-moods-allmusic.png" alt="" title="music-library-moods-allmusic" width="249" height="451" class="alignright size-medium wp-image-576" />If you don’t already have an artist in mind whose neighborhood you’d like to browse, you probably at least have some idea of the kind of mood you’re after, and there are several approaches here.  One (perhaps the least viable) is using <a href="http://www.last.fm/music/+tags">Last.fm’s tags</a>.  These are actually less often concerned with mood than they are with genre, a taxonomy well-known as being inconsistent and, I would argue, misguided: When I want to listen to <a href="http://www.last.fm/music/Lullatone">Lullatone</a>, it’s not because I want to listen to <em><a href="http://www.last.fm/tag/electronic">electronic</a></em> music; it’s because I want to listen to “<a href="http://www.allmusic.com/cg/amg.dll?p=amg&#038;sql=77:11259">whimsical</a>,” “<a href="http://www.allmusic.com/cg/amg.dll?p=amg&#038;sql=77:12123">delicate</a>,” “<a href="http://www.allmusic.com/cg/amg.dll?p=amg&#038;sql=77:11255">innocent</a>,” “<a href="http://www.allmusic.com/cg/amg.dll?p=amg&#038;sql=77:13103">sparkling</a>” music.  Who cares what genre it is?</p>
<p><a href="http://www.macrovision.com/products/online_stores_portals/data_licensing/amg_data_solutions.htm">AllMediaGuide </a> began a project called <a href="http://www.amgtapestry.com/">Tapestry</a> some time ago, an application of their vast mood/situation/genre dataset.  It is an <em>ideal</em> solution for browsing music, and its integration into desktop software would be hugely rewarding.  It’s possible to simulate Tapestry with foobar2000 and some elbow grease, but the results are not as robust as they could be.<img src="http://www.kilobitspersecond.com/stuff/music-library-moods-foobar.png" alt="" title="music-library-moods-foobar" width="479" height="287" class="aligncenter size-full wp-image-572" /></p>
<p>Again, if you already know what you’re looking for, it would be difficult to find it through these channels; <strong>but this is what search is for.</strong></p>
<h4>Personalization</h4>
<p><span class="dropcap">W</span>e also need to consider the less objective and more personal reasons that music becomes relevant in specific contexts, analogously to the way in which CDs become disordered on one’s shelf.  I, for instance, usually have about 20 albums littering the top of my receiver and speakers.  These include, roughly, (a) stuff I just bought, (b) stuff I just listened to, and © stuff I haven’t bothered putting away because I know I’ll listen to it again soon.</p>
<p><img src="http://www.kilobitspersecond.com/stuff/music-library-highfidelity.png" alt="" title="music-library-highfidelity" width="300" height="200" class="alignright size-medium wp-image-581" />The main obstacle to browsing in this way is a prevalent shortcoming whose symptoms are far-reaching: the fact that music players “think” in terms of <em>songs</em>, not in terms of <em>albums</em>—or even in terms of artists, for that matter: My music software doesn’t know that these 38 songs are all by Electrelane; it just knows that their artist metadata is alphabetically adjacent.  Sure, you can sort iTunes libraries by data such as “last listened” and “added”; and you can use CoverFlow to simulate a pale approximation of a flesh-and-blood record collection; but the only way you can sort albums or artists is alphabetically.  <a href="http://www.kilobitspersecond.com/2006/10/22/mp3toys/">I’ve written</a> about the ways in which <a href="http://www.mp3toys.net/">MP3Toys</a> addresses this problem, and it remains a commendable pioneer in music management, but its difficulties (a steep learning curve, a buggy interface, a rapid release schedule) outweigh its advantages.</p>
<p><a href='http://www.kilobitspersecond.com/stuff/music-library-histogram.png'><img src="http://www.kilobitspersecond.com/stuff/music-library-histogram-300x444.png" alt="" title="music-library-histogram" width="300" height="444" class="alignleft size-medium wp-image-578" /></a>Browsing your own music library is a very impersonal experience, despite enormous potential for personalization.  Rich info visualization “toys” such as <a href="http://build.last.fm/item/34">Last.fm Extra Stats</a> and <a href="http://build.last.fm/item/36">LastGraph</a> are seen as novelties, but would, in fact, be revolutionary as library browsing environments.  There is nothing to prevent this from development, either; even users who are not plugged into Last.fm could have their listening history stored locally by their music software, which could then be used to generate small, cached, infinite-resolution SVG histograms, browsable by zooming, panning, and clicking.  Far from being cumbersome and CPU-intensive, it would actually be rather elegant.</p>
<p>Continuing on the theme of chronology, what about a simple calendar charts view, with varying granularity by day, week, month, quarter?  Presentationally, these charts could even be made easily to resemble vertical stacks of CDs, with spine art generated from a cropped cover image and overlaid text.  This would arguably be eye-candy, of course, but just imagine how it would “feel” to see your music this way.  If there’s one thing Apple’s been consistently right about, it’s that functionality is not at odds with a pleasant user experience, but rather that they are meant to be mutually supportive.</p>
<p><a href='http://catandgirl.com/?p=219'><img src="http://www.kilobitspersecond.com/stuff/music-library-catandgirl.png" alt="" title="music-library-catandgirl" width="193" height="171" class="alignleft size-medium wp-image-580" /></a>When I was helping to establish some playstamp tagging standards with the foobar community in 2005, <a href="http://www.hydrogenaudio.org/forums/index.php?showtopic=31530&#038;view=findpost&#038;p=274237">it was jokingly suggested</a> that when songs are played they be tagged with the current weather.  Despite the sarcasm, I couldn’t help but think, “What a great idea!”  I know my listening habits are affected by the weather, and I can’t imagine other people are not the same.  There is, after all, a frequently-used “<a href="http://www.last.fm/tag/rainy+day">rainy day</a>” tag at Last.fm.</p>
<p>What about a histogram based not on play count, but on <a href="/tag/hotness/">hotness</a> values over time?  What about artist similarity webs based not on Last.fm data, but on proximity of play times within your personal history?  What about taking lessons from the <a href="http://www.dontclick.it/">DONTCLICK.IT</a> project, <a href="http://www.bumptop.com/">BumpTop</a>, and <a href="http://portal.acm.org/citation.cfm?id=143055">the pile metaphor</a> for unprecedentedly fluid user interfaces?</p>
<h4>What Now?</h4>
<p><strong>All the ingredients are there.</strong>  Everyone is rapidly moving towards an exclusively digital music collection, and the technology is embarrassingly outmoded.  Music has become a major component of computing, at levels once reserved for word processing and gaming.  Our relationship with our digital music collections is poised for reinvention, a looming difficulty that has been made invisible by custom and habit.  Digital music management is <strong>hell</strong>, and users have complacently accepted this.</p>
<p><a href='http://www.kilobitspersecond.com/stuff/music-library-metrics.png'><img src="http://www.kilobitspersecond.com/stuff/music-library-metrics-300x189.png" alt="" title="music-library-metrics" width="300" height="189" class="alignright size-medium wp-image-579 transparent" /></a><span class="dropcap">T</span>he obvious solution at this point is <a href="http://www.getsongbird.com/">Songbird</a>.  Songbird’s <a href="http://addons.songbirdnest.com/tag/mediaview">media views</a> (<a href="http://blog.songbirdnest.com/2008/03/26/songbird-05-final-released-all-aboard/">present since 0.5</a>) allow more easily than ever for custom browsing environments.  Previously the only way to alter your music browsing environment was to switch programs entirely; besides which, nearly all available programs simply mimic the well-known disk/directory views or iTunes’ browser pane view (which is just a glorification of a disk/directory view anyway).  Songbird, on the other hand, boasts an unprecedented extensibility, coupled with <a href="http://technorati.com/tag/songbird?authority=a7">media attention</a>, ease-of-use, and the Mozilla platform, for which people have been developing extensions for ages (in computer years).</p>
<p>The prospects are thrilling and the potential for innovation is virtually limitless.  Promisingly, there are some glimpses of where things might be headed for Songbird media views: <a href="http://addons.songbirdnest.com/addon/232">Catalogue View</a> demonstrates a novel visual presentation of your library, though it doesn’t do much in the way of organizational presentation; and <a href="http://addons.songbirdnest.com/addon/1214">Metrics Media Page</a> is the beginnings of the kind of infovis view that could be (but currently isn’t) adapted to allow for actual navigation.  Nevertheless, I have a bad feeling that this opportunity will be missed, as the status quo continues to obfuscate these possibilities.</p>
<p class="follow-up"><strong>Update</strong>: <a href="http://www.kilobitspersecond.com/2008/08/21/alphabetization-part-ii/">Part II</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kilobitspersecond.com/2008/06/16/alphabetization-is-not-fit-for-music-libraries/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>gag me</title>
		<link>http://www.kilobitspersecond.com/2008/01/13/gag-me/</link>
		<comments>http://www.kilobitspersecond.com/2008/01/13/gag-me/#comments</comments>
		<pubDate>Sun, 13 Jan 2008 17:03:29 +0000</pubDate>
		<dc:creator>Jay</dc:creator>
				<category><![CDATA[music]]></category>
		<category><![CDATA[Last.fm]]></category>
		<category><![CDATA[statistics]]></category>

		<guid isPermaLink="false">http://www.kilobitspersecond.com/2008/01/13/gag-me/</guid>
		<description><![CDATA[[image]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.last.fm/charts/hypeartist?charttype=weekly&#038;subtype=hypeartist&#038;range=1199016000-1199620800" class="loneimage"><img src='http://www.kilobitspersecond.com/stuff/cerapage.png' alt='Michael Cera &#038; Ellen Page' /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kilobitspersecond.com/2008/01/13/gag-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>so close</title>
		<link>http://www.kilobitspersecond.com/2007/10/10/so-close/</link>
		<comments>http://www.kilobitspersecond.com/2007/10/10/so-close/#comments</comments>
		<pubDate>Wed, 10 Oct 2007 22:45:43 +0000</pubDate>
		<dc:creator>Jay</dc:creator>
				<category><![CDATA[haha]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[Beirut]]></category>
		<category><![CDATA[Last.fm]]></category>
		<category><![CDATA[Radiohead]]></category>
		<category><![CDATA[statistics]]></category>

		<guid isPermaLink="false">http://www.kilobitspersecond.com/2007/10/10/so-close/</guid>
		<description><![CDATA[[image]]]></description>
			<content:encoded><![CDATA[<p><img src='http://www.kilobitspersecond.com/stuff/artisthypelist.png' alt='Artist Hype List' /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kilobitspersecond.com/2007/10/10/so-close/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FFmpeg Quality Comparison</title>
		<link>http://www.kilobitspersecond.com/2007/05/24/ffmpeg-quality-comparison/</link>
		<comments>http://www.kilobitspersecond.com/2007/05/24/ffmpeg-quality-comparison/#comments</comments>
		<pubDate>Thu, 24 May 2007 23:39:44 +0000</pubDate>
		<dc:creator>Jay</dc:creator>
				<category><![CDATA[tech]]></category>
		<category><![CDATA[videos]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[FFmpeg]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[statistics]]></category>

		<guid isPermaLink="false">http://www.kilobitspersecond.com/2007/05/24/ffmpeg-quality-comparison/</guid>
		<description><![CDATA[Flash video is so great. Anyway I used to use MediaCoder to convert to flash video, but when it gave me errors, and refused to tell me the specifics of those errors, I took it old school to the command prompt with FFmpeg (which MediaCoder uses anyway). This gives you a lot of useful info [...]]]></description>
			<content:encoded><![CDATA[<p>Flash video is so great.</p>
<p>Anyway I used to use <a href="http://mediacoder.sourceforge.net/">MediaCoder</a> to convert to flash video, but when it gave me errors, and refused to tell me the specifics of those errors, I took it old school to the command prompt with <a href="http://ffmpeg.mplayerhq.hu/">FFmpeg</a> (which MediaCoder uses anyway).  This gives you a lot of useful info about the source file you’re encoding, such as audio sampling rate, frame rate, etc.</p>
<p>Wanting to find a balance between picture quality and streamability, I began encoding a short length of AVI video at different compression levels.  FFmpeg calls this “qscale” (a way of representing variable bitrate qualities, much like <a href="http://lame.sourceforge.net/">LAME</a>’s –V parameter), and the lower the qscale value, the better the quality.  The available qscale values range from 1 (highest quality) to 31 (lowest quality).  Going worse than a 13 qscale produces unacceptably poor quality, so that’s as low as I went for the purposes of this test.</p>
<p>I encoded 3:14 minutes of an AVI, resizing it to 500×374 pixels, and encoding the audio at 96kbps and 44.1KHz, which sounds fine, and is a negligible part of the ultimate file size, so going lower wouldn’t be very beneficial.  Plus I find that good audio can create the illusion that the whole thing is of higher quality.  Poor audio just makes it <em>sound</em> like “web video.”</p>
<p>Here are the results, courtesy of Google Spreadsheets:</p>
<p><img src="http://www.kilobitspersecond.com/images/ffmpegchart.gif" alt="FFmpeg quality vs. filesize chart" /></p>
<p>The filesize, of course, goes down as quality goes down.  And the loss in filesize also decreases, not just in amount, but in percentage as well, as indicated by the red line.  For instance, the value of the red line at qscale 3 is 33.97%, which means that in going from qscale 2 to qscale 3, 33.97% of the filesize is shaved off.</p>
<p>However, because these losses are not <em>perfectly</em> exponential, I knew that there had to be qscale values that were more “efficient,” in a sense, than others — values that, despite being high, and causing a lower change in filesize than the previous step in qscale, still caused a <strong>comparably large</strong> change in filesize.  For instance, still looking at the red line, you’ll notice that going from 2 to 3, as I said, shaves off 33.97% of the filesize, while going from 3 to 4 only shaves off 23.93% of the filesize; and that is a 29.56% <em>decrease</em> in change-in-filesize, which is a relatively large cost.  We want the change-in-filesize to remain as high as possible for as long as possible.</p>
<p>Now, if you follow the red line from 4 to 5, you’ll see that that’s a 20.32% loss in filesize, which is pretty close to our previous 23.93% loss in filesize in going from 3 to 4.  In fact, we’ve only lost 15.09% of change-in-filesize from the previous step.  So these are the values we really want to examine: change in change-in-filesize, represented by the orange line.</p>
<p>This is nowhere close to exponential, nor does it follow any predictable decline.  It darts around, seemingly at random.  And we want to catch it at its lowest values, at points that represent changes in qscale that were nearly as efficient as the previous change in qscale.  So the most desirable qscale values become, quite obviously, 5, 9, and 11.</p>
<p>What this means is that if quality is your primary concern (and you’re not crazy enough to encode at qscale 1), go with 5.  qscale 5 turns 3:14 minutes of video into 30.62MB, which requires a download rate of 157.84KB/s to stream smoothly.  qscale 11 will give you about half the filesize, and require a download rate of 77.37KB/s.  But, because that’s the level at which picture quality <em>really</em> begins to suffer, and because most people don’t really mind buffering for a few seconds initially, I’m probably going to stick with qscale 9, whose videos take up 91.58 kilobytes per second, and which is by far the most efficient qscale anyway, with only a 4.92% change in change-in-filesize.</p>
<p>One caveat: This whole examination presupposes (as far as I can tell) that if it were possible to measure and chart the changes in the actual perceived visual quality of videos encoded at these qscale values, the curve would be perfectly geometric or exponential, with no aberrations similar to those above, and with all extrapolated delta curves showing no aberrations either.  Given that, it might be easier to believe that every step you take through the qscale is of equal relative cost, and that there are no “objectively preferable” qscale values.  But that is a lot more boring.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kilobitspersecond.com/2007/05/24/ffmpeg-quality-comparison/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>“So it goes.”</title>
		<link>http://www.kilobitspersecond.com/2007/04/16/so-it-goes/</link>
		<comments>http://www.kilobitspersecond.com/2007/04/16/so-it-goes/#comments</comments>
		<pubDate>Mon, 16 Apr 2007 17:26:53 +0000</pubDate>
		<dc:creator>Jay</dc:creator>
				<category><![CDATA[culture]]></category>
		<category><![CDATA[haha]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[statistics]]></category>
		<category><![CDATA[Vonnegut]]></category>

		<guid isPermaLink="false">http://www.kilobitspersecond.com/2007/04/16/so-it-goes/</guid>
		<description><![CDATA[[image]]]></description>
			<content:encoded><![CDATA[<p><a href="http://technorati.com/chart/%22so+it+goes%22?chartdays=30" class="loneimage"><img src="/images/soitgoes.png" alt="30-day Technorati chart for 'so it goes'" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kilobitspersecond.com/2007/04/16/so-it-goes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hotness 1.6.c.1</title>
		<link>http://www.kilobitspersecond.com/2006/12/09/hotness-16c1/</link>
		<comments>http://www.kilobitspersecond.com/2006/12/09/hotness-16c1/#comments</comments>
		<pubDate>Sun, 10 Dec 2006 03:07:56 +0000</pubDate>
		<dc:creator>Jay</dc:creator>
				<category><![CDATA[music]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[foobar2000]]></category>
		<category><![CDATA[hotness]]></category>
		<category><![CDATA[statistics]]></category>

		<guid isPermaLink="false">http://kbps.resounder.org/2006/12/09/hotness-16c1/</guid>
		<description><![CDATA[Totally warranted subversioning! My foray into MP3Toys was ultimately short-lived, brought to a halt when I found what people were doing with Single Column Playlist for foobar, particularly the playlist-embedded album art. Back in the foobar saddle, I also gave in and tried out the “official” Play Count component, which I had avoided for so [...]]]></description>
			<content:encoded><![CDATA[<p>Totally warranted subversioning!</p>
<p><a href="/2006/10/22/mp3toys/">My foray into MP3Toys</a> was ultimately short-lived, brought to a halt when I found what people were doing with <a href="http://wiki.hydrogenaudio.org/index.php?title=Foobar2000:0.9_Single_Column_Playlist_%28foo_uie_single_column_playlist%29">Single Column Playlist</a> for foobar, particularly the playlist-embedded album art.  Back in the foobar saddle, I also gave in and tried out <a href="http://wiki.hydrogenaudio.org/index.php?title=Foobar2000:0.9_Play_Count_%28official%29_%28foo_playcount%29">the  “official” Play Count component</a>, which I had avoided for so long because it didn’t support %FIRST_PLAYED%, and because I wasn’t sure I wanted my playback statistics only kept in the database — even though writing them to the files posed a lot of trouble as well.  Turns out, playback statistics stored by the official component are less sensitive to changes to the files it’s keeping track of than the unofficial one, which means I only have to be a little careful to keep all my stats intact, while being able to play and track files that I’m still seeding.</p>
<p>This, along with the invaluable $cwb_datediff() function provided by Bowron’s new <a href="http://wiki.hydrogenaudio.org/index.php?title=Foobar2000:0.9_CwBowron's_Title_formating_(foo_cwb_hooks)">foo_cwb_hooks</a> component, called for a rewrite to the hotness code, which had been stagnating in some marginally compatible 1.5 version since May.  After severely trimming the code down and robusting things up, I thought of a new and totally non-arbitrary way to soften the blow hotness scores receive when songs are played.  I hated seeing them leap to 100 every time, and this new softening method makes so much sense, utilizing existing baseline calibrations to keep things a lot more interesting.  How anybody tolerated the old method is beyond me.</p>
<p>Anyway, <a href="http://www.hydrogenaudio.org/forums/index.php?s=&#038;showtopic=31287&#038;view=findpost&#038;p=455116">here</a> it is.</p>
<p>I also dug up a lot of old screenshots this week and I’m planning a nostalgia-fueled retrospective in the near future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kilobitspersecond.com/2006/12/09/hotness-16c1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Verbal Timestamps for fb2k</title>
		<link>http://www.kilobitspersecond.com/2006/06/08/verbal-timestamps-for-fb2k/</link>
		<comments>http://www.kilobitspersecond.com/2006/06/08/verbal-timestamps-for-fb2k/#comments</comments>
		<pubDate>Thu, 08 Jun 2006 23:26:02 +0000</pubDate>
		<dc:creator>Jay</dc:creator>
				<category><![CDATA[music]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[foobar2000]]></category>
		<category><![CDATA[statistics]]></category>

		<guid isPermaLink="false">http://www.resounder.org/kbps/2006/06/08/verbal-timestamps-for-fb2k/</guid>
		<description><![CDATA[Last week I spent some time developing this algorithm in fb2k’s titleformatting script to translate numerical timestamps (YYYY-MM-DD HH:MM:SS) into natural English text (“Friday Evening”). It’s pretty cool. So, uh, here it is. ///////////////////////////////////////// // NATURAL LANGUAGE TIMESTAMPS // by topdownjimmy // v0.4 — June 4, 2006 ///////////////////////////////////////// // calculate “dayssince”: number of days since [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I spent some time developing this algorithm in <a href="http://www.foobar2000.org/">fb2k</a>’s titleformatting script to translate numerical timestamps (YYYY-MM-DD HH:MM:SS) into natural English text (“Friday Evening”).</p>
<p><img src="http://www.kilobitspersecond.com/images/verbaltimestamps.png" alt="verbal timestamps screenshot" /></p>
<p>It’s pretty cool.  So, uh, here it is.<span id="more-92"></span></p>
<div class="code">/////////////////////////////////////////<br />
// NATURAL LANGUAGE TIMESTAMPS<br />
// by topdownjimmy<br />
// v0.4 — June 4, 2006<br />
/////////////////////////////////////////</p>
<p>// calculate “dayssince”: number of days since song was last played<br />
$if(%last_played%,$puts(dayssince,$sub($add($mul($right(%_system_year%,2),365),$select(%_system_month%,0,31,59,90,120,151,181,212,243,273,304,334),$add($div($right(%_system_year%,2),4),$if($or($greater(%_system_month%,2),$greater($mod(%_system_year%,4),0)),1,0)),%_system_day%),$add($mul($substr(%last_played%,3,4),365),$select($substr(%last_played%,6,7),0,31,59,90,120,151,181,212,243,273,304,334),$add($div($substr(%last_played%,3,4),4),$if($or($greater($substr(%last_played%,6,7),2),$greater($mod($substr(%last_played%,1,4),4),0)),1,0)),$substr(%last_played%,9,10)))),$puts(dayssince,))</p>
<p>// correct “dayssince” to consider early AM to be an extension of previous day<br />
$puts(dayssince,$sub($get(dayssince),$if($and($greater(7,%_system_hour%),$greater($substr(%last_played%,12,13),6)),1,0)))<br />
$if($and($greater(%_system_hour%,6),$greater(7,$substr(%last_played%,12,13))),$puts(dayssince,$add($get(dayssince),1)),)</p>
<p>// calculate day of week<br />
$puts(calcdayofweek,$add(1,$mod($add($substr(%last_played%,3,4),$div($substr(%last_played%,3,4),4),$select($substr(%last_played%,6,7),6,2,2,5,0,3,5,1,4,6,2,4),$substr(%last_played%,9,10)),7)))</p>
<p>// correct day of week to consider early AM to be an extension of previous day<br />
$puts(calcdayofweek,$sub($get(calcdayofweek),$ifgreater(7,$substr(%last_played%,12,13),1,0)))<br />
$if($strcmp($get(calcdayofweek),0),$puts(calcdayofweek,7),)</p>
<p>// calculate period of day (night, morning, etc.)<br />
$puts(dayperiod,$select($add(1,$substr(%last_played% ‚12,13)),Night,Night,Night,Night,Night,Night,Night,Morning,Morning,Morning,Morning,Morning,Afternoon<br />
‚Afternoon,Afternoon,Afternoon,Afternoon,Evening,Evening,Evening,Evening,Night,Night,Night))</p>
<p>// calculate natural language timestamp<br />
$if(%last_played%,$puts(nat_lang_stamp,$ifgreater($get(dayssince),0,$ifgreater($get(dayssince),1,$ifgreater($get(dayssince),6,$if($and($greater($get(dayssince),21),$not($strcmp(%_system_month%,$substr(%last_played%,6,7)))),$if($not($strcmp(%_system_year%,$substr(%last_played%,1,4))),$select($substr(%last_played%,6,7),January,February,March,April,May,June,July,August,September,October,November,December)’ ‘$substr(%last_played%,1,4),$ifgreater(2,$sub(%_system_month%,$substr(%last_played%,6,7)),‘Last Month’,$select($substr(%last_played%,6,7),January,February,March,April,May,June,July,August,September,October,November,December))),$ifgreater($div($add($get(dayssince),4),7),1,$div($add($get(dayssince),4),7)’ Weeks Ago’,Last Week)),$select($get(calcdayofweek),Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday)’ ‘$get(dayperiod)),$if($strcmp($get(dayperiod),Night),Last,Yesterday)’ ‘$get(dayperiod)),$if($strcmp($get(dayperiod),Night),Tonight,This $get(dayperiod)))),$puts(nat_lang_stamp,Never))</p>
<p>$set_global(nat_lang_stamp,$get(nat_lang_stamp))</p>
<p>/////////////////////////////////////////</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.kilobitspersecond.com/2006/06/08/verbal-timestamps-for-fb2k/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

