<?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>Some Assembly Required &#187; Talks</title>
	<atom:link href="http://assemblyrequired.crashworks.org/category/talks/feed/" rel="self" type="application/rss+xml" />
	<link>http://assemblyrequired.crashworks.org</link>
	<description>Technical Notes On Game Development</description>
	<lastBuildDate>Sun, 16 Oct 2011 04:04:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Why is it called a &#8220;core dump&#8221; anyway?</title>
		<link>http://assemblyrequired.crashworks.org/2011/03/11/why-is-it-called-a-core-dump-anyway/</link>
		<comments>http://assemblyrequired.crashworks.org/2011/03/11/why-is-it-called-a-core-dump-anyway/#comments</comments>
		<pubDate>Sat, 12 Mar 2011 02:01:02 +0000</pubDate>
		<dc:creator>Elan</dc:creator>
				<category><![CDATA[Talks]]></category>
		<category><![CDATA[gdc11talk]]></category>

		<guid isPermaLink="false">http://assemblyrequired.crashworks.org/?p=415</guid>
		<description><![CDATA[The diagnostic file emitted by a crashing process in a modern operating system can contain a variety of useful information, including exception type, current instruction, CPU state, call stack, and sometimes the entire contents of the current thread&#8217;s stack or even the entire process heap. So why is it called a &#8220;core dump&#8221;? For years [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://assemblyrequired.crashworks.org/wp-content/uploads/2011/03/Warp_core_breach_flashpoint-300x229.jpg" alt="Star Trek: TNG Warp Core Breach" title="Warp_core_breach_flashpoint" width="250" height="191" class="alignright size-medium wp-image-412" style="padding-left: 1em;" />The diagnostic file emitted by a crashing process in a modern operating system can contain a variety of useful information, including exception type, current instruction, CPU state, call stack, and sometimes the entire contents of the current thread&#8217;s stack or even the entire process heap. So why is it called a &#8220;core dump&#8221;?</p>
<p>For years I thought this was an amusing <em>Star Trek</em> reference by the original implementors of UNIX, after all the episodes in which the <em>Enterprise</em>&#8216;s reactor threatens to explode and Geordi has to save them by &#8220;<a href="http://memory-alpha.org/wiki/Warp_core_ejection_system">dumping the warp core</a>,&#8221; but it turns out the actual explanation is much more prosaic.<br />
<span id="more-415"></span><br />
<a href="http://assemblyrequired.crashworks.org/wp-content/uploads/2011/03/Ferrite_core_memory.jpg"><img src="http://assemblyrequired.crashworks.org/wp-content/uploads/2011/03/Ferrite_core_memory-300x287.jpg" alt="Ferrite Core Memory" title="Ferrite_core_memory" width="300" height="287" class="alignleft size-medium wp-image-411" style="padding: 1em;" /></a>In the days before computers used <a href="http://en.wikipedia.org/wiki/Dynamic_random_access_memory">capacitor-based dRAM</a>, the dominant technology for main memory was <a href="http://en.wikipedia.org/wiki/Magnetic_core_memory">to store bits as magnetic polarization in a grid of tiny ferrite cores</a> (iron rings). Thus a machine&#8217;s main memory was literally called <em>core memory</em>, or simply <em>core</em>. When a computer of this era crashed, it would simply output the entire contents of main memory to the punchcard printer, literally <em>dumping core</em> to output. Later, these core dumps became large files on the machine&#8217;s drum or disk drive, and eventually core memory became obsolete in favor of static and dynamic RAM, but the name remained. </p>
<p>If that sounds painful, consider the <a href="http://en.wikipedia.org/wiki/MIT_Whirlwind">Whirlwind </a>computer developed at MIT around 1951 (pictured below). When this 2kB, 0.04mHz behemoth crashed, it would simply display the entire contents of memory as a string of octal numbers on a dedicated CRT screen. Then, an automated camera would take a picture of this CRT on microfilm<sup>1</sup>. You, the programmer, would get the developed microfilm the next morning and display it on a projector, which would be your crash debugger. Operand highlighting was done with a brightly colored marker on the film transparency, and the disassembler was a guy you called on the phone to ask what instruction 0125715 meant.  At least the dump files themselves were small &mdash; about 35 millimeters, more or less.<br />
<br clear="all" /><br />
<div id="attachment_414" class="wp-caption aligncenter" style="width: 610px"><a href="http://assemblyrequired.crashworks.org/wp-content/uploads/2011/03/whirlwind_control_room_640x4001.jpg"><img src="http://assemblyrequired.crashworks.org/wp-content/uploads/2011/03/whirlwind_control_room_640x4001.jpg" alt="1951 computer control room with CRT display and vacuum tubes" title="Whirlwind Control Room" width="600" height="450" class="size-full wp-image-414" /></a><p class="wp-caption-text">Control room for MIT&#039;s Whirlwind computer, circa 1951</p></div></p>
<p><sup>1</sup>Everett, R.R. The Whirlwind I Computer. <em>Proceedings of the 1951 Joint AIEE-IRE Computer Conference</em>, pp. 70-74, Philadelphia, PA, 1951.</p>
]]></content:encoded>
			<wfw:commentRss>http://assemblyrequired.crashworks.org/2011/03/11/why-is-it-called-a-core-dump-anyway/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Annotated slides for GDC11 &#8220;Forensic Debugging&#8221;</title>
		<link>http://assemblyrequired.crashworks.org/2011/03/08/annotated-slides-for-gdc11-forensic-debugging/</link>
		<comments>http://assemblyrequired.crashworks.org/2011/03/08/annotated-slides-for-gdc11-forensic-debugging/#comments</comments>
		<pubDate>Tue, 08 Mar 2011 17:00:44 +0000</pubDate>
		<dc:creator>Elan</dc:creator>
				<category><![CDATA[Talks]]></category>
		<category><![CDATA[gdc11talk]]></category>

		<guid isPermaLink="false">http://assemblyrequired.crashworks.org/?p=400</guid>
		<description><![CDATA[The annotated slides for my "Forensic Debugging" GDC talk are now available here.]]></description>
			<content:encoded><![CDATA[<p><img src="http://assemblyrequired.crashworks.org/wp-content/uploads/2011/03/qbert_mars-300x265.png" alt="Angry-looking Mars" title="QBert On Mars" width="300" height="265" class="alignright size-medium wp-image-401" style="padding-left: 1em;" /> The <a href="http://crashworks.org/gdc11/elan_ruskin_programming_forensic_debugging.pdf">annotated slides</a> for my GDC talk on <em>Forensic Debugging and Crash Analysis</em>, containing my speaker&#8217;s notes and some narration, are now available for <a href="http://crashworks.org/gdc11/elan_ruskin_programming_forensic_debugging.pdf">download in PDF format here</a>. The PowerPoint should appear on the GDC Vault and <a href="http://www.valvesoftware.com/company/publications.html">Valve&#8217;s Publications webpage</a> soon, too.</p>
<p>This week I&#8217;m looking into the Steam side of Valve&#8217;s automated customer crash collecting technology, and what we can do to accumulate and usefully expose customer stability data to all our partners who ship with <a href="http://www.steampowered.com/steamworks/">Steamworks</a>. If you think this would be a useful feature for your studio to use in its games, please let me know! You can either contact me through the comment form here, or by mailing me directly at my Valve address.</p>
]]></content:encoded>
			<wfw:commentRss>http://assemblyrequired.crashworks.org/2011/03/08/annotated-slides-for-gdc11-forensic-debugging/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Forensic Debugging: Thanks Are Due</title>
		<link>http://assemblyrequired.crashworks.org/2011/03/06/forensic-debugging-thanks-are-due/</link>
		<comments>http://assemblyrequired.crashworks.org/2011/03/06/forensic-debugging-thanks-are-due/#comments</comments>
		<pubDate>Sun, 06 Mar 2011 21:44:13 +0000</pubDate>
		<dc:creator>Elan</dc:creator>
				<category><![CDATA[Talks]]></category>
		<category><![CDATA[gdc11talk]]></category>

		<guid isPermaLink="false">http://assemblyrequired.crashworks.org/?p=389</guid>
		<description><![CDATA[While debugging a smashed stack may seem like a heroic feat, the most heroic thing about my talk is the amount of time, effort, and care my friends spent to help me put it together. I would never have made it to the GDC, let alone made any sense whatsoever onstage, without the support of [...]]]></description>
			<content:encoded><![CDATA[<p>While debugging a smashed stack may seem like a heroic feat, the most heroic thing about my talk is the amount of time, effort, and care my friends spent to help me put it together. I would never have made it to the GDC, let alone made any sense whatsoever onstage, without the support of all my friends inside and outside Valve. </p>
<p>A special badge of courage is due those those who bravely offered to sit through my rehearsals, gave me details for slides, or in some other way helped distill ninety minutes of inane gibbering into one hour of assembly and win:</p>
<ul>
<li>Jeep Barnett</li>
<li>Dan Berger</li>
<li>Iestyn Bleasdale-Shepherd</li>
<li>Bank Charnchaichujit</li>
<li>John Cook</li>
<li>Kerry Davis</li>
<li>Bruce Dawson</li>
<li>Michelle Garrison</li>
<li>Bronwen Grimes</li>
<li>Dave Kircher</li>
<li>Tejeev Kohli</li>
<li>Joe Ludwig</li>
<li>Jason Mitchell</li>
<li>Kyle Monroe</li>
<li>Marc Nagel</li>
<li>Olivier Nallet</li>
<li>Alfred Reynolds</li>
<li>Dave Riller</li>
<li>Mike Sartain</li>
<li>Dave Saunders</li>
</ul>
<p>Thanks, guys and gals &mdash; I wouldn&#8217;t have done it without you.</p>
]]></content:encoded>
			<wfw:commentRss>http://assemblyrequired.crashworks.org/2011/03/06/forensic-debugging-thanks-are-due/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Preliminary GDC slides posted</title>
		<link>http://assemblyrequired.crashworks.org/2011/03/05/preliminary-gdc-slides-posted/</link>
		<comments>http://assemblyrequired.crashworks.org/2011/03/05/preliminary-gdc-slides-posted/#comments</comments>
		<pubDate>Sun, 06 Mar 2011 00:08:39 +0000</pubDate>
		<dc:creator>Elan</dc:creator>
				<category><![CDATA[Talks]]></category>

		<guid isPermaLink="false">http://assemblyrequired.crashworks.org/?p=384</guid>
		<description><![CDATA[Until the full slides are available in the GDC Vault, I've exported most of my GDC2011 slide deck as a PDF series of still images, to help fill in the notes of anyone who might have attended but missed a point or two.]]></description>
			<content:encoded><![CDATA[<p>Thanks to everyone who came to my &#8220;Forensic Debugging&#8221; talk at the 2011 Game Developers&#8217; Conference. I hope it was valuable to all who attended.</p>
<p>The lecture covered a great deal of ground in a short time, and so the slides necessarily had to go by rather quickly. Eventually a video of my presentation will be at the GDC vault. In the meantime, I&#8217;ve exported most of the deck as <a href="http://crashworks.org/gdc11/elan_ruskin_programming_forensic_debugging.pdf">a series of annotated PDF images here</a>, to help fill in the notes of anyone who might have attended but missed a point or two.</p>
<p>The intent of my talk was to give a general overview of the forensic mindset, the tools available, and demonstrate that rather than being a dark art, the science of crash analysis is something that everyone can learn. </p>
]]></content:encoded>
			<wfw:commentRss>http://assemblyrequired.crashworks.org/2011/03/05/preliminary-gdc-slides-posted/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>December Reading List</title>
		<link>http://assemblyrequired.crashworks.org/2008/12/06/december-reading-list/</link>
		<comments>http://assemblyrequired.crashworks.org/2008/12/06/december-reading-list/#comments</comments>
		<pubDate>Sat, 06 Dec 2008 22:04:45 +0000</pubDate>
		<dc:creator>Elan</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Talks]]></category>
		<category><![CDATA[360]]></category>
		<category><![CDATA[bruce dawson]]></category>

		<guid isPermaLink="false">http://assemblyrequired.crashworks.org/?p=39</guid>
		<description><![CDATA[In the realm of &#8220;things I really wish I had paid more attention to while we were crunching on Left 4 Dead&#8220;, I&#8217;ve recently been going through the talks from last June&#8217;s Gamefest. There is a lot of really great stuff in there, and I&#8217;ve only skimmed through a few of them so far, but [...]]]></description>
			<content:encoded><![CDATA[<p>In the realm of &#8220;things I really wish I had paid more attention to while we were crunching on <a href="http://www.l4d.com/"><em>Left 4 Dead</em></a>&#8220;, I&#8217;ve recently been going through <a href="http://www.xnagamefest.com/presentations08.htm">the talks from last June&#8217;s <em>Gamefest</em></a>. There is a lot of really great stuff in there, and I&#8217;ve only skimmed through a few of them so far, but among those few the standouts are:</p>
<ul>
<li><a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FB38CAAC-29B3-4E6B-A068-8BAC8B334C95&amp;displaylang=en">Xbox 360 Compiler and PgoLite Update</a>: where Bruce Dawson describes the <em>pure awesome</em> that has been poured into the XDK&#8217;s CPU performance-analysis tools, such as the Continuous Capture mode for PIX that lets you determine what caused a perf spike <em>after</em> it happens. (Yes, a perf tool can be said to contain pure awesome, for definitions of awesome encompassing branch prediction.) He also presents a lock-free pipe implementation added to the XDK libraries for interthread communication.</li>
<li><a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=F00E8E70-009D-48F5-9F19-158E75EA13DA&amp;displaylang=en">New CPU Features in the XDK</a>: where Dawson continues his reign of awesome in a discussion of improvements to the 360 compiler. He covers  faster asserts in array bounds-checking, an improvement to the __fsel intrinsic (the <a href="http://en.wikipedia.org/wiki/Conditional_operator">?:</a> operator isn&#8217;t so useless after all), caveats on certain VMX branching operations, and a better way to do SIMD constants. There&#8217;s also a bunch of improvements to the 360 compiler itself including better load-hit-store avoidance, better inline assembly, and a more useful /QXSTALLS pipeline simulator (which makes the compiler emit a nerd-readable assembly file for each .CPP with all your performance issues highlighted).</li>
<li><a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=1643D55A-D252-4717-BC3E-237C2C5295F4&amp;displaylang=en">At Least We Aren’t Doing That: Real Life Performance Pitfalls</a>: Allan Murphy lays out the fifteen most common performance screwups that the Microsoft support team sees. Each of them has been something I&#8217;ve gnashed my teeth over in the past ten years myself, and more than one is something game programmers been dealing with since the days of the <em>PS2</em> (so really we should know better by now).</li>
</ul>
<p>I&#8217;m still working my way through these docs and planning to put together a <em>précis</em> on them for the devs at Valve, so hopefully I&#8217;ll be able to post that here along with some of my own thoughts on the topics as well. Half the things in &#8220;At Least We Aren&#8217;t Doing That&#8221; are certainly issues I&#8217;ve been known to get into long lunchtime rants over!</p>
<p>Some other interesting documents on my vast and teetering to-read pile are <a href="http://duartes.org/gustavo/blog/category/internals">Gustavo Duarte&#8217;s articles on PC internals</a> like <a href="http://duartes.org/gustavo/blog/post/memory-translation-and-segmentation">x86 memory translation</a>,  <a href="http://www.gamasutra.com/features/gdcarchive/2003/Ericson_Christer.ppt">Christer Ericson&#8217;s old GDC2003 talk on memory optimization</a>, and Ulrich Drepper&#8217;s definitive but dense <a href="http://people.redhat.com/drepper/cpumemory.pdf">What Every Programmer Should Know About Memory</a>. The last one in particular I&#8217;m reviewing as a background citation to some notes I&#8217;m writing myself on console data caches (because I&#8217;d rather have something online and free to link to rather than send everyone to the bookstore to for a copy of <a href="http://www.amazon.com/Computer-Organization-Design-Hardware-Interface/dp/0123706068"><em>Computer Organization And Design</em></a>): it has a lot of good stuff in it, though much of it is specific to Linux running on x86 CPUs and very different from the way game consoles work. In particular, passages such as this one may bring a chuckle to PS3/<a href="http://en.wikipedia.org/wiki/Cell_(microprocessor)#Synergistic_Processing_Elements_.28SPE.29">Cell</a> developers:</p>
<blockquote><p>A computer can have a small amount of high-speed SRAM in addition to the large amount of DRAM. One possible implementation would be to dedicate a certain area of the address space of the processor as containing the SRAM and the rest the DRAM. The task of the operating system would then be to optimally distribute data to make use of the SRAM&#8230;. While this is a possible implementation it is not viable &#8230; this approach would require each process to administer in software the allocation of this memory region&#8230;. So instead of putting the SRAM under the control of the OS or user, it becomes a resource which is transparently used and administered by the processors.</p></blockquote>
<p>The transparent, all-knowing processor indeed.</p>
]]></content:encoded>
			<wfw:commentRss>http://assemblyrequired.crashworks.org/2008/12/06/december-reading-list/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How To Go From PC To Crossplatform Development (Without Killing Your Studio)</title>
		<link>http://assemblyrequired.crashworks.org/2008/03/08/how-to-go-from-pc-to-crossplatform-development-without-killing-your-studio/</link>
		<comments>http://assemblyrequired.crashworks.org/2008/03/08/how-to-go-from-pc-to-crossplatform-development-without-killing-your-studio/#comments</comments>
		<pubDate>Sat, 08 Mar 2008 10:31:47 +0000</pubDate>
		<dc:creator>Elan</dc:creator>
				<category><![CDATA[Production]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Talks]]></category>
		<category><![CDATA[crossplatform]]></category>
		<category><![CDATA[gdc]]></category>
		<category><![CDATA[gdc08talk]]></category>

		<guid isPermaLink="false">http://assemblyrequired.wordpress.com/?p=3</guid>
		<description><![CDATA[The slides for my talk at the 2008 Game Developers' Conference, "How To Go From PC To Console Development Without Killing Your Studio," are now available online at the Valve website.]]></description>
			<content:encoded><![CDATA[<p align="center"><img border="0" width="400" src="http://www.collabi.net/gdc08/talk/halflife_to_tob.jpg" alt="From Half-Life 2 to The Orange Box" height="103" /> </p>
<p>The slides for my talk at the 2008 <a href="http://gdconf.com">Game Developers&#8217; Conference</a>, &#8220;<em>How To Go From PC To Console Development Without Killing Your Studio</em>,&#8221; are <a href="http://www.valvesoftware.com/publications.html">now available online</a> at the Valve website. </p>
<p>The talk describes some of the many pitfalls that face developers who are used to developing their games exclusively for the home personal computer, but are now about to embark upon their first crossplatform title, shipping on both PC and console at the same time. These pitfalls have brought some studios to their doom, but fear not: I also provide techniques for how to deal with each of these issues, <em>without</em> having to rewrite most of your game from scratch.  Some of the techniques are production issues, like dealing with certification. Others address programming problems like improving framerate on the PowerPC — some assembly is required.</p>
<p>My speaker&#8217;s notes are embedded in the slides: hover over or click the small dialog bubble that Adobe Acrobat superimposes at the top left.</p>
<p>I&#8217;ve also started <a href="how-to-go-from-pc-to-crossplatform-development-qa" title="Questions and Answers">a Q&amp;A</a> page to address questions people have asked me about this talk, either in person at the conference, or through email since then. If you have questions of your own, please feel free to leave a comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://assemblyrequired.crashworks.org/2008/03/08/how-to-go-from-pc-to-crossplatform-development-without-killing-your-studio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

