Keith's profileKeith Hill's BlogPhotosBlogListsMore Tools Help
    October 31

    Back from PDC 2008

    It was a good PDC.  I have to admit, even though Ray Ozzie is a very capable speaker, there was something missing in keynotes without BillG being there.  Plus he was usually good for one really funny, self-deprecating video.  Personally I found the Rick Rashid talk about Microsoft Research and the work they’re doing to have been the most interesting keynote surpassing Sinofsky’s Win7 intro slightly and far surpassing the Windows Azure unveiling.  Then again, I’m not in a sector that will immediately benefit from cloud services – perhaps not for a long while.  OTOH I can certainly appreciate how this could help lots of folks.  But Rashid’s stuff was just downright inspiring IMO.  *This* is the stuff I think Microsoft should be advertising on TV from their work on HIV research, to helping scientists and kids explore our galaxy with WorldWide Telescope (there’s a cool update made available this week) to Boku, a really immersive environment that teaches kids basic programming skills.  BTW, I didn’t know this but Rashid says he coined the term NUMA and also worked on the Mach microkernel in use by Mac OS X and iPhone.

    Overall I liked what I see coming in the form of Windows 7, CLR/BCL 4.0, Oslo and some of these Live Services.  Even though I won’t be writing much cloud code I do want to see more of the apps I use stash data in the cloud so no matter which machine I use to access the app, it will know my preferences and the current state of any data used by the app.  I’m thinking a newsreader that knows what I’m subscribed to and what posts I have already read.  Not so sure about the features being added to C# 4 (dynamic programming support with new “dynamic” keyword and optional as well as named variables).  There is one area where I think having named variables will help. Remember this bit of string comparison code:

    if (String.Compare(strA, strB, true) {
        ...
    }

    I think the following code using a named variable is clearer:

    if (String.Compare(strA, strB, ignoreCase: true) {
        ...
    }

    Optional variables – hmm, I don’t know, I’m so used to using overloads but perhaps this won’t be so bad.  I just hope the implementation doesn’t embed the default value in the caller (I doubt that is the case).

    Oslo looks interesting but I need more time to digest the usefulness of Oslo for what I do.  I do like MGrammar though.  I’ve been thinking that .NET needs some parser tools like lex/flex/yacc/bison/Antlr for a while.  Perhaps this will fit the bill.

    .NET 4 GC will get two improvements. On server you can be notified before a gen2/LOH GC is to take place.  On client, gen0/1 can be collected while longer gen2 collections are happening – resulting in fewer GC induced program pauses.  .NET will also not allow you to catch certain, bad exceptions like AV, illegal instruction, etc.  If you want to catch them in a top level catch handler you can’t decorate the Main method with the HandleProcessCorruptedStateException attribute.  There is also a switch to revert to the old behavior of allowing you to catch those exceptions.  They also added tail recursion support to the CLR.  Oh yeah, last but not least, .NET 4 CLR will run side-by-side within the same process as the .NET 2 CLR.  This will enable various plugin scenarios (pluginA built against .NET 2 and pluginB built against .NET 4) to work within the same process space without having to take your chances with redirects or publisher policy.  This is one of the reasons the effort to convert the Longhorn shell to managed code was abandoned.

    BCL will get a Tuple class as well as BigInteger (they’ve worked a lot on getting the performance good on this) as well as a Complex type. The SpecSharp CodeContract support is going into the .NET 4 BCL giving us methods like:

    • CodeContract.Requires
    • CodeContract.Ensures
    • CodeContract.ForAll
    • CodeContract.Exists
    • CodeContract.OldValue
    • CodeContract.EnsureOnThrow

    These are kind of like the Debug.Assert stuff – there in Debug but not there in Release config – however there is a static verifier that can use this information that can statically find bugs before you run your code.  If you have played with the Parallel Extensions, most of that code is going into the BCL for .NET 4.  I like it!  One last tidbit, there’s a small team working on a “No PIA” mission.  That is, remove the need for PIAs.  Their approach is to embed *just* the metadata for the COM surface you actually use in your app.  However the other problem is type identity based on fully qualified assembly/type names.  This is being relaxed with a new TypeIdentity attribute where you tell the type loader that you want type identity to be based just on a string that you provide (typically a guid but perhaps a combo on typename and guid).  Note that a type member’s name and signature are still verified – so we still have type safety.

    Visual Studio 2010 will get the ability to debug managed minidumps – cool.  Apparently you can do this today with WinDbg but I thought you couldn’t without full heap info.  I guess I was wrong.  They’re also rewriting the text editors in VS 2010 to use WPF.

    Lots of updates to VC++ 10: can now xcopy runtime DLLs (side-by-side stuff doesn’t prevent this in this version), support for lambda expressions, for_each and parallel_for_each, intrinsic regex support and the project files are MSBuild.  But best of all, a lot of work is being done to improve C++ Intellisense!!

    Windows 7 new taskbar looks interesting.  Wonder if this will get the same reaction as the Ribbon UI – some love it and some hate it with not too many in between.  Windows 7 also has RDP multi-monitor support, scales up to 256 processors and has “Homegroup” networking support (easier setup/sharing of home network resources).

    As far as PowerShell goes, there’s a new CTP of PowerShell and WSMAN coming in December.  Jeffrey announced the inclusion of PowerShell into both Windows 7 client and Windows Server 2008 R2.  It was also announced that PowerShell will be an optional component within server core as well as .NET 2/3/3.5 subsets (not full frameworks – don’t need WinForms/WPF in a GUI-less environment).

    October 27

    PDC Updates via Twitter

    If you are interested in following my PDC experience check out my Twitter page: 
     

    PDC 2008 Monday Keynote Photo

    IMG_1040

    Interesting stuff.  Windows Azure, code name Red Dog, is truly a cloud OS in that it appears to run not just on one machine but many.  It's built on a scale-out approach instead of scale-up.  There was mention of some command line tools to manage it.  I'm hoping that means PowerShell!

    October 26

    Nother PowerShell Convert in the Making?

    I ran into Ian Griffiths in the PDC bookstore today.  .NET smart client devs would probably know him as the author of books on WinForms and WPF programming and course instructor on those topics.  He was buying Bruce's Windows PowerShell in Action book which is my favorite PowerShell book.  I let Ian know he'd made a great choice and let him know that I think PowerShell is a great tool for developers!

    PDC 2008 - Precon

    Got into LA last night and attended Charles Petzold's WPF Code and Concepts precon session.  Good stuff.  I bought a few books from the bookstore MS set up at the PDC and got this free .NET 4.0 poster.  It has a number of interesting goodies on it like:
     
    • System.BigInteger
    • System.Complex
    • System.Collections.Concurrent (from PFX I think)
    • System.Collections.Generic.SortedSet
    • System.Data.Common.EntitySqlParser
    • System.IO.MemoryMappedFiles
    • System.Linq.ParallelEnumerable (from PFX)
    • System.Threading.Parallel/LazyInit/SpinLock (from PFX)
    • System.ServiceModel.Discovery.AnnoucementClient/DiscoveryClient/ServiceDiscoveryBehavior
    • System.Windows.Controls.Calendar/DataGrid/DatePicker/Ribbon/RibbonWindow
    • System.Windows.Input.TouchPoint/TouchDevice
    • System.Windows.VisualState/VisualStateGroup/VisualStateManager (back ported from Silverlight 2 ??)
    • System.Web.Mvc
    • System.Web.UI.DataVisualization.Charting
    • System.Workflow (lots of stuff here - Sequence/StateMachine, etc)
     
     
     
    October 21

    PDC 2008 Bound

    I’ll be at the PDC next week.  I get there Saturday night to attend a Sunday pre-con.  If any of you PowerShellers are going to be at the PDC, drop me a line.  I’d like to meet you and talk PowerShell.  There will be one session on PowerShell at the PDC that Jeffrey Snover will be presenting:

    PowerShell: Creating Manageable Web Services

    This session is on Thursday from 8:30 am to 9:45 am in 406A.  If you haven’t seen Jeffrey talk, he is a great speaker and passionate advocate of PowerShell (he should be, he’s the primary architect of PowerShell).

    See you there!

    Blog Bling 1

    October 18

    Turning Off Blog Comments

    I’ve had enough of the comment spam and I ain’t taking it no more.  I’ve been wasting too much time deleting (using Live Spaces rather lame blog management UI) comment spam.  I’ve seen enough “Wow gold” and “cheap laptop battery” from a certain region of the world to last me for a life time.  To those few, in that region, who abuse this wonderful medium, may your hard drive’s heads gouge deeply into each platter and your CPUs melt into a pile of silicon junk.  Somedays don’t you wish there was a *69 equivalent for the internet?  :-)

    BTW I have complained to Live Spaces support a number of times about comment spam and I have to say they appear to be completely freakin’ clueless about this issue based on the responses I’ve gotten.  Where’s the Captcha support?  How about a setting that says “Don’t let anyone post a comment unless I have perms to view their site – and report abuse on them”.  It’s really a bummer because I learn from the folks who post comments on my blog.  If Live Spaces ever improves their ability to block comment spam I will turn comments back on.  Until then, you can reach me by sending me a message.  Please do if you find an error in one of my posts.  I’ll update the post and accredit the correction to you.