<?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>that's whacked &#187; Code</title>
	<atom:link href="http://whacked.net/categories/code/feed/" rel="self" type="application/rss+xml" />
	<link>http://whacked.net</link>
	<description>thoughts on open spaces</description>
	<lastBuildDate>Sat, 13 Nov 2010 22:05:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Proguard, Android, Ant, and 3rd party external JARs</title>
		<link>http://whacked.net/2010/09/22/proguard-android-ant-and-3rd-party-external-jars/</link>
		<comments>http://whacked.net/2010/09/22/proguard-android-ant-and-3rd-party-external-jars/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 06:48:07 +0000</pubDate>
		<dc:creator>Stephen Lau</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Musings]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[jars]]></category>
		<category><![CDATA[proguard]]></category>

		<guid isPermaLink="false">http://whacked.net/?p=1400</guid>
		<description><![CDATA[I&#8217;ll keep this short and sweet. Dan Galpin covered in a recent blog post how to drop in Proguard &#38; Ant to easily do Android app builds. One hitch is that it doesn&#8217;t work for apps that have third party external jars. The simple fix to get this working is to change the libraryjars line [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll keep this short and sweet.  Dan Galpin <a href="http://android-developers.blogspot.com/2010/09/proguard-android-and-licensing-server.html">covered in a recent blog post</a> how to drop in Proguard &amp; Ant to easily do Android app builds.  One hitch is that it doesn&#8217;t work for apps that have third party external jars.  The simple fix to get this working is to change the libraryjars line from:</p>

<p><code>-libraryjars ${libraryjarpath}</code></p>

<p>to</p>

<p><code>-libraryjars ${external.libs.dir}:${libraryjarpath}</code></p>

<p>p.s. why are all the Android dev blogs posted only by Tim Bray and not the authors directly?
p.p.s. why can&#8217;t we leave comments on the blog posts?</p>
]]></content:encoded>
			<wfw:commentRss>http://whacked.net/2010/09/22/proguard-android-ant-and-3rd-party-external-jars/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Android UI&#8230; fragmentation?</title>
		<link>http://whacked.net/2010/08/03/android-ui-fragmentation/</link>
		<comments>http://whacked.net/2010/08/03/android-ui-fragmentation/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 22:59:20 +0000</pubDate>
		<dc:creator>Stephen Lau</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Musings]]></category>
		<category><![CDATA[Rdio]]></category>

		<guid isPermaLink="false">http://whacked.net/?p=1391</guid>
		<description><![CDATA[Perhaps fragmentation isn&#8217;t the right word&#8230; but this issue certainly confuses me.  It seems trendy to throw about the term &#8216;platform fragmentation&#8217; as it pertains to Android, so I&#8217;ll capitalise on that buzzword and go with that for now.  (To be fair, I&#8217;d love to be proven wrong and will happily eat my words if [...]]]></description>
			<content:encoded><![CDATA[<p>Perhaps fragmentation isn&#8217;t the right word&#8230; but this issue certainly confuses me.  It seems trendy to throw about the term &#8216;platform fragmentation&#8217; as it pertains to Android, so I&#8217;ll capitalise on that buzzword and go with that for now.  (To be fair, I&#8217;d love to be proven wrong and will happily eat my words if someone can point out a better way I should be addressing this).  While developing the <a href="http://rdio.com">Rdio</a> Android app, I&#8217;ve been testing on a bunch of different devices and frankly, with generally stock widgets in use, I&#8217;m running into the problem where widgets look different on each device.  This wouldn&#8217;t be so much an issue, except often times the differences are visual/stylistic tweaks in things like background images or colours which cause our design assets (icons, text colour, etc.) to look bad on one or more devices.</p>

<p>Case in point: TabWidget.  Using a completely stock TabWidget on our app which has minSdkVersion 4 and targetSdkVersion 6, I get the following:</p>

<div id="attachment_1395" class="wp-caption alignleft" style="width: 190px"><a href="http://whacked.net/wp-content/uploads/2010/08/stock_froyo.png"><img class="size-medium wp-image-1395 " title="stock_froyo" src="http://whacked.net/wp-content/uploads/2010/08/stock_froyo-180x300.png" alt="Android 2.2 on Nexus One" width="180" height="300" /></a><p class="wp-caption-text">Android 2.2 on Nexus One</p></div>

<div id="attachment_1394" class="wp-caption alignleft" style="width: 190px"><a href="http://whacked.net/wp-content/uploads/2010/08/sense.png"><img class="size-medium wp-image-1394 " src="http://whacked.net/wp-content/uploads/2010/08/sense-180x300.png" alt="Android 2.1 + Sense UI on HTC Droid Incredible" width="180" height="300" /></a><p class="wp-caption-text">Android 2.1 + Sense UI on HTC Droid Incredible</p></div>

<div id="attachment_1393" class="wp-caption alignleft" style="width: 210px"><a href="http://whacked.net/wp-content/uploads/2010/08/sense_hero.png"><img class="size-medium wp-image-1393 " title="Android 2.1 + Sense UI on HTC Hero" src="http://whacked.net/wp-content/uploads/2010/08/sense_hero-200x300.png" alt="Android 2.1 + Sense UI on HTC Hero" width="200" height="300" /></a><p class="wp-caption-text">Android 2.1 + Sense UI on HTC Hero</p></div>

<p><div id="attachment_1392" class="wp-caption alignleft" style="width: 178px"><a href="http://whacked.net/wp-content/uploads/2010/08/motoblur.png"><img class="size-medium wp-image-1392 " title="motoblur" src="http://whacked.net/wp-content/uploads/2010/08/motoblur-168x300.png" alt="Android 2.1 + Motoblur on Motorola Droid X" width="168" height="300" /></a><p class="wp-caption-text">Android 2.1 + Motoblur on Motorola Droid X</p></div>
</p><p style="clear:left;">In each above screenshot, the leftmost tab is selected (i.e. active/current), the centre tab is focused/pressed (i.e. my finger is currently holding it down but I haven&#8217;t released it, while the rightmost tab is unselected.</p>
<p style="clear:left;">As you can see from the above images, things like the selected and unselected tab icons look fine on the Motoblur and Hero with Sense UI, but look like crap on the Droid Incredible with Sense UI and stock Android on the Nexus One.  Meanwhile text colour looks fine on Motoblur, looks passable on the stock Android, looks mostly awful on the Droid Incredible with Sense UI, and is completely unusable on the Hero with Sense UI.</p>
<p style="clear:left;">One option we have available to us is to hardcode all our own widget styles, which means completely skipping the system look and feel.  This is great for the Rdio brand (i.e. we can use our own highlight colours, etc.).. but this is like going back to the days of the 1337 90s when we were all cool kids in college running Litestep, XFCE, GNOME, etc. and only apps with custom themes and skins.  At some point it gets old, we grow up, and we want apps that match the system styles.  I don&#8217;t mind mobile apps having their unique personality, but I don&#8217;t want widgets having their own custom look and feel.  I want a ListView in one Android app to look and behave like ListViews in other Android apps.  Ditto that for TabWidgets, Buttons, etc.</p>
<p style="clear:left;">But how are we supposed to do that if there isn&#8217;t a standard widget style we can rely on?  Am I just missing something painfully obvious about system-wide styles I should be using?  And what about custom widgets?  For example, in the above screenshots, each album art is clickable and relies on a &#8220;button&#8221; like look and feel to it&#8230; but buttons on stock Android use orange focus/select/press states, while on Sense UI they use green, and on Motoblur they use red.  We need to make custom graphics (in this case a 9patch drawable) for this, so are we expected to make one version for every vendor?</p>
<p style="clear:left;">What are other Android developers doing to get around these annoying vendor-specific extensions and styles to the Android UI?</p>
]]></content:encoded>
			<wfw:commentRss>http://whacked.net/2010/08/03/android-ui-fragmentation/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Songbird is looking for a few good Mozilla Developers</title>
		<link>http://whacked.net/2009/06/10/songbird-is-looking-for-a-few-good-mozilla-developers/</link>
		<comments>http://whacked.net/2009/06/10/songbird-is-looking-for-a-few-good-mozilla-developers/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 15:46:38 +0000</pubDate>
		<dc:creator>Stephen Lau</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Songbird]]></category>

		<guid isPermaLink="false">http://whacked.net/?p=1287</guid>
		<description><![CDATA[Songbird has a few open positions for Mozilla developers. If you&#8217;re interested, or know of someone who is &#8211; please checkout the job description and apply for the job!]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.songbirdnest.com/files/images/gem-bird.png" class="alignleft" width="200"/><a href="http://getsongbird.com">Songbird</a> has a few open positions for Mozilla developers.  If you&#8217;re interested, or know of someone who is &#8211; please <a href="http://www.jobvite.com/j/?cj=oeucVfwz&#038;s=slau">checkout the job description and apply for the job!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://whacked.net/2009/06/10/songbird-is-looking-for-a-few-good-mozilla-developers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>cliKball Growl/tray notifications</title>
		<link>http://whacked.net/2009/03/09/clikball-growltray-notifications/</link>
		<comments>http://whacked.net/2009/03/09/clikball-growltray-notifications/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 18:42:00 +0000</pubDate>
		<dc:creator>Stephen Lau</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[clikball]]></category>

		<guid isPermaLink="false">http://whacked.net/?p=1243</guid>
		<description><![CDATA[I made a small patch to cliKball&#8217;s Firefox extension to use the nsIAlertService to provide system notifications of new items/comments.  On the Mac this uses Growl notifications, on Windows it theoretically uses system tray notifications &#8211; though I haven&#8217;t tested it. Download the following browserOverlay.js and drop it on top of your Firefox&#8217;s extension directory [...]]]></description>
			<content:encoded><![CDATA[<p>I made a small patch to cliKball&#8217;s Firefox extension to use the nsIAlertService to provide system notifications of new items/comments.  On the Mac this uses Growl notifications, on Windows it theoretically uses system tray notifications &#8211; though I haven&#8217;t tested it.</p>

<p>Download the following browserOverlay.js and drop it on top of your Firefox&#8217;s extension directory for the cliKball extension.  On my Mac, that&#8217;s:</p>

<p>~/Library/Application Settings/Firefox/Profiles/*.default/extensions/addon@happyfunlink.com/chrome/content</p>

<p><a href="http://whacked.net/wp-content/uploads/2009/03/browseroverlay.js">browserOverlay.js</a></p>

<p>This was patched against version 0.2.31.1235091994 of the extension.  Caveat emptor, buyer beware, no guarantees, etc. etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://whacked.net/2009/03/09/clikball-growltray-notifications/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</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 &#8211; 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>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>passing parameters to XMLHttpRequest&#8217;s onreadystatechange function</title>
		<link>http://whacked.net/2007/11/27/passing-parameters-to-xmlhttprequests-onreadystatechange-function/</link>
		<comments>http://whacked.net/2007/11/27/passing-parameters-to-xmlhttprequests-onreadystatechange-function/#comments</comments>
		<pubDate>Wed, 28 Nov 2007 04:46:14 +0000</pubDate>
		<dc:creator>Stephen Lau</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[xmlhttprequest]]></category>

		<guid isPermaLink="false">http://whacked.net/2007/11/27/passing-parameters-to-xmlhttprequests-onreadystatechange-function/</guid>
		<description><![CDATA[I&#8217;ve been smashing my head against this all day &#8211; but I finally got something working consistently and reliable, so I better damn well document it. This is as good a place as any, and hopefully it will be useful to others. I needed to make an Ajax call, so I turned to my good [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been smashing my head against this all day &#8211; but I finally got something working consistently and reliable, so I better damn well document it.  This is as good a place as any, and hopefully it will be useful to others.</p>

<p>I needed to make an Ajax call, so I turned to my good friend XMLHttpRequest.  One wrinkle was that I needed to pass in a parameter to it&#8230; so I tried:</p>

<pre>
var test = "bar";
req = new XMLHttpRequest();
req.open("GET", myURL, true);
req.foo = test;
req.onreadystatechange = function() {
    if (this.readyState != 4)
        return;
    if (this.status == 200) {
        alert(this.foo);   // should print out "bar"
    }  
}
req.send(null);
</pre>

<p>For the most part this worked.  Except every now and then&#8230; when it didn&#8217;t.  Most annoyingly, it failed pretty consistently when I was trying to use it within a nested Ajax call (complicated code, don&#8217;t ask.. it&#8217;s not interesting).</p>

<p>I&#8217;m not sure why it doesn&#8217;t work to be honest.  From my understanding, req.foo should just instantiate a new foo member variable of the XMLHttpRequest object I just created and set it to be referenced via &#8216;this.foo&#8217; inside any member function.  I&#8217;m guessing it&#8217;s something to do with the scoping of onreadystatechange being set to the reference of an anonymous function so the anonymous function isn&#8217;t actually part of the XMLHttpRequest object and thus doesn&#8217;t have access to its member variables.  What&#8217;s frustrating is that it works most of the time.  A consistent failure model would actually be more helpful here.</p>

<p>Anyway, enough blabbering, here&#8217;s what seemed to work for me:
<pre>
var test = "bar";
req = new XMLHttpRequest();
req.open("GET", myURL, true);
req.onreadystatechange = function(foo) {
    return function() {
        if (this.readyState != 4)
            return;
        if (this.status == 200) {
            alert(foo);
        };
    }(test);
}
req.send(null);
</pre></p>

<p>Now <em>that</em> works reliably for me 100% of the time.</p>
]]></content:encoded>
			<wfw:commentRss>http://whacked.net/2007/11/27/passing-parameters-to-xmlhttprequests-onreadystatechange-function/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>a cross-disciplinary productive day</title>
		<link>http://whacked.net/2006/09/09/a-cross-disciplinary-productive-day/</link>
		<comments>http://whacked.net/2006/09/09/a-cross-disciplinary-productive-day/#comments</comments>
		<pubDate>Sun, 10 Sep 2006 00:35:17 +0000</pubDate>
		<dc:creator>Stephen Lau</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[OpenSolaris]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Pets]]></category>

		<guid isPermaLink="false">http://whacked.net/2006/09/09/a-cross-disciplinary-productive-day/</guid>
		<description><![CDATA[i&#8217;ve had a fun day catching up on all sorts of little odds and ends i&#8217;d had on my to do list. finished the final step in my migration of all my users&#8217; home directories and web-space to ZFS. setup drupal and started building the portal for my neighbourhood. our neighbourhood improvement association was blowing [...]]]></description>
			<content:encoded><![CDATA[<p>i&#8217;ve had a fun day catching up on all sorts of little odds and ends i&#8217;d had on my to do list.</p>

<ul>
<li>finished the final step in my migration of all my <a href="http://grommit.com">users&#8217;</a> home directories and web-space to ZFS.  </li>
<li>setup <a href="http://drupal.org">drupal</a> and started building the portal for my neighbourhood.  our neighbourhood improvement association was blowing away $45/month on crappy webhosting for a phpBB installation that kept getting hacked, and a mailman list.  it&#8217;d frustrated me long enough that i finally volunteered to be the webmaster.  i&#8217;m in the process of building a new website from scratch that will be a full portal to our neighbourhood and provide blogs, message boards, mailing lists, and web space to any resident, organisation/club, or store in our neighbourhood</li>
<li>did lots of research on various brake pads for my A4.  i&#8217;m planning on replacing my front brake pads tomorrow.  it&#8217;s been tough finding a good recommended brake pad that has a firm bite, not-as-much brake dust, and a proper connection for a wear sensor.  i&#8217;m finding that it&#8217;s hard to find a good firm sport brake that will endure my, shall we say, vigorous, driving that also has a wear sensor.</li>
<li>installed <a href="http://bugs.grommit.com">bugzilla</a> on <a href="http://grommit.com">grommit</a>.  i finally got tired of hearing about our bug database sucking, and the points about project bug-tracking for externally driven projects (like ksh93) are perfectly valid.  yes i realise there is much to be done on <a href="http://bugs.opensolaris.org">b.o.o.</a>, but due to the process, policy, and implementation of Sun&#8217;s bug tracking system, there are lot more constraints of b.o.o.  i do intend to help internally anyway i can to make it better; but in the meantime, hopefully the bugzilla install will let external projects start tracking bugs and <em>just make progress</em></li>
</ul>

<p>my random thoughts for the day:</p>

<ul>
<li>the new <a href="http://www.amazon.com/Dreaming-Through-Noise-Vienna-Teng/dp/B000FZESVM/sr=8-1/qid=1157848731/ref=pd_bbs_1/102-0191107-7392951?ie=UTF8&amp;s=music">vienna teng cd</a> is incredible.  her voice has definitely matured since her first two CDs.  the music is less raw now, a little more polished/produced.  this is neither good, nor bad&#8230; just different.  the CD is brilliant.  highly recommended.</li>
<li>there&#8217;s nothing quite like a freshly bathed beagle as your soft/plush pillow when you&#8217;re taking a nap.  lovely.</li>
<li>it&#8217;s getting colder and gloomier out now.  i took the dogs to <a href="http://www.ebparks.org/parks/ptisable.htm">Pt. Isabel</a>, and actually had to wear a beanie.  this was also my first official soft-shell-jacket wear of the season.  it&#8217;s definitely fall.</li>
<li>i&#8217;d always known Pt. Isabel was big&#8230; i didn&#8217;t realise it was <em>the largest off-leash dog park in the nation</em>.  wow.  go east bay parks <img src='http://whacked.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
<li>the chili/sourdough baguette at the cafe at Pt. Isabel <em>rocks</em>.  highly recommended.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://whacked.net/2006/09/09/a-cross-disciplinary-productive-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SF in jello</title>
		<link>http://whacked.net/2005/10/31/sf-in-jello/</link>
		<comments>http://whacked.net/2005/10/31/sf-in-jello/#comments</comments>
		<pubDate>Mon, 31 Oct 2005 20:02:23 +0000</pubDate>
		<dc:creator>Stephen Lau</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Food]]></category>
		<category><![CDATA[Musings]]></category>

		<guid isPermaLink="false">http://whacked.net/2005/10/31/sf-in-jello/</guid>
		<description><![CDATA[The City my manager sent this to our group&#8230;. entitled &#8220;San Francisco in Jell-O&#8221;. why were we talking about this? it related to me writing a tool in threaded-Perl, which our resident Perl expert had the following endearing remarks on: &#8220;Plus threaded perl is about as unstable as a Jello Empire State building&#8230; &#8220;]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.lizhickok.com/assets/portfolio/pages/01city.html">The City</a></p>

<p>my manager sent this to our group&#8230;. entitled &#8220;San Francisco in Jell-O&#8221;.  why were we talking about this?  it related to me writing a tool in threaded-Perl, which our resident Perl expert had the following endearing remarks on:</p>

<p><i>&#8220;Plus threaded perl is about as unstable as a Jello Empire State building&#8230; &#8220;</i></p>
]]></content:encoded>
			<wfw:commentRss>http://whacked.net/2005/10/31/sf-in-jello/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>build 22 done! (opensol-20050909)</title>
		<link>http://whacked.net/2005/09/09/build-22-done/</link>
		<comments>http://whacked.net/2005/09/09/build-22-done/#comments</comments>
		<pubDate>Sat, 10 Sep 2005 04:50:34 +0000</pubDate>
		<dc:creator>Stephen Lau</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[OpenSolaris]]></category>

		<guid isPermaLink="false">http://whacked.net/?p=547</guid>
		<description><![CDATA[After much crypto review, and a lot of SPARC building&#8230; rebuilding&#8230; and more rebuilding, I&#8217;ve finished the build 22 delivery. New in this release is the following: crypto drivers: aes, arcfour, blowfish, des, rsa GSS, Kerberos, OpenSSH, OpenSSL, some PAM modules, PKCS11, SASL, crypt, wanboot, &#38; the dprov driver. You should be able to find [...]]]></description>
			<content:encoded><![CDATA[<p>After much crypto review, and a lot of SPARC building&#8230; rebuilding&#8230; and more rebuilding, I&#8217;ve finished the build 22 delivery.  New in this release is the following:</p>

<ul>
<li>crypto drivers: aes, arcfour, blowfish, des, rsa</li>
<li>GSS, Kerberos, OpenSSH, OpenSSL, some PAM modules, PKCS11, SASL, crypt, wanboot, &amp; the dprov driver.</li>
</ul>

<p>You should be able to find it on the <a href="http://www.opensolaris.org/os/downloads">OpenSolaris downloads</a> page tomorrow if it gets pushed to SDLC properly.  The source browser probably won&#8217;t be updated until Monday.</p>

<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://whacked.net/2005/09/09/build-22-done/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>more work on grommit and an SMF manifest for mailman</title>
		<link>http://whacked.net/2005/08/14/more-work-on-grommit/</link>
		<comments>http://whacked.net/2005/08/14/more-work-on-grommit/#comments</comments>
		<pubDate>Sun, 14 Aug 2005 23:44:53 +0000</pubDate>
		<dc:creator>Stephen Lau</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Computers]]></category>
		<category><![CDATA[OpenSolaris]]></category>

		<guid isPermaLink="false">http://whacked.net/2005/08/14/more-work-on-grommit/</guid>
		<description><![CDATA[I&#8217;ve spent much of the day working on the new grommit box. Ran the big &#8216;smpatch update&#8217;, got my BIND fix, and I seem to have all my non-web services/applications up and running. Getting mailman up and running was somewhat of a pain. I used it as a good exercise in writing an SMF manifest [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve spent much of the day working on the <a href="http://whacked.net/2005/07/10/bringing-a-new-grommit-online/">new grommit box</a>.  Ran the big &#8216;smpatch update&#8217;, got <a href="http://sunsolve.sun.com/search/document.do?assetkey=1-21-119784-01-1">my BIND fix</a>, and I seem to have all my non-web services/applications up and running.  Getting <a href="http://www.gnu.org/software/mailman/">mailman</a> up and running was somewhat of a pain.  I used it as a good exercise in writing an SMF manifest though.  I ended up deriving one from the network/smtp:sendmail one&#8230; undoubtedly, it could be better, but here you go:</p>

<pre>
<code>&lt; ?xml version='1.0'?&gt;
&lt; !DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'&gt;
&lt;service_bundle type='manifest' name='export'&gt;
  &lt;service name='network/mailman' type='service' version='0'&gt;
    &lt;single_instance /&gt;
    &lt;dependency name='fs-local' grouping='require_all' restart_on='none' type='s
ervice'&gt;
      &lt;service_fmri value='svc:/system/filesystem/local'/&gt;
    &lt;/dependency&gt;
    &lt;dependency name='network-service' grouping='require_all' restart_on='none' 
type='service'&gt;
      &lt;service_fmri value='svc:/network/service'/&gt;
    &lt;/dependency&gt;
    &lt;dependency name='name-services' grouping='require_all' restart_on='refresh'
 type='service'&gt;
      &lt;service_fmri value='svc:/milestone/name-services'/&gt;
    &lt;/dependency&gt;
    &lt;dependency name='identity' grouping='optional_all' restart_on='refresh' typ
e='service'&gt;
      &lt;service_fmri value='svc:/system/identity:domain'/&gt;
    &lt;/dependency&gt;
    &lt;dependency name='system-log' grouping='optional_all' restart_on='none' type
='service'&gt;
      &lt;service_fmri value='svc:/system/system-log'/&gt;
    &lt;/dependency&gt;
    &lt;dependency name='sendmail' grouping='require_all' restart_on='none' type='s
ervice'&gt;
      &lt;service_fmri value='svc:/network/smtp:sendmail'/&gt;
    &lt;/dependency&gt;
    &lt;instance name='mailman' enabled='true'&gt;
      &lt;dependent name='multi-user' restart_on='none' grouping='optional_all'&gt;
        &lt;service_fmri value='svc:/milestone/multi-user'/&gt;
      &lt;/dependent&gt;
      &lt;exec_method name='start' type='method' exec='/lib/svc/method/mailman star
t' timeout_seconds='120'&gt;
        &lt;method_context /&gt;
      &lt;/exec_method&gt;
      &lt;exec_method name='stop' type='method' exec='/lib/svc/method/mailman stop 
%{restarter/contract}' timeout_seconds='60'&gt;
        &lt;method_context /&gt;
      &lt;/exec_method&gt;
      &lt;exec_method name='refresh' type='method' exec='/lib/svc/method/mailman re
start' timeout_seconds='60'&gt;
        &lt;method_context /&gt;
      &lt;/exec_method&gt;
      &lt;property_group name='startd' type='framework'&gt;
        &lt;propval name='ignore_error' type='astring' value='core,signal'/&gt;
      &lt;/property_group&gt;
      &lt;property_group name='general' type='framework'&gt;
        &lt;propval name='action_authorization' type='astring' value='solaris.smf.m
anage.mailman'/&gt;
      &lt;/property_group&gt;
      &lt;template&gt;
        &lt;common_name&gt;
          &lt;loctext xml:lang='C'&gt;GNU mailman mailing list manager&lt;/loctext&gt;
        &lt;/common_name&gt;
      &lt;/template&gt;
    &lt;/instance&gt;
    &lt;stability value='Unstable'/&gt;
  &lt;/service&gt;
&lt;/service_bundle&gt;</code>
</pre>

<p>the main things I have left to get running are all the web apps, specifically: the <a href="http://gallery.sf.net">photo gallery</a>, <a href="http://www.squirrelmail.org">webmail</a>, <a href="http://www.moveabletype.org">blogs</a>, and mysql.</p>
]]></content:encoded>
			<wfw:commentRss>http://whacked.net/2005/08/14/more-work-on-grommit/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

