{"id":38,"date":"2005-09-16T01:01:07","date_gmt":"2005-09-16T05:01:07","guid":{"rendered":"http:\/\/blog.chase.net.au\/?p=38"},"modified":"2005-09-16T01:30:32","modified_gmt":"2005-09-16T05:30:32","slug":"pdc-day-3","status":"publish","type":"post","link":"http:\/\/blog.chase.net.au\/index.php\/2005\/09\/pdc-day-3\/","title":{"rendered":"PDC Day 3"},"content":{"rendered":"<p>Today was definitely an interesting day at PDC.&nbsp; We got our copies of the Release Candidate for DevStudio 2005, picked up the DVD for Longhorn Server and got to listen to Bob Muglia tell us about Microsoft&rsquo;s plans to seriously put a dent into Linux&rsquo;s pet Beowulf space.&nbsp; I&rsquo;ll keep the best until last though, so first things first and here&rsquo;s the keynote summary:<\/p>\n<ul>\n<li>The &ldquo;share the pain&rdquo; video was almost as good as the &ldquo;Napolean Dynamite&rdquo; video.&nbsp; Another excellent production and one that developers can definitely relate to.<\/li>\n<li>Later this year (I assume with the .NET 2.0 release), MS will release &ldquo;Windows Server 2003 R2&rdquo; which will have a bunch of new stuff:\n<ul>\n<li>Password synchronization with Unix<\/li>\n<li>Active Directory can have an NIS master<\/li>\n<li>Services for Unix bundled.<\/li>\n<li>.NET 2.0 (obviously)<\/li>\n<li>WS-Management support.<\/li>\n<li>MMC 3.0, which supports managed plugins (no mention of Monad though)<\/li>\n<li>Remoting of single apps<\/li>\n<\/ul>\n<\/li>\n<li>A guy from Macromedia gave a demo about the new IT infrastructure, but it seemed to me to assume a lot of tight coupling between developers and the field.&nbsp; Maybe I didn&rsquo;t fully understand it, but sounded like a lot of hype about nothing particularly useful.<\/li>\n<li>In 2006, they will be releasing the &ldquo;Compute Cluster Solution&rdquo; (CCS)\n<ul>\n<li>Obviously targetting Beowulf &ndash; takes computing jobs and farms them out to a loose cluster.<\/li>\n<li><a href=\"http:\/\/www.microsoft.com\/hpc\">Beta 1<\/a> is available.<\/li>\n<li>Excel 12 will be able to use it to farm out big spreadsheet work.<\/li>\n<li>It would be nice if you could do a distributed compile on it, but that&rsquo;s just pipe dreams I think.<\/li>\n<\/ul>\n<\/li>\n<li>Full committment to have all administration interfaces available via Monad.<\/li>\n<li>A bunch of work is going on with AD.<\/li>\n<li>A bunch of work is going on with &ldquo;Rights Management&rdquo; too, but I still have to wonder if they really do get it.<\/li>\n<li>In 2007, Longhorn Server is due out:\n<ul>\n<li>Terminal Services can be remoted through firewalls (so what&rsquo;s the point of a firewall again if everyone can pump their protocols through them?)<\/li>\n<li>Transactional File System<\/li>\n<li>IIS 7 (more on this later)<\/li>\n<li>Event log is enhanced with a bunch of metadata about events<\/li>\n<li>Modular architecture &ndash; can remove all sorts of stuff including the GUI, it seems.<\/li>\n<li>Hot add\/swap CPUs, Disks and RAM (assuming hardware support)<\/li>\n<\/ul>\n<\/li>\n<li>IIS 7:\n<ul>\n<li>Very modular, like Apache.&nbsp; Can add\/remove modules at a directory level.<\/li>\n<li>Even tighter ASP.NET integration (when the module is running)<\/li>\n<li>Better diagnostics and tracing.<\/li>\n<li>Killing the metabase for XML config everywhere.<\/li>\n<li>All MS provided modules use the same API that we can write to.<\/li>\n<li>Gave kudos to Apache &ndash; good sportsmanship there really.<\/li>\n<\/ul>\n<\/li>\n<li>Longhorn Server will support virtualization &ndash; VMWare stock gonna crash.<\/li>\n<li>Everything 64 bit.<\/li>\n<\/ul>\n<p>The first breakout of the day (after I&rsquo;d collected my Longhorn Server DVD) was &ldquo;5 things every Win32 dev should know&rdquo;.&nbsp; I just had to turn up to this one for the title:<\/p>\n<ul>\n<li>Performance isn&rsquo;t what you think:\n<ul>\n<li>Latency is the killer, that means DISK I\/O.<\/li>\n<li>Pointers lead to page faults.&nbsp; Avoid them!<\/li>\n<li>Arrays are awesome &ndash; lots of data locality so less faulting.&nbsp; Trees are bad even though they are O(log n).<\/li>\n<li>Doing nothing is really fast!<\/li>\n<\/ul>\n<\/li>\n<li>Play well with others:\n<ul>\n<li>Always ask &ldquo;what if 2 programs did this?&rdquo;<\/li>\n<li>Polling is bad &ndash; uses CPU power and keeps memory pages present.<\/li>\n<li>Be careful in thread pools to clean up when releasing the threads.<\/li>\n<li>Be aware of remote desktops &#8211; animation on them sucks.<\/li>\n<li>Scale up and down based on machine hardware.<\/li>\n<\/ul>\n<\/li>\n<li>Large Fonts and DPI changes:\n<ul>\n<li>&ldquo;Large Fonts&rdquo; only affect a few things around the window edges.&nbsp; They will go away in Vista.<\/li>\n<li>High DPI settings affect everything!<\/li>\n<li>Scale bitmaps to cope with high DPI.<\/li>\n<li>Expect 96, 120, 144 and 192 DPI and TEST with those DPIs.<\/li>\n<\/ul>\n<\/li>\n<li>Parent\/Child and Owner\/Owned is kinda complex:\n<ul>\n<li>Parent\/Child is containment<\/li>\n<li>Owner\/Owned is encapsulation<\/li>\n<li>Reparenting is hard. Avoid it.<\/li>\n<\/ul>\n<\/li>\n<li>Async input queues and syncing them:\n<ul>\n<li>AttachThreadInput mimics Win3.1 behavior on queues.<\/li>\n<li>Owner\/owned and Parent\/Child attach input queues.<\/li>\n<li>Journal hooks screw up your entire system.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Definitely an interesting talk.&nbsp; Now to see if I can remember it all!&nbsp; The next session was a tough choice.&nbsp; Really wasn&rsquo;t much going on so I went to a Vista UI guidelines session.&nbsp; Didn&rsquo;t say much other than go <a href=\"http:\/\/msdn.microsoft.com\/vista\/experience\">here<\/a>, and gave a pretty good demo on how to code up the new dialogs for Vista to make stuff look good.&nbsp; There&rsquo;s a bunch of caveats when dealing with drawing on glass because GDI is so damn old and just doesn&rsquo;t understand alpha blending.&nbsp; The best deal seemed to just use WPF wherever you can.<\/p>\n<p>The lunchtime session I went to was on memory tuning in .NET.&nbsp; Lots of interesting tips, but nothing too fantastic if you&rsquo;ve delved around a profiler before.&nbsp; Basically, the tricks are to use <a href=\"http:\/\/msdn.microsoft.com\/library\/default.asp?url=\/library\/en-us\/tools\/tools\/vadump.asp\">vadump<\/a>, <a href=\"http:\/\/msdn.microsoft.com\/library\/default.asp?url=\/library\/en-us\/dnpag\/html\/scalenethowto13.asp\">CLR Profiler<\/a> and <a href=\"http:\/\/msdn.microsoft.com\/library\/default.asp?url=\/library\/en-us\/vsdebug\/html\/vxtsksosdebugging.asp\">sos<\/a> to poke around and figure out all sorts of cool info.<\/p>\n<p>Next was a Java\/.NET integration discussion which I really don&rsquo;t have too much to write about.&nbsp; The general feeling of the talk was that they could demo a lot of stuff that will work well in a year or so when the final products are out and settled, but we&rsquo;re still in the mess we currently find ourselves and nothing was mentioned about the small differences in interpretation of WSDL that can cause so many problems.<\/p>\n<p>I&rsquo;ll leave the Vista Internals talk for last, because the Vista Power Management discussion wasn&rsquo;t that engaging.&nbsp; They&rsquo;ve come up with a new event model for Power Management now so you don&rsquo;t have to poll for power state, and Vista will have all desktops defaulting to sleep on a timeout, which will force a LOT of application developers to actually do something intelligent.&nbsp; You also no longer get the chance to prevent sleeping when the user initiates it &ndash; it just happens and you have to cope.&nbsp; As expected though, you can still disable any automatic power events while performing a long task (watching a movie, burning a CD etc.)<\/p>\n<p>Now, for Vista Internals: <\/p>\n<ul>\n<li>New boot loader which is platform independant (can run 32 or 64 bit code)<\/li>\n<li>As mentioned before, kernel supports hot swapping or adding of CPUs, RAM, etc.&nbsp; No mention of removing anything though.<\/li>\n<li>Memory manager was refined:\n<ul>\n<li>Deals with kernel memory more effectively.<\/li>\n<li>Handles NUMA and large pages.<\/li>\n<li>Handles the paging of video\/GPU memory.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>Drivers can now run in <a href=\"http:\/\/www.microsoft.com\/whdc\/driver\/wdf\/UMDF_Intro.mspx\">user mode<\/a>, and system can recover from one of these crashing (maybe).<\/li>\n<li>Better multimedia support in memory manager, IO manager and process scheduler.<\/li>\n<li>Lots of changes for windows services:\n<ul>\n<li>Services stay in desktop session 0, but user windows move to session 1 so can&rsquo;t message each other.<\/li>\n<li>Services can delay their start to help bring the system up faster.<\/li>\n<li>Serivces can declare their privilege sets and have their process tokens stripped of unneeded privileges on startup.<\/li>\n<li>You can get notifications about local or remote service state changes.<\/li>\n<li>Can programmatically recycle a service process without upsetting the SCM too much (if you do it right).<\/li>\n<\/ul>\n<\/li>\n<li>Registry is now transactional (always was atomic though, just not across calls)<\/li>\n<li>Registry and File System can be virtualized (access denied can point the user somewhere else under the hood, to allow low privilege modes).<\/li>\n<li>Registry filter drivers can now be written, just like File System Filter Drivers.<\/li>\n<li>WoW64 (the 32 bit emulation layer):\n<ul>\n<li>Supports VM spaces of up to a full 4G for user apps.<\/li>\n<li>16 bit support has gone from 64 bit Windows (hooray!!!)<\/li>\n<li>32 bit and 64 bit apps can talk to each other via COM (across different processes obviously)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>And the real killer: <\/p>\n<ul>\n<li>All kernel mode code (and some critical user mode code) must be signed by Microsoft in Windows Vista 64 bit (and possibly 32 bit in the future).<\/li>\n<li>The only proposed way around this is by attaching an external kernel debugger.<\/li>\n<\/ul>\n<p>Now, while this is being touted as a fantastic way to stop kernel rootkits and other nastiness, it really has a whole raft of other effects which are going to make life annoying, or just plain impossible for power users or administrators.&nbsp; For example, consider the following: <\/p>\n<ul>\n<li>None of the utilities at <a href=\"http:\/\/sysinternals.com\/\">sysinternals.com<\/a> will continue to work unless every revision of the driver code is digitally signed by Microsoft.&nbsp; That severely limits the creativity of people like Russinovich and Cogswell.<\/li>\n<li>Developers won&rsquo;t be able to mess around with driver code for experimenting..<\/li>\n<li>Universities will have to get special builds of Windows to allow their students to write driver code (which is part of many courses these days).<\/li>\n<li>Driver fixes will be delayed by having to pass through Microsoft&rsquo;s WHQL whenever a video card company wants to release something new.<\/li>\n<li>We can&rsquo;t test any of our drivers on Vista without attaching a debugger &ndash; hardly a production test..<\/li>\n<\/ul>\n<p>And that&rsquo;s just the tip of the iceberg.&nbsp; The annoying fact is, rootkits can still get in.&nbsp; Sure, it raises the bar for them but the simple fact is, unless Microsoft can get hooks into the hardware itself and prevent it from loading a modified kernel image, malware can simply turn off the checking in the kernel.&nbsp; At some point a decision is made to load or not load a driver.&nbsp; Change that flag and you own the computer.&nbsp; People without computer knowledge will &ldquo;trust&rdquo; in Microsoft&rsquo;s wonderful new security and they&rsquo;re STILL vulnerable.<\/p>\n<p>I hate stupidity like this.&nbsp; I actually don&rsquo;t mind it being on, but for goodness sake, give me a method of self-signing stuff, allowing self-signing to happen, or some other switch to opt-out of this stupid restriction.&nbsp; Personally I think it&rsquo;s got more to do with Digital Rights &ldquo;Management&rdquo; than it does preventing rootkits though.&nbsp; One more step for Microsoft refusing to understand core security principles &ndash; if you don&rsquo;t control the entire boot sequence from the first instruction executed by the CPU then you don&rsquo;t control anything.&nbsp; End of story.&nbsp; Thanks for playing.<\/p>\n<p>I was really excited about Vista too, until I heard this..<\/p>\n<p>(sigh) <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today was definitely an interesting day at PDC.&nbsp; We got our copies of the Release Candidate for DevStudio 2005, picked up the DVD for Longhorn Server and got to listen to Bob Muglia tell us about Microsoft&rsquo;s plans to seriously put a dent into Linux&rsquo;s pet Beowulf space.&nbsp; I&rsquo;ll keep the best until last though, [&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-38","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\/38","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=38"}],"version-history":[{"count":0,"href":"http:\/\/blog.chase.net.au\/index.php\/wp-json\/wp\/v2\/posts\/38\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.chase.net.au\/index.php\/wp-json\/wp\/v2\/media?parent=38"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.chase.net.au\/index.php\/wp-json\/wp\/v2\/categories?post=38"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.chase.net.au\/index.php\/wp-json\/wp\/v2\/tags?post=38"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}