<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type='text/xsl' href='http://pkisensee.spaces.live.com/mmm2008-05-17_13.22/rsspretty.aspx?rssquery=en-US;http%3a%2f%2fpkisensee.spaces.live.com%2ffeed.rss' version='1.0'?><rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:msn="http://schemas.microsoft.com/msn/spaces/2005/rss" xmlns:live="http://schemas.microsoft.com/live/spaces/2006/rss" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>LightSleeper</title><description>Good times!</description><link>http://pkisensee.spaces.live.com/</link><language>en-US</language><pubDate>Wed, 02 Jul 2008 09:51:55 GMT</pubDate><lastBuildDate>Wed, 02 Jul 2008 09:51:55 GMT</lastBuildDate><generator>Microsoft Spaces v1.1</generator><docs>http://www.rssboard.org/rss-specification</docs><ttl>60</ttl><live:identity><live:id>4360689961947836087</live:id><live:alias>pkisensee</live:alias></live:identity><image><title>LightSleeper</title><url>http://tkfiles.storage.live.com/y1ppTmbC4GQA2w4XHpz3Xxt_qKOO3YAgR69iYmwd6i11urV2MBXpVbwrg</url><link>http://pkisensee.spaces.live.com/</link></image><cf:listinfo><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="typelabel" label="Type" /><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="tag" label="Tag" /><cf:group element="category" label="Category" /><cf:sort element="pubDate" label="Date" data-type="date" default="true" /><cf:sort element="title" label="Title" data-type="string" /><cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" /></cf:listinfo><item><title>Fine Gems</title><link>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!263.entry</link><description>&lt;div&gt; &lt;/div&gt;
&lt;div&gt;An exciting new package arrived on my doorstep this week: a copy of &lt;a href="http://www.amazon.com/gp/redirect.html%3FASIN=1584505710%26tag=msnspaces04-20%26lcode=sp1%26cID=2025%26ccmID=165953%26location=/Best-Game-Programming-Gems-DeLoura/dp/1584505710%253FSubscriptionId=1KDHEGDEXZNBKYAEECR2"&gt;Best of Game Programming Gems&lt;/a&gt;, edited by my friend &lt;a href="http://satori.org/"&gt;Mark DeLoura&lt;/a&gt;. I've contributed many gems to this series over the years, and I edited the networking and multiplayer section in Game Programming Gems 4. The new Best Of volume includes four of my gems. Mark did a good job on choosing the best ones:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Custom STL Allocators
&lt;li&gt;Utilizing Multicore Processors with OpenMP
&lt;li&gt;Secure Sockets
&lt;li&gt;Bit Packing: A Network Compression Technique&lt;/ul&gt;
&lt;div&gt;There are dozens of other great gems covering math, physics, AI, graphics, networking and audio. Check it out!&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4360689961947836087&amp;page=RSS%3a+Fine+Gems&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pkisensee.spaces.live.com&amp;amp;GT1=pkisensee"&gt;</description><category>Game Programming</category><comments>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!263.entry#comment</comments><guid isPermaLink="true">http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!263.entry</guid><pubDate>Thu, 12 Jun 2008 16:42:17 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://pkisensee.spaces.live.com/blog/cns!3C84486A9D832EB7!263/comments/feed.rss</wfw:commentRss><wfw:comment>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!263.entry#comment</wfw:comment><dcterms:modified>2008-06-12T16:42:17Z</dcterms:modified></item><item><title>Const input parameters and typedefs</title><link>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!260.entry</link><description>&lt;div&gt;&lt;font face="Courier New"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;In good API design, one specifies unchangeable data that's passed by pointer as const:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;   void foo( const Stuff* pConstantStuff );&lt;/font&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;The compiler will guarantee that the &amp;quot;Stuff&amp;quot; pointed to by pConstantStuff is not modified by foo(). This is goodness. Microsoft APIs have a habit of using typedefs for structures, ala:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;   void foo( const STUFF* pConstantStuff );&lt;/font&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;In fact, some people even use typedefs for pointers to structures:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;   typedef Stuff* PSTUFF;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;And they write the API like this:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;   void foo( const PSTUFF pConstantStuff ); // Evil; this does not do what you expect!&lt;/font&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;That last version is not code you ever want to write! What it seems to promise is not what it actually promises. The compiler interprets it as:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;   void foo( Stuff* const pConstantStuff ); // weird but technically correct&lt;/font&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;This version guarantees that the &lt;em&gt;pointer itself&lt;/em&gt; cannot be changed by the function. However, the &lt;em&gt;contents&lt;/em&gt; of pConstantStuff are no longer constant. The code can change the contents and the compiler will happily oblige! There are two solutions. Solution one is to create a const version of the typedef and use it where appropriate. Here's how winnt.h does it for strings:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;   typedef char *LPSTR;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;   typedef const char* LPCSTR;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;The preferable solution is to &lt;strong&gt;avoid typedefs for pointer types&lt;/strong&gt; and &lt;strong&gt;use const directly whenever you need it&lt;/strong&gt;. Use const whenever you possibly can. In return, you get readable code that clearly expresses the intent -- and the compiler properly enforces the intent.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4360689961947836087&amp;page=RSS%3a+Const+input+parameters+and+typedefs&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pkisensee.spaces.live.com&amp;amp;GT1=pkisensee"&gt;</description><category>C++</category><comments>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!260.entry#comment</comments><guid isPermaLink="true">http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!260.entry</guid><pubDate>Thu, 05 Jun 2008 17:28:52 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://pkisensee.spaces.live.com/blog/cns!3C84486A9D832EB7!260/comments/feed.rss</wfw:commentRss><wfw:comment>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!260.entry#comment</wfw:comment><dcterms:modified>2008-06-05T17:28:52Z</dcterms:modified></item><item><title>BoostCon 2008</title><link>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!259.entry</link><description>&lt;div&gt; &lt;/div&gt;
&lt;div&gt;I spent the week of May 5-9 in Aspen, Colorado attending BoostCon. &lt;a href="http://www.boostcon.com/"&gt;BoostCon&lt;/a&gt; is all about &lt;a href="http://boost.org/"&gt;Boost&lt;/a&gt;, a collection of free portable C++ source code libraries.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;This is the second year of the conference. There were about 80 attendees, including C++ luminaries, Standards Committee members, Boost library authors and Boost library power users. The reason I attended is because the conference includes discussions on hardcore C++ usage plus future language and library features. Many of the Boost libraries (there are about 80) are already in the draft of the next version of the C++ Standard, and much of the work that happens in Boost libraries leads to new language features and new library components. &lt;strong&gt;Being at BoostCon is a bit like travelling to the future of C++&lt;/strong&gt;.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;u&gt;Conference Takeaways&lt;/u&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;C++0x (the next version of the C++ Standard) takes big steps toward improving the efficiency of code -- a big win for game developers.
&lt;li&gt;C++0x has a lot of new features. Most of the new features are not language features, but new standard libraries. Most of the language features are designed for library writers.
&lt;li&gt;You can find the current working draft of C++0X (May 2008) at &lt;a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2606.pdf"&gt;http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2606.pdf&lt;/a&gt;. Lots of goodness to sink your teeth into.
&lt;li&gt;&lt;a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2500.pdf"&gt;Concepts&lt;/a&gt;, one of the most significant potential language features, is not in the draft. However, it is still being considered for inclusion.
&lt;li&gt;Borland has re-energized its &lt;a href="http://www.ddj.com/cpp/202801210"&gt;C++ effort &lt;/a&gt;and is working on a C++0x compiler.
&lt;li&gt;Meta languages continue to be a surprising mini-topic. Observed C++ meta-languages from this year included:
&lt;ul&gt;
&lt;li&gt;template metaprogramming (of course)
&lt;li&gt;boost::format language
&lt;li&gt;regex regular expression language
&lt;li&gt;boost::spirit simple grammar parser
&lt;li&gt;boost::parameter function definitions&lt;/ul&gt;&lt;/ul&gt;
&lt;p&gt;Here's one of my favorite new features of C++0x. I hate writing code like this:
&lt;blockquote dir=ltr style="margin-right:0px"&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;for( &lt;strong&gt;std::vector&amp;lt;Stuff&amp;gt;::iterator&lt;/strong&gt; i = v.begin(); i != v.end(); ++i ) // C++ today&lt;/font&gt;&lt;/blockquote&gt;
&lt;p&gt;Wouldn't it be nice if the compiler just &lt;em&gt;knew&lt;/em&gt; what i was. It has to be the return type of v.begin(), right? C++0x allows you to avoid all that crazy typing:
&lt;blockquote dir=ltr style="margin-right:0px"&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;for( &lt;strong&gt;auto&lt;/strong&gt; i = v.begin(); i != v.end(); ++i ) // C++ in the future&lt;/font&gt;&lt;/blockquote&gt;
&lt;p&gt;That gives you a tantalizing glimpse of one of the many new features we have to look forward to in C++.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4360689961947836087&amp;page=RSS%3a+BoostCon+2008&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pkisensee.spaces.live.com&amp;amp;GT1=pkisensee"&gt;</description><category>C++</category><comments>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!259.entry#comment</comments><guid isPermaLink="true">http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!259.entry</guid><pubDate>Thu, 29 May 2008 16:22:05 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://pkisensee.spaces.live.com/blog/cns!3C84486A9D832EB7!259/comments/feed.rss</wfw:commentRss><wfw:comment>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!259.entry#comment</wfw:comment><dcterms:modified>2008-05-29T16:22:05Z</dcterms:modified></item><item><title>Gamefest 2008 is Coming</title><link>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!257.entry</link><description>&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Put it on your calendar: July 22-23 in Seattle. Gamefest is coming! If you've been to Gamefest in the past, you already know it's the ultimate place to get the latest and greatest information on creating games for Microsoft platforms like Xbox 360 and Windows Vista. If you work on games and you haven't been to Gamefest, you're missing something really special. I've already seen some of the proposed talk abstracts, and you can expect some amazing content from excellent speakers.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.xnagamefest.com"&gt;www.xnagamefest.com&lt;/a&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4360689961947836087&amp;page=RSS%3a+Gamefest+2008+is+Coming&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pkisensee.spaces.live.com&amp;amp;GT1=pkisensee"&gt;</description><category>Game Programming</category><comments>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!257.entry#comment</comments><guid isPermaLink="true">http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!257.entry</guid><pubDate>Thu, 01 May 2008 17:07:12 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://pkisensee.spaces.live.com/blog/cns!3C84486A9D832EB7!257/comments/feed.rss</wfw:commentRss><wfw:comment>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!257.entry#comment</wfw:comment><dcterms:modified>2008-05-01T17:07:12Z</dcterms:modified></item><item><title>I Hate to Wait</title><link>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!256.entry</link><description>&lt;div&gt; &lt;/div&gt;
&lt;div&gt;I admit to a certain fondness for first person shooters. I got hooked on Half-Life, but it was the Halo series that really put me over the edge. I particularly enjoy multiplayer fragfests. Most session-based games these days follow a model where you search for a particular session and either join an existing one or start your own. Either way, players are left waiting for the game to start when the session fills up with a certain number of players.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Players hate to wait, so it's always a good idea to reduce or eliminate wait times. The wait times for sessions can be described fairly simply:&lt;/div&gt;
&lt;blockquote dir=ltr style="margin-right:0px"&gt;
&lt;div&gt;WaitTime = GameModes * SessionTime * Players/Session / PlayersOnline&lt;/div&gt;&lt;/blockquote&gt;
&lt;div&gt;Wait times rise when:&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;there are many game modes (deathmatch, capture the flag, etc.)
&lt;li&gt;the average session time is long
&lt;li&gt;the average number of players per session is high
&lt;li&gt;there are fewer players in the overall pool of available players&lt;/ul&gt;
&lt;div&gt;Wait times decrease when:&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;there are fewer game modes
&lt;li&gt;the average session time is short
&lt;li&gt;the average number of players per session is low
&lt;li&gt;there are many players in the overall pool of available players&lt;/ul&gt;
&lt;p&gt;Games that group players by skill (Halo 2 and Halo 3 are examples) add another factor. The more skill groups you have, the longer the wait times.
&lt;p&gt;These factors are mostly in your control as a game designer and developer. If you want to reduce wait times there are multiple knobs to tweak. If you add a new multiplayer game mode, be aware that it will impact session wait times. Keeping sessions short is a great way to minimize waits. There are other ways, too. For instance, allow players to do something while they're waiting: chat, practice their skills, or watch something interesting. Of course, the most important thing you can do is ensure your game is great, because that will improve the overall pool of available players :).
&lt;p&gt; &lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4360689961947836087&amp;page=RSS%3a+I+Hate+to+Wait&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pkisensee.spaces.live.com&amp;amp;GT1=pkisensee"&gt;</description><category>Game Programming</category><comments>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!256.entry#comment</comments><guid isPermaLink="true">http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!256.entry</guid><pubDate>Fri, 18 Apr 2008 20:07:18 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://pkisensee.spaces.live.com/blog/cns!3C84486A9D832EB7!256/comments/feed.rss</wfw:commentRss><wfw:comment>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!256.entry#comment</wfw:comment><dcterms:modified>2008-04-18T20:07:18Z</dcterms:modified></item><item><title>When It Rains</title><link>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!255.entry</link><description>&lt;div&gt; &lt;/div&gt;
&lt;div&gt;One of the finest engineers I know, &lt;a href="http://www.cygnus-software.com/papers/index.html"&gt;Bruce Dawson&lt;/a&gt;, pointed out a fatal flaw in my GDC 2008 string code. Even more devastating, it's not a subtle flaw. This one was staring me right in the face and I didn't even see it. Recall the code:&lt;/div&gt;
&lt;blockquote dir=ltr style="margin-right:0px"&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;char* s = &amp;quot;abcdef&amp;quot;;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;char u[] = &amp;quot;def&amp;quot;;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;u[0] = 'x'; // danger, NOT!&lt;/font&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;div&gt;According to the C++ Standard, string literals can overlap in memory, so the &amp;quot;def&amp;quot; string could overlap with the &amp;quot;abcdef&amp;quot; portion. That much is still true. However, the &amp;quot;u&amp;quot; string is a &lt;strong&gt;&lt;em&gt;copy&lt;/em&gt;&lt;/strong&gt; of &amp;quot;def&amp;quot;, not a pointer into it. When you declare a string with angle brackets, you have a character array, not a string pointer. You can modify the &amp;quot;u&amp;quot; string to your heart's content and it will never ever modify &amp;quot;s&amp;quot;. That's because &amp;quot;u&amp;quot; is a character array, not a pointer.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Here's a revision:&lt;/div&gt;
&lt;blockquote dir=ltr style="margin-right:0px"&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;char* sz = &amp;quot;abcdef&amp;quot;;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;char* uz = &amp;quot;def&amp;quot;;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;char vz[] = &amp;quot;ef&amp;quot;;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;assert( (uz &amp;lt; sz) &amp;amp;&amp;amp; (uz &amp;gt; sz+6) ); // invalid assumption&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;sz[n] = 'x'; // undefined behavior&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;uz[n] = 'x'; // undefined behavior&lt;/font&gt;&lt;/div&gt;vz]n] = 'x'; // perfectly reasonable, as long as n &amp;lt; 2&lt;/font&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;div dir=ltr&gt;Now we have two string pointers that point at literals. The &amp;quot;def&amp;quot; portion could overlap with the end of the &amp;quot;abcdef&amp;quot; portion in memory, so it's not safe to assume that the pointer uz does not point somewhere within the sz range. Modifying the literal is still not allowed, even though we've declared non-const pointers (2.13.4/2 says &amp;quot;the effect of attempting to modify a string literal is undefined&amp;quot;). Finally, the character array vz contains a copy of &amp;quot;ef&amp;quot; and we can modify vz safely.&lt;/div&gt;
&lt;div dir=ltr&gt; &lt;/div&gt;
&lt;div dir=ltr&gt;As I said when I was giving the talk, C++ is a complicated language. It's up to all of to continue educating each other about the nuances. Sometimes explaining your bonehead mistakes is the best way to continue the education process. &lt;img title=Embarrassed style="vertical-align:middle" alt=Embarrassed src="http://shared.live.com/HjKMzTS-xzcms40!CabizA/emoticons/smile_embaressed.gif"&gt;&lt;/div&gt;
&lt;div dir=ltr&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4360689961947836087&amp;page=RSS%3a+When+It+Rains&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pkisensee.spaces.live.com&amp;amp;GT1=pkisensee"&gt;</description><category>C++</category><comments>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!255.entry#comment</comments><guid isPermaLink="true">http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!255.entry</guid><pubDate>Sat, 29 Mar 2008 00:23:01 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://pkisensee.spaces.live.com/blog/cns!3C84486A9D832EB7!255/comments/feed.rss</wfw:commentRss><wfw:comment>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!255.entry#comment</wfw:comment><dcterms:modified>2008-03-29T00:23:01Z</dcterms:modified></item><item><title>GDC 2008 Slides</title><link>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!254.entry</link><description>&lt;div&gt; &lt;/div&gt;
&lt;div&gt;I've had a lot of requests for my GDC presentation from last Thursday. Although I've made the slides available to the good people at CMP for posting on gdconf.com, they aren't available yet. You can find a copy on my personal website by pointing your browser at &lt;a href="http://www.tantalon.com/pete.htm"&gt;http://www.tantalon.com/pete.htm&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;A couple people mentioned an error in my talk. I showed some code like this:&lt;/div&gt;
&lt;blockquote dir=ltr style="margin-right:0px"&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;char* s = &amp;quot;abcdef&amp;quot;;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;char u[] = &amp;quot;bcd&amp;quot;;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;u[0] = 'x'; // danger&lt;/font&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;div&gt;According to the C++ Standard the string &amp;quot;bcd&amp;quot; could overlap with the string &amp;quot;abcdef&amp;quot;. That's incorrect, because &amp;quot;bcd&amp;quot; must end with the null character. I've adjusted my slides to show something accurate:&lt;/div&gt;
&lt;blockquote dir=ltr style="margin-right:0px"&gt;
&lt;div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;char* s = &amp;quot;abcdef&amp;quot;;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;char u[] = &amp;quot;def&amp;quot;;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;u[0] = 'x'; // danger&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;p style="margin-top:10.08pt;margin-bottom:0pt;margin-left:0.49in;vertical-align:baseline;direction:ltr;text-indent:-0.49in;line-height:90%;unicode-bidi:embed;text-align:left;language:en-US;punctuation-wrap:simple"&gt;Now &amp;quot;def&amp;quot; could indeed overlap with &amp;quot;abcdef&amp;quot; and changing &amp;quot;def&amp;quot; could change the &amp;quot;abcdef&amp;quot; string. Big takeaway: don't modify string literals.
&lt;p style="margin-top:10.08pt;margin-bottom:0pt;margin-left:0.49in;vertical-align:baseline;direction:ltr;text-indent:-0.49in;line-height:90%;unicode-bidi:embed;text-align:left;language:en-US;punctuation-wrap:simple"&gt; &lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4360689961947836087&amp;page=RSS%3a+GDC+2008+Slides&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pkisensee.spaces.live.com&amp;amp;GT1=pkisensee"&gt;</description><category>C++</category><comments>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!254.entry#comment</comments><guid isPermaLink="true">http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!254.entry</guid><pubDate>Wed, 27 Feb 2008 19:06:39 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://pkisensee.spaces.live.com/blog/cns!3C84486A9D832EB7!254/comments/feed.rss</wfw:commentRss><wfw:comment>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!254.entry#comment</wfw:comment><dcterms:modified>2008-02-27T19:06:39Z</dcterms:modified></item><item><title>GDC 2008 Recommendations</title><link>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!251.entry</link><description>&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.gdconf.com/"&gt;GDC&lt;/a&gt; is next week. It's an event I always look forward to: a chance to see old friends that I've worked with over the years, a chance to hear what's top of mind for game developers, an opportunity to see new technology and hear from some great speakers. Here's a few of the talks that I'll be trying to see:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Ray Kurzweil's &lt;a href="https://www.cmpevents.com/GD08/a.asp?option=C&amp;amp;V=11&amp;amp;SessID=7036"&gt;keynote&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href="https://www.cmpevents.com/GD08/a.asp?option=C&amp;amp;V=11&amp;amp;SessID=6173"&gt;Design Reboot&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href="https://www.cmpevents.com/GD08/a.asp?option=C&amp;amp;V=11&amp;amp;SessID=6902"&gt;Standing the Test of Time&lt;/a&gt; (Sid Meier!)&lt;/div&gt;
&lt;div&gt;&lt;a href="https://www.cmpevents.com/GD08/a.asp?option=C&amp;amp;V=11&amp;amp;SessID=7000"&gt;Structure vs. Style&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;Any of the Halo3 presentations, particularly &lt;a href="https://www.cmpevents.com/GD08/a.asp?option=C&amp;amp;V=11&amp;amp;SessID=6177"&gt;Matchmaking in Halo 3&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href="https://www.cmpevents.com/GD08/a.asp?option=C&amp;amp;V=11&amp;amp;SessID=6468"&gt;Dynamic Performance Profiling of C++ Code&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href="https://www.cmpevents.com/GD08/a.asp?option=C&amp;amp;V=11&amp;amp;SessID=6918"&gt;The Art and Technology Behind BioShock's Special FX&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href="https://www.cmpevents.com/GD08/a.asp?option=C&amp;amp;V=11&amp;amp;SessID=6996"&gt;Taming the Mob: Creating believable crowds in Assassin's Creed&lt;/a&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Expect some tasty announcements at the &lt;a href="https://www.cmpevents.com/GD08/a.asp?option=C&amp;amp;V=11&amp;amp;SessID=7035"&gt;Microsoft XNA keynote&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;I also have a feeling this talk will be pretty cool -- if a tad scary: &lt;a href="https://www.cmpevents.com/GD08/a.asp?option=C&amp;amp;V=11&amp;amp;SessID=6517"&gt;Thrills and Chills: Undefined Behavior in C++&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Hope to see you there!&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4360689961947836087&amp;page=RSS%3a+GDC+2008+Recommendations&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pkisensee.spaces.live.com&amp;amp;GT1=pkisensee"&gt;</description><category>Game Programming</category><comments>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!251.entry#comment</comments><guid isPermaLink="true">http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!251.entry</guid><pubDate>Fri, 15 Feb 2008 17:14:07 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://pkisensee.spaces.live.com/blog/cns!3C84486A9D832EB7!251/comments/feed.rss</wfw:commentRss><wfw:comment>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!251.entry#comment</wfw:comment><dcterms:modified>2008-02-15T17:14:07Z</dcterms:modified></item><item><title>Underscores and Identifiers</title><link>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!246.entry</link><description>&lt;div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;In preparation for my upcoming GDC presentation in San Francisco, I've been reading lots of Standards documents, both C99 and C++03. Fun stuff. I was reminded of some important guidelines for C++ identifiers. Identifiers include macro names, variable names and function names. Consider the following code:&lt;/div&gt;
&lt;blockquote dir=ltr style="margin-right:0px"&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;// TreeImpl.h&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;#ifdef TreeImpl__H&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;#include &amp;lt;map&amp;gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;class _TreeImpl&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;{&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;private:&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;   Tree* _pTree;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;   // etc.&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;}&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;#endif // TreeImpl__H&lt;/font&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;div&gt;Looks innocuous enough. But there's bad mojo hiding here. Here's what the C++ Standard says (17.4.3.1.2): &amp;quot;Each name that contains a double underscore (_ _) or begins with an underscore followed by an uppercase letter is reserved to the implementation&amp;quot; and &amp;quot;Each name that begins with an underscore is reserved to the implementation for use as a name in the global namespace.&amp;quot;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;In other words, the identifiers TreeImpl__H (double underscore), _TreeImpl and _pTree (leading underscores) are hidden bombs just waiting to explode. Should some future version of &amp;lt;map&amp;gt; include the following macro:&lt;/div&gt;
&lt;blockquote dir=ltr style="margin-right:0px"&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;#define _pTree (_p-&amp;gt;_tree_item-&amp;gt;getTreePtr())&lt;/font&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;div&gt;all hell will break lose. Programmers commonly look at implementation code, particularly Standard C++ header files, see the use of leading underscores and double underscores, and assume they are perfectly legitimate. Don't fall into this trap. Unless you write compilers and standard libraries, follow these rules to avoid tears:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Never use double underscores in C/C++ code.
&lt;li&gt;Never use leading underscores in C/C++ code.&lt;/ul&gt;
&lt;div&gt;Update your coding conventions appropriately.&lt;/div&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4360689961947836087&amp;page=RSS%3a+Underscores+and+Identifiers&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pkisensee.spaces.live.com&amp;amp;GT1=pkisensee"&gt;</description><category>C++</category><comments>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!246.entry#comment</comments><guid isPermaLink="true">http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!246.entry</guid><pubDate>Fri, 01 Feb 2008 17:08:23 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://pkisensee.spaces.live.com/blog/cns!3C84486A9D832EB7!246/comments/feed.rss</wfw:commentRss><wfw:comment>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!246.entry#comment</wfw:comment><dcterms:modified>2008-02-01T17:08:23Z</dcterms:modified></item><item><title>Shared_ptr swap, and more</title><link>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!245.entry</link><description>&lt;div&gt; &lt;/div&gt;
&lt;div&gt;One of the benefits of working at a big technology company is the ability to attend talks presented by smart people. Yesterday I went to hear &lt;a href="http://nuwen.net/"&gt;Stephan T. Lavavej&lt;/a&gt;, aptly known within the halls of Microsoft as STL. STL works on Visual Studio C++ libraries, including the C++ Standard Template Libraries (STL). His talk was on one of my favorite TR1 topics, shared_ptr.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;I've been using shared_ptr for a while, and have spent some time understanding Boost's implementation, so most of the presentation was just a refreshing review. However, some things were quite illuminating. I'll talk about two illuminations, one technical and one philosophical.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;The technical item I learned was about swapping shared_ptr. Consider a canonical swap of shared_ptr:&lt;/div&gt;
&lt;blockquote dir=ltr style="margin-right:0px"&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;shared_ptr&amp;lt;int&amp;gt; a( new int(1) ); // suppose we have two shared pointers&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;shared_ptr&amp;lt;int&amp;gt; b( new int(2) );&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;{ // now we swap them&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;   shared_ptr&amp;lt;int&amp;gt; temp = a; // refcount of int(1) ++&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;   a = b;                    // refcount of int(1) --, refcount of int(2) ++&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;   b = temp;                 // refcount of int(2) --, refcount of int(1) ++&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;}                            // refcount of int(1) --&lt;/font&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;div&gt;In the course of performing the swap, reference counts are modified six times. Because shared_ptr is threadsafe, refcount operations must be performed atomically, probably using some form of interlocked operations, which adds to the expense. Additionally, most (if not all) shared_ptr implementations store their refcounts in some area internally allocated by shared_ptr, so accessing the reference counts themselves required dereferencing pointers -- six times. All we wanted to accomplish is swap two pointers, but there was a lot of needless overhead. The solution? Use shared_ptr::swap() instead:&lt;/div&gt;
&lt;blockquote dir=ltr style="margin-right:0px"&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;a.swap( b ); // at least as fast as above, and considerably faster if you have a decent TR1 implementation&lt;/font&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;div&gt;In &lt;a href="http://pkisensee.spaces.live.com/blog/cns!3C84486A9D832EB7!242.entry"&gt;VC9 TR1&lt;/a&gt;, shared_ptr::swap() does just what it needs to do and no more. The refcounts are never touched. Only the pointers are swapped. The VC9 TR1 version of free swap (e.g. swap( a, b )) is similarly optimized. Sweet.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;The philosophical item I absorbed was just why shared_ptr completes the resource management picture for C++. Consider what we have without TR1. We have destructors, a deterministic resource release mechanism. We have: scope lifetime (&amp;quot;between the braces&amp;quot;), data member lifetime and container element lifetime, all of which are deterministic. And we have dynamic resources, which do not have a deterministic lifetime, but depend on us programmers to get it right. Therein lies the fatal flaw. Avoiding dynamic resource leaks, double deletions and so forth is Really Hard. That's the problem shared_ptr solves, and it solves it extremely well. In the face of exceptions, in the face of early exit from functions, and even in the face of code that is modified over time, shared_ptr Just Works. I used to think of shared_ptrs as just a good way to copy around heavy-weight objects. Now I think of shared_ptrs as the default owner for &lt;em&gt;any&lt;/em&gt; dynamic resource.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4360689961947836087&amp;page=RSS%3a+Shared_ptr+swap%2c+and+more&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pkisensee.spaces.live.com&amp;amp;GT1=pkisensee"&gt;</description><category>C++</category><comments>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!245.entry#comment</comments><guid isPermaLink="true">http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!245.entry</guid><pubDate>Thu, 17 Jan 2008 20:05:49 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://pkisensee.spaces.live.com/blog/cns!3C84486A9D832EB7!245/comments/feed.rss</wfw:commentRss><wfw:comment>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!245.entry#comment</wfw:comment><dcterms:modified>2008-01-17T20:05:49Z</dcterms:modified></item><item><title>GCAP Slides</title><link>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!243.entry</link><description>&lt;div&gt; &lt;/div&gt;
&lt;div&gt;I've had many requests for the slides that I presented at the &lt;a href="http://www.gameconnectap.com/"&gt;Game Connect: Asia Pacific &lt;/a&gt;talks in November. Ask and ye shall receive. All of my presentations were based on information given at &lt;a href="http://www.xnagamefest.com/presentations.htm"&gt;Gamefest 2007&lt;/a&gt;. Links below. Enjoy!&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;a href="http://download.microsoft.com/download/c/f/8/cf8d0552-5e8c-4501-a52e-0986a9295821/Multicore Programming Two Years Later.zip"&gt;Multicore Programming, Two Years Later&lt;/a&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;A technical talk on what we've learned about effective multicore programming on Xbox 360.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Effective Game Programming for Windows Vista&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;The lowdown on programming for Vista, 64-bit Windows, D3D10 and Games for Windows -- LIVE.&lt;/div&gt;
&lt;div&gt;This was a combination of five different talks from Gamefest:&lt;/div&gt;
&lt;blockquote dir=ltr style="margin-right:0px"&gt;
&lt;div&gt;&lt;a href="http://download.microsoft.com/download/2/2/e/22e373bc-4577-4cd4-b674-fbdc3f725d3a/Just Make Windows Work.zip"&gt;Just Make Windows Work&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href="http://download.microsoft.com/download/e/3/c/e3c25fea-2b53-4174-8729-29a4ec16583b/Why Your Windows Game Won't Run In 2,147,352,576 Bytes.zip"&gt;Why Your Windows Game Won't Run in 2,147,352,576 Bytes&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href="http://download.microsoft.com/download/a/0/4/a04deeb2-d7e2-42a5-984a-9ea5c92bfeb2/Windows to Reality - Getting the Most out of Direct3D 10 Graphics in your Games.zip"&gt;Windows to Reality: Getting the Most Out of Direct3D 10 Graphics in Your Games&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href="http://download.microsoft.com/download/8/0/6/806e1392-9c43-46b5-83e0-15b1fbd80bbb/Are Your Games Games For Windows Ready.zip"&gt;Are Your Games &amp;quot;Games for Windows&amp;quot; Ready?&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href="http://download.microsoft.com/download/b/f/1/bf149a6a-86f3-4fef-93b0-f37cf44e2fcf/Bringing the Best of Xbox LIVE to Windows.zip"&gt;Bringing the Best of Xbox LIVE to Windows&lt;/a&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;div&gt;&lt;strong&gt;&lt;a href="http://download.microsoft.com/download/e/b/2/eb2d5bb5-21ae-406d-bf10-8311f3897b07/The 10 Things You Should Be Thinking About Your Next Game.zip"&gt;A Baker's Dozen: 13 Tools and Technologies for Your Next Game&lt;/a&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;The latest tech in the Xbox 360 XDK and DirectX SDK and why you should consider using them for your next project. &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4360689961947836087&amp;page=RSS%3a+GCAP+Slides&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pkisensee.spaces.live.com&amp;amp;GT1=pkisensee"&gt;</description><category>Game Programming</category><comments>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!243.entry#comment</comments><guid isPermaLink="true">http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!243.entry</guid><pubDate>Thu, 10 Jan 2008 17:18:30 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://pkisensee.spaces.live.com/blog/cns!3C84486A9D832EB7!243/comments/feed.rss</wfw:commentRss><wfw:comment>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!243.entry#comment</wfw:comment><dcterms:modified>2008-01-10T17:18:30Z</dcterms:modified></item><item><title>TR1 coming to Visual Studio</title><link>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!242.entry</link><description>&lt;div&gt; &lt;/div&gt;
&lt;div&gt;I've blogged about TR1 &lt;a href="http://pkisensee.spaces.live.com/blog/cns!3C84486A9D832EB7!202.entry"&gt;before&lt;/a&gt;, and &lt;a href="http://pkisensee.spaces.live.com/blog/cns!3C84486A9D832EB7!200.entry"&gt;spoken&lt;/a&gt; about it, too. It's one of the coolest new C++ &lt;a href="http://en.wikipedia.org/wiki/Technical_Report_1"&gt;libraries&lt;/a&gt;. The &lt;a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1450.html"&gt;smart pointers &lt;/a&gt;alone are worth their weight in gold. Some good &lt;a href="http://blogs.msdn.com/somasegar/archive/2007/11/09/visual-c-libraries-update.aspx"&gt;news&lt;/a&gt; was recently announced: TR1 is coming to Visual Studio 2008. Here are some details:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;The TR1 library is expected to ship in the first quarter of 2008, with a beta sometime early in the New Year.
&lt;li&gt;The Microsoft TR1 implementation will contain everything described in the TR1 &lt;a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf"&gt;spec&lt;/a&gt; except sections 5.2 (mathematical special functions) and 8 (C compatibility).
&lt;li&gt;The Visual Studio debugger will be able to visualize TR1 types just like with the STL. Way cool.
&lt;li&gt;Mucho optimization work has gone into the implementation to ensure that Visual C++ STL and TR1 play nice. For example, containers of TR1 types will be more efficient because they understand each other's implementation details.&lt;/ul&gt;
&lt;div&gt;If you've put off looking at TR1 because it's not provided out of the box with Visual Studio, that excuse will no longer fly. Check it out!&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4360689961947836087&amp;page=RSS%3a+TR1+coming+to+Visual+Studio&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pkisensee.spaces.live.com&amp;amp;GT1=pkisensee"&gt;</description><category>C++</category><comments>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!242.entry#comment</comments><guid isPermaLink="true">http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!242.entry</guid><pubDate>Thu, 20 Dec 2007 16:57:54 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://pkisensee.spaces.live.com/blog/cns!3C84486A9D832EB7!242/comments/feed.rss</wfw:commentRss><wfw:comment>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!242.entry#comment</wfw:comment><dcterms:modified>2007-12-20T16:57:54Z</dcterms:modified></item><item><title>Sixth graders: the next gen of game devs</title><link>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!240.entry</link><description>&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Last Friday I spoke with three different local sixth grade classes about making games. It's always a kick to connect with some younger gaming consumers. Here are some notes I've compiled should you ever find yourself talking to two dozen 11-year-olds about your job as a game developer:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Sixth graders haven't thought about frame rates. When asked about how often a new frame needs to be displayed in order to get the feeling of motion, the answers went as high as 1,000,000 times per second.
&lt;li&gt;Sixth graders are observant. We evaluated a game &lt;a href="http://halo3.com/images/screenshots/downloads/val_mongoose1.jpg"&gt;screenshot&lt;/a&gt; and identified &amp;quot;things that the game had to figure out&amp;quot; in order to generate the frame. The list was long: character animation, collisions, dust (particle effects), vehicles (physics), projectiles/weapon-fire, water effects, lighting, shadows, music, sound fx, and cloth. When we were done we had covered just about everything that might happen in a typical game loop. The things they didn't think about (because they're not obvious from a screenshot) were input and networking.
&lt;li&gt;Sixth graders aren't afraid to ask tough questions: why does my Xbox 360 have three red lights? when is Microsoft going to make a new console? how are you going to compete with Wii? why does game &amp;lt;X&amp;gt; always stutter or freeze?
&lt;li&gt;Sixth graders have lots of good ideas: you should make a &lt;a href="http://www.xbox.com/en-US/games/s/sceneitlightscameraaction/"&gt;trivia game that uses Xbox LIVE&lt;/a&gt;; you should make Xbox 360 smaller so I can take it to my friend's house; you should partner up with Nintendo so you can use Wiimote on Xbox 360; you should make Xbox 360 cheaper so my parents will buy me one for Christmas.&lt;/ul&gt;
&lt;p&gt;If you ever get the chance to talk with future game programmers at your local school, do it. All you need is a couple of good trailers to set the stage, some screen shots that you can discuss in detail, and a willingness to answer some pretty off-the-wall questions.
&lt;p&gt; &lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4360689961947836087&amp;page=RSS%3a+Sixth+graders%3a+the+next+gen+of+game+devs&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pkisensee.spaces.live.com&amp;amp;GT1=pkisensee"&gt;</description><category>Game Programming</category><comments>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!240.entry#comment</comments><guid isPermaLink="true">http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!240.entry</guid><pubDate>Thu, 13 Dec 2007 18:30:51 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://pkisensee.spaces.live.com/blog/cns!3C84486A9D832EB7!240/comments/feed.rss</wfw:commentRss><wfw:comment>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!240.entry#comment</wfw:comment><dcterms:modified>2007-12-13T18:30:51Z</dcterms:modified></item><item><title>Console Cage Match</title><link>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!234.entry</link><description>&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Not long ago somebody pointed me at a blog entry entitled &lt;a href="http://jbooth.blogspot.com/2007/10/ps3-misconceptions-and-spin.html"&gt;PS3 misconceptions and spin&lt;/a&gt;, which basically says it's hard to make games for PS3. I'm not going to comment on the content itself (nor on the inflammatory blog comments). I work on game technology at Microsoft and am inherently biased. Anyway, the article could just as well have been written about any game console. The console game development business is tough no matter what hardware you target.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;The whole thing reminded me that consoles are successful for a variety of reasons. Just because a console has great performance compared to its competitors doesn't mean it will be successful. Wii is doing just fine, thank you. And just because it's difficult to create games on a console doesn't mean the console &lt;em&gt;won't&lt;/em&gt; be successful, either. Witness PS2.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;At GDC 2007, &lt;a href="http://www.mobygames.com/developer/sheet/view/developerId,3246/"&gt;Don Daglow&lt;/a&gt; gave an illuminating &lt;a href="http://www.next-gen.biz/index.php?option=com_content&amp;amp;task=view&amp;amp;id=4912&amp;amp;Itemid=2"&gt;talk&lt;/a&gt; on what really makes game consoles successful. His key criteria to winning the console war:&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Price parity (consumers feeling like they get good value for their money)
&lt;li&gt;Critical mass of good games
&lt;li&gt;Reliability
&lt;li&gt;Faith the hard core gamer&lt;/ul&gt;
&lt;div&gt;Don made sure to point out that there were many differences in the console war we're experiencing today, mostly around social gameplay (MMOs, multiplayer, voice chat, innovative controllers, casual games and so forth), and the social gameplay aspect might also factor into the &amp;quot;winner&amp;quot; as well. Notice that neither &amp;quot;ease of programming&amp;quot; or &amp;quot;hardware performance&amp;quot; were in Don's criteria list. As &lt;a href="http://en.wikipedia.org/wiki/The_Arsenio_Hall_Show"&gt;Arsenio&lt;/a&gt; liked to say, &amp;quot;Things that make you go Hmmmm....&amp;quot;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4360689961947836087&amp;page=RSS%3a+Console+Cage+Match&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pkisensee.spaces.live.com&amp;amp;GT1=pkisensee"&gt;</description><category>Game Programming</category><comments>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!234.entry#comment</comments><guid isPermaLink="true">http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!234.entry</guid><pubDate>Thu, 29 Nov 2007 23:03:03 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://pkisensee.spaces.live.com/blog/cns!3C84486A9D832EB7!234/comments/feed.rss</wfw:commentRss><wfw:comment>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!234.entry#comment</wfw:comment><dcterms:modified>2007-11-29T23:03:03Z</dcterms:modified></item><item><title>Aussie Game Studio Enthusiasts</title><link>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!237.entry</link><description>&lt;div&gt; &lt;/div&gt;
&lt;div&gt;As part of my trip next week, I'll also be spending time at some informal enthusiast meet-ups in Sydney and Melbourne. Here are the details:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div style="margin:0in 0in 0pt"&gt;&lt;span lang=EN-SG style="color:#1f497d"&gt;&lt;font face=Arial size=2&gt;Sydney Event: &lt;/font&gt;&lt;a href="http://xnasydneypeteisensee.events.live.com/default.aspx"&gt;&lt;u&gt;&lt;font face=Arial color="#0000ff" size=2&gt;http://xnasydneypeteisensee.events.live.com/default.aspx&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin:0in 0in 0pt 0.5in;text-indent:-0.25in"&gt;&lt;font face=Arial&gt;&lt;font size=2&gt;&lt;span lang=EN-SG style="font-family:Symbol"&gt;&lt;span style=""&gt;·&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-SG style=""&gt;Date: Nov 14&lt;sup&gt;th&lt;/sup&gt; 2007 @ 6:30PM&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin:0in 0in 0pt 0.5in;text-indent:-0.25in"&gt;&lt;font face=Arial&gt;&lt;font size=2&gt;&lt;span lang=EN-SG style="font-family:Symbol"&gt;&lt;span style=""&gt;·&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-SG style=""&gt;Location: Microsoft Sydney Office&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin:0in 0in 0pt"&gt;&lt;span lang=EN-SG style="color:#1f497d"&gt;&lt;font face=Arial size=2&gt; &lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin:0in 0in 0pt"&gt;&lt;span lang=EN-SG style="color:#1f497d"&gt;&lt;font face=Arial size=2&gt;Melbourne Event: &lt;/font&gt;&lt;a href="http://xnamelbournepeteisensee.events.live.com/default.aspx"&gt;&lt;u&gt;&lt;font face=Arial color="#0000ff" size=2&gt;http://xnamelbournepeteisensee.events.live.com/default.aspx&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin:0in 0in 0pt 0.5in;text-indent:-0.25in"&gt;&lt;font face=Arial&gt;&lt;font size=2&gt;&lt;span lang=EN-SG style="font-family:Symbol"&gt;&lt;span style=""&gt;·&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-SG style=""&gt;Date: Nov 16&lt;sup&gt;th&lt;/sup&gt; 2007 @ 6:30PM&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin:0in 0in 0pt 0.5in;text-indent:-0.25in"&gt;&lt;font face=Arial&gt;&lt;font size=2&gt;&lt;span lang=EN-SG style="font-family:Symbol"&gt;&lt;span style=""&gt;·&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-SG style=""&gt;Location: Microsoft Melbourne Office&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin:0in 0in 0pt 0.5in;text-indent:-0.25in"&gt;&lt;font face=Arial size=2&gt;&lt;span lang=EN-SG style=""&gt;&lt;/span&gt;&lt;/font&gt; &lt;/div&gt;&lt;font face=Arial&gt;&lt;span lang=EN-SG style=""&gt;
&lt;div&gt;&lt;font size=2&gt;I'll give a brief preview of what you can expect in the new version of XNA Game Studio and the XNA Framework, and be available to answer questions about your own Game Studio projects. Hope you can join me...&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font size=2&gt;&lt;/font&gt; &lt;/div&gt;&lt;/span&gt;&lt;/font&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4360689961947836087&amp;page=RSS%3a+Aussie+Game+Studio+Enthusiasts&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pkisensee.spaces.live.com&amp;amp;GT1=pkisensee"&gt;</description><category>Game Programming</category><comments>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!237.entry#comment</comments><guid isPermaLink="true">http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!237.entry</guid><pubDate>Wed, 07 Nov 2007 16:56:01 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://pkisensee.spaces.live.com/blog/cns!3C84486A9D832EB7!237/comments/feed.rss</wfw:commentRss><wfw:comment>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!237.entry#comment</wfw:comment><dcterms:modified>2007-11-07T16:56:01Z</dcterms:modified></item><item><title>Game Connect Asia Pacific 2007</title><link>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!235.entry</link><description>&lt;div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Next week I'll be spending a week down under. I'm giving talks at the &lt;a href="http://www.gameconnectap.com/"&gt;Game Connect Asia Pacific&lt;/a&gt; conference in Melbourne, so if you're in the area, be sure to stop by!&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;u&gt;Talk list&lt;/u&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Multicore Programming, Two Years Later&lt;/strong&gt;: A detailed technical talk on what we've learned about effective multicore programming on Xbox 360.&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Effective Game Programming for Windows Vista&lt;/strong&gt;: The lowdown on programming for Vista, 64-bit Windows, D3D10 and Games for Windows -- LIVE.&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;A Baker's Dozen: 13 Tools and Technologies for Your Next Game&lt;/strong&gt;: The latest tech in the Xbox 360 XDK and DirectX SDK and why you should consider using them for your next project.&lt;/div&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4360689961947836087&amp;page=RSS%3a+Game+Connect+Asia+Pacific+2007&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pkisensee.spaces.live.com&amp;amp;GT1=pkisensee"&gt;</description><category>Game Programming</category><comments>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!235.entry#comment</comments><guid isPermaLink="true">http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!235.entry</guid><pubDate>Tue, 06 Nov 2007 01:32:30 GMT</pubDate><slash:comments>3</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://pkisensee.spaces.live.com/blog/cns!3C84486A9D832EB7!235/comments/feed.rss</wfw:commentRss><wfw:comment>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!235.entry#comment</wfw:comment><dcterms:modified>2007-11-06T01:32:30Z</dcterms:modified></item><item><title>Gamefest 2007 Talks Posted</title><link>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!233.entry</link><description>&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Gamefest content is now available online: &lt;a href="http://www.xnagamefest.com"&gt;http://www.xnagamefest.com&lt;/a&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Due to some audio snafus, not all the talks include the audio recordings. Those responsible have been &lt;em&gt;soundly&lt;/em&gt; thrashed (pun intended). Enjoy!&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4360689961947836087&amp;page=RSS%3a+Gamefest+2007+Talks+Posted&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pkisensee.spaces.live.com&amp;amp;GT1=pkisensee"&gt;</description><category>Game Programming</category><comments>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!233.entry#comment</comments><guid isPermaLink="true">http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!233.entry</guid><pubDate>Tue, 16 Oct 2007 16:47:21 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://pkisensee.spaces.live.com/blog/cns!3C84486A9D832EB7!233/comments/feed.rss</wfw:commentRss><wfw:comment>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!233.entry#comment</wfw:comment><dcterms:modified>2007-10-16T16:47:21Z</dcterms:modified></item><item><title>Randomness, binary numbers and floating-point arithmetic meet Mr. Benford</title><link>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!231.entry</link><description>&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Suppose you're looking for sources of random numbers. You choose numbers from a newspaper. How random will the numbers be? Answer: not very. This surprising result is called &lt;a href="http://en.wikipedia.org/wiki/Benford's_law"&gt;Benford's Law&lt;/a&gt;. This law says that real-world numbers (measurements, populations, stock prices and so forth) are distributed logarithmically. More specifically, the leading digit of a given real-world value is 1 about 30% of the time (instead of 10% of the time, as you might expect), and leading digit is 9 less than than 5% of the time (again, not the expected 10%).&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;There are many fascinating things about Benford's Law. For instance, even though the law was discovered in the late 1800s, it was only proven only 10 years ago. More interestingly, the IRS uses Benford's Law to detect fraudulent tax returns.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;a href="http://blogs.msdn.com/ericlippert/default.aspx"&gt;Eric Lippert&lt;/a&gt; makes the case in his &lt;a href="http://blogs.msdn.com/ericlippert/archive/2005/01/12/benford-s-law.aspx"&gt;blog&lt;/a&gt; that Benford's Law means that binary numbers are actually the best way the do accurate floating-point math calculations on real-world numbers.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;I find the intersection between mathematics and the real-world to be absolutely fascinating.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4360689961947836087&amp;page=RSS%3a+Randomness%2c+binary+numbers+and+floating-point+arithmetic+meet+Mr.+Benford&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pkisensee.spaces.live.com&amp;amp;GT1=pkisensee"&gt;</description><category>Game Programming</category><comments>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!231.entry#comment</comments><guid isPermaLink="true">http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!231.entry</guid><pubDate>Thu, 20 Sep 2007 18:54:22 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://pkisensee.spaces.live.com/blog/cns!3C84486A9D832EB7!231/comments/feed.rss</wfw:commentRss><wfw:comment>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!231.entry#comment</wfw:comment><dcterms:modified>2007-09-20T18:54:22Z</dcterms:modified></item><item><title>Chickie Baby</title><link>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!229.entry</link><description>&lt;div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;There are many constants at Microsoft. Offices moves are one of my least favorite. After nearly seven years at Microsoft, I've only moved once, a badge of honor I wear proudly. I know many people who've moved &lt;em&gt;more&lt;/em&gt; than seven times in seven years. But all good things must come to an end. My team is moving -- not far, just from the second floor to the first floor of the same building. Why? Don't get me started.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;The good thing about moves is that it forces me to clean up. I hate moving anything that I don't need to. As I was going through old folders yesterday, I ran across something from my Peopleware days. &lt;a href="http://www.peopleware.com/"&gt;Peopleware&lt;/a&gt; was my first official job out of college. I was one of two programmers, so I did just about everything, from customer support to testing to managing the company network to writing lots and lots of code. During my last year there, I wrote a document describing all of our best practices. The programming team had grown to six people by then, and I was the senior programmer -- despite being only 25 years old. Here's a snippet from that document:&lt;/div&gt;
&lt;blockquote dir=ltr style="margin-right:0px"&gt;
&lt;div&gt;&lt;font size=4&gt;The Chicken&lt;/font&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;The rubber chicken (affectionately known as &amp;quot;Chickie Baby&amp;quot;) is the development team's light-hearted way of saying &amp;quot;you screwed up.&amp;quot; Normally, somebody on the team will voluntarily claim the chicken when they have made a mistake. However, you can also receive the chicken if another team member discovers that you made a mistake.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;The cool thing about the chicken is that you have to explain your mistake to everybody else when the chicken lands in your in-box. Mistakes become a way to share information so that other team members can avoid your specific mistake in the future. This way, you not only learn from the mistake, but everybody else on the team learns from it, too.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;The chicken is just one other way the development team helps each other avoid mistakes, which in turn leads to better products.&lt;/div&gt;&lt;/blockquote&gt;
&lt;div&gt;I've seen lots of takes on Chickie Baby over the years, such as a stuffed alligator, as well as an actual toilet that was given to programmers that broke the build. Whatever lighthearted form it takes, your team's Chickie Baby is a great way of sharing information, particularly between gurus and the newest members of your team. If you don't have a Chickie Baby, today's a great day to find one.&lt;/div&gt; &lt;/div&gt;&lt;div&gt;&lt;table cellspacing="0" border="0"&gt;&lt;tr height="8"&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;p&gt;&lt;a href="http://byfiles.storage.live.com&amp;#47;y1p508VobiFlkjZOa0rzcbIDYdVEKJiayMe6kbCfi46jmDRuRq56VipwFelk1G61Soc"&gt;&lt;img src="http://storage.live.com&amp;#47;items&amp;#47;3C84486A9D832EB7&amp;#33;230&amp;#58;thumbnail" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="15"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4360689961947836087&amp;page=RSS%3a+Chickie+Baby&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pkisensee.spaces.live.com&amp;amp;GT1=pkisensee"&gt;</description><category>Game Programming</category><comments>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!229.entry#comment</comments><guid isPermaLink="true">http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!229.entry</guid><pubDate>Thu, 13 Sep 2007 16:36:15 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://pkisensee.spaces.live.com/blog/cns!3C84486A9D832EB7!229/comments/feed.rss</wfw:commentRss><wfw:comment>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!229.entry#comment</wfw:comment><dcterms:modified>2007-09-13T16:36:15Z</dcterms:modified></item><item><title>Unordered Associative Containers Part II</title><link>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!226.entry</link><description>&lt;div&gt; &lt;/div&gt;
&lt;div&gt;A few &lt;a href="http://pkisensee.spaces.live.com/blog/cns!3C84486A9D832EB7!206.entry"&gt;months ago &lt;/a&gt;I talked about hash tables, known in TR1 as unordered associative containers, and hinted that's what really interesting about them is how they work under the covers. Of course, neither TR1 or the C++ Standard describe how to implement containers. These documents only describe how the containers must behave.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;When I analyzed unordered associative containers (UACs), I looked at one specific implementation, the &lt;a href="http://www.dinkumware.com/"&gt;Dinkumware&lt;/a&gt; version. The requirements on UACs are simple. Insertion must be average time complexity O(1) and worst-case complexity O(n). Search performance must be the same: constant time on average, and linear in the worst case. This is the true distinction of hash tables. Unlike associative containers, which have O(log n) complexity for insertion and find, UACs can do much better: constant time insertion/find. The drawback of UACs is that performance can degrade to worse than log n: linear.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Hash tables work by hashing elements into &lt;a href="http://en.wikipedia.org/wiki/Hash_table"&gt;buckets&lt;/a&gt;. The perfect hash table has one element per bucket. A good hash table has a handful of elements in each and every bucket.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;The Dinkumware implementation of UACs is simple but clever. Elements T are stored in a single std::list&amp;lt;T&amp;gt;. Buckets each contain a single iterator that points somewhere into the list. Hence, buckets is defined as vector of iterators, a std::vector&amp;lt; std::list&amp;lt;T&amp;gt;::iterator &amp;gt;. When a new element is added to the UAC, it is hashed to determine its bucket. If the bucket is empty, the element itself is added to the list and the bucket iterator is changed to &amp;quot;point&amp;quot; to the element in the list. If the bucket already points into the list, the element is inserted into the list. The clever part of the implementation is the use of a single std::list data structure to represent the &amp;quot;mini-lists&amp;quot; of each bucket. There's a picture on &lt;a href="https://www.cmpevents.com/sessions/GD/S3720i1.pdf"&gt;slide 20 here&lt;/a&gt; that gives you a visualization. Unfortunately the PDF doesn't animate, but you'll get the general idea. Notice that int elements 2 and 7 both hashed to the same bucket. The bucket points to the 2, which is followed by the 7. The next element in the list is 4, but because the iterator to element 4 is in the next non-empty bucket, we know that 7 is the last element in the bucket. The Dinkumware implementation uses this little trick to avoid having a unique list per bucket. The single list represents all the bucket lists.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;I haven't had the chance to look at other implementations, but I'm sure it would prove a very interesting exercise.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4360689961947836087&amp;page=RSS%3a+Unordered+Associative+Containers+Part+II&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pkisensee.spaces.live.com&amp;amp;GT1=pkisensee"&gt;</description><category>C++</category><comments>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!226.entry#comment</comments><guid isPermaLink="true">http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!226.entry</guid><pubDate>Thu, 30 Aug 2007 21:38:17 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://pkisensee.spaces.live.com/blog/cns!3C84486A9D832EB7!226/comments/feed.rss</wfw:commentRss><wfw:comment>http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!226.entry#comment</wfw:comment><dcterms:modified>2007-08-30T21:38:17Z</dcterms:modified></item><item><title>Book List: Book List</title><link>http://pkisensee.spaces.live.com/Lists/cns!3C84486A9D832EB7!110</link><description>&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;1584505710&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;Best-Game-Programming-Gems-DeLoura&amp;#47;dp&amp;#47;1584505710&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;Mark DeLoura: Best of Game Programming Gems&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;1584505710&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;Best-Game-Programming-Gems-DeLoura&amp;#47;dp&amp;#47;1584505710&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;&lt;img src="http://ecx.images-amazon.com&amp;#47;images&amp;#47;I&amp;#47;61RJtJmhC-L._SL75_.jpg" valign="top" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;0321113586&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;0321113586&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;Herb Sutter and Andrei Alexandrescu: C&amp;#43;&amp;#43; Coding Standards&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;0321113586&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;0321113586&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;&lt;img src="http://images.amazon.com&amp;#47;images&amp;#47;P&amp;#47;0321113586.01._SCTHUMBZZZ_.jpg" valign="top" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;0321412990&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;0321412990&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;Pete Becker: C&amp;#43;&amp;#43; Standard Library Extension&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;0321412990&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;0321412990&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;&lt;img src="http://images.amazon.com&amp;#47;images&amp;#47;P&amp;#47;0321412990.01._SCTHUMBZZZ_V39910487_.jpg" valign="top" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;0321227255&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;0321227255&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;David Abrahams: C&amp;#43;&amp;#43; Template Metaprogramming&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;0321227255&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;0321227255&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;&lt;img src="http://ec1.images-amazon.com&amp;#47;images&amp;#47;P&amp;#47;0321227255.01._SCTHUMBZZZ_V38087668_.jpg" valign="top" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;0201749629&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;0201749629&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;Scott Meyers: Effective STL&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;0201749629&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;0201749629&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;&lt;img src="http://ec1.images-amazon.com&amp;#47;images&amp;#47;P&amp;#47;0201749629.01._SCTHUMBZZZ_.jpg" valign="top" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;0201615622&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;0201615622&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;Herb Sutter: Exceptional C&amp;#43;&amp;#43;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;0201615622&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;0201615622&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;&lt;img src="http://ec1.images-amazon.com&amp;#47;images&amp;#47;P&amp;#47;0201615622.01._SCTHUMBZZZ_V1121162356_.jpg" valign="top" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;1584500492&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;1584500492&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;Mark DeLoura: Game Programming Gems&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;1584500492&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;1584500492&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;&lt;img src="http://images.amazon.com&amp;#47;images&amp;#47;P&amp;#47;1584500492.01._SCTHUMBZZZ_.jpg" valign="top" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;1584500549&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;1584500549&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;Mark DeLoura: Game Programming Gems 2&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;1584500549&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;1584500549&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;&lt;img src="http://images.amazon.com&amp;#47;images&amp;#47;P&amp;#47;1584500549.01._SCTHUMBZZZ_V1056524305_.jpg" valign="top" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;1584502339&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;1584502339&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;Dante Treglia: Game Programming Gems 3&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;1584502339&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;1584502339&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;&lt;img src="http://images.amazon.com&amp;#47;images&amp;#47;P&amp;#47;1584502339.01._SCTHUMBZZZ_V1135033150_.jpg" valign="top" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;1584502959&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;1584502959&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;Andrew Kirmse: Game Programming Gems 4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;1584502959&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;1584502959&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;&lt;img src="http://ec1.images-amazon.com&amp;#47;images&amp;#47;P&amp;#47;1584502959.01._SCTHUMBZZZ_V1135033158_.jpg" valign="top" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;1584503521&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;1584503521&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;Kim Pallister: Game Programming Gems 5&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;1584503521&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;1584503521&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;&lt;img src="http://ec2.images-amazon.com&amp;#47;images&amp;#47;P&amp;#47;1584503521.01._SCTHUMBZZZ_.jpg" valign="top" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;1584504501&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;1584504501&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;Mike Dickheiser: Game Programming Gems 6 &amp;#40;Book &amp;#38; CD-ROM&amp;#41; &amp;#40;Game Development Series&amp;#41;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;1584504501&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;1584504501&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;&lt;img src="http://ecx.images-amazon.com&amp;#47;images&amp;#47;I&amp;#47;11IVYP8XDrL.jpg" valign="top" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;1576101746&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;1576101746&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;Michael Abrash: Michael Abrash&amp;#39;s Graphics Programming Black Book&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;1576101746&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;1576101746&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;&lt;img src="http://ec1.images-amazon.com&amp;#47;images&amp;#47;P&amp;#47;1576101746.01._SCTHUMBZZZ_.jpg" valign="top" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;0201704315&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;0201704315&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;Andrei Alexandrescu: Modern C&amp;#43;&amp;#43; Design&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;0201704315&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;0201704315&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;&lt;img src="http://images.amazon.com&amp;#47;images&amp;#47;P&amp;#47;0201704315.01._SCTHUMBZZZ_V61417596_.jpg" valign="top" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;0321334876&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;0321334876&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;Scott Meyers: More Effective C&amp;#43;&amp;#43;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;0321334876&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;0321334876&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;&lt;img src="http://ec1.images-amazon.com&amp;#47;images&amp;#47;P&amp;#47;0321334876.01._SCTHUMBZZZ_.jpg" valign="top" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;020170434X&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;020170434X&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;Herb Sutter: More Exceptional C&amp;#43;&amp;#43;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;020170434X&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;020170434X&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;&lt;img src="http://ec1.images-amazon.com&amp;#47;images&amp;#47;P&amp;#47;020170434X.01._SCTHUMBZZZ_V1121137168_.jpg" valign="top" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;0201700735&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;0201700735&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;Bjarne Stroustrup: The C&amp;#43;&amp;#43; Programming Language&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;0201700735&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;0201700735&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;&lt;img src="http://ec1.images-amazon.com&amp;#47;images&amp;#47;P&amp;#47;0201700735.01._SCTHUMBZZZ_.jpg" valign="top" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;0134376331&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;0134376331&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;P.J. Plauger: The C&amp;#43;&amp;#43; Standard Template Library&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3FASIN&amp;#61;0134376331&amp;#37;26tag&amp;#61;msnspaces04-20&amp;#37;26lcode&amp;#61;sp1&amp;#37;26cID&amp;#61;2025&amp;#37;26ccmID&amp;#61;165953&amp;#37;26location&amp;#61;&amp;#47;o&amp;#47;ASIN&amp;#47;0134376331&amp;#37;253FSubscriptionId&amp;#61;1KDHEGDEXZNBKYAEECR2"&gt;&lt;img src="http://images.amazon.com&amp;#47;images&amp;#47;P&amp;#47;0134376331.01._SCTHUMBZZZ_.jpg" valign="top" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4360689961947836087&amp;page=RSS%3a+Book+List%3a+Book+List&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pkisensee.spaces.live.com&amp;amp;GT1=pkisensee"&gt;</description><guid isPermaLink="false">cns!3C84486A9D832EB7!110</guid><pubDate>Thu, 12 Jun 2008 16:32:02 GMT</pubDate><msn:type>booklist</msn:type><live:type>booklist</live:type><live:typelabel>Book list</live:typelabel><cf:itemRSS>http://pkisensee.spaces.live.com/Lists/cns!3C84486A9D832EB7!110/feed.rss</cf:itemRSS><dcterms:modified>2008-06-12T16:32:02Z</dcterms:modified></item><item><title>Custom List: Blogs</title><link>http://pkisensee.spaces.live.com/Lists/cns!3C84486A9D832EB7!125</link><description>&lt;p&gt;Blogs&lt;/p&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://blogs.msdn.com&amp;#47;freik&amp;#47;"&gt;Kevin Frei&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://ozymandias.com&amp;#47;"&gt;Ozymandias&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.cowboyprogramming.com&amp;#47;"&gt;Cowboy Programming&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.majornelson.com"&gt;Major Nelson&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://letskilldave.com"&gt;Let&amp;#39;s Kill Dave&amp;#33;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://herbsutter.wordpress.com&amp;#47;"&gt;Herb Sutter&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4360689961947836087&amp;page=RSS%3a+Custom+List%3a+Blogs&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pkisensee.spaces.live.com&amp;amp;GT1=pkisensee"&gt;</description><guid isPermaLink="false">cns!3C84486A9D832EB7!125</guid><pubDate>Mon, 14 Apr 2008 17:52:39 GMT</pubDate><msn:type>list</msn:type><live:type>list</live:type><live:typelabel>List</live:typelabel><cf:itemRSS>http://pkisensee.spaces.live.com/Lists/cns!3C84486A9D832EB7!125/feed.rss</cf:itemRSS><dcterms:modified>2008-04-14T17:52:39Z</dcterms:modified></item><item><title>Custom List: Websites</title><link>http://pkisensee.spaces.live.com/Lists/cns!3C84486A9D832EB7!108</link><description>&lt;p&gt;Websites&lt;/p&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.artima.com&amp;#47;cppsource"&gt;C&amp;#43;&amp;#43; Source&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://slashdot.org&amp;#47;games"&gt;Slashdot Games&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.gamasutra.com"&gt;Gamasutra&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.bluesnews.com"&gt;Blue&amp;#39;s News&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.xnagamefest.com"&gt;Gamefest&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4360689961947836087&amp;page=RSS%3a+Custom+List%3a+Websites&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pkisensee.spaces.live.com&amp;amp;GT1=pkisensee"&gt;</description><guid isPermaLink="false">cns!3C84486A9D832EB7!108</guid><pubDate>Thu, 23 Aug 2007 20:23:11 GMT</pubDate><msn:type>list</msn:type><live:type>list</live:type><live:typelabel>List</live:typelabel><cf:itemRSS>http://pkisensee.spaces.live.com/Lists/cns!3C84486A9D832EB7!108/feed.rss</cf:itemRSS><dcterms:modified>2007-08-23T20:23:11Z</dcterms:modified></item><item><title>Custom List: Homepage</title><link>http://pkisensee.spaces.live.com/Lists/cns!3C84486A9D832EB7!128</link><description>&lt;p&gt;Homepage&lt;/p&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.tantalon.com&amp;#47;pete.htm"&gt;Tantalon.com&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4360689961947836087&amp;page=RSS%3a+Custom+List%3a+Homepage&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pkisensee.spaces.live.com&amp;amp;GT1=pkisensee"&gt;</description><guid isPermaLink="false">cns!3C84486A9D832EB7!128</guid><pubDate>Thu, 21 Sep 2006 16:31:25 GMT</pubDate><msn:type>list</msn:type><live:type>list</live:type><live:typelabel>List</live:typelabel><cf:itemRSS>http://pkisensee.spaces.live.com/Lists/cns!3C84486A9D832EB7!128/feed.rss</cf:itemRSS><dcterms:modified>2006-09-21T16:31:25Z</dcterms:modified></item></channel></rss>