{"id":34,"date":"2005-09-13T03:01:31","date_gmt":"2005-09-13T07:01:31","guid":{"rendered":"http:\/\/blog.chase.net.au\/?p=34"},"modified":"2005-09-13T03:01:31","modified_gmt":"2005-09-13T07:01:31","slug":"pdc-preconf-day-2","status":"publish","type":"post","link":"http:\/\/blog.chase.net.au\/index.php\/2005\/09\/pdc-preconf-day-2\/","title":{"rendered":"PDC &#8211; Preconf Day 2"},"content":{"rendered":"<p>I had this big thing half typed up.&nbsp; Then I put my machine into hibernate to save the battery and it froze when I started it up again.&nbsp; It&rsquo;s been doing that a lot lately &ndash; guess it&rsquo;s time to install Vista so I get a fresh system.&nbsp; I&rsquo;ll try to write it out again, but that&rsquo;s probably a good thing as things are always better the second time around.<\/p>\n<p>Today I spent my time going to the Visual C++ Internals conference.&nbsp; It was kicked off by Stanley Lippman, who was basically the original C++ developer after Bjarne Stroustrop.&nbsp; His history of the C++ language and definitely the number of anecdotes of those times were a great way to start the morning off, and despite the fact he went overtime and didn&rsquo;t even manage to finish all his slides it was still very much an enjoyable and educational time.<\/p>\n<p>Following Stanley were 4 other members of the Visual C++ who discussed in depth the features and pitfalls of the compiler as it relates to the new C++\\CLI language, interop and performance scenarios.&nbsp; Some of the things I learned were:<\/p>\n<ul>\n<li>In VC2005, C++ is a full fledged .NET language which can produce pure IL from native C++ code.<\/li>\n<li>Multiple inheritance is possible, even when targetting the .NET runtime.<\/li>\n<li>The compiler manages an awful lot of the Disposable semantics for you, using them to provide both destructors (X::~X) and finalizers (X::!X).<\/li>\n<li>You can declare managed objects &ldquo;on the stack&rdquo; now, but it really puts them on the managed heal anyway.<\/li>\n<li>Destructors are not guaranteed to be called, especially when the class is used from another language, like C#.<\/li>\n<li>You have to be careful in all sorts of places within mixed mode code to avoid traps the interop layer lays around the place for you.<\/li>\n<li>There&rsquo;s a whole bunch of optimization &ldquo;hints&rdquo; that are available which I didn&rsquo;t know about (eg __restrict).<\/li>\n<li>The compiler puts all sorts of cookies and stuff into the stack to attempt to detect stack smashing.<\/li>\n<\/ul>\n<p align=\"left\">During the talk, the power even managed to <a href=\"http:\/\/www.cnn.com\/2005\/US\/09\/12\/la.power.outage\/index.html\">go out<\/a> for about 45 minutes thanks to a worker cutting the wrong line somewhere.&nbsp; Made the talk which was already going long end up about an hour later than scheduled, but that&rsquo;s all ok because it was very interesting stuff.<\/p>\n<p align=\"left\">Later in the evening I went to some of the &ldquo;Birds of Feather&rdquo; sessions where they basically set aside rooms for people to talk about similar things.&nbsp; Here&rsquo;s a quick summary of the three sessions I attended:<\/p>\n<p align=\"left\">.NET\/Java interop<\/p>\n<ul>\n<li>Web services are the recommended way to go, at least people seemed to be having the most success with it.<\/li>\n<li>Use simple types and avoid anything much more difficult, look at WS-I&rsquo;s basic profile.<\/li>\n<li><a href=\"http:\/\/www.ikvm.net\/\">IKVM.NET<\/a>&nbsp;is an interesting method of interop that recompiles Java bytecodes into .NET CIL.<\/li>\n<li>EAI vendors have translation APIs and implementations.<\/li>\n<li>Microsoft seems ahead of the curve on standards implementation for web services.<\/li>\n<li><a href=\"http:\/\/www.jnbridge.com\/\">JNBridge<\/a>&nbsp;allows Java classes to be called from .NET.<\/li>\n<li>Some people talked about using RMI to talk to Java but no one had a good solution that actually did it.<\/li>\n<li><a href=\"http:\/\/msdn.microsoft.com\/library\/default.asp?url=\/library\/en-us\/dv_vjsharp\/html\/vjgrfJavaBinaryConverter.asp\">JBImp<\/a>&nbsp;is a Microsoft provided tool with J# that converts really old bytecodes.<\/li>\n<li><a href=\"http:\/\/www.mainsoft.com\/products\/vmw_j2ee.aspx\">Visual Mainwin<\/a>&nbsp;was mentioned but no one had any real comments about it.<\/li>\n<\/ul>\n<p>DirectX<\/p>\n<ul>\n<li><a href=\"http:\/\/www.openmp.org\/\">OpenMP<\/a> is an interesting technology being pushed to allow developers to better take advantage of multiple execution units, primarily for XBox 360 development.<\/li>\n<li>DirectX 10 (on Vista, with LDDM drivers) will provide for multiple Direct3D apps running at once without having arguments about who owns the primary surface.<\/li>\n<li>Companies seem to be supporting DirectX much better than OpenGL, at least from a developer perspective.<\/li>\n<li>Devs shouldn&rsquo;t attempt 3d modelling.&nbsp; It&rsquo;s hard.<\/li>\n<li>XNA is a really cool thing for game development houses that supports their workflow process and even has hooks for non-Microsoft toolsets (such as PS3, GC etc)<\/li>\n<li>Managed DirectX for .NET 2.0 should be available for beta testing soon.<\/li>\n<\/ul>\n<p>Debugging<\/p>\n<ul>\n<li>Apparently <a href=\"http:\/\/www.microsoft.com\/whdc\/devtools\/debugging\/default.mspx\">windbg<\/a> is pronounced &ldquo;Windbag&rdquo;.&nbsp; I hadn&rsquo;t heard that one before.<\/li>\n<li>Dump files are really cool things for debugging (which I already knew).<\/li>\n<li>Debugging concurrency stuff is hard (which I also had a lot of experience knowing).<\/li>\n<li>Someone hinted there was a way to drill into the STL in the VC2003 debugger.<\/li>\n<li>Debugging concurrency stuff is really hard.<\/li>\n<\/ul>\n<p>We had to leave the Debugging talk a little early because the shuttle busses decided their last run was 10:30pm.&nbsp; I barely made it out in time.<\/p>\n<p>Off to sleep for me now.&nbsp; Have to listen to Bill Gates&rsquo; <a href=\"http:\/\/www.microsoft.com\/events\/executives\/billgates.mspx\">keynote<\/a> tomorrow morning at 8:30am.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I had this big thing half typed up.&nbsp; Then I put my machine into hibernate to save the battery and it froze when I started it up again.&nbsp; It&rsquo;s been doing that a lot lately &ndash; guess it&rsquo;s time to install Vista so I get a fresh system.&nbsp; I&rsquo;ll try to write it out again, [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-34","post","type-post","status-publish","format-standard","hentry","category-general"],"_links":{"self":[{"href":"http:\/\/blog.chase.net.au\/index.php\/wp-json\/wp\/v2\/posts\/34","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.chase.net.au\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.chase.net.au\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.chase.net.au\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.chase.net.au\/index.php\/wp-json\/wp\/v2\/comments?post=34"}],"version-history":[{"count":0,"href":"http:\/\/blog.chase.net.au\/index.php\/wp-json\/wp\/v2\/posts\/34\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.chase.net.au\/index.php\/wp-json\/wp\/v2\/media?parent=34"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.chase.net.au\/index.php\/wp-json\/wp\/v2\/categories?post=34"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.chase.net.au\/index.php\/wp-json\/wp\/v2\/tags?post=34"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}