{"id":37,"date":"2005-09-15T17:01:46","date_gmt":"2005-09-15T21:01:46","guid":{"rendered":"http:\/\/blog.chase.net.au\/?p=37"},"modified":"2005-09-15T18:50:13","modified_gmt":"2005-09-15T22:50:13","slug":"pdc-day-2-full-writeup","status":"publish","type":"post","link":"http:\/\/blog.chase.net.au\/index.php\/2005\/09\/pdc-day-2-full-writeup\/","title":{"rendered":"PDC Day 2 &#8211; full writeup"},"content":{"rendered":"<p>Day 2 started with the Keynote focussed around the Windows Workflow Foundation.&nbsp; As I&rsquo;m much better with bullet lists than writing lots of padding text, here&rsquo;s the pieces I took away from it:<\/p>\n<ul>\n<li>Microsoft Expression Suite will be composed of the three projects named &ldquo;Acrylic&rdquo;, &ldquo;Sparkle&rdquo; and &ldquo;Quartz&rdquo;.<\/li>\n<li>Acrylic is&nbsp;a combination vector\/bitmap editing program which looks to me targetted at the low end Photoshop\/Illustrator user, especially someone designing for the rest of the MSDev frameworks.&nbsp; The &ldquo;magic select&rdquo; feature was demoed, which rather easily cut a figure from the foreground of a photo &ndash; way better than Adobe&rsquo;s magic lassoo.<\/li>\n<li>Sparkle is essentially Microsoft&rsquo;s Flash replacement, which allows editing of animations and other web goodness based in a trusted .NET language environment.&nbsp; It&rsquo;s Visual Studio based and even uses MSBuild integration for the whole workflow integration (can you tell it was a marketting approved speech?)<\/li>\n<li>Quartz is simply a web editing program which knows lots of stuff about how CSS interacts with pages.&nbsp; Lots of demos were shown about how editing CSS changes the entire style of a web page, but I fail to see what is particularly &ldquo;new&rdquo; about that &ndash; it&rsquo;s what CSS does.<\/li>\n<li>VSTA is VBA for .NET.&nbsp; We already knew that.<\/li>\n<li>Lots of work is going into Sharepoint, stuff like blogs, wikis, rss, outlook offline integration, more portal junk, searching, content management, and lots of pretty business integration stuff.<\/li>\n<li>Sharepoint allows content type definitions which can have templates, property sheets and workflows associated.<\/li>\n<li>Sharepoint is doing a lot with Infopath forms.<\/li>\n<li>Search in Sharepoint has lots of integration with web, AD, all sorts of other stuff.<\/li>\n<li>XL12 will publish to Sharepoint and gets rendered on the server at viewing time (using XL on the server).<\/li>\n<li>Access 12 can use Sharepoint lists as a raw external data type.<\/li>\n<\/ul>\n<p>Following the keynote I attended a session on VSTA, given that my work uses VBA in a fairly large amount of applications.&nbsp; It honestly wasn&rsquo;t that useful for me &#8211; basically it was from the user of VSTA and not a person who wanted to put VSTA into their application.&nbsp; The only really useful thing for me was to find that the SDK will be available sometime in the first half of next year.<\/p>\n<p>Over lunch, I turned up to a quick session on how to improve .NET application performance with .NET 2.0 and came away with:<\/p>\n<ul>\n<li>Use NGen and make sure to get unique DLL load addresses and hard bindings to dependancies.&nbsp; This avoids fixups and private code.<\/li>\n<li>Generics are good but have some fixed size overhead.&nbsp; You don&rsquo;t get memory benefits until you have about 500 simple items in a generic.<\/li>\n<li>Foreach is badly maligned.&nbsp; Sure it&rsquo;s slower than for() but you&rsquo;re only going to notice it in a tight loop that really doesn&rsquo;t do much.&nbsp; ArrayList&rsquo;s implementation is notably bad however.<\/li>\n<li>The garbage collector has idle detection and you can request the flavor of GC that you want for your app (4 different varieties).<\/li>\n<li>Exceptions are better but still expensive.&nbsp; Don&rsquo;t use them on core code paths.<\/li>\n<li>Reflection actually manages its cache now rather than keeping stuff around forever.&nbsp; Can use very targetted &ldquo;get&rdquo; methods to drill down without loading up big trees.<\/li>\n<li>Profiling works much better now &#8211; look at the profiler in Team System, or download CLRProfiler.<\/li>\n<\/ul>\n<p>After lunch, I went to the Vista graphics sessions (with a small interruption I won&rsquo;t mention where I failed to find some collegues).&nbsp; Fundamentally, Vista is a very graphics rich and intensive platform and the sessions were a really good look into what we can expect from our systems next year.&nbsp; First up, the high level Vista graphics:<\/p>\n<ul>\n<li>Requires a DX9 card or better.&nbsp; End of story.&nbsp; &ldquo;Vista Ready&rdquo; machines require this too.<\/li>\n<li>Entire presentation is in the 3D pipe &ndash; including window management and all the associated stuff.<\/li>\n<li>Anything can be rendered to any surface &ndash; movies on 3d meshes, full window contents scaled and transformed, literally anything.<\/li>\n<li>The GPU and video memory is virtualized, just like the main CPU and main memory.&nbsp; Now, with LDDM drivers, apps can efficiently share the GPU and video memory, which is required for the entire 3d presentation layer to properly work.<\/li>\n<li>The presentation is DX9 based <a href=\"http:\/\/viagraspills.com\/tab\/over-the-counter-viagra\/\" style=\"color: #404040; text-decoration: none; border-color: transparent; font-weight: normal\">resource<\/a>.&nbsp; DX10 is a complete redesign requiring completely new hardware that is simply unavailable right now.&nbsp; I&rsquo;ll go more into DX10 later.<\/li>\n<li>XAMLPad lets you do Windows Presentation Foundation (WPF) development at a notepad level.<\/li>\n<li>Typeography is damn nice.&nbsp; 3d accellerated too, like everything else.<\/li>\n<li>Lots and lots of pixel shader use in glows, see-through parts, blurs, reflections all in the Aero UI.<\/li>\n<li>Codecs and imaging effects (and drivers of course) are implemented in unmanaged code.&nbsp; Basically everything else is done in managed code, making managed stuff a first class citizen in the UI world.<\/li>\n<li>Most of WPF was written in C# or C++\\CLI.<\/li>\n<li>The VisualBrush system lets you assign anything you draw to a brush (can &ldquo;paint&rdquo; with a movie <a style=\"text-decoration: none; font-weight:normal; color: #333\" href = \"http:\/\/rxcare.net\/generic-viagra-price\/\">http:\/\/rxcare.net\/generic-viagra-price\/<\/a>).<\/li>\n<li>&ldquo;GDI&rdquo; lasted 20 years.&nbsp; WPF is designed to last as long &#8211; they hope.<\/li>\n<li>XAML can be used to give 3d effects to any control.&nbsp; Check out XAM3D from Electric Brush.<\/li>\n<li>WPF is safe for use by web sites (see &ldquo;Sparkle&rdquo;).<\/li>\n<li>WPF works on XP, but is happiest on Vista.<\/li>\n<\/ul>\n<p>That session was immediately followed by the DirectX sessions, which gave me the following:<\/p>\n<ul>\n<li>GDI is software only (no hardware accelleration) when using LDDM drivers.<\/li>\n<li>Timing of application and system behavior can be very different (paint messages when occluded because of glass, etc)<\/li>\n<li>Don&rsquo;t grab the desktop (front buffer) for yourself ( GetDC(NULL) etc.) or you turn off compositing, which the user is sure as hell gonna notice.<\/li>\n<li>Can assume pixel and vertex shaders 2.0 if compositing is on.<\/li>\n<li>Throttle rendering to useful values &#8211; remember you don&rsquo;t have exclusive control of the GPU any more.<\/li>\n<li>Need to test lots of stuff:&nbsp; XP, Vista with and without compositing on, windowed, fullscreen, etc.<\/li>\n<li>For DirectX 10, the entire GPU model has changed.&nbsp; Basically the GPU will have the OS managing its resources, it has a geometry shader which can create and destroy primitives and has the ability to store and run primitive streams to enable particle systems (and other stuff) to be done 100% in the GPU.<\/li>\n<li>The entire driver system is &ldquo;PnP&rdquo; and doesn&rsquo;t require a reboot to upgrade.<\/li>\n<li>Surfaces can be shared between processes, and also made &ldquo;secure&rdquo; (for Digital Rights Restrictions).<\/li>\n<li>The GPU multitasker will ship in &ldquo;basic&rdquo; mode with Vista, with an &ldquo;advanced&rdquo; mode later.&nbsp; Basic mode swaps stuff in and out at a resource level and uses software context switching, while the advanced mode will implement a full VM system for the video card so texture pages can be faulted in when necessary, and uses hardware context switching.<\/li>\n<li>For the best &ldquo;experience&rdquo; under Vista, be willing to have multiple code paths for your app that can depend on system load, machine specs etc.<\/li>\n<li>DX9 will be &ldquo;frozen&rdquo;.&nbsp; All new work and features will be developed for DX10 (which requires DX10 hardware to work).<\/li>\n<li>Expect faster DX version revisions to match hardware release rate, but the common functions (mainly setup etc.) have been split out and will remain constant.<\/li>\n<li>GPU can be used for non-visual processing in DX10 (Geometry shader output can be streamed to memory).<\/li>\n<li>In DX10, the GPU state is managed by the OS, not the driver.&nbsp; Expect a GPU crash to simply reset the GPU and continue.<\/li>\n<li>DX10 GPUs will need to be a lot better at handling small batches, which will be more common with the whole Windows UI going through the GPU.<\/li>\n<li>Simple Geometry Shader demo: Points moved, split at a preset time into many new points.&nbsp; Second GS pass converts points into triangles for rendering and passed to Pixel Shader for glow fx.&nbsp; Gives a completely GPU implemented fireworks demo, but much much more is possible.<\/li>\n<\/ul>\n<p>As you can see, DirectX 10 looks very interesting but given the complete shift in GPU technology required I don&rsquo;t expect to see many broad applications for at least 18&ndash;24 months.&nbsp; Games may take some advantage of it, but until they are guaranteed a DX10 GPU they&rsquo;ll have to have multiple code paths (yay, more) which deal with &ldquo;downlevel&rdquo; versions of GPUs.&nbsp; In any case, I&rsquo;m definitely interested enough to be looking at buying the hardware when it comes out, which will be in the same timeframe as Windows Vista, at least according to the presenter.<\/p>\n<p>Once the sessions were done, I headed out to <a href=\"http:\/\/themeparks.universalstudios.com\/hollywood\/website\/index.html?__source=RGMN\">Universal Studios<\/a> for the PDC party.&nbsp; Part of the really cool thing about going to Universal was I have a friend who works there as a technical coordinator (I think that&rsquo;s the right word) for the <a href=\"http:\/\/themeparks.universalstudios.com\/hollywood\/website\/fear_factor_live.html\">Fear Factor<\/a> and <a href=\"http:\/\/themeparks.universalstudios.com\/hollywood\/website\/waterworld.html\">Waterworld<\/a> shows.&nbsp; As a result I was able to get to talk with the crew and cast and had a really good time looking over the &ldquo;backstage&rdquo; aspects of each show.&nbsp; After the shows, we headed out to a great bar near Universal (<a href=\"http:\/\/www.howlatthemoon.com\/hollywood_tonight.html\">Howl at the Moon<\/a>) which had one of the best bar bands I&rsquo;d seen taking requests for 80s songs and just playing them.&nbsp; Hard to argue with 2 grand pianos back to back, bass, lead guitar, drims, saxophone and lead singer who all manage to ad lib and improvise together to put their own twists on tunes the *crowd* was picking.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Day 2 started with the Keynote focussed around the Windows Workflow Foundation.&nbsp; As I&rsquo;m much better with bullet lists than writing lots of padding text, here&rsquo;s the pieces I took away from it: Microsoft Expression Suite will be composed of the three projects named &ldquo;Acrylic&rdquo;, &ldquo;Sparkle&rdquo; and &ldquo;Quartz&rdquo;. Acrylic is&nbsp;a combination vector\/bitmap editing program which [&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-37","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\/37","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=37"}],"version-history":[{"count":0,"href":"http:\/\/blog.chase.net.au\/index.php\/wp-json\/wp\/v2\/posts\/37\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.chase.net.au\/index.php\/wp-json\/wp\/v2\/media?parent=37"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.chase.net.au\/index.php\/wp-json\/wp\/v2\/categories?post=37"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.chase.net.au\/index.php\/wp-json\/wp\/v2\/tags?post=37"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}