ALM in 2010
Here is the slides from my talk on Application Lifecycle Management in 2010 which I did for the Information Worker user group.
Here is the blurb for the session
You can download the slides and the white paper from the IW site.Development is not just about writing code and pressing compile. It is a process, which starts long before code is written and extends long after the compile is done and this process includes a lot of management - this process is called Application Lifecycle Management (ALM).
SharePoint development is not immune to this and this presentation looks at what the landscape and tools are like for ALM in 2010 and how it relates to SharePoint development.
HTTP Status Codes Cheat Sheet
Today’s poster is for the variety of HTTP status codes which exist. Not only is there the 34 original HTTP v1.0 ones and the 6 new ones that came in with 1.1. There is also another 10 extensions from official RFC’s, and two special case ones. That is 52 in total, and it isn’t easy to remember what they are all are – so this poster is a cheat sheet to help with that.
It is also related to my other REST cheat sheet, since good HTTP status code usage is important for good REST services.
You can download the high resolution XPS file below.
"How RESTful are your services?" - The quick reference poster
Today’s quick reference poster looks at REST services and gives a guide to how RESTful (or not) your services are, from level 0 (not restful) to level 4 (using everything). These are not a scientific levels, it is just a simple classification I devised to promote easy communication about the services. The idea for this is to promote thinking about what features to use and assist with communication in a team. It is not a a requirement to always have level 4, some times you just need level 1 and this fine – do not over engineer for the sake of saying you are level 99.
If you are in into classification of REST services, have a look at http://www.innoq.com/blog/st/2010/07/rest_litmus_test_for_web_frame.html
Download the high resolution XPS file below.
Proven Practices in Threading Quick Reference Poster
This poster is based off my talk on .NET Threading, which I wrote about the entire process about the creation of that talk (see here). This poster takes the key proven practices in the talk and groups them into six themes for easy consumption.
High resolution XPS version below.
Free Visual Studio 2010 and TFS 2010 training!
Update 13 July 2010: The event is fully booked now! If you want to add yourself to the waiting list in case a spot becomes free, please contact me.
I am very excited to announce that Zayd Kara, fellow Visual Studio ALM MVP, and myself have arranged a free hands on labs training for Visual Studio 2010 and TFS 2010. This is your opportunity to get some time learning about the new features in these products.
The event will take place on Saturday, 31st July 2010 and will run from 9am to 1:30pm and is completely free, but it is limited to 50 people!
You will be able to do the following labs:
- Authoring and Running Manual Tests using Microsoft Test Manager 2010
- Branching and Merging Visualization with Team Foundation Server 2010
- Code Discovery using the Architecture Tools in Visual Studio 2010 Ultimate
- Debugging with IntelliTrace using Visual Studio 2010 Ultimate
- Introduction to Coded UI Tests with Visual Studio 2010 Ultimate
- Introduction to Test Case Management with Microsoft Test Manager 2010
- Planning your Projects with Team Foundation Server 2010
- Understanding Class Coupling with Visual Studio 2010 Ultimate
- Using the Architecture Explorer in Visual Studio 2010 Ultimate to Analyze Your Code
Click here for more details and registration form.
I would also like to take this opportunity to thank our sponsors for making this possible:
What's new in Visual Studio 2010 quick reference poster
One of my favourite aspects of my work at BB&D, is the creation of quick reference posters and cheat sheets for the DRP site which is one of BB&D’s way of sharing knowledge outside the organisation. I have recently produced a bunch of new posters which I will be releasing over the next few days. First up is…
What’s new in Visual Studio 2010
A quick reference post which explains the edition changes, some new features (IntelliTrace and the architecture tools) and gives some hints about the IDE (docking of windows, search shortcuts, block selection and zooming).
You can download the high definition XPS file below.
Presentation Dump - Mid 2010: VS2010, NDepend, RESTful Design, SSIS, EntLib 5, .NET Reflection, AppFabric, BDD, Sikuli & Redmine
The past 6 months have been hectic from a presentation perspective for me, with 20 presentations and classes given this year so far. So instead of a single dump of presentations at the end of the year, as I did last year, I am doing a mid-year dump.
What is new in Visual Studio 2010
This presentation is the one I have given many times this year. It originally started as 10 on 10, which looked at 10 features in 20min for Dev4Dev’s last year. It then evolved into 12 on 10, which added two more features, still in 20min. It then evolved into ?? on 10 for 6 degrees of code where it became an hour and half presentation. It is demo heavy and really the slides are the very basics – the important is hidden slides and notes for the demos.
NDepend
The tool that keeps on giving! For people working with taking over customer sites, reviewing code or anything else where you need to deal with other peoples code this tool is a must. This presentation was given to the architecture team at BB&D.
RESTful Design
RESTful design is an evolution of an earlier presentation I did, REST & JSON, which drops the JSON stuff completely and also drops the heavy compare with SOAP/WS* parts which seemed to cause confusion. This revised presentation covers just REST and looks at it much more practically by covering the required HTTP knowledge and patterns for designing RESTful services.
SQL Server Integration Services
Another upgrade in 2010 of an earlier presentation which not only cleans up some aspects but also goes into a lot more detail.
Enterprise Library
“The presentation that never was”, often I will spend time researching a technology or trend and preparing the presentation to come to the conclusion that it is just not worth the time of the attendee’s. Enterprise Library 5 is one of those, as the presentation covered what is new in it, and that is not very much.
.NET Reflection
This one is actually one from last year, but I had problems getting it onto SlideShare so it is only showing up now.
Windows Server AppFabric
AppFabric, the local one – not the Azure one, was a great presentation I did for the BB&D architecture team. This is not the original presentation – it has been edited to remove customer info as a lot of analogies between a project BB&D did and AppFabric was in it (cause who hasn’t built a system similar to AppFabric).
BDD
One of the presentations I spent the most time on this year, and one of the most exciting presentations. It really is a great methodology and I would love to see it used more.
Sikuli
Another presentation which did not make the cut to actually be presented. It is an interesting project, but of limited scope and when compared to the Coded UI from Visual Studio 2010 it is really far behind.
Redmine
Redmine is a bug tracking system, and being it’s not TFS may surprise you that an ALM MVP would do training on it. However for me to do training meant I head to learn it, which means I know the ALM landscape better and can point out which is better or not without uneducated bias (btw it still is TFS :)). This training was aimed not at developers but at call centre/power user people who would log initial bugs to then be managed in the system – so it was more of a ticketing system than a bug system in the end.
What Office taught me about Visual Studio? A very cool toolbox trick.
I spend a significant amount of time in PowerPoint and to get a constant look and feel in my slides, I often use the Format Painter option. Using this tool you highlight some text/image/video, click the Format Painter button and then paint some other text/image/video and it applies the format settings from the first group to the group you paint.
What if you want to do this over and over? You may think you need to highlight → click → paint over and over again, but Office has a trick – double click the button! Then you can highlight → double click → paint → paint → paint
So how does this help in Visual Studio? I am working with the UML diagrams at the moment and needed to connect a bunch of items and the first few times I did the following: Click the connector in the toolbox → click source item → click destination, repeat from start.
Suddenly I thought, maybe it works like Office and you know what? It does! You can double click a toolbox item, and then it becomes sticky and adding lots of them is easy!
How to create an adapter for the TFS Integration Platform - Appendix 2: SimpleDictionary
Note: This post is part of a series and you can find the rest of the parts in the series index.
For my WI adapter I needed an implementation of Dictionary<T,V> which could be serialised and unfortunately the .NET one can’t. So I threw together a simple implementation of one using two List<T>. It is not perfect for every possible time you may need an alternative to Dictionary<T,V>, for example the only item manipulation I have is to add an item and clear all items, but it is great for my needs in the case:
[XmlRoot("simpleDictionary")] public class SimpleDictionary<Key, Value> : IEnumerable, IXmlSerializable { private List<Key> keys = new List<Key>(); private List<Value> values = new List<Value>(); public List<Key> Keys { get { return keys; } } public List<Value> Values { get { return values; } } public IEnumerator GetEnumerator() { return (IEnumerator)new SimpleDictionaryEnumerator(this); } public void Add(Key key, Value value) { keys.Add(key); values.Add(value); } public void Add(object o) { KeyValuePair<Key, Value>? keyValuePair = o as KeyValuePair<Key, Value>?; if (keyValuePair != null) { this.Add(keyValuePair.Value.Key, keyValuePair.Value.Value); } } public void Clear() { keys.Clear(); values.Clear(); } #endregion private class SimpleDictionaryEnumerator : IEnumerator { private SimpleDictionary<Key, Value> simpleDictionary; private int index = -1; public SimpleDictionaryEnumerator(SimpleDictionary<Key, Value> simpleDictionary) { this.simpleDictionary = simpleDictionary; } #region IEnumerator Members public object Current { get { return new KeyValuePair<Key, Value>(simpleDictionary.keys[index], simpleDictionary.values[index]); } } public bool MoveNext() { index++; return !(index >= simpleDictionary.keys.Count); } public void Reset() { index = -1; } } public System.Xml.Schema.XmlSchema GetSchema() { return null; } public void ReadXml(XmlReader reader) { if (reader.IsEmptyElement) { return; } XmlSerializer keySerialiser = new XmlSerializer(typeof(Key)); XmlSerializer valueSerialiser = new XmlSerializer(typeof(Value)); reader.Read(); while (reader.NodeType != System.Xml.XmlNodeType.EndElement) { reader.ReadStartElement("keyValuePair"); reader.ReadStartElement("key"); Key key = (Key)keySerialiser.Deserialize(reader); reader.ReadEndElement(); reader.ReadStartElement("value"); Value value = (Value)valueSerialiser.Deserialize(reader); reader.ReadEndElement(); this.Add(key, value); reader.ReadEndElement(); // for keyvaluepair reader.MoveToContent(); } reader.ReadEndElement(); // for root } public void WriteXml(XmlWriter writer) { XmlSerializer keySerialiser = new XmlSerializer(typeof(Key)); XmlSerializer valueSerialiser = new XmlSerializer(typeof(Value)); for (int counter = 0; counter < this.keys.Count; counter++) { writer.WriteStartElement("keyValuePair"); writer.WriteStartElement("key"); keySerialiser.Serialize(writer, this.keys[counter]); writer.WriteEndElement(); writer.WriteStartElement("value"); valueSerialiser.Serialize(writer, this.values[counter]); writer.WriteEndElement(); writer.WriteEndElement(); } } }
Pro tips for the Visual Studio Pro Power Tools
The team has release a new version of the tools which solve a lot of the issues, and provide a bunch more great features. Please make sure you see and use the latest version.
At Tech·Ed North America on Monday the Visual Studio Pro Power Tools were announced, and they are fantastic. A full run down of them can be found on Brian Harry’s blog. However there are some tips in the usage which may not be immediately obvious so this post will explain some additional tips.
Add Reference Dialog
The new dialog is amazing and fits the UI experience of VS2010 way better than the out of the box one. One point to be aware of is that when you hit Add that it does not close the dialog - it does mark the selected assembly and in the background it adds it. This is great for adding multiple assemblies. If you want to remove an assembly you can do it here too – just select an already added assembly (green tick) and the Add button becomes a Remove button.
Document Tab Well
This is one of the first things you will see, because the tabs are a variety of colours suddenly. How can you control this? Go to the Tools menu –> Options –> Environment –> Document Tab Well to customise the settings. Setting the preset to Visual Studio 2010 is the same as disabling it.
As a side point, if you are thinking of disabling it – before you do disable it, try the Dynamic Tab Well preset. It is very similar to the standard VS2010 tabs, but with more features added and should appeal without over killing it.
The shortcut to get to that part of help is right click on any blank space in the tab well and click Customize…
Highlight Current Line
Another one that is immediately obvious – the grey behind your current line of code. If this colour is not aligned to your colour scheme then you can tweak it using the Tools menu –> Options –> Environment –> Fonts & Colours –> Display Items –> Current Line (Extension).
To “disable” it set the background to Automatic.
Align Assignments
If this is not working for you, it could because your C# settings are stopping it. To , you must uncheck: Tools menu –> Options –> Text Editor –> C# –> Formatting –> Spacing –> Ignore spaces in declaration statements
Colourised Parameter Help
Don’t like the the colours of the new tool tips? Want them to match your theme?
You can do this via Tools menu –> Options –> Environment –> Fonts & Colours –> Display Items –> Signature Help Tooltip Background
Important to not that the foreground colour cannot be changed, only the background colour.
Move Line Up/Down Commands
Did you have something already on the Alt+↑ or Alt+↓ or maybe you want to bind to something else? You can do this in Tool (menu) –> Options –> Environment –> Keyboard. The commands are:
- Edit.MoveLineDown
- Edit.MoveLineUp
The Hack
Should you really dislike an extension or a specific extension is conflicting (tab well for instance conflicts with another tab management extension available) there is a completely unsupported hack to remove a specific feature while keeping other features on. Note that you will need to do this for EVERY update and it is unsupported, so do not bother to ask for help. It may also cause side effects to Visual Studio which cannot be foreseen. In short you had better be desperate.
Hack #1
The VSIX file is just a ZIP file, which you can open in your favourite archive tool. From there you can see the assemblies for each extension and remove them if needed.
Hack #2
When an extension is installed it is unpacked to C:\Users\<Username>\AppData\Local\Microsoft\VisualStudio\10.0\Extensions\ in here you will find directories for the various authors and under those the extensions. To find the Pro Power Tools go to: \Microsoft\Visual Studio 2010 Pro Power Tools\10.0.100525.1000 and you will see all the files, simply delete or move out the assembly of the feature you do not want that will disable it.