<?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>Allen Day's Blog &#187; Random musings</title>
	<atom:link href="http://www.spicylogic.com/allenday/blog/category/random-musings/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.spicylogic.com/allenday/blog</link>
	<description>♥data♥</description>
	<lastBuildDate>Mon, 21 Jun 2010 23:28:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Eclipse setup notes for Android and PhoneGap Development</title>
		<link>http://www.spicylogic.com/allenday/blog/2010/06/14/eclipse-setup-notes-for-android-and-phonegap-development/</link>
		<comments>http://www.spicylogic.com/allenday/blog/2010/06/14/eclipse-setup-notes-for-android-and-phonegap-development/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 02:49:48 +0000</pubDate>
		<dc:creator>allenday</dc:creator>
				<category><![CDATA[Random musings]]></category>

		<guid isPermaLink="false">http://www.spicylogic.com/allenday/blog/?p=125</guid>
		<description><![CDATA[
Install Eclipse for Java
Install Android SDK
Install Eclipse plugins


Subclipse http://subclipse.tigris.org/update_1.6.x
Egit http://download.eclipse.org/egit/updates
PyDev http://pydev.org/updates
ADT http://dl-ssl.google.com/android/eclipse

]]></description>
			<content:encoded><![CDATA[<ol>
<li>Install Eclipse for Java</li>
<li>Install Android SDK</li>
<li>Install Eclipse plugins</li>
</ol>
<ul>
<li>Subclipse http://subclipse.tigris.org/update_1.6.x</li>
<li>Egit http://download.eclipse.org/egit/updates</li>
<li>PyDev http://pydev.org/updates</li>
<li>ADT http://dl-ssl.google.com/android/eclipse</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.spicylogic.com/allenday/blog/2010/06/14/eclipse-setup-notes-for-android-and-phonegap-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>8 Keys to Effective Crowdsourcing</title>
		<link>http://www.spicylogic.com/allenday/blog/2010/01/30/8-keys-to-effective-crowdsourcing/</link>
		<comments>http://www.spicylogic.com/allenday/blog/2010/01/30/8-keys-to-effective-crowdsourcing/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 13:27:06 +0000</pubDate>
		<dc:creator>allenday</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Crowdsourcing]]></category>
		<category><![CDATA[Random musings]]></category>
		<category><![CDATA[Scalability]]></category>

		<guid isPermaLink="false">http://www.spicylogic.com/allenday/blog/?p=114</guid>
		<description><![CDATA[The key to effective crowdsourcing is effective communication.  You communicate with your crowdsourced workers so that you can train them.  Training has a measurable cost, and you want to minimize this cost to make most effective use of your time and your budget.
Consider the situation when you&#8217;re in a professional position, or the flipside and [...]]]></description>
			<content:encoded><![CDATA[<p><strong>The key to effective crowdsourcing is effective communication</strong>.  You communicate with your crowdsourced workers so that you can train them.  Training has a measurable cost, and you want to minimize this cost to make most effective use of your time and your budget.</p>
<p>Consider the situation when you&#8217;re in a professional position, or the flipside and you&#8217;re training someone to take on a new role.  Assuming you are/have the &#8220;right&#8221; person with regard to relevant skills to perform the requisite tasks, why is training required?  <strong>Knowledge transfer needs to occur</strong>.  The same is also true for crowdsourced workers.  So how can we effectively transfer knowledge to workers who may only be spending a <em>few seconds</em> on your task?</p>
<p><strong>Key 1: Be consistent.</strong></p>
<p>Use similar phrasings and images for all of your task descriptions.  This allows workers to come up to speed in a minimum amount of time.  Imagine how hard it would be to read your email if each message opened in a differently styled window.  Similar phrasings/images are just one example of how to employ&#8230;</p>
<p><strong>Key 2: Use variables.</strong></p>
<p><a href="http://smartsheet.com">Smartsheet.com</a> got this right.  Have a look at these 2 tasks submitted from Smartsheet to <a href="http://mturk.com">Amazon&#8217;s Mechanical Turk</a>:<br />
<a href="http://img34.imageshack.us/g/picture7au.png/"><img class="alignnone" src="http://img64.imageshack.us/img64/1047/picture8fa.png" alt="" width="400" /></a></p>
<p>Look closely at what&#8217;s going on here.  The two tasks&#8217; input <em>variables</em> (<strong>Blog Name</strong> and <strong>Blog URL</strong>) are identical, only their values change.  Note also that there are 2114 tasks just like this available.  Workers like to have lots of very similar tasks because&#8230;</p>
<p><strong>Key 3: Batch tasks.</strong></p>
<p>Crowdsourced workers like batches of similar tasks because it presents an opportunity for them to set up a workflow, or even write a small computer program to do the tasks for them, for you.  The cost of learning how to do a task is amortized over the entire batch, letting them make more efficient use of time (and letting you make more efficient use of your budget).</p>
<p><strong>Key 4: Be visual.</strong></p>
<p>The adage &#8220;a picture is worth one thousand words&#8221; couldn&#8217;t be more fitting to communicating with crowdsourced workers.  Images are very information dense, are more friendly to scanning, and are able to more quickly communicate non-linear process structure when compared to text.  The most effective visual tool I have found thus far is to&#8230;</p>
<p><strong>Key 5: Use flow charts.</strong></p>
<p>Consider learning to use <a href="http://en.wikipedia.org/wiki/Flowchart">flow charts</a>, and also to <a href="http://www.breezetree.com/images/flow-chart-symbols.png">extend your visual vocabulary</a>.  I&#8217;m an avid user of <a href="http://en.wikipedia.org/wiki/Omnigraffle">OmniGraffle</a> for creating diagrams for crowdsourcing (as well as for myself).  I&#8217;ll be presenting some flow charts in the future.  You will find that by presenting your task graphically and in a formal way as a flow chart (as opposed to simply giving graphical examples), users will do more work for the same price because you&#8217;ve made it easier for them.  The flow chart also forces you be clear about what you want, which brings us to&#8230;</p>
<p><strong>Key 6: Know what you want.  Be unambiguous.</strong></p>
<p>Know what you expect the worker to do for you.  Make each task so simple that it&#8217;s virtually impossible for a worker to do it incorrectly.  Break up complex tasks into their most elementary pieces.  Ideally one task = one decision.  Make each task closed-ended.  Do not leave any room for ambiguity.</p>
<p>Designing tasks in this way requires more effort on your part, but will result in less money spent and higher-quality results.</p>
<p><strong>Key 7: Improve through iteration.</strong></p>
<p>Being unambiguous on the first try is nigh on impossible.  It&#8217;s for the same reason that you &#8220;bounce&#8221; ideas off of your peers/friends &#8212; to see how your approach to an idea or task might be sub-optimal or misunderstood.</p>
<p>Iteratively remove ambiguity.  Submit a sampling tasks out of a larger batch with a test task description.  See where the crowdsourced workers make mistakes.  Re-examine your task description to a) find the misunderstanding, and b) disambiguate it.</p>
<p><strong>Key 8. Build validators into your tasks.</strong></p>
<p>Make sure the worker&#8217;s work is validated before it gets to you.  This could mean having workers check each others&#8217; work, and can even involve some fancy statistics.  It could also mean writing a bit of javascript or some other backend systems to validate worker inputs (e.g. you ask for a minimum 300-word document.  count the words with javascript before they submit).  This is getting a bit more advanced, but opens more opportunity for more complex tasks by delegating part of the work to the computer.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spicylogic.com/allenday/blog/2010/01/30/8-keys-to-effective-crowdsourcing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>G1 cupcake upgrade</title>
		<link>http://www.spicylogic.com/allenday/blog/2009/05/17/g1-cupcake-upgrade/</link>
		<comments>http://www.spicylogic.com/allenday/blog/2009/05/17/g1-cupcake-upgrade/#comments</comments>
		<pubDate>Sun, 17 May 2009 07:31:08 +0000</pubDate>
		<dc:creator>allenday</dc:creator>
				<category><![CDATA[Random musings]]></category>

		<guid isPermaLink="false">http://www.spicylogic.com/allenday/blog/2009/05/17/g1-cupcake-upgrade/</guid>
		<description><![CDATA[I&#8217;m using a T-mobile Android G1 on AT&#038;T network.  I don&#8217;t have a T-mobile SIM at all, and I wasn&#8217;t getting the Cupcake upgrade through the system menu, either when using AT&#038;T EDGE or using WiFi.
So I followed this guide: http://www.androidandme.com/2009/05/guides/beginners-guide-for-rooting-your-android-g1-to-install-cupcake/
Worked great and easy/no-hassle to follow for an Android n00b like myself.  Best [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m using a T-mobile Android G1 on AT&#038;T network.  I don&#8217;t have a T-mobile SIM at all, and I wasn&#8217;t getting the Cupcake upgrade through the system menu, either when using AT&#038;T EDGE or using WiFi.</p>
<p>So I followed this guide: <a href="http://www.androidandme.com/2009/05/guides/beginners-guide-for-rooting-your-android-g1-to-install-cupcake/">http://www.androidandme.com/2009/05/guides/beginners-guide-for-rooting-your-android-g1-to-install-cupcake/</a></p>
<p>Worked great and easy/no-hassle to follow for an Android n00b like myself.  Best and most comprehensive one I could find.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spicylogic.com/allenday/blog/2009/05/17/g1-cupcake-upgrade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Standalone BitTorrent Checksum Verification Tool</title>
		<link>http://www.spicylogic.com/allenday/blog/2009/04/20/standalone-bittorrent-checksum-verification-tool/</link>
		<comments>http://www.spicylogic.com/allenday/blog/2009/04/20/standalone-bittorrent-checksum-verification-tool/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 23:11:43 +0000</pubDate>
		<dc:creator>allenday</dc:creator>
				<category><![CDATA[Random musings]]></category>

		<guid isPermaLink="false">http://www.spicylogic.com/allenday/blog/2009/04/20/standalone-bittorrent-checksum-verification-tool/</guid>
		<description><![CDATA[I&#8217;m writing some scripts to let me automate the downloading and seeding of torrents.  The idea is to have torrents pulled in from RSS or a screenscrape (much as Azureus does this, but I want to script everything with Python/Mainline BitTorrent, bash, and Perl), then to sit on the torrents for a day or [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m writing some scripts to let me automate the downloading and seeding of torrents.  The idea is to have torrents pulled in from RSS or a screenscrape (much as Azureus does this, but I want to script everything with Python/Mainline BitTorrent, bash, and Perl), then to sit on the torrents for a day or so after their last mtime, then checksum them and if they&#8217;re good move them elsewhere for watching, etc.</p>
<p>Part of this requires checksumming the files, and Mainline doesn&#8217;t ship with a standalone utility to do this.  So I wrote one in Perl, see below.  This only handles single-file torrents for now (i.e. no directories of files).</p>

<div class="wp_syntax"><div class="code"><pre class="perl"><span style="color: #808080; font-style: italic;">#!/usr/bin/perl</span>
$<span style="color: #66cc66;">|</span>++;
<span style="color: #000000; font-weight: bold;">use</span> strict;
<span style="color: #000000; font-weight: bold;">use</span> Convert::<span style="color: #006600;">Bencode_XS</span> <span style="color: #000066;">qw</span><span style="color: #66cc66;">&#40;</span>bdecode<span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">use</span> Data::<span style="color: #006600;">Dumper</span>;
<span style="color: #000000; font-weight: bold;">use</span> Digest::<span style="color: #006600;">SHA1</span> <span style="color: #000066;">qw</span><span style="color: #66cc66;">&#40;</span>sha1<span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">use</span> URI::<span style="color: #006600;">Escape</span> <span style="color: #000066;">qw</span><span style="color: #66cc66;">&#40;</span>uri_escape<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$base</span> = <span style="color: #000066;">shift</span> <span style="color: #0000ff;">@ARGV</span>;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$torrent</span> = <span style="color: #ff0000;">&quot;$base.torrent&quot;</span>;
&nbsp;
<span style="color: #000066;">open</span><span style="color: #66cc66;">&#40;</span> T, <span style="color: #0000ff;">$torrent</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span> $<span style="color: #66cc66;">!</span>;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$torrent_data</span> = <span style="color: #000066;">join</span> <span style="color: #ff0000;">''</span>, <span style="color: #009999;">&lt;T&gt;</span>;
<span style="color: #000066;">close</span><span style="color: #66cc66;">&#40;</span> T <span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$metainfo</span> = bdecode<span style="color: #66cc66;">&#40;</span> <span style="color: #0000ff;">$torrent_data</span> <span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$file_name</span> = <span style="color: #ff0000;">&quot;$base/&quot;</span> . <span style="color: #0000ff;">$metainfo</span>-<span style="color: #66cc66;">&gt;</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">'info'</span><span style="color: #66cc66;">&#125;</span>-<span style="color: #66cc66;">&gt;</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">'name'</span><span style="color: #66cc66;">&#125;</span>;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$file_length</span> = <span style="color: #0000ff;">$metainfo</span>-<span style="color: #66cc66;">&gt;</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">'info'</span><span style="color: #66cc66;">&#125;</span>-<span style="color: #66cc66;">&gt;</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">'length'</span><span style="color: #66cc66;">&#125;</span>;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$piece_length</span> = <span style="color: #0000ff;">$metainfo</span>-<span style="color: #66cc66;">&gt;</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">'info'</span><span style="color: #66cc66;">&#125;</span>-<span style="color: #66cc66;">&gt;</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">'piece length'</span><span style="color: #66cc66;">&#125;</span>;
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$pieces</span> = <span style="color: #0000ff;">$metainfo</span>-<span style="color: #66cc66;">&gt;</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">'info'</span><span style="color: #66cc66;">&#125;</span>-<span style="color: #66cc66;">&gt;</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">'pieces'</span><span style="color: #66cc66;">&#125;</span>;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@pieces</span> = <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$offset</span> = <span style="color: #cc66cc;">0</span>;
<span style="color: #b1b100;">while</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #0000ff;">$offset</span> <span style="color: #66cc66;">&lt;</span> <span style="color: #000066;">length</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0000ff;">$pieces</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
  <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$p</span> = <span style="color: #000066;">substr</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0000ff;">$pieces</span>, <span style="color: #0000ff;">$offset</span>, <span style="color: #cc66cc;">20</span> <span style="color: #66cc66;">&#41;</span>;
  <span style="color: #0000ff;">$offset</span> += <span style="color: #cc66cc;">20</span>;
  <span style="color: #000066;">push</span> <span style="color: #0000ff;">@pieces</span>, <span style="color: #0000ff;">$p</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #000066;">open</span><span style="color: #66cc66;">&#40;</span> F, <span style="color: #0000ff;">$file_name</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span>;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$seek</span> = <span style="color: #cc66cc;">0</span>;
<span style="color: #b1b100;">foreach</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$p</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #0000ff;">@pieces</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
  <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$buf</span> = <span style="color: #ff0000;">''</span>;
  <span style="color: #000066;">seek</span><span style="color: #66cc66;">&#40;</span> F, <span style="color: #0000ff;">$seek</span>, <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">&#41;</span>;
  <span style="color: #000066;">read</span><span style="color: #66cc66;">&#40;</span> F, <span style="color: #0000ff;">$buf</span>, <span style="color: #0000ff;">$piece_length</span> <span style="color: #66cc66;">&#41;</span>;
  <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #0000ff;">$p</span> eq sha1<span style="color: #66cc66;">&#40;</span> <span style="color: #0000ff;">$buf</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #000066;">print</span> <span style="color: #ff0000;">'.'</span>;
  <span style="color: #66cc66;">&#125;</span>
  <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #000066;">print</span> <span style="color: #ff0000;">'x'</span>;
  <span style="color: #66cc66;">&#125;</span>
  <span style="color: #0000ff;">$seek</span> += <span style="color: #0000ff;">$piece_length</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #000066;">close</span><span style="color: #66cc66;">&#40;</span> F <span style="color: #66cc66;">&#41;</span>;</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.spicylogic.com/allenday/blog/2009/04/20/standalone-bittorrent-checksum-verification-tool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>a small world / celebrity encounter</title>
		<link>http://www.spicylogic.com/allenday/blog/2008/12/09/a-small-world-celebrity-encounter/</link>
		<comments>http://www.spicylogic.com/allenday/blog/2008/12/09/a-small-world-celebrity-encounter/#comments</comments>
		<pubDate>Wed, 10 Dec 2008 06:41:04 +0000</pubDate>
		<dc:creator>allenday</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Random musings]]></category>

		<guid isPermaLink="false">http://www.spicylogic.com/allenday/blog/2008/12/09/a-small-world-celebrity-encounter/</guid>
		<description><![CDATA[1. Noticed a new Tesla Motors showroom in Los Angeles at Sepulveda/405 on Santa Monica Blvd last night on my drive to my guitar lesson.  Made a mental note to stop by and check it out, looks like they have some museum-style exhibits &#8211;fuel cell cutaways, etc of the car.
2. Was talking it up [...]]]></description>
			<content:encoded><![CDATA[<p>1. Noticed a new <a href="http://teslamotors.com">Tesla Motors</a> showroom in Los Angeles at Sepulveda/405 on Santa Monica Blvd last night on my drive to my <a href="http://boulevardmusic.com">guitar lesson</a>.  Made a mental note to stop by and check it out, looks like they have some museum-style exhibits &#8211;fuel cell cutaways, etc of the car.</p>
<p>2. Was talking it up to some friends/coworkers earlier today.</p>
<p>3. Was planning to go to the <a href="http://www.meetup.com/hadoopla/calendar/8964698/">Hadoop Meetup</a> tonight at <a href="http://mahalo.com">Mahalo</a>, but skipped it and worked late.</p>
<p>4. Saw an orange <a href="http://lotuscars.com">Lotus</a> pass me on the way home&#8230; but wait&#8230; it has a TESLA logo!  I pursued, thinking it was kind of late for a test drive.</p>
<p>5. Pulled up at a red light to listen to the silence / congratulate the driver on his <a href="http://www.facebook.com/album.php?aid=68116&#038;id=504598293#/photo.php?pid=1582758&#038;id=504598293">nice ride</a>.  Honked my horn.</p>
<p>6. Driver rolls down the window and turns to me, and it&#8217;s none other than the CEO of Mahalo, <a href="http://www.calacanis.com">Jason Calacanis</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spicylogic.com/allenday/blog/2008/12/09/a-small-world-celebrity-encounter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blogroll fleshed out</title>
		<link>http://www.spicylogic.com/allenday/blog/2008/12/02/blogroll-fleshed-out/</link>
		<comments>http://www.spicylogic.com/allenday/blog/2008/12/02/blogroll-fleshed-out/#comments</comments>
		<pubDate>Tue, 02 Dec 2008 08:22:03 +0000</pubDate>
		<dc:creator>allenday</dc:creator>
				<category><![CDATA[Random musings]]></category>

		<guid isPermaLink="false">http://www.spicylogic.com/allenday/blog/2008/12/02/blogroll-fleshed-out/</guid>
		<description><![CDATA[I&#8217;ve recently and in the past had several requests for my newsfeed reading list.
I don&#8217;t really use a proper newsreader.  I use the &#8220;Web Clips&#8221; option in Gmail.  It&#8217;s like a poor man&#8217;s newsreader.  You can add RSS feeds under Settings > Web Clips, and article titles will appear in the bar [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently and in the past had several requests for my newsfeed reading list.</p>
<p>I don&#8217;t really use a proper newsreader.  I use the &#8220;Web Clips&#8221; option in Gmail.  It&#8217;s like a poor man&#8217;s newsreader.  You can add RSS feeds under Settings > Web Clips, and article titles will appear in the bar above your mailbox, interleaved among the advertising that Google places there.  You can only have up to 40 (shame on Google!) but it works well enough.</p>
<p>Anyway, I dumped out the links today into my blogroll.  You can see them in the sidebar.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spicylogic.com/allenday/blog/2008/12/02/blogroll-fleshed-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building a men’s wardrobe from scratch, part 2</title>
		<link>http://www.spicylogic.com/allenday/blog/2008/11/13/building-a-men%e2%80%99s-wardrobe-from-scratch-part-2/</link>
		<comments>http://www.spicylogic.com/allenday/blog/2008/11/13/building-a-men%e2%80%99s-wardrobe-from-scratch-part-2/#comments</comments>
		<pubDate>Fri, 14 Nov 2008 04:15:37 +0000</pubDate>
		<dc:creator>allenday</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[Random musings]]></category>

		<guid isPermaLink="false">http://www.spicylogic.com/allenday/blog/?p=93</guid>
		<description><![CDATA[In part 1, I described my experience with trying various designers for fit, and assessing what type of wardrobe items I should buy to begin.  I also described where I&#8217;ve been considering picking up some items, and how I might go about doing that.
In evaluating the possible strategies for building the wardrobe, I&#8217;m considering [...]]]></description>
			<content:encoded><![CDATA[<p>In part 1, I described my experience with trying various designers for fit, and assessing what type of wardrobe items I should buy to begin.  I also described where I&#8217;ve been considering picking up some items, and how I might go about doing that.</p>
<p>In evaluating the possible strategies for building the wardrobe, I&#8217;m considering the following factors:</p>
<ul>
<li>time units to acquire a garment</li>
<li>effort per unit time to acquire a garment</li>
<li>garment price, as a fraction of retail</li>
<li>garment quality</li>
</ul>
<p>These are not necessarily conflicting factors, but there are definitely some inverse relationships.  For instance, if I want to minimize time and effort, price will certainly go up.  So I can wait; I&#8217;m not in a rush.  I&#8217;m also not much of an active shopper and I don&#8217;t want to spend lots of time running around town or shopping online, so I want to reduce effort.  I also don&#8217;t want to compromise on quality, and I&#8217;m willing to pay more to get what I want.  I&#8217;m also willing to wait longer to get a lower price.</p>
<p>Here&#8217;s what I&#8217;m doing:</p>
<ol>
<li>Subscribe to department store mailing lists.  Here are some deep links to sign up for:
<ul>
<li><a href="https://www.saksfifthavenue.com/html/email_popup/email_collect_popup_main.jsp?bmForm=email_updates_form_one1&#038;bmFormID=1226635774412&#038;bmUID=1226635774412&#038;bmIsForm=true&#038;bmPrevTemplate=%2Fstores%2Fstores.jsp&#038;bmText=EmailUpdateString&#038;EmailUpdateString=&#038;bmImage=email_updates_form_one_save.x&#038;bmImage=email_updates_form_one_save.y&#038;bmImage=email_updates_form_one_save&#038;email_updates_form_one_save.x=9&#038;email_updates_form_one_save.y=11&#038;bmHidden=prp13&#038;prp13=b5">Saks Fifth Avenue</a>,</li>
<li><a href="http://production.web.barneys.demandware.net/on/demandware.store/Sites-BNY-Site/default/Link-Newsletter?1=1">Barneys</a>,</li>
<li><a href="http://www.neimanmarcus.com/store/user/registerforemail.jhtml?_DARGS=/store/nav/transitional_footer.jhtml.5&#038;_dynSessConf=4317788104847327131">Neiman Marcus</a>.</li>
</ul>
<p>This way I&#8217;ll be sure to be notified of clearances like the <a href="http://barneys.com">Barneys</a> <a href="http://www.barkerhangar.com/">Barker Hangar</a> <a href="http://www.yelp.com/biz/barneys-new-york-warehouse-sale-santa-monica">warehouse sale</a>.  My impression so far is that Barneys sends out a ton of spam &#8212; like 1-2 per day!  Yuck!  I haven&#8217;t received any mail from the other two yet in the ~5 days I&#8217;ve been on-list.
</li>
<li>Subscribe to eBay watch lists.  You can set up a watch.  It&#8217;s like a brokerage trade trigger and emails if new items are listed that match your search terms/categories/sizes.
<ul>
<li>For example, I&#8217;m subscribed to a search for Kiton 42L sportcoat.</li>
<li>I&#8217;m also subscribed to the word <i>couture</i> along with some other terms <a href="http://shop.ebay.com/items/Blazers-Sport-Coats__couture">like so</a>.  You see this word appear in the higher-end lines for many designers, or sartorially-oriented sellers on eBay will use it in their titles/product descriptions.  Along the same lines, you could subscribe to <i>Purple Label</i> to get alerts on high-end Ralph Lauren items if you like those.</li>
</ul>
</li>
<li>Subscribe to the <a href="http://askandyaboutclothes.com">AskAndyAboutClothes</a> sale forum.  It appears to be a very active sale forum.  The sellers are frequently announcing sales in there and linking to their eBay profiles.  I&#8217;m using this as a form of vetting of the sellers on eBay as the AAAC forum seems reputable.  This subscription doesn&#8217;t allow filtering of items by size, etc.  The very low prices more than make up for the effort of checking the forum regularly.
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.spicylogic.com/allenday/blog/2008/11/13/building-a-men%e2%80%99s-wardrobe-from-scratch-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building a men&#8217;s wardrobe from scratch, part 1</title>
		<link>http://www.spicylogic.com/allenday/blog/2008/11/11/building-a-mens-wardrobe-from-scratch-part-1/</link>
		<comments>http://www.spicylogic.com/allenday/blog/2008/11/11/building-a-mens-wardrobe-from-scratch-part-1/#comments</comments>
		<pubDate>Tue, 11 Nov 2008 08:41:45 +0000</pubDate>
		<dc:creator>allenday</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[Random musings]]></category>

		<guid isPermaLink="false">http://www.spicylogic.com/allenday/blog/?p=91</guid>
		<description><![CDATA[
I&#8217;ve been looking into building a wardrobe for a few months now.  I&#8217;m going to summarize what I&#8217;ve learned in this post.  Mainly through hyperlinks.  I&#8217;m writing at novice level of knowledge at best, so caveat emptor with all of this.
Motivation for this post: I&#8217;ve been finding that with greater frequency I&#8217;m [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://img140.imageshack.us/img140/2719/img0018zk9.jpg"><img src='http://img140.imageshack.us/img140/2719/img0018zk9.jpg' alt='swatches' class='alignright' width="200"/></a></p>
<p>I&#8217;ve been looking into building a wardrobe for a few months now.  I&#8217;m going to summarize what I&#8217;ve learned in this post.  Mainly through hyperlinks.  I&#8217;m writing at novice level of knowledge at best, so caveat emptor with all of this.</p>
<p>Motivation for this post: I&#8217;ve been finding that with greater frequency I&#8217;m not able to attend social events because I don&#8217;t own formal (or even semi-formal) clothing.  That&#8217;s right, I only own jeans, short sleeve buttoned- and t-shirts, jeans, flip flops, and sneakers.  Goose thief on the AskAndyAboutClothes forum put it really well, so I&#8217;ll quote from <a href="http://www.askandyaboutclothes.com/forum/showthread.php?t=86323">his thread</a>:</p>
<blockquote><p>
I am new to this forum, but have been lurking for a few months. I would humbly like to consult the collective wisdom of this community for assistance.</p>
<p>I am a 31 year old writer and have recently moved to Los Angeles. Like many in my field, I kick it casual in t-shirts and jeans with a pair of sneakers to round out the slacker uniform.</p>
<p>Recently I suited up for a meeting to accept a new job. The suit was OTR, but fit well and I splurged on a MTM shirt.</p>
<p>As far as shirts go, there is no going back. A garment made to fit my measurements not only makes sense, but paying a craftsman is a rewarding experience. The difference in comfort was also incredible.</p>
<p>What surprised me most however was how differently people treated me. Not that they are rude to me when I am not dressed up, but by me doing so, it actually seemed to brighten the mood of those I walked by.</p>
<p>Which led me to ask the question. If I feel more comfortable, look better, and have greater power to please &#8211; why am I still dressing like a man child?
</p></blockquote>
<p>Nice.  Sounds a lot like me.  Even lives in LA.</p>
<p>Anyway, first thing I did a couple months back was go to several department stores in Los Angeles.  First stop was Bloomingdale&#8217;s in Century City, followed by <a href="http://www.alandales.com">Alandales</a> in Culver City, and finally in Beverly Hills I went to Barney&#8217;s NY, Neiman Marcus, and Saks Fifth Avenue.  I did this over the space of 2 days, and tried on every designer label I could find so I could calibrate quickly and compare everything while I was in the mode of comparing what to me seemed like very similar items.</p>
<p>I was surpised to find there is actually quite a bit of variety, and found there were generally two types of coats, those I liked and those I didn&#8217;t <img src='http://www.spicylogic.com/allenday/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .  Seriously though, there are some coats which are Neapolitan-style, and others that are Roman.  They differ in the amount of structure built into the garment.  A salesman at Barney&#8217;s described the Roman style as being more like a suit of armor.  It definitely felt like that, and I definitely preferred the Neapolitan style.</p>
<p>I also noticed that the amount of handwork that goes into each garment really does make a huge difference in my perceived quality of the fit and appearance of the garment.  On the appearance it&#8217;s possible that the fabrics just looked nicer, but I got to the point that I could tell the mass-produced coats from the handmade coats even without looking at the label.  They&#8217;re that different.  Noticeably more comfortable.  Visual detail is also noticeable.  For instance, the garments with more handwork have little things like pique/contrast stitching on the lapels and working buttonholes on the sleeves.  Of course, the price of the garment goes up along with the number of hours of human labor used to make them.  I found that I particularly liked the garments from <a href="http://www.kiton.it/kitita/index.htm">Kiton</a>****, <a href="http://www.isaia.it/">Isaia</a>, <a href="http://www.zegna.com/">Zegna</a>.  <a href="http://www.dolcegabbana.com/">Dolce &#038; Gabbana</a> and <a href="http://www.theory.com/">Theory</a> were also nice.</p>
<p>Now, I&#8217;m just starting to build out a wardrobe, so I&#8217;m looking for a few basic key pieces from which I can get the most value.  A sportcoat fits the bill here.  As I learned, a sportcoat is a specific type of coat that generally has the pockets sewn on the outside with flaps at the top.  It&#8217;s meant to be worn with jeans or pants.  A blazer is a subclass of sportcoat that is made of solid fabric, typically navy, charcoal, or black.  All other sportcoats are made of patterned fabric.</p>
<p>Again, not looking to spend a lot of money.  It seems there are several ways to stretch the dollars.</p>
<ol>
<li>Sale shop.  Last-call clearance items are typically 50-80% off.  I&#8217;m now on several dept. store mailing lists for a few months.  The best sale is around the beginning of the year because it&#8217;s where you can get garments that can be worn year-round, as opposed to the lighter weight garments that would be available in a summer or fall clearance sale.</li>
<li>Outlet malls.  Maybe Palm Springs or Las Vegas for those also in SoCal.  This might not work for me, as I&#8217;m a 42L which is a slightly unusual size.</li>
<li>Barneys has a warehouse clearance sale twice a year at the <a href="http://www.barkerhangar.com/specs.htm">Barker Hangar</a> in Santa Monica, approximately in August and February.</li>
<li>Ebay.  I can occassionally find a Kiton 42L on Ebay, but it&#8217;s hard.  I&#8217;ve bid on a few items, but I don&#8217;t really know yet what a good deal is.  I&#8217;m also a little freaked out about the prevalance of counterfeit garments on Ebay.  I&#8217;ll keep looking and post on this again later.  It looks promising.</li>
<li>Thrift stores.  Apparently you can get good stuff at Goodwill, etc.  Maybe not in this economy though, it could be well picked over.  I also don&#8217;t know which Goodwill stores have the good stuff.  Beverly Hills maybe?  Need to do more research here.</li>
<li>Student deals.  I&#8217;m not a student anymore, but for those readers who are&#8230; some of the manufacturers give steep discounts for grad students.  Brooks Brothers is apparently having a 40% discount for grad students right now.  Check it out.</li>
</ol>
<p>I looked into other guides on how to build a wardrobe.  I found some good stuff here:</p>
<ul>
<li><a href="http://www.askandyaboutclothes.com/forum/showthread.php?t=69480">askandyaboutclothes.com</a> &#8211; amazing article on pattern matching on an amazing site.  I&#8217;ve been doing a lot of reading here for the last couple of days.  Wow.</li>
<li><a href="http://www.wikihow.com/Build-a-Basic-Men's-Wardrobe">Wikihow</a> has an article on building a basic men&#8217;s wardrobe.  Seems like reasonable advice.  AskAndy&#8230; also has some great threads/advice on this topic, like <a href="http://www.askandyaboutclothes.com/forum/showthread.php?t=47058">this one</a> and <a href="http://www.askandyaboutclothes.com/forum/showthread.php?t=87768">this one</a>.</li>
</ul>
<p>I really liked the sales staff in Alandales.  Stan was the salesman helping me, and he gave me a lot of attention and answered a lot of questions.  These guys are working w/o commission, and it showed.  I didn&#8217;t feel pressured/ignored like I did in the dept. stores (exception: Barneys was also great), and the staff seemed knowledgeable.</p>
<p>I&#8217;m going to take the advice of the Wikihow article and get a few made-to-measure (MTM) shirts from Alandales.  They take measurements and send off to a tailor that makes shirts for them.  Seems like an inexpensive way to get the process going, and I&#8217;ll need a few shirts no matter what other items I buy anyway.  I might also buy an off-the-rack (OTR) high-end designer shirt from Ebay to see if its worth spending any money here.</p>
<p>To be continued&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spicylogic.com/allenday/blog/2008/11/11/building-a-mens-wardrobe-from-scratch-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Some Kickass Wordpress Plugins</title>
		<link>http://www.spicylogic.com/allenday/blog/2008/09/21/some-kickass-wordpress-plugins/</link>
		<comments>http://www.spicylogic.com/allenday/blog/2008/09/21/some-kickass-wordpress-plugins/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 01:50:01 +0000</pubDate>
		<dc:creator>allenday</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Random musings]]></category>

		<guid isPermaLink="false">http://www.spicylogic.com/allenday/blog/2008/09/21/some-kickass-wordpress-plugins/</guid>
		<description><![CDATA[I was looking for a plugin to count unique views per post and found Lester Chan&#8217;s bunch of Wordpress plugins.  I&#8217;ll be adding some of these shortly.
One of the most viewed posts on this blog is one of my first: A review of Costco stainless steel cookware.  Would you have guessed that?  [...]]]></description>
			<content:encoded><![CDATA[<p>I was looking for a plugin to count unique views per post and found <a href="http://lesterchan.net/portfolio/programming/php/">Lester Chan&#8217;s</a> bunch of Wordpress plugins.  I&#8217;ll be adding some of these shortly.</p>
<p>One of the most viewed posts on this blog is one of my first: <a href="http://www.spicylogic.com/allenday/blog/2008/05/06/costco-stainless-steel-cookware-review/">A review of Costco stainless steel cookware</a>.  Would you have guessed that?  I wonder if it&#8217;s highly rated&#8230; we&#8217;ll find out.</p>
<p>I&#8217;m still surprised it&#8217;s my #1 post.  Perhaps it&#8217;s more evidence that I should be posting more non-technical stuff, and some kind of argument against making a super-niche blog.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spicylogic.com/allenday/blog/2008/09/21/some-kickass-wordpress-plugins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thoughts on Hadoop JobTracker/TaskTracker Scheduling</title>
		<link>http://www.spicylogic.com/allenday/blog/2008/09/11/thoughts-on-hadoop-tasktracker-jobtrackerscheduling/</link>
		<comments>http://www.spicylogic.com/allenday/blog/2008/09/11/thoughts-on-hadoop-tasktracker-jobtrackerscheduling/#comments</comments>
		<pubDate>Fri, 12 Sep 2008 01:07:59 +0000</pubDate>
		<dc:creator>allenday</dc:creator>
				<category><![CDATA[Distributed Systems]]></category>
		<category><![CDATA[Hadoop]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Random musings]]></category>
		<category><![CDATA[SGE]]></category>

		<guid isPermaLink="false">http://www.spicylogic.com/allenday/blog/?p=67</guid>
		<description><![CDATA[Had a brief, interesting conversation on freenode #hadoop today with Rapleaf Engineer Nathan Marz today about scheduling in Hadoop.
Pretty much supports my sense that scheduling is not Hadoop&#8217;s strong suit.  It&#8217;s really pretty shitty.  Would be great to see some more cross-pollination between the Beowulf (SGE, PBS, Globus) and MapReduce (Hadoop, HBase) communities. [...]]]></description>
			<content:encoded><![CDATA[<p>Had a brief, interesting conversation on freenode #hadoop today with <a href="http://blog.rapleaf.com/2008/06/11/rapleafs-newest-engineer-nathan-marz/">Rapleaf Engineer Nathan Marz</a> today about scheduling in Hadoop.</p>
<p>Pretty much supports my sense that scheduling is not Hadoop&#8217;s strong suit.  It&#8217;s really pretty shitty.  Would be great to see some more cross-pollination between the Beowulf (SGE, PBS, Globus) and MapReduce (Hadoop, HBase) communities.  The former have more mature scheduling, resource management and permissions models.  They don&#8217;t really do a good job thought with providing a framework for distributed, parallel computing at the application level though &#8212; everything is roll-your-own.  Perhaps Hadoop could be integrated as a parallel environment to consume resources from a SGE master [<a href="http://www.spicylogic.com/allenday/blog/2008/09/03/sge-hadoop-integration/">1</a>, <a href="http://www.spicylogic.com/allenday/blog/2008/08/08/hadoop-sge-grid-engine-convergence/">2</a>] rather than managing its own mapper/reducer pools.</p>
<p>A less ambitious scheduler improvement is to modify the way the Hadoop scheduler allocates map/reduce resources.  The main itch I&#8217;m trying to scratch right now has to do with the coupling of map/reduce allocation.  There are some cases where it seems this shouldn&#8217;t be done.  Read the dialog with Nathan below if you care to know more.</p>
<table class="msg-table" border="0">
<tbody>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>is it possible to decouple mapper and reducer slot allocation for jobs?</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>i mean, if a job is #1 in the MR queue, but it is not yet ready to reduce, can it be prevented from consuming reducer slots?</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-type"><span>|&lt;&#8211;</span></td>
<td class="msg-data" colspan="5"><span>Smokinn has left irc.freenode.net ()</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-type"><span>|&lt;&#8211;</span></td>
<td class="msg-data" colspan="5"><span>savage- has left irc.freenode.net (Read error: 110 (Connection timed out))</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-type"><span>&#8211;&gt;|</span></td>
<td class="msg-data" colspan="5"><span>overlast (<a class="chatzilla-link" href="mailto:n=overlast@19.181.210.220.dy.bbexcite.jp">n=overlast@19.181.210.220.dy.bbexcite.jp</a>) has joined <a class="chatzilla-link" href="irc://irc.freenode.net/%23hadoop">#hadoop</a></span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-type"><span>|&lt;&#8211;</span></td>
<td class="msg-data" colspan="5"><span>overlast has left irc.freenode.net (&#8220;Leaving&#8230;&#8221;)</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>allenday: i think that would be hard&#8230; reducing starts while the mapping is happening (copy stage)</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>nathanmarz, i frequently find that while the reduce has &#8220;started&#8221;, it can just sit there for a long time doing nothing</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>this is most common with nutch</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>so there could be a bunch of other jobs further back in the queue that get starved for reduces b/c the head of the queue is squatting on the slots</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>it just sits there in the reduce phase?</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>for sure nutch does, yeah</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>during fetch, when it crawling</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-type"><span>|&lt;&#8211;</span></td>
<td class="msg-data" colspan="5"><span>cutting has left irc.freenode.net (&#8220;Leaving.&#8221;)</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>i see</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>i don&#8217;t have that much familiarity with nutch</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>is it possible to increase the number of reducers?</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>yep, but then you can get into i/o trouble later</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>for the job i mean, not the cluster</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>oh</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>it sounds like you propose having these squatters consume minimal # of reducers (e.g. only 1)</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>actually, the opposite</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>let&#8217;s say you have 16 reduce slots</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>and the job i set to use 16 reducers</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>each one of those reducers potentially has to go over a lot of data</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>if the job is instead set to use a lot more reducers, like 100 or something</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>than an individual reducer will go a lot faster</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>and potentially, those freed reduce slots will go to jobs with higher priority</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>ok, so you introduce priority to bump the further back ahead in the queue</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>yea</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>is that settable in jobconf?</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>you can set num reducers</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-type"><span>&#8211;&gt;|</span></td>
<td class="msg-data" colspan="5"><span>tobias_au (<a class="chatzilla-link" href="mailto:n=opera@CPE-121-50-201-65.dsl.OntheNet.net">n=opera@CPE-121-50-201-65.dsl.OntheNet.net</a>) has joined <a class="chatzilla-link" href="irc://irc.freenode.net/%23hadoop">#hadoop</a></span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>so let&#8217;s suppose the job that squats on reduce slots gets to the head of the queue. regardless of if it has 16 or 100 reducers configured</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>JobConf#setNumReduceTasks</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>and that it it still in map phase only.  has not begun reducing yet</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>until one of those reduces finishes (i.e. the map has finished) all slots are still filled</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>it&#8217;s only when the first reduce finishes that the job at #2 can take over a reduce slot</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>right</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>yea that&#8217;s true</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>that&#8217;s bad</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>this scheme doesn&#8217;t help until mappers finished</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>you really want this #1 job</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>when it is allocating reducers</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>to have low priority in acquiring the slots</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>right</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>well you don&#8217;t want it to acquire any slots until mappers finish</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>so you give reduce slots to #2, #3, #4, etc.  until everyone who wants slots has them.  then you assign to #1</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>or until #1 is ready&#8230;</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>is it just me or does the queueing system in hadoop kind of suck?</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>i am coming here from sun grid which puts a lot of emphasis on this aspect</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>well, the priority system will work if you start job #1 after the other jobs</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>if you start the other jobs after #1 then they will get starved of reducers</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>heh, but the whole reason it is in #1 is because it was submitted first, right?  isn&#8217;t hadoop FIFO wrt jobs?</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>if they&#8217;re the same priority</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>so maybe decreasing the reducers job #1 uses is the way to go</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>set it so it doesn&#8217;t use all the reduce slots on the cluster</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>i need to do some research to see if there are jira open for improving the scheduler. or if there are some commercial plugins to improve the scheduling</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>definitely room for improvement, agreed</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>yeah, that was what i thought you meant initially.  it&#8217;s a hack too though, and breaks down when the number of jobs gets large</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>i&#8217;m surprised they are coupled.  do you understand how it works when the mapper hands off to the reducer?</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>b/c i don&#8217;t and i need to</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>yes</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>can i get the 2min version?</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>the reason the reducers start while the mappers are running is because there&#8217;s some work they can do without all the map data</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>each reducer needs to copy the relevant outputs from all the mappers to its machine</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>this is called the &#8220;copy&#8221; phase and can occur in parallel with mapping</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>ok, i&#8217;ve seen that</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>so what we need is a flag taht indicates there will be no data to copy until maps all finish</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>yea</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>a flag that says not to pipeline the process</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>default behavior is to have the flag off and copy greedily</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>which is like it does now</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>turn the flag on says to wait until upstream map finishes before grabbing a reduce slot and kicking off the copy</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>**all upstream maps</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span><a class="chatzilla-link" href="http://hadoop.apache.org/core/docs/current/hadoop-default.html" target="_content">http://hadoop.apache.org/core/docs/current/hadoop-default.html</a></span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>those are all the hadoop config parameters</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>you might be able to find something in there</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>yeah, i fiind goodies in there every time i read that page<span class="chatzilla-emote-txt"> <img src='http://www.spicylogic.com/allenday/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </span></span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>i am only ~1mo into hadoop</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>here&#8217;s another scheduling related question/issue i&#8217;m having</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>i find that job i/o and cpu usage tend to synchronize after a while</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>b/c if there is a slow moving job in the queue, all the others tend to get jammed behind it</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>have you seen this?</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>no, i haven&#8217;t</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>but that&#8217;s interesting</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>it comes back to resource (mis)allocation by the scheduler</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><a class="chatzilla-link" href="irc://irc.freenode.net/nathanmarz,isnick"><span>nathanmarz</span></a></td>
<td class="msg-data" colspan="5"><span>how are you measuring that?</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>it&#8217;s this same issue where jobs will consume all the slots</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>so if you have a slow moving thing blocking all the resources</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>no one else can get past</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>then when the slow moving job finishes, the others all start getting processed very quickly (high cpu load during map), then as they begin to finish there is a flurry of i/o</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>it&#8217;s like congestion on the freeway where one car slams on the breaks it sends this wave of traffic jam behind it</span></td>
</tr>
<tr class="msg">
<td class="msg-timestamp"></td>
<td class="msg-user"><span>allenday</span></td>
<td class="msg-data" colspan="5"><span>assuming the freeway is already close to capacity (not sparse)</span></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.spicylogic.com/allenday/blog/2008/09/11/thoughts-on-hadoop-tasktracker-jobtrackerscheduling/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
