<?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>owenkellett.com</title>
	<atom:link href="http://owenkellett.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://owenkellett.com</link>
	<description></description>
	<lastBuildDate>Fri, 19 Feb 2010 04:45:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Oh LaTeX how you taunt me</title>
		<link>http://owenkellett.com/2010/02/18/oh-latex-how-you-taunt-me/</link>
		<comments>http://owenkellett.com/2010/02/18/oh-latex-how-you-taunt-me/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 04:33:50 +0000</pubDate>
		<dc:creator>Owen</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://owenkellett.com/?p=595</guid>
		<description><![CDATA[Here&#8217;s a good one.  Since I&#8217;m currently unemployed and looking for a job, naturally I&#8217;ve been sending resumes out.  I&#8217;ve used LaTeX to generate my resume for years now, and it has always worked out quite well.  However, today I had a need to print out my resume, and when I did, [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a good one.  Since I&#8217;m currently unemployed and looking for a job, naturally I&#8217;ve been sending resumes out.  I&#8217;ve used <a href="http://www.latex-project.org/">LaTeX</a> to generate my resume for years now, and it has always worked out quite well.  However, today I had a need to print out my resume, and when I did, I noticed that the font seemed slightly too small, and that the right margin seemed a bit too big.  It looked fine on the screen in my PDF viewer, but not on the physical printout.  Hmm.  As it turns out, I accidentally generated the PDF file with A4 size paper and all of the electronic versions I have sent out thus far have been this A4 version.  Grrrr!</p>
<p>I must have come across and handled this issue before, but at least on my Ubuntu installation, PDF documents generated by sequential latex, dvips, and ps2pdf commands default to A4 size paper.  In order to get the correct US style letter paper, I have to explicitly use the &#8220;-t letter&#8221; option in dvips.  After rooting around a bit, the command &#8220;texconfig paper letter&#8221; has changed my default system paper size for dvips, dvipdf, xdvi, and hopefully I&#8217;ll never make this mistake again!</p>
<p>P.S. Metric system?  One day we will give in to your logical structure and simple unit conversion.  Clearly, though, that day is not today.</p>
]]></content:encoded>
			<wfw:commentRss>http://owenkellett.com/2010/02/18/oh-latex-how-you-taunt-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Still Playing Ultimate</title>
		<link>http://owenkellett.com/2010/02/15/still-playing-ultimate/</link>
		<comments>http://owenkellett.com/2010/02/15/still-playing-ultimate/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 03:07:17 +0000</pubDate>
		<dc:creator>Owen</dc:creator>
				<category><![CDATA[Ultimate]]></category>

		<guid isPermaLink="false">http://owenkellett.com/?p=590</guid>
		<description><![CDATA[Repeat visitors to this blog may be wondering: what happened to my frequent ultimate frisbee status updates?  Well, the status updates may have petered out, but that doesn&#8217;t mean I&#8217;m not still playing.  I&#8217;m still very much attending the regular Monday, Wednesday, and Friday lunchtime pickup games in Burlington.  It&#8217;s business as [...]]]></description>
			<content:encoded><![CDATA[<p>Repeat visitors to this blog may be wondering: what happened to my frequent ultimate frisbee status updates?  Well, the status updates may have petered out, but that doesn&#8217;t mean I&#8217;m not still playing.  I&#8217;m still very much attending the regular Monday, Wednesday, and Friday lunchtime pickup games in Burlington.  It&#8217;s business as usual in that department.  In fact, I&#8217;m kind of regretting not signing up for the BUDA winter indoor hat league that&#8217;s currently underway in Milford.  It&#8217;s probably for the best that I missed the boat on that though as while I really loved playing in that league the previous times that I&#8217;ve done it, that indoor turf can be pretty brutal on the knees and feet.</p>
<p>Anyhow, one other bit of ultimate news is that <a href=http://www.latimes.com/news/obituaries/la-me-fred-morrison13-2010feb13,0,7076853.story?track=rss">Walter Fredrick Morrison has died</a> at the age of 90.  Morrison is regarded as the &#8220;father of the frisbee&#8221;.  And to reinforce the notion that the sport is dominated by geeks, the story was <a href="http://entertainment.slashdot.org/story/10/02/13/2142258/Father-of-the-Frisbee-Dies-At-90">picked up by Slashdot</a> and hit the front page a couple days ago.</p>
<p>I always thought that Marty McFly invented the frisbee in 1885 though&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://owenkellett.com/2010/02/15/still-playing-ultimate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RedDwarf</title>
		<link>http://owenkellett.com/2010/02/04/reddwarf/</link>
		<comments>http://owenkellett.com/2010/02/04/reddwarf/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 16:55:34 +0000</pubDate>
		<dc:creator>Owen</dc:creator>
				<category><![CDATA[Project Darkstar]]></category>
		<category><![CDATA[RedDwarf]]></category>

		<guid isPermaLink="false">http://owenkellett.com/?p=584</guid>
		<description><![CDATA[As I mentioned previously, I do intend to continue working on Project Darkstar part-time at least while I search for new employment opportunities.  Not only will it allow me and whoever else is interested push along the original goals of the project, but it will also give me a perfect place to keep my [...]]]></description>
			<content:encoded><![CDATA[<p>As I mentioned previously, I do intend to continue working on <a href="http://www.projectdarkstar.com">Project Darkstar</a> part-time at least while I search for new employment opportunities.  Not only will it allow me and whoever else is interested push along the original goals of the project, but it will also give me a perfect place to keep my skills sharp while I&#8217;m out of work.  Selfless and selfish reasons, molded into one.  However, it does not seem appropriate to continue working using what are now Oracle&#8217;s resources and contributing code to Oracle&#8217;s official repository.  Not only are there questions about outside contributions, but there are also no guarantees about how long Oracle&#8217;s official repository will remain active.  So I am going with an equally reasonable and open-source-y alternative.</p>
<p>I have established what I hope will become an official community fork of Project Darkstar.  This fork will go by the name <a href="http://reddwarf.sourceforge.net">RedDwarf</a> and is hosted as a <a href="https://sourceforge.net/projects/reddwarf/">sourceforge project</a>.  I cannot take credit for the new name, as it was dreamt up by the original instigator of Project Darkstar at Sun Labs (Jeff Kesselman), but I do hope that it will become an even more well known name than Project Darkstar ever was in the games industry.  So without further adieu, here are the new community guidelines:</p>
<ul>
<li>The sourceforge project is used to host what were once three separate projects on java.net.  The reddwarf-server, reddwarf-shared, and reddwarf-java-client all live in the same subversion repository, but under completely separate sub-trees, each with their own trunk, branches, and tags.</li>
<li>The development process should remain largely unchanged from Project Darkstar.  All commits to any trunk repository must undergo a thorough review by at least one other committer, and commit privileges are earned.  Review requests should be sent to the mailing list: reddwarf-develop on sourceforge.</li>
<li>All design, support, and informational documents should go in the <a href="https://sourceforge.net/apps/trac/reddwarf/">Trac instance</a> hosted at sourceforge.</li>
<li>All issues and bugs should be filed as a ticket in Trac.</li>
<li><a href="https://sourceforge.net/projects/reddwarf/forums">Forum discussions</a> should continue as usual on the sourceforge hosted forums.</li>
<li>Releases will be done periodically as appropriate.  All releases will be published to the central Maven repository rather than the java.net Maven repositories.  (This is <a href="https://sourceforge.net/apps/trac/reddwarf/ticket/2">my first task</a> and may take some time).  They will also be published as files for download on the sourceforge site.</li>
</ul>
<p>Progress will be much slower than before, but I think it&#8217;s very important to maintain the structure and code quality standards that we had established as a fully funded project.  Will anything come of this effort?  I&#8217;m not sure.  But I think it&#8217;s the best chance for coordinated progress to continue with Project Darkstar.</p>
]]></content:encoded>
			<wfw:commentRss>http://owenkellett.com/2010/02/04/reddwarf/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Shocking News</title>
		<link>http://owenkellett.com/2010/02/03/shocking-news/</link>
		<comments>http://owenkellett.com/2010/02/03/shocking-news/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 15:28:29 +0000</pubDate>
		<dc:creator>Owen</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Project Darkstar]]></category>

		<guid isPermaLink="false">http://owenkellett.com/?p=580</guid>
		<description><![CDATA[It&#8217;s been a while since I posted anything on this blog, and I wish my return was the result of better circumstances but no such luck: my position at Sun Microsystems has been eliminated, and as a result I have been let go.  It is ironic that the European Union&#8217;s lengthy delay in approving [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a while since I posted anything on this blog, and I wish my return was the result of better circumstances but no such luck: my position at Sun Microsystems has been eliminated, and as a result I have been let go.  It is ironic that the European Union&#8217;s lengthy delay in approving the Oracle-Sun acquisition gave the <a href="http://www.projectdarkstar.com">Project Darkstar</a> team and community such a long, uninterrupted stretch of time to make some unbelievable progress towards our goals.  However, once the deal did finally close, the decision had already been made that Oracle will discontinue investing resources in the project, and so here I am: newly unemployed.</p>
<p>I must say that the shock and disbelief of learning that you&#8217;ve been laid off is a predictably emotional time.  Of course I didn&#8217;t think it would happen to me, but it did: proof that job security is all but an illusion.  They say losing your job is like dealing with any other type of loss, which is absolutely true.  Knowing this doesn&#8217;t make it any easier though.  Despite this difficult situation, however, I have received nothing but support from my family, friends, colleagues and even people who were previously just casual acquaintances.  Thank you to everyone who has been there so far; I know for a fact I&#8217;ll come out the other side of this a strong person.</p>
<p>As for my future, and the future of Project Darkstar?  Well both are uncertain.  I have already started ramping up and preparing for a full scale job search in the hope that I will find something even better than the best job I&#8217;ve ever had.  In terms of Project Darkstar, a core group of former members of the team have already started exploring alternative ways to keep the project going.  This includes both potential for-profit and volunteer efforts to carry out the original mission objectives laid out years ago.  At the very least, after getting myself organized, I personally intend to continue working on the project on a part-time basis during my job search and hopefully beyond.  More details to come&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://owenkellett.com/2010/02/03/shocking-news/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Cannon Mountain</title>
		<link>http://owenkellett.com/2009/11/16/cannon-mountain/</link>
		<comments>http://owenkellett.com/2009/11/16/cannon-mountain/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 22:26:09 +0000</pubDate>
		<dc:creator>Owen</dc:creator>
				<category><![CDATA[4000 Footers]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Cannon Mountain]]></category>

		<guid isPermaLink="false">http://owenkellett.com/?p=558</guid>
		<description><![CDATA[or several weeks, now, Katy and I have been hoping to knock off another 4000 foot mountain in our goal of hiking all of New Hampshire&#8217;s 4000 footers.  With winter closing in, there aren&#8217;t too many weekends left before we would likely be hiking on a snow covered trail.  With the recent unseasonably [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_563" class="wp-caption alignright" style="width: 310px"><a href="http://owenkellett.com/blog/wp-content/uploads/2009/11/cannonmountain.jpg"><img src="http://owenkellett.com/blog/wp-content/uploads/2009/11/cannonmountain-300x225.jpg" alt="Owen and Katy atop Cannon Mountain" title="cannonmountain" width="300" height="225" class="size-medium wp-image-563" /></a><p class="wp-caption-text">Owen and Katy atop Cannon Mountain</p></div>For several weeks, now, Katy and I have been hoping to knock off another 4000 foot mountain in our goal of hiking all of New Hampshire&#8217;s 4000 footers.  With winter closing in, there aren&#8217;t too many weekends left before we would likely be hiking on a snow covered trail.  With the recent unseasonably warm temperatures here in the Northeast, though, we planned a quick day hike up <a href="http://en.wikipedia.org/wiki/Cannon_Mountain_(New_Hampshire)">Cannon Mountain</a> for this past weekend.  Cannon Mountain is &#8220;across the street&#8221; from Mounts Lafayette and Lincoln, <a href="http://owenkellett.com/2009/10/07/lafayette-lincoln-loop/">our first conquest</a>, and is home to what once was the iconic <a href="http://en.wikipedia.org/wiki/Old_Man_of_the_Mountain">Old Man of the Mountain</a>.  There are several routes up it, but we chose to start our ascent from the Lafayette Campground on the southeast side of the mountain.</p>
<p>The quality of the weather for this trip was in doubt right up until we took our first step on the trail.  A significant rain event was forecast for all day Saturday and into Sunday morning, but it was unclear when things would clear out on Sunday.  We were feeling optimistic, though, and were up before sunrise on Sunday and began the two hour ride to Franconia Notch in the dark and in the rain.  By the time we reached the trailhead, the rain had stopped and patches of blue sky were trying to break through the low clouds and the fog.  Things were looking up and we were on the trail at 8:40AM.</p>
<p><div id="attachment_571" class="wp-caption alignleft" style="width: 160px"><a href="http://owenkellett.com/blog/wp-content/uploads/2009/11/katyboulders.jpg"><img src="http://owenkellett.com/blog/wp-content/uploads/2009/11/katyboulders-150x150.jpg" alt="Katy navigating through some serious boulders" title="katyboulders" width="150" height="150" class="size-thumbnail wp-image-571" /></a><p class="wp-caption-text">Katy navigating through some serious boulders</p></div>Even after deciding to start our hike from Lafayette Campground, there were still a number of interconnecting trails that could get us to the top of the mountain.  On the way up, we hiked all the way out past Lonesome Lake via the Lonesome Lake Trail and continued our ascent up this trail to its northern terminus where it met the Kinsman Ridge Trail.  The Lonesome Lake Trail was well maintained with a reasonably moderate grade as we ascended about 1700 feet of elevation in 2.3 miles.  From there, we followed the Kinsman Ridge Trail to the summit.  The most technically challenging and steepest part of the climb was definitely the section between the end of the Lonesome Lake Trail and the junction with the Hi-Cannon trail (about 0.4 miles from the summit).  In this section we went up about 500 feet of elevation in less than half a mile, requiring quite a bit of scrambling over large boulders and roots.  We reached the top a little bit after 11:00AM.</p>
<p><div id="attachment_564" class="wp-caption alignright" style="width: 310px"><a href="http://owenkellett.com/blog/wp-content/uploads/2009/11/katymatrix.jpg"><img src="http://owenkellett.com/blog/wp-content/uploads/2009/11/katymatrix-300x225.jpg" alt="Katy doing a Matrix style pose at the summit" title="katymatrix" width="300" height="225" class="size-medium wp-image-564" /></a><p class="wp-caption-text">Katy doing a Matrix style pose at the summit</p></div>There&#8217;s a tramway and ski area on the opposite side of the mountain that we hiked, so the summit is fairly well developed with an observation tower at the peak.  It was warm, even at the top of the mountain, with temperatures in the 50&#8217;s and we were able to enjoy at least some partial views with clearing skies and mountain tops peaking out of the clouds to our north and west.  It was quite a bit of a different feel than our early October hike with fall foliage nearing peak season.  This time around the trees were bare with evergreens peppering the mountain sides.  There wasn&#8217;t much to see to the south and east, though, as some low, stubborn clouds had settled in, obscuring the views over to Lafayette and the Franconia Ridge.  We hung out at the top for a while and ate our lunch before heading back down.</p>
<p><div id="attachment_570" class="wp-caption alignleft" style="width: 160px"><a href="http://owenkellett.com/blog/wp-content/uploads/2009/11/owenlonesome.jpg"><img src="http://owenkellett.com/blog/wp-content/uploads/2009/11/owenlonesome-150x150.jpg" alt="Owen overlooking Lonesome Lake on Hi-Cannon Trail" title="owenlonesome" width="150" height="150" class="size-thumbnail wp-image-570" /></a><p class="wp-caption-text">Owen overlooking Lonesome Lake on Hi-Cannon Trail</p></div>On the hike down, we decided to take a slightly different route.  Instead of going down the steepest section of the Kinsman Ridge Trail to Lonesome Lake Trail, we decided to take a left turn at the Hi-Cannon trail.  This trail was narrower and seemed a little less traveled.  We had to deal with some quite steep sections of long, slippery rocks, including one ledge that was so impossibly steep that a ladder was constructed to assist hikers.  Some trail descriptions peg the middle portion of this trail as the most difficult trail on Cannon Mountain.  There were several neat lookout ledges along the route overlooking Lonesome Lake with views down the notch.  The Hi-Cannon Trail met up with the Lonesome Lake Trail less than a half mile from the trailhead and we arrived back at the car at 1:40PM.  Total time was about five hours round trip for six miles of hiking including our extended break at the summit.  We drove back home, stopping for some food along the way and were back home before 6PM from a quick, but satisfying and enjoyable trip to the Whites with Katy.</p>
<p>For those keeping track, that&#8217;s 3 down with 45 to go!</p>
]]></content:encoded>
			<wfw:commentRss>http://owenkellett.com/2009/11/16/cannon-mountain/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Rule 1 of Programming: It&#8217;s Always Your Fault (Almost)</title>
		<link>http://owenkellett.com/2009/11/12/rule-1-of-programming-its-always-your-fault-almost/</link>
		<comments>http://owenkellett.com/2009/11/12/rule-1-of-programming-its-always-your-fault-almost/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 16:21:25 +0000</pubDate>
		<dc:creator>Owen</dc:creator>
				<category><![CDATA[Project Darkstar]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://owenkellett.com/?p=551</guid>
		<description><![CDATA[Over the past week or so, I&#8217;ve been working on putting together some micro benchmarks for Project Darkstar.  There has been a significant uptick in forum activity lately relating to stress testing and performance issues.  In particular, we&#8217;ve seen many questions along the lines: &#8220;I can only connect X users to my darkstar [...]]]></description>
			<content:encoded><![CDATA[<p>Over the past week or so, I&#8217;ve been working on putting together some micro benchmarks for <a href="http://www.projectdarkstar.com">Project Darkstar</a>.  There has been a significant uptick in <a href="http://www.projectdarkstar.com/forum/">forum activity</a> lately relating to stress testing and performance issues.  In particular, we&#8217;ve seen many questions along the lines: &#8220;I can only connect X users to my darkstar server, what&#8217;s wrong?&#8221;  First of all, this is great news.  It means that people are making significant progress with their darkstar based games/applications and are working to push the limits of the technology.  However, I also think that this is the completely wrong question to ask.  As <a href="http://owenkellett.com/2009/05/12/capacity-testing/">I&#8217;ve demonstrated before</a>, Project Darkstar has a pretty high ceiling for raw capacity in terms of number of users.  A properly tuned app with a light load can easily handle tens of thousands of users per node.  However, connecting mostly idle users to a mostly idle server is not very interesting.  These capacity numbers naturally decrease as the number of messages between the clients and server and the amount of processing per message increases.  This seems obvious, but people still ask the capacity question as though all games developed with darkstar are going to have identical limitations.  This is simply not the case.</p>
<p>With this said, though, we can still strive to identify upper bounds on Project Darkstar&#8217;s performance at a more fine-grained level.  Project Darkstar is an event driven transactional system, so all operations are not without cost.  With these micro benchmarks, I&#8217;m hoping that I can establish a relative cost to each of the operations using the DataManager, the ChannelManager, and the TaskManager.  For example, how expensive is it to retrieve an object using DataManager.getBinding() vs ManagedReference.get().  How much overhead is involved with each transaction?  How expensive is it to create a Channel or send a message on a Channel?  With more or less users?  While the cost of retrieving data from Darkstar&#8217;s data store should be an order of magnitude faster than using J2EE and a RDBMS, it is also likely an order of magnitude <em>slower</em> than retrieving data from a data structure that is already in memory and using no synchronization.  This is information that users really need to be aware of and be able to take into perspective when designing their game, structuring their tasks, and establishing their own expectations of what the performance should be like.</p>
<p>So over the past couple of days, I&#8217;ve been debugging a problem in these benchmarks.  In one particular test, I was attempting to measure the raw execution time per call to DataManager.getBinding() from the Project Darkstar API.  The test was pretty simple, I just set a large number of bindings in a single set of setup transactions.  Then I would time the execution of another set of transactions that would make some subset of calls to getBinding() on the names that I had just setup.  Taking into account previously measured transaction overhead I could then come up with a reasonable estimate of the cost per operation.  Seems easy right?  Well it turns out that I hit a snag.  In running this test, I was repeatedly getting a situation where a seemingly random name binding was not being set properly during setup.  Most of the calls to getBinding() would work fine, but a couple were throwing NameNotBoundException.  What?  This didn&#8217;t make much sense.  I went back and looked over my code many times, I tried a myriad of variations, logging output, and print lines, but still no luck.  I was still getting NameNotBoundException for what seemed like a random name in the sequence.  Hmmph.</p>
<p>At this point, I went through a whole series of exercises, all centered around one assumption, that my code was right.  I tested the native edition vs. the Java edition of BDB, suspecting maybe there was a weird bug in one of them: same result.  I tried longer transactions, more operations, larger serialized data objects: same result.  I tried running my benchmarks in different orders: same result.  I even started writing test cases for DataManager.setBinding() that simulated transaction rollback and retry, large numbers of consecutive calls to setBinding() and binding and rebinding of the same name.  I thought I was going to uncover some weird corner case bug.  But those tests were passing!  I was at a loss.  After probably two days of sporadic attempts at debugging this, I finally went back and looked really hard at my own test code.  And&#8230; I found a bug (doh!).  It turns out that I was being too cute with my setup transactions, and was modifying a non-local counter variable inside of my anonymous nested transaction class.  In random situations, this class would abort and retry (a normal darkstar operation), but since it was modifying a variable that lived outside of the task itself, this value was not being rolled back.  The result was that a name binding would be skipped periodically (exactly the behavior that I was seeing).</p>
<p>So here&#8217;s my question.  Why did I assume that code that I wrote in less than a day was more likely to be correct than Berkeley DB itself, a project that&#8217;s been developed and tested for a couple of decades?  Why did I assume that code that I wrote in less than a day was more likely to be correct than Project Darkstar&#8217;s Data Service code which has been developed and tested for years?  I mean, I knew better than to think that Tim&#8217;s code is the likely culprit, but I still started writing test cases thinking I was going to heroically find some obscure bug.  This, my friends, is a violation of the number 1 rule of programming: If you&#8217;re having problems, It&#8217;s Always Your Fault (almost).  I mean, don&#8217;t get me wrong, I&#8217;ve found (and reported) bugs in well established open source projects before, but those situations are actually few and far between.  I also don&#8217;t mean to suggest that Project Darkstar is bug free.  I do think, though, that sometimes it&#8217;s too tempting to conclude that there&#8217;s a bug in that library you&#8217;re using, or there&#8217;s a performance limitation in that technology that is fundamentally impossible to overcome.  Maybe that&#8217;s true, but 99% of the time, it&#8217;s your fault.</p>
<p>And with regard to those micro benchmarks, I&#8217;m hoping to publish some results soon (assuming I don&#8217;t get hung up with any more boneheaded mistakes!)</p>
]]></content:encoded>
			<wfw:commentRss>http://owenkellett.com/2009/11/12/rule-1-of-programming-its-always-your-fault-almost/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ultimate Ongoing</title>
		<link>http://owenkellett.com/2009/11/12/ultimate-ongoing/</link>
		<comments>http://owenkellett.com/2009/11/12/ultimate-ongoing/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 14:28:33 +0000</pubDate>
		<dc:creator>Owen</dc:creator>
				<category><![CDATA[Ultimate]]></category>

		<guid isPermaLink="false">http://owenkellett.com/?p=549</guid>
		<description><![CDATA[A quick update on the ultimate front.  I&#8217;ve been playing regularly the past few weeks, but not without some discomfort.  My ankle is still not 100% but it&#8217;s faded into a nagging annoyance.  It appears that it always feels worse in the morning and then loosens up and doesn&#8217;t bother me too [...]]]></description>
			<content:encoded><![CDATA[<p>A quick update on the ultimate front.  I&#8217;ve been playing regularly the past few weeks, but not without some discomfort.  My ankle is still not 100% but it&#8217;s faded into a nagging annoyance.  It appears that it always feels worse in the morning and then loosens up and doesn&#8217;t bother me too much throughout the day.  I&#8217;ve just played the past three days in a row, though, so I feel it a bit more today.  In any case, hopefully this injury will be just a bitter memory soon.</p>
<p>Ultimate Statistics (since January 2008):<br />
Total Games Played: 252<br />
Total Hours Played: 296</p>
]]></content:encoded>
			<wfw:commentRss>http://owenkellett.com/2009/11/12/ultimate-ongoing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ultimate Update</title>
		<link>http://owenkellett.com/2009/10/12/ultimate-update-5/</link>
		<comments>http://owenkellett.com/2009/10/12/ultimate-update-5/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 16:08:14 +0000</pubDate>
		<dc:creator>Owen</dc:creator>
				<category><![CDATA[Ultimate]]></category>

		<guid isPermaLink="false">http://owenkellett.com/?p=546</guid>
		<description><![CDATA[It&#8217;s been over five weeks since I sprained my ankle during an ultimate game.  Unfortunately, it still hasn&#8217;t completely healed.  It&#8217;s likely that I didn&#8217;t give it enough time as only a week after the incident, I was back on the field.  After a couple weeks of abusing it during hat league [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been over five weeks since I sprained my ankle during an ultimate game.  Unfortunately, it still hasn&#8217;t completely healed.  It&#8217;s likely that I didn&#8217;t give it enough time as only a week after the incident, I was back on the field.  After a couple weeks of abusing it during hat league and pickup games, I shut it back down again over two weeks ago and haven&#8217;t done anything on it since (umm, except hike 9 miles with 4000 feet of elevation gain, oops!)  It&#8217;s not really unstable or loose, and I don&#8217;t have any trouble walking on it, but there is still some residual swelling and a bit of a dull soreness to it.</p>
<p>The good news is that I feel like it&#8217;s (very slowly) healing.  I&#8217;ve been doing some no impact strengthening exercises over the past few days and the swelling <em>seems</em> to be ever so slowly going down.  I&#8217;ve picked Wednesday in my mind as my return date to the field, but may push it back if it doesn&#8217;t feel ready.  It&#8217;s very frustrating to have an injury like this.  No matter how many times I deal with them, it always takes a physical and mental toll to not have the ability to be active and out on the field.  Regardless, what I always tell others and myself; injuries are a part of every competitive sport.  Having the ability to respond and deal with them in a positive way is just as important as your skills in the activity itself.  Hoping to be back out there soon&#8230;</p>
<p>Ultimate Statistics (since January 2008):<br />
Total Games Played: 240<br />
Total Hours Played: 284</p>
]]></content:encoded>
			<wfw:commentRss>http://owenkellett.com/2009/10/12/ultimate-update-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lafayette Lincoln Loop</title>
		<link>http://owenkellett.com/2009/10/07/lafayette-lincoln-loop/</link>
		<comments>http://owenkellett.com/2009/10/07/lafayette-lincoln-loop/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 21:47:09 +0000</pubDate>
		<dc:creator>Owen</dc:creator>
				<category><![CDATA[4000 Footers]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Mount Lafayette]]></category>
		<category><![CDATA[Mount Lincoln]]></category>

		<guid isPermaLink="false">http://owenkellett.com/?p=500</guid>
		<description><![CDATA[This past weekend, Katy and I went on the first of hopefully many adventures hiking in the White Mountains of New Hampshire.  It&#8217;s been quite some time since I&#8217;ve done a lot of real, solid hiking.  When I was much younger, my dad, brother, uncle, and I used to make semi-frequent camping/hiking trips [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_501" class="wp-caption alignleft" style="width: 310px"><a href="http://owenkellett.com/blog/wp-content/uploads/2009/10/mountlafayette.jpg"><img src="http://owenkellett.com/blog/wp-content/uploads/2009/10/mountlafayette-300x225.jpg" alt="Owen and Katy on top of Mt. Lafayette" title="mountlafayette" width="300" height="225" class="size-medium wp-image-501" /></a><p class="wp-caption-text">Owen and Katy on top of Mt. Lafayette</p></div> This past weekend, Katy and I went on the first of hopefully many adventures hiking in the White Mountains of New Hampshire.  It&#8217;s been quite some time since I&#8217;ve done a lot of real, solid hiking.  When I was much younger, my dad, brother, uncle, and I used to make semi-frequent camping/hiking trips up north.  Those slowly died out, though, as college, track, ultimate, and just life in general began filling up my time.  Aside from a couple backpacking trips with Brian, and a few other tiny day hikes here and there, I&#8217;m realizing that I haven&#8217;t really done much hiking at all in most of this decade.  So with that said, I&#8217;ve decided to get back into hiking with a goal.  How about hiking all 48 of the <a href="http://www.amc4000footer.org/wm4.htm">4000+ foot peaks in the White Mountains</a>?</p>
<p>I mentioned this idea to Katy, and not ever being one to back down from a challenge, she was in.  Now, technically I&#8217;ve already done probably about 10 or so peaks on this list (in fact, if I remember correctly, I&#8217;ve already hiked 6 of the top 7 peaks, Adams being the lone 5000+ footer that I&#8217;ve never scaled).  However, I figured we can do it as a team, and restart the list from scratch.  So we planned a trip for this past weekend, and stayed at the Lafayette Place Campground in Franconia Notch where several of the 4000 footers flank on both sides&#8230;</p>
<p><div id="attachment_539" class="wp-caption alignright" style="width: 310px"><a href="http://owenkellett.com/blog/wp-content/uploads/2009/10/mountlincoln.jpg"><img src="http://owenkellett.com/blog/wp-content/uploads/2009/10/mountlincoln-300x225.jpg" alt="Owen and Katy on top of Mount Lincoln" title="mountlincoln" width="300" height="225" class="size-medium wp-image-539" /></a><p class="wp-caption-text">Owen and Katy on top of Mount Lincoln</p></div>We arrived Saturday afternoon under gray skies with showers spitting at us the whole drive up.  At first it seemed like we would luck out and have just spotty showers in the evening.  Not so.  As soon as we pulled into our campsite and began setting up, the skies opened up.  It poured as we setup our tent.  It poured as we scrambled to provide some makeshift shelter from the rain with a tarp tied to some trees.  It poured as we raced to get our sleeping bags and pads into the tent.  By the time we finished setting up camp, we were both cold, soaked, shivering, and standing under a small patch of tarp that was keeping us out of the rain.  With no hope of building a fire in the constant rain, we eventually retired to the tent early with some dry clothes and board games.  Not a good start to our mission!</p>
<p>Fortunately, Sunday was a completely different story.  We woke up to clearing skies and quickly grabbed some breakfast and began getting organized for our hike.  Our plan was to attack the classic day hike in the <a href="http://en.wikipedia.org/wiki/Franconia_Range">Franconia Range</a>, the <em>Franconia Ridge Loop</em>.  This loop actually combines three trails into a 9 mile trek that brings you over the top of Mount Lafayette and Mount Lincoln from the 4000 footers list (technically it also brings you over Little Haystack Mountain but that peak does not satisfy the <a href="http://www.amc4000footer.org/faq.htm#list3">criteria to be on the 4000 footers list</a>).  After collecting some warmer gear, food, water, and gatorade in our packs, we were on the trail at about 8:40AM.</p>
<p>We started towards the summit of Mount Lafayette via the Old Bridle Path.  This trail is fairly steep pretty much the whole way, but is very well maintained and easy to navigate.  There were a few other groups on the trail, but it was fairly quiet for a near peak foliage weekend.  Saturday&#8217;s weather likely had something to do with that.  By 11:00AM we had made it to the Greenleaf Hut, which sits right at the treeline about 3 miles from the trailhead and 1 mile from the summit.  After a quick snack break and topping off our water bottles, we continued on to the summit and were there at about noon.  Wahoo!  One peak down!  We had lunch at the top and about 3 or 4 other groups were up there doing the same.</p>
<p>Traveling across the ridge along the Franconia Ridge Trail was pretty awesome.  Weather above the tree line was cool, but mostly clear and calm, a generally rare event.  We had nice views of the Pemigewasset Wilderness to our east, and Cannon and the Kinsman Mountains to our west.  Foliage was getting close to peak, and the trail was busy but did not have a train of people like I&#8217;ve seen in the past.  By about 12:30PM we had bagged the Mount Lincoln summit, and by 1:00ish we had reached the trail junction for Falling Waters Trail at Little Haystack Mountain to head back down.</p>
<p><div id="attachment_541" class="wp-caption alignleft" style="width: 160px"><a href="http://owenkellett.com/blog/wp-content/uploads/2009/10/katyslow.jpg"><img src="http://owenkellett.com/blog/wp-content/uploads/2009/10/katyslow-150x150.jpg" alt="Katy gladly obeying the sign after the hike" title="katyslow" width="150" height="150" class="size-thumbnail wp-image-541" /></a><p class="wp-caption-text">Katy not arguing with the sign after the hike</p></div>I had expected our trip down to be fairly quick, but there was quite a bit of running water on and near the trail making it slippery and tougher to navigate.  We passed by several fantastic waterfalls on the way down, but also had to deal with several tricky river crossings as a result.  In the end we hit the bottom at about 3:40PM, almost exactly 7 hours which is the estimated book time.</p>
<p>When we got back to the campground, we had just one passing shower disturb our dinner but otherwise a dry night under an almost full moon in front of the fire.  It being a Sunday night, almost the entire campground was empty so we had the place almost completely to ourselves.  On Monday, we originally contemplated zipping up and tagging the summit of Cannon Mountain but decided not to overreach on our first trip and get back early enough to unpack and get organized.   Overall, it was a fun trip.  So 2 summits down, and it may take us a few years, but 46 to go!</p>
<p>P.S. <a href="http://www.facebook.com/album.php?aid=2070824&#038;l=ca91328e0e&#038;id=17502963">Additional select photos</a> of the trip are available on facebook.</p>
]]></content:encoded>
			<wfw:commentRss>http://owenkellett.com/2009/10/07/lafayette-lincoln-loop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Austin GDC 2009</title>
		<link>http://owenkellett.com/2009/09/25/austin-gdc-2009/</link>
		<comments>http://owenkellett.com/2009/09/25/austin-gdc-2009/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 19:49:55 +0000</pubDate>
		<dc:creator>Owen</dc:creator>
				<category><![CDATA[Project Darkstar]]></category>

		<guid isPermaLink="false">http://owenkellett.com/?p=482</guid>
		<description><![CDATA[Last week, a number of us from the Project Darkstar team were in Austin for the Austin Game Developer&#8217;s Conference.  Like last year, we had a large booth on the expo floor.  However, while last year we were largely focused on demonstrating Project Darkstar&#8217;s capabilities to scale and distribute load across multiple cores [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://owenkellett.com/blog/wp-content/uploads/2009/09/agdc.jpg" alt="agdc" title="agdc" width="233" height="164" class="alignleft size-full wp-image-481" />Last week, a number of us from the <a href="http://www.projectdarkstar.com">Project Darkstar</a> team were in Austin for the <a href="http://www.gdcaustin.com/">Austin Game Developer&#8217;s Conference</a>.  Like last year, we had a large booth on the expo floor.  However, while last year we were largely focused on demonstrating Project Darkstar&#8217;s capabilities to scale and distribute load across multiple cores and processors on a <em>single</em> node, this year our focus was on showcasing the team&#8217;s progress on <em>multi-node</em> capabilities.  Here&#8217;s a recap of the week&#8217;s events:</p>
<p>If you&#8217;ve been following along with Project Darkstar&#8217;s progress over the years, you know that transparent multi-node scaling capabilities are one of its main attractions as a platform.  On the other hand, you should also know that with Project Darkstar being a still maturing research project in <a href="http://research.sun.com/">Sun Labs</a>, these features are not yet done.  In fact, we have still not proven if what we are attempting can even <em>be</em> done.  Our fearless lead architect, <a href="http://research.sun.com/people/mybio.php?c=444">Jim Waldo</a>, has put together an excellent series of posts on <a href="http://blogs.sun.com/scalinggames/">his blog</a> outlining why and how we hope to achieve this multi-node scaling.  He calls it the &#8220;Four Miracles.&#8221;</p>
<p>Our goal for Austin was to put together some measure of a compelling visual demonstration of our current progress towards achieving these &#8220;Four Miracles.&#8221;  Specifically, we hoped to show how <a href="http://blogs.sun.com/scalinggames/entry/miracle_4">Ann&#8217;s miracle</a> of transparently moving clients from one node to another in a cluster worked in tandem with <a href="http://blogs.sun.com/scalinggames/entry/miracle_3">Keith&#8217;s miracle</a> of monitoring a node&#8217;s health and intelligently making decisions about which clients to relocate and when.  Also, while <a href="http://blogs.sun.com/scalinggames/entry/miracle_2">Jane&#8217;s miracle</a> of detecting and organizing clients into groups of affinity groups based on social networking algorithms is not complete, we also hoped to portray how it should work by rigging up an app that formed affinity groups based on a players location in the game (specifically which chat room it was in).</p>
<p>In the weeks leading up to the conference, Keith and I came up with two demos that for the most part seemed to hit the mark.  Using the JMX facilities already built into Darkstar, I hacked up a monitoring GUI that tapped into a running Darkstar cluster and displayed each of the nodes as a vertical bar.  The height of the bar represented the total number of clients connected to that node, and the color optionally represented either the node health, or fragments of colors represented the affinity group of each connected client.  For the first demo, we had <a href="https://project-snowman.dev.java.net">Project Snowman</a> running in a multi-node cluster and showed how the new node health monitoring features of darkstar caused client traffic to spill over and be intelligently distributed between the nodes.  Here&#8217;s a quick video of Keith talking through it on expo floor in Austin:</p>
<div align="center"><object width="533" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6644938&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=6644938&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="533" height="300"></embed></object>
<p><a href="http://vimeo.com/6644938">Project Darkstar Node Health Demo</a> from <a href="http://vimeo.com/darkstar">Project Darkstar</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
</div>
<p>The second demo had <a href="http://project-darkchat.dev.java.net">Darkchat</a> running on a multi-node cluster and was designed to show how clients would relocate between nodes depending on which rooms they were connected to in the application.  Here&#8217;s another quick video given by yours truly on the floor at Austin:</p>
<div align="center"><object width="533" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6661259&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=6661259&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="533" height="300"></embed></object>
<p><a href="http://vimeo.com/6661259">Project Darkstar Affinity Grouping Demo</a> from <a href="http://vimeo.com/darkstar">Project Darkstar</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
</div>
<p>Both of these demos we had running throughout the week on the floor and the response from people who came by was generally positive.  I think one of the main differences that I noticed between this year and last year was the amount of <em>quality</em> traffic that we had come through the booth.  I talked to a lot of people at Austin last year, but a large percentage of them had never heard of Project Darkstar or were just vaguely familiar with it.  This year many people came by who were already committed to a project using Darkstar, or were very interested in our progress, or were familiar with the technology and had a strong desire to learn more.  I think the best piece of anecdotal evidence was one person from the Intel booth who came by and said &#8220;Oh, so this is for real now?&#8221;  Referring, of course, to the significant headway that we are finally making and showing on the multi-node scaling capabilities of the Project Darkstar platform.</p>
<p>In a tough year for everyone in just about every industry, I think going to this conference and putting together these demos have injected some energy into both the Project Darkstar community and the team.  A few more personal observations:</p>
<ul>
<li>
The expo floor seemed smaller this year and overall attendance appeared to be down.  Not too surprising but hopefully a sign of things past and not things to come.</p>
</li>
<li>
A little tidbit on some of the pains of getting the demos setup.  Leading up to the conference, we had everything running just fine in Burlington and the demos packaged up and ready to go.  After a few hours of pulling cables, moving pods around, and booting up systems, we fired up the node health demo on Tuesday, the day before the expo floor opened.  Except, it didn&#8217;t work.  At least not like it did in Burlington.  When simulating an overloaded node, instead of offloading clients onto the other node right away, there was some seemingly random and arbitrary delay of 20 &#8211; 30 seconds before any clients would be moved.  Huh?</p>
<p>After some hours of debugging, and pulling Seth into the mix for help, we finally tracked it down.  The (still unfinished) node health code offloads identities from a node when it gets overloaded.  However, it doesn&#8217;t just move client identities, it also moves identities of robots and other NPC&#8217;s in the system.  Since each snowman game has a number of robots, it was choosing to move the robot identities before moving the client identities.  The question, of course, is why didn&#8217;t we ever see this behavior in Burlington?  Well it turns out that the order in which identities are chosen to be moved is deterministic and seemingly alphabetical.  While in Burlington, our client simulated players were generating identity names according to the hostname of the client machine (dstar1, dstar2, dstarX, &#8230;).  The hostnames of the machines used in Austin? x2250-1, x2250-2, etc.  So in our Burlington deployment, the client identities were always getting chosen <em>before</em> the robot identities since they started with a <em>d</em>; in our Austin deployment, the client identities were always getting chosen <em>after</em> the robot identities since they started with an <em>x</em>.  Unbelievable.
</li>
<li>
Keith gave a talk during a one hour session which was awesome.  He went through a number of obstacles and challenges he faced when building Darkchat for JavaOne and I think it came across as very real and genuine.</p>
</li>
<li>
One final note, it appears as though Chuck Norris <em>still</em> doesn&#8217;t need scalable server technology.  All of his CPU&#8217;s run faster to get away from him.  Also, any code that he writes cannot be optimized.  For anyone else, though, Project Darkstar could be a solution.</p>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://owenkellett.com/2009/09/25/austin-gdc-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
