Wow, two great speakers in less than a month. Last month, we had Kalen Delaney speaking at Boise's inaugural SQL Server User Group and tonight at the Idaho .NET User Group, Kathleen Dollard an INETA speaker is sharing her "Twelve Gems and Eight Dragons talk." Here are the Twelve Gems - System.AddIn - one of two new features in 3.5 that are getting overlooked; allows you to let other people provide customization to your application; wraps everything about managing app domains; check out the Pipeline Builder tool on CodePlex
- HashSet - sets = groups and very high performance, and sets are mutable; LINQ allows set-type functions, but is missing some features and always returns copies
- WPF Async Data Loading - Asynchronous behavior offered for instance loading and (sometimes) property retrieval, by leveraging the ObjectDataProvider IsAsynchronous property in XAML
- Generic Classes C# - Generic classes encapsulate operations that are not specific to a particular data type; the most common use for generic classes is with collections like linked lists, hash tables, stacks, queues, trees, and so on. Operations such as adding and removing items from the collection are performed in basically the same way regardless of the type of data being stored; Why generics? improve performance, enhanced behavior with 3.5, improve robustness by catching typing errors at compile time, reduce amount of code via generic refactoring; Kathleen's guidance is to stop using System.Collections and replace it with System.Collections.Generic
- Refactor/Rename - in her opinion the most commonly used refactoring; now available in Visual Basic as well
- Snippets (your own) - Microsoft's provided snippets are marginal; Kathleen says not to use Microsoft's snippet editor, but rather Bill McCarthy's Snippet Editor 2008 instead
- Understanding Your Code - static analysis (FxCop, VSTS Code Analysis - but custom rules are hard), code-based analysis (CodeIt.Right and StyleCop), and VSTS Code Metrics (maintainability index, cyclomatic complexity, depth of inheritance, class coupling, and lines of code) - cool and (some parts) are useful, unit test code coverage, and performance
- Data Driven Unit Testing - data sources define conditions, can be Excel, quality team can be included and expand the list, consider naming classes by condition, do not demand 1:1 class correspondence, and anticipate n:1 test correspondence
- Extension Methods - Extension methods enable you to "add" methods to existing types without creating a new derived type, recompiling, or otherwise modifying the original type so you don't have to wait for Microsoft to provide functionality you've been waiting for;
- System.Exception.Data - a key/value pair collection to provide additional, user-defined information about the exception
- Partial Methods - separate responsibility, pretty useless unless they can interact; partial methods allow interaction between partial classes; they required definition of clear extensibility points and are a replacement for intra-object dependency
- Document Outline - provides an outline view of elements and scripts in the current document (Web or Windows forms)
Here are the Eight Dragons - VB vs. C# nullable operators - be careful here because a lot of combinations of =, <, >, etc. may give unexpected results
- Inheriting from Collections. Generic.List - Microsoft decided List should have max performance so they sealed everything to avoid virtual table calls, so you can't modify, add events, anything;
- Interface versioning - everything implementing the interface is broken, so create a new interface or consider using a base class
- Immutability in anonymous types - once you place something in a dictionary, its hash must not change; anonymous types are used most in LINQ; in C#, all instances of anonymous types are immutable, but VB uses a key to define a immutable fields of anonymous types and if the key is missing, it will use reference semantics so for LINQ consistency, uses full value semantics in LINQ
- The New constraint - the most useless piece of junk related to generics; generics provide 3 constraints: base, interface, and new; the "New" constraint requires public parameterless constructor and this is not consistent with most good development; instead you should use reflection to instantiate
- Unexpected LINQ evaluation
Landscape Complexity - if we are feeling overwhelmed (and we should be given the complexity of .NET 3.5) with so many languages, data bases, server solutions, data access, presentation
- There is a frightening pace of change, which is a generally a good thing, but we are losing hobbyists, one man shops
- No one is competent anymore
- You cannot know it all
- Code for change - assemblies (n-tier and beyond, wrap XML, wrap communication, wrap office automation, wrap special library access) , class design (interface coding, partial classes, generics), code design (lambdas, LINQ core), big picture (source control, CI, reluctant polyglot programming, code generation, testing, metadata - DRY4D - don't repeat yourself in the 4th dimension (time)
Other terms overheard this evening - Polyglot Programming - using the best language for the job; in this case, C# or VB
 - CTRL + Shift + V - Cycle through the clipboard in Visual Studio
- CTRL + A + C - Copy the text out of a dialog window
Back home now, and I have a moment to get the photos downloaded from my camera and uploaded to my blog. Next time I'll take my SD card reader with me. As you can see, registration was quite busy. I heard that there were 4000 people there, but didn't count them myself. The long lines delayed the keynote by about an hour: Douglas McDowell and I snuck into the press area. Well, he was officially press (SQL Server Magazine), but I wasn't - still I took more notes than most of the other pressies there. The main screen was huge, and 3D. We estimated about 80' wide and 20' tall. When no slides were on the screen, there was a spinning 3D Earth enclosed in curley brackets. Hey, what about VB? After the keynote, there was a short walk to the LA convention center, where the breakout sessions, chalk-talks, exhibitor area, etc. Fortunately, we had these interpretive dancers along the way to keep us from getting lost. The line to lunch was too long, so we ducked inside to check out the exhibitor area. I was there (where it says "You Are Here") Attendees attending one of Doug Seven's chalk talks on Team System. Doug was all about the writing quality code and the 3 C's in his talk (Code Coverage, Code Analysis, and the new Code Metrics) After I turned in my evaluation form, I picked up the attendee bag, which had lots of goodies, including a hard-bound, coffee-table style book called "Heroes Happen Here" which contains IT heroes from all around the world, photographed by Carolyn Jones. And yes, I got my book signed! 
10:35 AM (Los Angeles) A fictitious developer, from the fictitious company "Fourth Coffee" is demonstrating the new, agile development features in Visual Studio 2008. She's showing off how to manage team development projects (a.k.a. team projects and work items), giving her tasks to make some changes to her code. Mostly she is showing off the split-screen editor, synchronization of code and designer, integrated design tools, and the new JavaScript debugger. Oops, she just called it "Team Services" as she closed out her work item. Well, we get the idea. 
In this, my first post of (hopefully) several today, I'm sitting in the keynote session (next to Douglas McDowell), listening to Tom Brokaw warm up the audience. What a nice surprise. It definitely stopped all the geeks in their tracks, to listen to his wise words, gathered from years of experience in all matters mankind. I loved his opening line "I'm not here to write code, or wire this room". He did, however, wax poetic on the future of technology, the spirit and energy of the types of people who will drive it, and how we must handle it to get their safely." Some of his quotes during the keynote (some paraphrasing): - "The test or our place in this world is not yet complete. We don't want to become Easter Island or the Mayan civilization. The use of this technology is not just a virtual experience. If we develop capacity and leave out common sense, what then is the reward to each of us, collectively or individually? If speed overruns reason, what else gets trampled?"
- "We will not solve climate change by hitting backspace. It will do us little good to wire the world if we short circuit our consciousness, our souls and if we don't use this technology to advance mankind."
- "When I left Nightly News I said that I'm not only going to spend my time at suites in the four seasons ... but to spend time in the trenches to meet people who make a difference"
- "One day I woke up in Pakistan in a packing container with Americans who had been there for six months, trying to assess medical and health needs. When they hiked out, they put their hands on the keyboard and distilled what they had learned ... and in so doing, made a big impression ... of those of us in the West who have so much, while they (people in Pakistan) have so little."
- "This technology takes a guiding hand, an imaginative approach, and a hope ..."
- "We have the opportunity to become the next, greatest generation."
Steve Ballmer came on stage next to thank the many platinum sponsors, and discuss how "Dynamic IT" can help manage complexity and achieve agility (especially in the realm software development) I heard the term "Agile" about 10 times in the span of 3 minutes. More to come ...
I know. I know. This doesn't sound like a very interesting post, but it saved me time, and hopefully it can save you some too. When you install Visual Studio 2008, Microsoft creates a "Visual Studio 2008 Command Prompt" shortcut, under that program group.  I like to take this shortcut and drop it on my Quick Launch toolbar:  The problem is that when you install the Team Foundation Server Power Tools (or other new command line utilities) you need to put them in the path. Well, if you look at the file the shortcut calls, it's vcvarsall.bat, but don't bother editing that file because it calls vcvars32.bat, but don't bother editing that file, because it calls vsvars32.bat. If you go ahead and edit that file, you can find where the PATH is getting set, and add the Power Tools path to it: @set PATH=C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE;C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN;C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools;C:\WINDOWS\Microsoft.NET\Framework\v3.5;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 9.0\VC\VCPackages;C:\Program Files\Microsoft Team Foundation Server 2008 Power Tools;%PATH%
Last week I had a chance to meet some of the brains behind gridGISTICS - a .NET development company in Atlanta that gets it. Not only are they up to speed on the latest .NET 3.x technologies, but they have some killer products as well. The one that struck me as the coolest was their Aware Server product, which is a grid-computing based deployment and management environment. In other words, the missing pieces to Team Foundation Server's build and (ahem) deploy automation. Packaging up applications by system and version into manifests, these binaries can be automatically deployed, registered, launched, and monitored by various Aware Agents installed around a company's environment. From the development side, they provide many Visual Studio 2008 templates and add-ins to help generate Aware-compatible applications very quickly. Follow their story here.
Come chat with the Visual Studio Team System group on Wednesday, December 5th. Join members of the Visual Studio Team System product group to discuss features available in Team Foundation Server, Team Suite, Architecture Edition, Development Edition, Database Edition, and Test Edition. In addition, discuss what's new for these editions for Visual Studio 2008. There will be two sessions that day:
Hmmm ... it still has that fresh .ISO smell. Seems that we'll have something extra to be thankful for this week. VSTS 2008 Team Suite is available for download today! I hope you are an MSDN subscriber, so you can access the subscriber downloads.
Microsoft has released a new version of VSTS Web Access Power tool. This release is a Community Technology Preview (CTP) of what will ultimately be the 2008 version of the VSTS Web Access Power Tool. - Built against the TFS 2008 object model - In previous versions of Web Access you had to install Team Explorer 2005 on any machine you were installing Web Access on. With this version, you will now be installing Team Explorer 2008 instead. In some future version, Microsoft hopes to remove the requirement to install any version of Team Explorer.
- Custom control support - added support for web based work item custom controls and have included a folder of documentation and samples on how to create them.
- Build queuing - added UI for the new TFS 2008 feature of build queuing. You can start new queued builds and view the build queue (in addition to the preexisting abilities - like viewing build details).
- Localization support - added support for localizing the web interface. Microsoft will also be localizing text for the final 2008 Power Tool release.
- Bug fixes & Performance improvements - Microsoft has received a number of reports and done more testing on the current version of the Power Tool, and has fixed everything thus far.
This release (and the final 2008 release) can be used with either a TFS 2005 or a TFS 2008 server. In either case, you will need to install a TFS 2008 Team Explorer on the machine you install Web Access on. Since TFS 2005 did not support build queuing, that functionality will not be available when this and future versions of Web Access are used with a 2005 server. You can download it here and read more about it at Brian Harry's blog posting.
The great news just keeps on coming from Microsoft. After a flurry of Team System announcements and downloads recently, we have yet another set of Power Tools to play with. These tools are designed specifically for the Visual Studio Team Edition for Software Architects and provide the following capabilities: - View class library projects on the Application Diagram (AD)
- View references to class library projects as connections on the Application Diagram
- Create class library projects from the Application Diagram
- Create references to class library projects from the Application Diagram
- Synchronize properties between class library projects and their representative applications on the Application Diagram
- Create and use class library applications and references on the System Designer (SD)
Fantastic. We haven't seen much out of the Architect tools, except for the SDM SDK in quite some time. I'm looking forward to it. Download the CTP here. Note: you will also need to download Visual Studio 2008 Beta 2. If you have any feedback on these tools, please visit the Architecture & Design forum.
Join members of the Visual Studio Team System product group to discuss features available in Visual Studio Team Foundation Server, Architecture Edition, Development Edition, Database Edition, and Test Edition. In addition, discuss what's new in Visual Studio 2008 Beta 2. Microsoft will be holding two sessions: - Join the chat on Wednesday, August 1st, 2007 from 10:00am - 11:00am Pacific Time. Add to Calendar
- Join the chat on Wednesday, August 1st, 2007 from 4:00pm - 5:00pm Pacific Time. Add to Calendar
Nice work Microsoft. The download page just came online today. You can download Installation Disc Images, VPC Images, or Express Editions. There's even a link to download the .NET Framework 3.5 Beta 2 at the bottom of the page.
|