After meeting Brian Harry in München @ALMDays , we have talked about changes in TFS11 in the day by day work for developers, check some news here about Version Control Model Enhancements
and about Merge enhancements in TFS 11
A new diff/merge experience – The one has been shipping for the past 5 years is the original SourceSafe diff/merge tools – built while we were One Tree Software circa 1994. It had been enhanced over the years to support globalization, Unicode, etc but it was, in essence, the same diff tool. Well not any more, it’s gone! Now it is a new diff/merge experience based on the VS editor. And before you say “but wait, I really love kdiff!”, don’t worry – it’s still configurable and you can use any tool you like but the out of the box one is now WAY better. How is it better you say?
- It supports both “inline” and “side by side” modes and you can choose the one you like best.
- It has syntax highlighting (as supported in the VS editor).
- Individual changes within a line are highlighted.
- When both diffing and merging, you can edit with the full power of the VS editor, including undo, Intellisense and everything!
- Diff has a nice “mini-map”.
- You can now take more actions from the views (like history, etc).
- Diff uses the new provisional tab feature in VS to avoid cluttering your document well.
- An improved way of manually selecting merge resolutions.
- An interactive way of turning on/off ignoring whitespace.
Here are some screen shots to demonstrate. You can observe many of the points I made above:
Side by side diff view in the provisional tab (all the way to the right) with a change highlighting gutter on the left, in line change highlighting, VS style class/method navigation, syntax coloring and more. Yes the text with the file names above the source looks dumb – that’s a bug.
Same diff using inline mode:
And here are some screenshots of the merge experience. I’ve included all three of the views you can choose from:
Brian Blackman, Paul Meyer (VMFactory Master) and Willy-Peter Schaub have just published an article in MSDN Magazine (December Edition), which delves into the Virtual Machine Factory (VM Factory), exploring its concepts and advantages. Read all about it here.
You can try to work with your team/coworkers to build up a checklist of good questions to ask yourself while reviewing each other’s code, ideally tailoring it to the languages you code in, the projects you work on, the domains in which your code runs, etc. In practice, I don’t think it’s reasonable to expect developers to pull out a spreadsheet and check it off every time they review code, but I think it’s a good exercise to periodically do nonetheless. Additionally, if all code review "results"/responses are sent to the entire team, you can learn from the sorts of things that more experienced developers look for and spot during code reviews. (It also tends to lead to pretty good discussion.) At a few points, my team actually all got together to go through a sample code review, comparing each of the comments we had privately made.
- Ensure the code meets standards (set by your department perhaps)
- Proper formatting
- Syntax errors (these are the worst – the person must, at the very least, have compiled their code)
- Logical errors (actual errors in the logical flow of the code)
- Risky/Fragile/Error-prone code
- Code that is hard to maintain
- Software antipatterns
- Bad practices/Code smells
- Improper naming of variables/methods (self-documenting code is important; I make sure I name my methods and variables properly)
- Race conditions (in multithreaded code)
- Infinite recursion
- Edge cases that have not been handled
- Are exceptions used to indicate error rather than returning status or error codes?
- Are all classes and public methods commented with .NET style comments? Note that <summary> comments should discuss the "what" of public methods. Discussion of "how" should be in <remarks> blocks or in-line with the code in question.
- Are method arguments validated and rejected with an exception if they are invalid?
- Are Debug.Asserts used to verify assumptions about the functioning of the code? Comments like, "j will be positive" should be rewritten as Asserts.
- Do classes that should not be instantiated have a private constructor?
- Are classes declared as value types only infrequently used as method parameters, returned from methods or stored in Collections?
- Are classes, methods and events that are specific to an assembly marked as internal?
- Are singletons that may be accessed by multiple threads instantiated correctly? See the Enterprise Solution Patterns book, p. 263.
- Are methods that must be overriden by derived classes marked as abstract?
- Are classes that should not be overriden marked as sealed?
- Is "as" used for possibly incorrect downcasts?
- Do classes override ToString instead of defining a Dump method for outputting the object’s state?
- Are log messages sent to the logging component instead of Console?
- Are finally blocks used for code that must execute following a try?
- Is foreach used in preference to the for(int i…) construct?
- Are properties used instead of implementing getter and setter methods?
- Are readonly variables used in preference to properties without setters?
- Is the override keyword used on all methods that are overriden by derived classes?
- Are interface classes used in preference to abstract classes?
- Is code written against an interface rather than an implementing class?
- Do all objects that represent "real-world" or expensive resources implement the IDisposable pattern?
- Are all objects that implement IDisposable instantiated in a using block?
- Is the lock keyword used in preference to the Monitor.Enter construct?
- Are threads awakened from wait states by events or the Pulse construct, rather than "active" waiting such as Sleep()?
- If equals is overridden, is it done correctly? The rules for overriding equals are complex, see Richter p153-160 for details.
- If == and != are overridden, so they redirect to Equals?
- Do all objects that override Equals also provide an overloaded version of GetHashCode that provides the same semantics as Equals? Note that overrides to GetHashCode should takeadvantage of the object’s member variables, and must return an unchanging hash code.
- Do all exception classes have a constructor that takes a string and and another constructor that takes a string and an exception?
- Do all exception classes derive from the base Matrix exceptions and fit correctly into the exception hierarchy?
- Are all classes that will be marshaled or remoted marked with the Serializable attribute?
- Do all classes marked with the Serializable attribute have a default constructor? This includes Exception and EventArgs classes.
- Do all classes that explicitly implement ISerializable provide both the required GetObjectData and the implied constructor that takes a SerializationInfo and a StreamingContext?
- When doing floating point calculations, are all constants doubles rather than integers?
- Do all delegates have a void return type and avoid using output or ref parameters?
- Do all delegates send the sender (publisher) as the first argument? This allows the subscriber to tell which publisher fired the event.
- Are all members of derived EventArg classes read-only? This prevents one subscriber from modifying the EventArgs, which would affect the other subscribers.
- Are delegates published as events? This prevents the subscribers from firing the event, see Lowy, p. 102 for details.
- Is common setup and teardown nUnit code isolated in Setup and Teardown methods that are marked with the appropriate attribute?
- Do negative nUnit tests use the ExpectedException attribute to indicate that an exception must be thrown?
Juval Lowy, "Programming .NET Components"
Jeffrey Richter, "Applied Microsoft .NET Framework Programming"
"Enterprise Solution Patterns using Microsoft .NET" – available in published form or as a free pdf
If you ever have the joyous experience by migration steps of TFS environment and Visual Studio 2010 and you are using Team Foundation Server as your source control system, you may encounter a workspace error message akin to “workspace already exists on computer”.
This is sometimes due to the cached settings on your system. To clean this up, try the following:
SET TFAppData=%USERPROFILE%\Local Settings\Application Data\Microsoft\Team Foundation
IF EXIST "%TFAppData%\3.0\Cache" rd /s /q "%AppDataTF%\3.0\Cache" > NUL
tf workspaces /s:http://mytfserver:8080/
Note: “tf.exe” must be in your path. If not, just add the full path to the .exe. Also, this currently shows cache paths for Visual Studio 2005, 2008, and 2010
Multi-Targeting Pack for Microsoft .NET Framework 4.0.2 (KB2544526)
This update adds support for designing and developing applications for the Update 4.0.2 for Microsoft .NET Framework 4 by using Microsoft Visual Studio 2010 SP1 or later. The MT Pack adds new reference assemblies, IntelliSense files, and other supporting files. For further details about the contents of this Targeting Pack refer to the Knowledge Base Article KB2544526.
Update 4.0.2 for Microsoft .NET Framework 4 – Design-time Update for Visual Studio 2010 SP1 (KB2544525)
This package contains updated design-time files for Visual Studio 2010 SP1 corresponding to Update 4.0.2 for Microsoft .NET Framework 4. For further details about the contents of Update 4.0.2 for Microsoft .NET Framework 4 – Design-time Update please refer to the Knowledge Base Article KB2544525.
This design time package installs the following individual packages:
- Update 4.0.2 for Microsoft .NET Framework 4 – Runtime Update (KB2544514)
- Multi-Targeting Pack for the Microsoft .NET Framework 4.0.2 (KB2544526)
- Visual Studio 2010 SP1 Update for enabling workflow state machine designer (KB2495593)
Update 4.0.2 for Microsoft .NET Framework 4 – Runtime Update (KB2544514)
Update 4.0.2 for Microsoft .NET Framework 4 package contains updated runtime files. For further details about the contents of this Runtime Update please refer to the Knowledge Base Article KB2544514.
Multi-Targeting Pack for Microsoft .NET Framework 4.0.1 (KB2495638)
This update adds support for designing and developing applications for the Update 4.0.2 for Microsoft .NET Framework 4 by using Microsoft Visual Studio 2010 SP1 or higher. The MT Pack adds new reference assemblies, IntelliSense files, and other supporting files. For further details about the contents of this Targeting Pack refer to the Knowledge Base Article KB2495638.
Article ID: 2544525 – Update 4.0.2 for Microsoft .NET Framework 4 – Design-Time Update for Visual Studio 2010 SP1
This update adds support for designing and developing applications on Microsoft Visual Studio 2010 SP1 for the Update 4.0.2 for Microsoft .NET Framework 4.
This update installs the packages that are described in the following Microsoft Knowledge Base articles:
To use new features that are provided by this update, follow these steps:
- Install the .NET Framework 4.0.2 – Design-Time Update for Visual Studio 2010 SP1.
- Open Visual Studio 2010 SP1.
- Create a new workflow project, and then set the target framework for the project to .NET Framework 4.0.2 Client Profile or to .NET Framework 4.0.2.
Note The target framework can be changed by using the Target Framework list in the Project Properties dialog box.
- After the project is created, you can code and use designer to build a .NET Framework 4.0.2-based application.
Note If you set the target framework to .NET Framework 4.0.2, IntelliSense for all the new public APIs from Update 4.0.2 for Microsoft .NET Framework 4 – Runtime Update are exposed.
Article ID: 2544514 – Update 4.0.2 for Microsoft .NET Framework 4 – Runtime Update
Update 4.0.2 for Microsoft .NET Framework 4 is now available. This update contains some new features that are based on specific requests from some top customer and on some important .NET Framework scenarios. This update also contains some important software updates for ClickOnce and for .NET Framework 4-based Windows Presentation Foundation (WPF) applications.
- This update release updates only the runtime files for the Microsoft .NET Framework 4. For more information about the details of this update, see the "More Information" section.
- This update contains all the runtime changes from the following update:
2478063 (http://support.microsoft.com/kb/2478063 / ) Update 4.0.1 for Microsoft .NET Framework 4 – Runtime Update
Therefore, this update is a cumulative update. Any application built for the .NET Framework 4.01 can run on a computer that has the .NET Framework 4 and the Update 4.0.2 runtime installed. We recommend that applications built for the Microsoft .NET Framework 4.0.1 be upgraded to the Update 4.0.2 runtime. However, this upgrade is optional.
- We do not support any application that this update was used to build on any prerelease version of the .NET Framework 4 such as a Beta. Additionally, we recommend that any such application be upgraded to at least the Microsoft .NET Framework 4 RTM
Features that are introduced by this update
- AlwaysOn support in SqlClient
- SQL Server Express Local Database Runtime support in SqlClient
- A new DbProviderFactories.GetFactory overload
Issues that this update resolves
Consider the following scenario:
- You create a .NET Framework application that targets the Microsoft .NET Framework 4.0.1 or the Microsoft .NET Framework 4.0.1 Client Profile.
- You publish the application.
- You install the application. ClickOnce is used to install the application.
In this scenario, the installation fails, and you receive an error message that contains the following text:
Version 4.0.1 is required
Consider the following scenario:
- You create a Windows Presentation Foundation (WPF) application.
- You set a window to be a child window of two windows.
In this scenario, WPF reports incorrect child-window dimensions.
Note After you install this update, WPF returns the correct dimensions of the child window.
The next generation of Surface, the Samsung SUR40 for Microsoft Surface, is now available for pre-order through Samsung resellers in 23 countries worldwide, including the United States. Automotive, education, finance, healthcare, hospitality, and retail are just some of the industries that will soon be able to take advantage of Samsung SUR40’s PixelSense technology, new, sleeker form factor and horizontal and vertical orientation options. Many new and existing customers, such as Dassault Aviation, Fujifilm Corp. and Royal Bank of Canada, have big plans for the Samsung SUR40 and are preparing to deploy units in locations early next year.
I try to finding a straight forward comparison of these two technologies. On the surface they appear to be solving similar, if not the same problems.
|WCF (ADO.NET) Data Services
||WCF (.NET) RIA Services
|Expose data model as RESTful web service
||Prescriptive approach to n-tier app development
|Cross platform interoperation as a goal
– “Unlock data silos”
– Out-of-box support from future MS products such as SQL2008 R2, Azure, Excel 2010, SharePoint 2010
|Designed specifically for end-to-end Silverlight & ASP.NET solutions
– Some technology proprietary to Silverlight (no WPF support)
– Use ASP.NET Authentication/Roles across SL and ASP.NET
– ASP.NET/AJAX can also access service layer
|Loosely coupled clients and servers
||Client & server are designed and deployed together
|Service layer exposes “raw” data sources
||Opportunity to easily add business logic into service layer
– Encourage “domain” concepts
– Strong validation framework
– Offline / Sync enabled
|Service can be consumed from .NET, Silverlight, AJAX, PHP and Java (libraries available)
||Service can be consumed easily from SL, AJAX, WebForms
|Service’s data source must:
– Expose at least one IQueryable property
– Implement IUpdateable if you desire updates
|Service exposes domain objects via convention:
– IQueryable GetX
|No design time experience yet (??)
||Design time experience with data sources, drag drop etc
|– OData for all clients
– Within OData, multiple formats supported (JSON, XML etc)
|– SOAP (binary) for SL clients
– JSON for AJAX clients
– SOAP (XML) for other clients
|Hosted as WCF Service (.svc)
||Old version hosted in custom web handler (.axd).
New version is WCF service.
|Standardized on OData protocol
||Will “support” OData
|More mature – public for at least 2 years, formerly “Project Astoria”
||Less mature – public for 6 months
- GeneralBased on WCF
- Use a RESTful architecture
- Can be used to expose any data source (sql, xml, poco/objects etc.)
- Client side libraries provide ability to query using LINQ
- Currently they do not share much (any?) technology / code
- RIA Services is not based on top of Data Services
- RIA Services & Data Services will “align”
- OData eventually pushed down into WCF stack
Your opinions are welcome!
After few months of feedback and bug fixing the new TFS tools are online, with key improvements in this release include:
Windows shell extension updates
Work Item Search (part of #14 on the TFS UserVoice list
Rollback in the UI (#8 on the TFS UserVoice list)
Build Automation Utilities
Maven 3 support
Best Practices Analyzer updates
Test Attachments clean-up
more about on Brian’s blog
S. Somasegar mentioned some info’s about the new reorg. in Microsoft Dev. Division form last weeks, that give us an hint regarding future of C++ from Microsoft point of view and expected in Visual Studio 2012 – can be September Beta
“Parallel Computing and Tools led by Steve Teixeira, David Callahan and Shahrokh Mortazavi will move to a combined WinC++, PCP, and UX organization under Mohsen.”
more details in Jo Foley’s blog http://www.zdnet.com/blog/microsoft/microsofts-plan-to-increase-its-focus-on-developers-the-full-internal-memo/9327
confirmed also in an job description
I found a list with free ebooks from Microsoft Press, that you may find useful too. Many of them are quite technical, so they won’t be for everybody. I bet there are some people around you that would appreciate this list:
Personally, I haven’t read them all – but I have read the Understanding Microsoft Virtualization Solutions book – mainly to make sure that I can keep up with some of my more technical colleagues and customers, and to understand what the true potential can be in different scenarios.