<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Braid</title>
	<atom:link href="http://programmerjoe.com/2008/08/16/braid/feed/" rel="self" type="application/rss+xml" />
	<link>http://programmerjoe.com/2008/08/16/braid/</link>
	<description>Joe Ludwig's blog</description>
	<lastBuildDate>Sun, 01 Jan 2012 19:08:41 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<item>
		<title>By: Brady</title>
		<link>http://programmerjoe.com/2008/08/16/braid/comment-page-1/#comment-241320</link>
		<dc:creator>Brady</dc:creator>
		<pubDate>Wed, 03 Sep 2008 18:51:39 +0000</pubDate>
		<guid isPermaLink="false">http://programmerjoe.com/2008/08/16/braid/#comment-241320</guid>
		<description>The timing tolerance on the last level had to be that tight or it wouldn&#039;t have played back correctly.  Really, you&#039;re being forced to conform to a scripted sequence.  Having that last rewind work right is sort of the key point in the whole game.</description>
		<content:encoded><![CDATA[<p>The timing tolerance on the last level had to be that tight or it wouldn&#8217;t have played back correctly.  Really, you&#8217;re being forced to conform to a scripted sequence.  Having that last rewind work right is sort of the key point in the whole game.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ejengstrom</title>
		<link>http://programmerjoe.com/2008/08/16/braid/comment-page-1/#comment-237438</link>
		<dc:creator>ejengstrom</dc:creator>
		<pubDate>Wed, 27 Aug 2008 19:03:15 +0000</pubDate>
		<guid isPermaLink="false">http://programmerjoe.com/2008/08/16/braid/#comment-237438</guid>
		<description>Joe,

Have a puzzle for you:

Customer has a ULC front end running under Tomcat/J2EE connecting via hibernate to Oracle RDBMS.

They have an application framework that is overdesigned/underdeveloped. One of the framework methods was to return a complex table view to the ULC client. A lot of rows. With even moderate rows of data the results were taking 38 seconds to render in the client. 

Upon profiling, the individual client in ULC was building the columns and preparing for the results and taking a lot of time doing so. Then it checked Hibernate for cached information, threw out the pre-rendered columns and started population from cache.

It then queried the database for changes when done, before presenting to the client and replaced all the effort with the results of the query. 38 seconds.

A single two letter change was made in the framework that reduced the overall transaction to about 5ms.

Once the change was made the table was pre-rendered and loaded quickly with the results. What was the two letter code change to the framework and where was it implemented in the methods?

Erik</description>
		<content:encoded><![CDATA[<p>Joe,</p>
<p>Have a puzzle for you:</p>
<p>Customer has a ULC front end running under Tomcat/J2EE connecting via hibernate to Oracle RDBMS.</p>
<p>They have an application framework that is overdesigned/underdeveloped. One of the framework methods was to return a complex table view to the ULC client. A lot of rows. With even moderate rows of data the results were taking 38 seconds to render in the client. </p>
<p>Upon profiling, the individual client in ULC was building the columns and preparing for the results and taking a lot of time doing so. Then it checked Hibernate for cached information, threw out the pre-rendered columns and started population from cache.</p>
<p>It then queried the database for changes when done, before presenting to the client and replaced all the effort with the results of the query. 38 seconds.</p>
<p>A single two letter change was made in the framework that reduced the overall transaction to about 5ms.</p>
<p>Once the change was made the table was pre-rendered and loaded quickly with the results. What was the two letter code change to the framework and where was it implemented in the methods?</p>
<p>Erik</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kevin</title>
		<link>http://programmerjoe.com/2008/08/16/braid/comment-page-1/#comment-234201</link>
		<dc:creator>Kevin</dc:creator>
		<pubDate>Thu, 21 Aug 2008 00:19:14 +0000</pubDate>
		<guid isPermaLink="false">http://programmerjoe.com/2008/08/16/braid/#comment-234201</guid>
		<description>I guess my problem with timed sections like the end of Halo 1 is not that it&#039;s timed; it&#039;s that the time between me realizing I&#039;ve screwed up and me getting to try that particular task again (a missed jump, a bad turn, whatever) is generally measured in minutes.  If I make a mistake, I spend the rest of the next attempt anticipating that moment where I screwed up, getting tense and stressed out, and knowing that even if I don&#039;t make that mistake again, I&#039;m likely to make another and have to start over anyway.

I didn&#039;t have that problem in Braid&#039;s final level because the time between me screwing up and me attempting that task again was measured in seconds; as well, any future mistakes wouldn&#039;t require me to do that particular challenging bit again.  It was like a continuous rolling save point.

It helped that I&#039;d already watched Raymond do part of it, so I knew going in that I&#039;d have to do it perfectly, but even so I screwed up a dozen or more times, including one long screwup where I discovered I&#039;d done the wrong thing half the level earlier.

If every platformer could give me that sense of constant recording of my successes and erasing of my mistakes, I&#039;d play a lot more platformers.</description>
		<content:encoded><![CDATA[<p>I guess my problem with timed sections like the end of Halo 1 is not that it&#8217;s timed; it&#8217;s that the time between me realizing I&#8217;ve screwed up and me getting to try that particular task again (a missed jump, a bad turn, whatever) is generally measured in minutes.  If I make a mistake, I spend the rest of the next attempt anticipating that moment where I screwed up, getting tense and stressed out, and knowing that even if I don&#8217;t make that mistake again, I&#8217;m likely to make another and have to start over anyway.</p>
<p>I didn&#8217;t have that problem in Braid&#8217;s final level because the time between me screwing up and me attempting that task again was measured in seconds; as well, any future mistakes wouldn&#8217;t require me to do that particular challenging bit again.  It was like a continuous rolling save point.</p>
<p>It helped that I&#8217;d already watched Raymond do part of it, so I knew going in that I&#8217;d have to do it perfectly, but even so I screwed up a dozen or more times, including one long screwup where I discovered I&#8217;d done the wrong thing half the level earlier.</p>
<p>If every platformer could give me that sense of constant recording of my successes and erasing of my mistakes, I&#8217;d play a lot more platformers.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joe</title>
		<link>http://programmerjoe.com/2008/08/16/braid/comment-page-1/#comment-232203</link>
		<dc:creator>Joe</dc:creator>
		<pubDate>Sun, 17 Aug 2008 21:15:03 +0000</pubDate>
		<guid isPermaLink="false">http://programmerjoe.com/2008/08/16/braid/#comment-232203</guid>
		<description>The problem is that the margin between success and failure on that last level was so small that you pretty much had to do the whole thing perfectly to survive.  When I went back and did it the time that actually worked it just happened to be the first where I didn&#039;t have any extra 1/4 second delays.  That might be fine for a pure platformer, but I certainly wasn&#039;t prepared for that kind of hectic pace.</description>
		<content:encoded><![CDATA[<p>The problem is that the margin between success and failure on that last level was so small that you pretty much had to do the whole thing perfectly to survive.  When I went back and did it the time that actually worked it just happened to be the first where I didn&#8217;t have any extra 1/4 second delays.  That might be fine for a pure platformer, but I certainly wasn&#8217;t prepared for that kind of hectic pace.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Hunt</title>
		<link>http://programmerjoe.com/2008/08/16/braid/comment-page-1/#comment-231894</link>
		<dc:creator>David Hunt</dc:creator>
		<pubDate>Sun, 17 Aug 2008 07:26:07 +0000</pubDate>
		<guid isPermaLink="false">http://programmerjoe.com/2008/08/16/braid/#comment-231894</guid>
		<description>The Penny Arcade comic (http://www.penny-arcade.com/comic/2008/8/8/) sums it up pretty nicely. I was impressed with the ending, but the gameplay felt out of place in that level.</description>
		<content:encoded><![CDATA[<p>The Penny Arcade comic (<a href="http://www.penny-arcade.com/comic/2008/8/8/" rel="nofollow">http://www.penny-arcade.com/comic/2008/8/8/</a>) sums it up pretty nicely. I was impressed with the ending, but the gameplay felt out of place in that level.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kevin</title>
		<link>http://programmerjoe.com/2008/08/16/braid/comment-page-1/#comment-231753</link>
		<dc:creator>Kevin</dc:creator>
		<pubDate>Sun, 17 Aug 2008 03:14:52 +0000</pubDate>
		<guid isPermaLink="false">http://programmerjoe.com/2008/08/16/braid/#comment-231753</guid>
		<description>Surprisingly (given my usual take on timed segments) I didn&#039;t mind the last bit at all.  I think it&#039;s because I could rewind, so as soon as I realized I&#039;d made a mistake that would cost me too much time, I could immediately rewind and fix that mistake.  So if I missed a jump or didn&#039;t jump off a ladder early enough, I could say &#039;whoops&#039; and fix it right then.  It was like having an editor for gameplay.

As for the story: Raymond finished the game and the optional content.  Tynes sent me a message when he saw me playing it: &#039;There is more.  It starts in world 2-2 and continues outside your front door.&#039;

Whether that reveals enough of the story to make it make sense to you, I don&#039;t know.  However, I can say that the obvious first step is to google any of the text in the epilogue that is obviously a quote from something.</description>
		<content:encoded><![CDATA[<p>Surprisingly (given my usual take on timed segments) I didn&#8217;t mind the last bit at all.  I think it&#8217;s because I could rewind, so as soon as I realized I&#8217;d made a mistake that would cost me too much time, I could immediately rewind and fix that mistake.  So if I missed a jump or didn&#8217;t jump off a ladder early enough, I could say &#8216;whoops&#8217; and fix it right then.  It was like having an editor for gameplay.</p>
<p>As for the story: Raymond finished the game and the optional content.  Tynes sent me a message when he saw me playing it: &#8216;There is more.  It starts in world 2-2 and continues outside your front door.&#8217;</p>
<p>Whether that reveals enough of the story to make it make sense to you, I don&#8217;t know.  However, I can say that the obvious first step is to google any of the text in the epilogue that is obviously a quote from something.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

