<?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"
	>

<channel>
	<title>that's whacked</title>
	<atom:link href="http://whacked.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://whacked.net</link>
	<description>thoughts on open spaces</description>
	<pubDate>Fri, 09 May 2008 05:22:40 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
	<language>en</language>
			<item>
		<title>updated rtorrent &#038; libtorrent packages for Solaris</title>
		<link>http://whacked.net/2008/05/08/updated-rtorrent-libtorrent-packages-for-solaris/</link>
		<comments>http://whacked.net/2008/05/08/updated-rtorrent-libtorrent-packages-for-solaris/#comments</comments>
		<pubDate>Fri, 09 May 2008 05:19:55 +0000</pubDate>
		<dc:creator>Stephen Lau</dc:creator>
		
		<category><![CDATA[OpenSolaris]]></category>

		<category><![CDATA[bittorrent]]></category>

		<category><![CDATA[libtorrent]]></category>

		<category><![CDATA[rtorrent]]></category>

		<guid isPermaLink="false">http://whacked.net/?p=962</guid>
		<description><![CDATA[was helping out a friend and updated my rtorrent/libtorrent packages for Solaris.  as before, there are three packages, SFWsigc++, SFWtorrent, and SFWrtorrent.

these install, per the companion CD convention, to /opt/sfw


SFWsigc++-2.0.17.pkg (1.8MB)
SFWtorrent-0.12.2.pkg (17MB)
SFWrtorrent-0.8.2.pkg *(1.8MB)


enjoy..
]]></description>
			<content:encoded><![CDATA[<p>was helping out <a href="http://legaltorrents.com">a friend</a> and updated my rtorrent/libtorrent packages for Solaris.  as before, there are three packages, SFWsigc++, SFWtorrent, and SFWrtorrent.</p>

<p>these install, per the companion CD convention, to /opt/sfw</p>

<ul>
<li><a href="/pkgs/SFWsigc++-2.0.17.pkg">SFWsigc++-2.0.17.pkg</a> <em>(1.8MB)</em></li>
<li><a href="/pkgs/SFWtorrent-0.12.2.pkg">SFWtorrent-0.12.2.pkg</a> <em>(17MB)</em></li>
<li><a href="/pkgs/SFWrtorrent-0.8.2.pkg">SFWrtorrent-0.8.2.pkg</a> *(1.8MB)</li>
</ul>

<p>enjoy..</p>
]]></content:encoded>
			<wfw:commentRss>http://whacked.net/2008/05/08/updated-rtorrent-libtorrent-packages-for-solaris/feed/</wfw:commentRss>
		</item>
		<item>
		<title>OpenSolaris build support landed in Songbird!</title>
		<link>http://whacked.net/2008/05/07/opensolaris-build-support-landed-in-songbird/</link>
		<comments>http://whacked.net/2008/05/07/opensolaris-build-support-landed-in-songbird/#comments</comments>
		<pubDate>Wed, 07 May 2008 23:47:25 +0000</pubDate>
		<dc:creator>Stephen Lau</dc:creator>
		
		<category><![CDATA[OpenSolaris]]></category>

		<category><![CDATA[Songbird]]></category>

		<guid isPermaLink="false">http://whacked.net/?p=961</guid>
		<description><![CDATA[woot woot poot poot!

preed just landed (here, and here) alfred&#8217;s last two remaining patches for bug 7800: Songbird would be even more cross-platform with OpenSolaris/Solaris support!



so as of now, OpenSolaris support is a first-class citisen in the Songbird SVN repo.  while we won&#8217;t be able provide QA coverage, i&#8217;m bringing up a machine here [...]]]></description>
			<content:encoded><![CDATA[<p>woot woot poot poot!</p>

<p>preed just landed (<a href="http://publicsvn.songbirdnest.com/changeset/9189">here</a>, and <a href="http://publicsvn.songbirdnest.com/changeset/9190">here</a>) alfred&#8217;s last two remaining patches for <a href="http://bugzilla.songbirdnest.com/show_bug.cgi?id=7800">bug 7800</a>: <em>Songbird would be even more cross-platform with OpenSolaris/Solaris support!</em></p>

<p><img src="http://whacked.net/songbird_opensolaris.png" class="photo" style="border: none;"/></p>

<p>so as of now, OpenSolaris support is a first-class citisen in the Songbird SVN repo.  while we won&#8217;t be able provide QA coverage, i&#8217;m bringing up a machine here with <a href="http://www.opensolaris.com/get/index.html">OpenSolaris 2008.05</a> that i hope to turn into a buildbot so we can at least monitor and know when checkins break the OpenSolaris build.</p>

<p>needless to say, i&#8217;m pretty psyched at my two favourite open source projects getting it on. <img src='http://whacked.net/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> </p>

<p>but what&#8217;s really cool is go take a look at <a href="http://bugzilla.songbirdnest.com/show_bug.cgi?id=7800">bug 7800</a>&#8230; i mentioned this at our session at the DevSummit on Sunday: this was a fantastic example of an external contributor working directly via forums and via our Bugzilla, getting code review, updating patches, etc. etc.  the list of patches and comments is probably our longest yet actually.</p>
]]></content:encoded>
			<wfw:commentRss>http://whacked.net/2008/05/07/opensolaris-build-support-landed-in-songbird/feed/</wfw:commentRss>
		</item>
		<item>
		<title>OSDevCon schedule up!</title>
		<link>http://whacked.net/2008/05/07/osdevcon-schedule-up/</link>
		<comments>http://whacked.net/2008/05/07/osdevcon-schedule-up/#comments</comments>
		<pubDate>Wed, 07 May 2008 16:09:15 +0000</pubDate>
		<dc:creator>Stephen Lau</dc:creator>
		
		<category><![CDATA[OpenSolaris]]></category>

		<guid isPermaLink="false">http://whacked.net/?p=960</guid>
		<description><![CDATA[Dirk just mailed out the notifications of acceptance to the various speakers for OSDevCon, and posted the schedule up on the website.

This was my first experience being on a program committee to help select speakers, and I have to say it was fun.  It was great to see submissions from so many people I [...]]]></description>
			<content:encoded><![CDATA[<p>Dirk just mailed out the notifications of acceptance to the various speakers for OSDevCon, and <a href="http://www.osdevcon.org/2008/program.html">posted the schedule</a> up on the website.</p>

<p>This was my first experience being on a program committee to help select speakers, and I have to say it was fun.  It was great to see submissions from so many people I know from the community, and there were definitely some hard selections to be made (I think we had <em>FOUR</em> people submit IPS/packaging proposals!!)</p>

<p>Anyway, glad to see a good mix of some knowledgable Sun folks, as well as some focus on other aspects of OpenSolaris that don&#8217;t get enough attention IMHO (Testing &amp; Localisation/Translation).</p>

<p>Plus&#8230; boat trip!  Seriously!  That would be the only conference I&#8217;ve ever seen with a boat trip + dinner.  I&#8217;m jealous I can&#8217;t make it. <img src='http://whacked.net/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>

<p>Anyway, congratulations to all the speakers.</p>
]]></content:encoded>
			<wfw:commentRss>http://whacked.net/2008/05/07/osdevcon-schedule-up/feed/</wfw:commentRss>
		</item>
		<item>
		<title>4 singing birds</title>
		<link>http://whacked.net/2008/05/05/4-singing-birds/</link>
		<comments>http://whacked.net/2008/05/05/4-singing-birds/#comments</comments>
		<pubDate>Mon, 05 May 2008 20:51:16 +0000</pubDate>
		<dc:creator>Stephen Lau</dc:creator>
		
		<category><![CDATA[OpenSolaris]]></category>

		<category><![CDATA[Songbird]]></category>

		<guid isPermaLink="false">http://whacked.net/?p=959</guid>
		<description><![CDATA[At the OpenSolaris Developer Summit this past weekend, I had the chance to present Songbird.  We thought it would be cool to basically do a group talk, so I enlisted the help of Albert Lee, Alfred Peng, and Ken Mays (all members of both the OpenSolaris community and the Songbird community) and the four [...]]]></description>
			<content:encoded><![CDATA[<p>At the OpenSolaris Developer Summit this past weekend, I had the chance to present Songbird.  We thought it would be cool to basically do a group talk, so I enlisted the help of Albert Lee, <a href="http://blogs.sun.com/pengyang">Alfred Peng</a>, and Ken Mays (all members of both the OpenSolaris community and the Songbird community) and the four of us gave a talk &amp; demo.  </p>

<p><a href="http://www.flickr.com/photos/jimgris/2466375430/"><img src="http://farm4.static.flickr.com/3208/2466375430_44d012395a.jpg?v=0" border="0" class="photo"/></a></p>

<p>(with many thanks to <a href="http://blogs.sun.com/jimgris">Jim Grisanzio</a> for his excellent photo-taking skills and camera)</p>
]]></content:encoded>
			<wfw:commentRss>http://whacked.net/2008/05/05/4-singing-birds/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Reading gzip compressed data via Javascript</title>
		<link>http://whacked.net/2008/05/05/reading-gzip-compressed-data-via-javascript/</link>
		<comments>http://whacked.net/2008/05/05/reading-gzip-compressed-data-via-javascript/#comments</comments>
		<pubDate>Mon, 05 May 2008 15:48:48 +0000</pubDate>
		<dc:creator>Stephen Lau</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<category><![CDATA[Songbird]]></category>

		<guid isPermaLink="false">http://whacked.net/?p=958</guid>
		<description><![CDATA[This weekend while I was working on my Magnatune extension for Songbird, I found I needed to fetch, expand, and parse a remote gzip&#8217;d XML document.  The fetch was easy (XMLHttpRequest), as was the parse (DOMParser), but I had no idea how to do the expand.

Fortunately, Mossop over on extdev pointed me at Mozilla&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>This weekend while I was working on my <a href="http://addons.songbirdnest.com/extensions/detail/226">Magnatune extension for Songbird</a>, I found I needed to fetch, expand, and parse a remote gzip&#8217;d XML document.  The fetch was easy (XMLHttpRequest), as was the parse (DOMParser), but I had no idea how to do the expand.</p>

<p>Fortunately, <a href="http://www.oxymoronical.com/">Mossop</a> over on <a href="irc://irc.mozilla.org/#extdev">extdev</a> pointed me at <a href="http://www.xulplanet.com/references/xpcomref/ifaces/nsIStreamConverter.html">Mozilla&#8217;s streamConverter services</a>.  </p>

<p>Unfortunately there wasn&#8217;t much sample code for me to blatantly rip-off^W^W^Wlearn from, so after much bumbling around like the JS amateur that I am, I finally got something working.  I&#8217;m documenting it here so that hopefully others might find it useful.  Or at the very least, I can look it up again when I will inevitably need to do this again <img src='http://whacked.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>

<p>Mossop first pointed out that I wouldn&#8217;t be able to use XMLHttpRequest and that I would need to open a channel:</p>

<pre><code>// Get the IO service
var ioService = Cc["@mozilla.org/network/io-service;1"]
        .getService(Ci.nsIIOService);
// Create an nsIURI
var mtUri = ioService.newURI(magnatuneURL, null, null);
// Create a channel from that URI
var chan = ioService.newChannelFromURI(mtUri);</code></pre>

<p>Awesome.  The tricky part now is the docs lie.  They say there is a <a href="http://www.xulplanet.com/references/xpcomref/comps/c_streamconv1fromgziptouncompressed.html">gzip to uncompressed stream converter</a> that implements asyncConvertData() and a synchronous convert().  I opt&#8217;d for synchronous since it seemed easier to get working off the bat, but kept getting error messages saying it wasn&#8217;t implemented.  Turns out that&#8217;s true.  The gzip->uncompressed method only implements asyncConvertData.  So now I&#8217;d need to define a stream listener (implementing the <a href="http://www.xulplanet.com/references/xpcomref/ifaces/nsIStreamListener.html">nsiStreamListener</a>) interface.  This is the listener that is invoked for each uncompressed chunk.  It needs to implement onStartRequest, onStopRequest, &amp; onDataAvailable where onDataAvailable is passed the uncompressed data:</p>

<pre><code>function StreamListener() {
    this._data = null;
    this._first = true;
}   

StreamListener.prototype = {
    onStartRequest: function(aReq, aContext) {},
    onStopRequest: function(aReq, aContext, aStatusCode) {
        // this._data is my full uncompressed file now, for Magnatune this is my
        // XML file, so now I can go do whatever I want with it.
        Magnatune.Controller.completeSyncWithStore(this._data);
    },  
    onDataAvailable: function(aReq, aContext, aInputStream, aOffset, aCount) {
        var binInputStream = Cc["@mozilla.org/binaryinputstream;1"]
                    .createInstance(Ci.nsIBinaryInputStream);
        binInputStream.setInputStream(aInputStream);
        if (this._first) {
            this._data = binInputStream.readBytes(binInputStream.available());
            this._first = false;
        } else
            this._data += binInputStream.readBytes(binInputStream.available());
        binInputStream.close();
    }
};</code></pre>

<p>So now that I have my channel open, and my stream listener defined - I need to create my nsIStreamConverter service to take the gzip&#8217;d data from the channel, and pass it to the stream listener so it can do its thing with the uncompressed data.  </p>

<pre><code>// Get the converter service
var converterService = Cc["@mozilla.org/streamConverters;1"]
            .getService(Ci.nsIStreamConverterService);
        
// Instantiate our gzip decompresser converter
var converter = converterService.asyncConvertData("gzip",
            "uncompressed", myListener, null);</code></pre>

<p>So now that we have all our pieces defined, all that&#8217;s left to do is pass the converter to the channel and start the pipeline:</p>

<pre><code>// Initiate the asynchronous open.  This will initiate the connection
// to Magnatune, grab the gzip'd data and pass it to our gzip converter
// which will then call the StreamListener, so our completion hook is
// fired in the StreamListener's onStopRequest()
chan.asyncOpen(converter, null);</code></pre>

<p>Awesome.  So now every Songbird/Magnatune user will be downloading a 300kb gzip&#8217;d file instead of a massive 6MB file each time they sync with the Magnatune DB.</p>
]]></content:encoded>
			<wfw:commentRss>http://whacked.net/2008/05/05/reading-gzip-compressed-data-via-javascript/feed/</wfw:commentRss>
		</item>
		<item>
		<title>magnatune mostly complete</title>
		<link>http://whacked.net/2008/05/01/magnatune-mostly-complete/</link>
		<comments>http://whacked.net/2008/05/01/magnatune-mostly-complete/#comments</comments>
		<pubDate>Fri, 02 May 2008 03:06:40 +0000</pubDate>
		<dc:creator>Stephen Lau</dc:creator>
		
		<category><![CDATA[Music]]></category>

		<category><![CDATA[Songbird]]></category>

		<guid isPermaLink="false">http://whacked.net/?p=956</guid>
		<description><![CDATA[worked some more on the magnatune store interface for Songbird.  got the following up:



it&#8217;s neat. you can browse the 7600+ tracks available at magnatune and play the full length of the song exactly as if it were a local library.  right now clicking the &#8220;buy this track&#8221; button pops up a new browser [...]]]></description>
			<content:encoded><![CDATA[<p>worked some more on the magnatune store interface for Songbird.  got the following up:</p>

<p><img src="http://whacked.net/wp-content/uploads/2008/05/picture-3.png" class="photo"/></p>

<p>it&#8217;s neat. you can browse the 7600+ tracks available at magnatune and <em>play the full length of the song</em> exactly as if it were a local library.  right now clicking the &#8220;buy this track&#8221; button pops up a new browser tab and takes you to the page to enter your info to purchase the MP3 (without the magnatune nag voice at the end of each track that you hear when you play directly from the store)</p>

<p>they have an API for doing purchases directly, but it involves transmitting a credit card number via a URL. ick. i need to test to see if it accepts those variables via POST instead of GET to make it a little more secure.  if that works, then this would be pretty neat.  if i can get a better integrated purchase experience, then i&#8217;ll consider this complete.</p>

<p><em>update</em>: uploaded the <a href="http://addons.songbirdnest.com/extensions/detail/226">add-on here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://whacked.net/2008/05/01/magnatune-mostly-complete/feed/</wfw:commentRss>
		</item>
		<item>
		<title>magnatune for the bird</title>
		<link>http://whacked.net/2008/04/30/magnatune-for-the-bird/</link>
		<comments>http://whacked.net/2008/04/30/magnatune-for-the-bird/#comments</comments>
		<pubDate>Thu, 01 May 2008 05:25:37 +0000</pubDate>
		<dc:creator>Stephen Lau</dc:creator>
		
		<category><![CDATA[MediaWeb]]></category>

		<category><![CDATA[Music]]></category>

		<category><![CDATA[Songbird]]></category>

		<category><![CDATA[magnatune]]></category>

		<guid isPermaLink="false">http://whacked.net/?p=954</guid>
		<description><![CDATA[I first heard of Magnatune at LUG Radio Live where they had a booth setup.  I didn&#8217;t get a chance to check them out until yesterday, and it&#8217;s a pretty cool site.  There&#8217;s some neat electronica up there along with the other usual genres.  Their business model looks pretty interesting too, along [...]]]></description>
			<content:encoded><![CDATA[<p>I first heard of <a href="http://www.magnatune.com">Magnatune</a> at LUG Radio Live where they had a booth setup.  I didn&#8217;t get a chance to check them out until yesterday, and it&#8217;s a pretty cool site.  There&#8217;s some neat electronica up there along with the other usual genres.  Their business model looks pretty interesting too, along with their CC friendliness and promotion of music sharing.</p>

<p>I started mucking about with a Songbird add-on last night and got something working a few hours ago that builds an additional &#8220;Magnatune&#8221; library in Songbird to represent <em>all</em> the tracks available on Magnatune.  You can play them directly from the remote track (yay open web!) currently.  I plan to add a way to purchase the track so it can be added to the local library as well (which should also allow it to be sync&#8217;d after purchase then too).  It&#8217;s been an interesting challenge&#8230; and I&#8217;m still running into a few hiccups, I suspect because of the way I now effectively have two local libraries (which shouldn&#8217;t be <em>that</em> big a deal since devices, etc. all have their own libraries from Songbird&#8217;s perspective).</p>

<p>Anyway, it&#8217;s been a fun project so far&#8230; and I have to say, there&#8217;s something cool about having all 7600+ Magnatune tracks available for direct play within Songbird.  I&#8217;ll definitely post this to the <a href="http://addons.songbirdnest.com">addons</a> site when I&#8217;m done.</p>
]]></content:encoded>
			<wfw:commentRss>http://whacked.net/2008/04/30/magnatune-for-the-bird/feed/</wfw:commentRss>
		</item>
		<item>
		<title>for the last time, i&#8217;m not at Sun anymore</title>
		<link>http://whacked.net/2008/04/29/for-the-last-time-im-not-at-sun-anymore/</link>
		<comments>http://whacked.net/2008/04/29/for-the-last-time-im-not-at-sun-anymore/#comments</comments>
		<pubDate>Tue, 29 Apr 2008 14:23:07 +0000</pubDate>
		<dc:creator>Stephen Lau</dc:creator>
		
		<category><![CDATA[OpenSolaris]]></category>

		<category><![CDATA[OpenSource]]></category>

		<category><![CDATA[ogb]]></category>

		<guid isPermaLink="false">http://whacked.net/?p=953</guid>
		<description><![CDATA[From Dave Neary&#8217;s nicely written blog&#8230; to Theodore, I&#8217;m not at Sun anymore.

I left 7 months ago, while still in my first term on the OGB, and I was re-elected as a community member who does not work for Sun.

I did drink the kool-aid for 4.5 years&#8230; but I&#8217;d like to think I still think [...]]]></description>
			<content:encoded><![CDATA[<p>From <a href="http://blogs.gnome.org/bolsh/2008/04/28/sun-trying-to-do-the-right-thing/">Dave Neary&#8217;s nicely written blog</a>&#8230; to Theodore, I&#8217;m not at Sun anymore.</p>

<p>I left 7 months ago, while still in my first term on the OGB, and I was re-elected as a community member who does not work for Sun.</p>

<p>I did drink the kool-aid for 4.5 years&#8230; but I&#8217;d like to think I still think for myself and have independent thoughts.</p>

<p>kthxbai!</p>
]]></content:encoded>
			<wfw:commentRss>http://whacked.net/2008/04/29/for-the-last-time-im-not-at-sun-anymore/feed/</wfw:commentRss>
		</item>
		<item>
		<title>OMFG!!! jamendo songbird integration!</title>
		<link>http://whacked.net/2008/04/28/omfg-jamendo-songbird-integration/</link>
		<comments>http://whacked.net/2008/04/28/omfg-jamendo-songbird-integration/#comments</comments>
		<pubDate>Mon, 28 Apr 2008 17:16:51 +0000</pubDate>
		<dc:creator>Stephen Lau</dc:creator>
		
		<category><![CDATA[Songbird]]></category>

		<category><![CDATA[Jamendo]]></category>

		<guid isPermaLink="false">http://whacked.net/?p=952</guid>
		<description><![CDATA[omfg, why didn&#8217;t anyone tell me Jamendo started doing Songbird integration!?!?!?!  i&#8217;ve been getting my music via Firefox this whole time.

many thanks to Mike Linksvayer over at Creative Commons for pointing out to me that Jamendo kicks some serious ass in Songbird.

go check out pornophonique&#8217;s 8-bit lagerfeur album.  it&#8217;s wicked 8-bit gameboy-style rock. [...]]]></description>
			<content:encoded><![CDATA[<p>omfg, why didn&#8217;t anyone tell me Jamendo started doing Songbird integration!?!?!?!  i&#8217;ve been getting my music via Firefox this whole time.</p>

<p>many thanks to <a href="http://gondwanaland.com/mlog/">Mike Linksvayer</a> over at <a href="http://creativecommons.org">Creative Commons</a> for pointing out to me that Jamendo kicks some serious ass in Songbird.</p>

<p>go check out <a href="http://www.jamendo.com/en/album/7505">pornophonique&#8217;s 8-bit lagerfeur</a> album.  it&#8217;s wicked 8-bit gameboy-style rock.  my favourite track is &#8220;sad robot&#8221; (the first track)</p>
]]></content:encoded>
			<wfw:commentRss>http://whacked.net/2008/04/28/omfg-jamendo-songbird-integration/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Pomposity</title>
		<link>http://whacked.net/2008/04/22/pomposity/</link>
		<comments>http://whacked.net/2008/04/22/pomposity/#comments</comments>
		<pubDate>Wed, 23 Apr 2008 02:50:23 +0000</pubDate>
		<dc:creator>Stephen Lau</dc:creator>
		
		<category><![CDATA[Rant]]></category>

		<category><![CDATA[interview]]></category>

		<guid isPermaLink="false">http://whacked.net/?p=951</guid>
		<description><![CDATA[Here&#8217;s a tip.  When you&#8217;re applying for a job, in your intro paragraph, don&#8217;t describe yourself as a &#8220;renowned industry icon&#8221;.

About the only good thing I can say about that resume is that the the intro paragraph I read saved me the time of having to read the rest of the resume.
]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a tip.  When you&#8217;re applying for a job, in your intro paragraph, don&#8217;t describe yourself as a &#8220;renowned industry icon&#8221;.</p>

<p>About the only good thing I can say about that resume is that the the intro paragraph I read saved me the time of having to read the rest of the resume.</p>
]]></content:encoded>
			<wfw:commentRss>http://whacked.net/2008/04/22/pomposity/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
