View from the Ivory Tower

Chris Kadel's attempt at a blog with an ironic title.

Development Process – A Lesson From Microsoft

Posted by cbkadel on October 19, 2009

Often times in the media today, you read about the end-products of Microsoft such as Windows or Office, but not often do you get some insight in how those products were developed.  In the Online WSJ – http://online.wsj.com/article/SB10001424052748703816204574483533753673144.html – there is mention of how Microsoft re-organized its Windows development team.  I think there a few lessons that as a consultant or even a developer in corporate IT, we can take to heart.

 

Firstly, rigid silos within teams or between teams.  Microsoft worked on fostering communication among its teams to ensure that information was shared more effectively.  I think we all believe innately that silos in IT are “bad” but it is surprising how often they manifest themselves.  One cause, in general, is the environment that we work within.  We like to send email to people, we like to IM, and we like to have face-to-face conversations.  I think that those things, informally are absolutely critical in every project, but I do think there are some things that we should be using a structured way of communicating so that it gets captured for others.  It is one reason that I’ve been a big believer in Visual Studio Team System since v1.0.  By using task management and SharePoint collaboration, communication can be structured and viewable by all – that need to do it.

 

Just using the tool alone will not solve those issues, but I believe it can be a great enabler.  So – I think we should all be introspective, and look for those silos.

Posted in Uncategorized | Leave a Comment »

The New Visual Studio

Posted by cbkadel on October 19, 2009

Well, today was a big day for the Microsoft Developer Tools group for sure.  They packed a bunch of huge announcements.  I’m sure you’ve seen the big announcements for the launch date for sure (March 22nd, 2010).  Also the new product SKUs which hopefully will simplify the choices for most teams that have been accustomed to buying role editions.

 

What I think i find most interesting is how this will affect customers using the products going forward.  My guess is that – for most developers having what was called the Database/Developer edition functionality, now going forward “Premium” will be what’s needed.  I’m thinking this is really an awesome amount of functionality into the entry level Team System product line.  This of course includes a CAL (I’m assuming) and the improved database + developer functionality.

 

If you’re anyone else on the project, or a developer that plays a lot of roles, Ultimate becomes very attractive, as you get the development functionality, database functionality, testing, and architecture functionality included now.

 

It will be interesting to see how this is presented, I’m starting to wonder if more people should be looking at Ultimate:

 

How does the business analyst fit in?
How about the Business Analyst that is going to be doing heavy modeling?  I know this type of functionality was previously viewed as “Architecture” – but business people certainly are no stranger to the Use Case diagram. I’d say Ultimate looks like the edition for those people. If they do not do modeling per-se, using a CAL and Team Explorer may get them the functionality that they need.

How does the ‘do-everything’ person fit in?

The “Project Guru” – this is the person that probably is working as a developer as well as a liaison to the business. He/She has to write code, and model.  That person is going to want Ultimate.  

Testers?

Testers – They have a choice for the Testing Elements – which is the stand alone tool that is targeted specifically for testers, or they can get Ultimate.

 

For the most part, it seems that this change in product SKUs really brings the Visual Studio line more into line (though not perfectly) with other Microsoft products such as Windows and Office.  Both of those products sport names like “Professional” and “Ultimate.” So from a marketing perspective, I can really see the value.

 

One thing I think that is important to remember here too, before people did complain about the functionality changes in Windows Vista.  There were some more expensive versions that did not contain all the functionality of perceived lesser versions.  Vista business line versions did not include Media Center and a few other things.  Customers were somewhat confused because they had to make some hard choices: Do I want media center or AD integration?

 

The good news, I think is that each subsequently advanced version of Visual Studio now will have a superset of functionality than the previous one.

Posted in Uncategorized | Leave a Comment »

Presenting VSTS 2010 at the TSUG – Virtual Edition

Posted by cbkadel on October 14, 2009

Tomorrow, Thursday October 15th @ 7PM CST, I will be giving a talk on the Architect Edition functionality for Team System 2010.  I’m very excited to be presenting with that group and it should be a good lap around the functionality of the new tools coming out next year!

 

There is no official sign up, but if you go to http://www.tsug-ve.com/, you’ll see the Live Meeting link/invitation that you can use to connect.

 

Audio will be through Live Meeting so have your computer speakers turned on!

Posted in Uncategorized | Leave a Comment »

Pending Changes/Check In in Team System

Posted by cbkadel on July 19, 2009

If you’ve spent any time in Team System, and if you work on a number of projects concurrently, you may notice that the Pending Changes dialog (same as the Check In..) dialog box shows a lot of outstanding changes that may or may not have anything to do with where you might have right-clicked to check in.  The reason for this is that it shows all pending changes by default in your workspace (many of which are in other projects you might be working on).

 

 

Sometimes the file(s) that are relevant – such as within the Solution you’re working on, are at the end of a very long list.  The more projects you work on concurrently and have outstanding changes on the more unwieldy this can become.

 

There are things that I do often to make the view more manageable:

  • - Switch to hierarchical view from flat view.  This doesn’t shorten the list, but at least shows only top level files/folders first – which are a much smaller set.

image

 

  • - There’s a button on the toolbar of this window called “Filter to Solution.”  This button will shrink the list even more so, if you’re a developer working on multiple solutions with outstanding changes.

image

 

When working with the source control integration with Visual Studio Solutions and the source control, you’ll notice that it does have some contextual awareness.  Only those files that are below the folder/file that you might have right-click will be checked, but that the list shows everything in the workspace.

 

I might suggest in the future to show by default only those things under the right-click, with the option of viewing the workspace outstanding changes should the user need to do so.  That would probably fit the 80 – 20 rule of how I work and I think a lot of people do.

Posted in Uncategorized | Leave a Comment »

Visual Studio 2008: “Associated Work Items” in Manual Tests

Posted by cbkadel on July 17, 2009

So, firstly, let me say that it has been a long while since my last post.  It’s been quite a year at Polaris.  A lot of good things, but enough that has kept me from blogging.  I will make a self resolution to do a better job.

One of the things that is not too well documented is what happens with the field – Associated Work Items within the test view.  I created a test for the purposes of this post called ManualTest1 as shown below:

image

When using the Test View you can select tests and are presented with this properties pane within Visual Studio 2008.  Notice, you can press the … button to the right and it will even give you the standard Visual Studio Work Item Query screen.  You can even choose one or multiple work items to associate with this test.

One might expect that this to manifest itself as a ‘link’ within the work item to this test definition, similarly to links to other work items or source control assets.  It is not.

It’s also not in the vsmdi file, the sln file, but where is it?

In this case, a manual test, you normally open up the test (either text or mht), you’ll notice that there is no meta data about that test visibly within the IDE.

Well, it’s actually hidden.  Open up that mht with the Source Code Editor (right click on the test in the Solution Explorer and select Open With…)

image

Now you’ll see where that Associated Work Item really is!

image

You’ll notice if you look at this file, these fields are in a commented out section of the MHT file which are not rendered in the default editor.

So – if faced with the challenge of associating “Test Cases” back to Requirements or other work items, just know that they are stored within the asset itself and if you’re use this information programmatically – get to know the Version Control APIs, be ready with some recursive programming skills, and know how to parse the embedded XML.  It’s not readily available through SSRS or typical reporting techniques in Team System 2008.

Hope this helps!

Posted in Uncategorized | Leave a Comment »

Chicago VSTS Users Group – I’m Presenting VSTS Architecture 2010!

Posted by cbkadel on July 15, 2009

Well, to blatantly plug my next speaking engagement, it’s this one.  You can click on the link to register below.

 

User group: Chicago VSTS UG
Event name: July 2009 Meeting: Architect Tools in VSTS 2010
Time period: 7/23/2009 5:30 PM till 7/23/2009 8:00 PM (GMT -6)
Location: 200 E Randolph, 2nd Floor. Chicago. United States.
Description:
Chris Kadel from Polaris Solutions will speak on the new Architect Tools included in VSTS 2010. These tools have undergone amazing transformations in the 2010 release which will make them indispensible for solution and enterprise architects. This session will involve an overview and demonstration of the Team System 2010 architect tools with a practical focus on how you can actually use these tools to create value in your organization.
Bio:
Chris Kadel has worked in the IT industry for over 10 years and has consistently worked with Microsoft technologies as a developer, designer, and architect. Chris is a co-founder and owner of Polaris Solutions, a Microsoft partner and leading provider of ALM Solutions including ALM Assessments, Implementations, and Process Consulting. Polaris has deployed Global TFS environments as well as have assisted small/medium size clients benefit from Team System.
Chris is most passionate about the Microsoft ALM tools such as Team System. His certifications: MCAD, MCSD, MCTS: SharePoint Server 2007, MCTS: Team Foundation Server

Posted in Uncategorized | Leave a Comment »

Team Test – Selective "Dependent Requests" during Load Tests

Posted by cbkadel on August 4, 2008

I haven’t found a lot of blog postings about this topic so I thought it would be useful to have this point out there.  When a web test is run, it makes a request and then asynchronously – it will follow and request images, stylesheets, JavaScript external files and download them.  During a load test, making these requests (especially back to the server you’re monitoring) are indeed important to keep.  What if you have dependent requests (images/scripts) to external servers that you do not care as much about?  And what if those requests are failing (especially on a network for load testing) that doesn’t allow external requests through.

You can do a few things when you want to ignore those requests:

  1. 1.) Set “Parse Dependent Requests” property to false in the request properties screen.
  2. 2.) Use a Web Test Request Plugin which can ignore selective requests.

Option 1 may work just fine especially if you don’t have a lot requests coming back to your servers and mostly have the external references that you do not care about.  Option 1 may be a very bad thing – especially if your dependent requests are in fact (in large part) going back to the server you’re monitoring (you want those requests to be made still).  But if you want to just ignore one or two of many – Option 1 may not be the best choice to make.

Option 2 – this requires very little code and can save a lot of time and help to ensure your load test statistics are accurate.  The downside is that it’s a little bit extra code that you have to support.  It’s very trivial though, I should add.

How the Web Test Request Plugin Fits In:

Before getting into the code, let’s first have a quick look at where events are fired and how you can use the web test request plugin (at least from the perspective of this goal).  There are two events that you can override in a Web Test Request Plugin:

        • - PreRequest
        • - PostRequest

image

In the above flow, the Parse Dependent Requests happens after a response is returned from the web server.  Thereafter, Web Test will asynchronously make those dependent requests.  Therefore, below overlayed with the process is where you can inject functionality through the web test request plugin:

image

Therefore, the PostRequest method is the place to perform our override.  This will happen before the dependent requests have been made to the server, but after the first request has been made.

Below is some simple code with this process included.

class DependentRequestsFilter : WebTestRequestPlugin
    {
        private string _excludeStrings;

        public string ExcludeStrings
        {
            get { return _filter; }
            set { _filter = value; }
        }

        public override void PostRequest(object sender, PostRequestEventArgs e)
        {
            List<WebTestRequest> requestsToRemove = new List<WebTestRequest>();
            foreach (WebTestRequest request in e.Request.DependentRequests)
            {
                foreach (string excludeUrl in ExcludeStrings.Split(new char[] { ','} ))
                {
                    if (request.Url.ToLower().Contains(excludeUrl.ToLower()))
                    {
                        requestsToRemove.Add(request);
                    }
                }
            }

            foreach (WebTestRequest requestToRemove in requestsToRemove)
            {
                e.Request.DependentRequests.Remove(requestToRemove);
            }
        }

A few things to point out.  If you make a public property on your plugin, you’ll see that when you add that plug into your web test.  The Visual Studio Property window recognizes it and allows entry.  Secondly, notice that I split the ExcludeStrings with a comma… that’s to allow multiple filters.  Sometimes in web tests, you may have 10s or 100s of requests and several that need to be filtered out.  This is of course for demo purposes only, but it could be a little more robust with a check for null in there.

Posted in Visual Studio | Tagged: , , | Leave a Comment »

My Software Development Meme (or tag I am next)

Posted by cbkadel on July 17, 2008

 

How old were you when you started programming?

I was about 11 years old on my family’s new PC when I first did some "programming" – which I’d like to characterize as "programming-light" – because it was attempting to fix our autoexec.bat file that I had previously broke by saving it with WordPerfect!  Had to learn edlin fast!

 

What was your first language?

QBasic was the first language that I had written anything in (or attempted to write stuff in).  Now – since playing around with it – I had to learn other older ones.

What was the first real program you wrote?

Well, I was captain of my high school debate team and we really needed better software for organizing our debate tournaments.  I attempted to develop a ranking, scheduling, and bracketing algorithm to do this.  It was an ugly program written in Microsoft Excel (VBA) and rather than doing with this math and a real algorithm, I heavily used a random number generator.  This program was not successful until college when I was in the CS department.

 

What languages have you used since you started programming?

Scheme, Lisp, C, C++, VBA, QBasic, GWBasic, Visual Basic, Visual Basic.NET, VbScript, C#, SQL, T-SQL, PL/SQL, MS-DOS Batch, Bash, Java, Assembly, PowerBuilder, JavaScript, XML, HTML.

What was your first professional programming gig?

An Internet startup company that I joined before they had customers and stayed on until they were clearly going to make it – (great management, great team, and a real business plan).  I was brought in – at first – to write comments in all of the code that had been previously developed.  I ended up staying on to develop at that company (including data modeling, t-sql, vb6, mts, com+, xml, and a little .NET).

 

If you knew then what you know now, would you have started programming?

Absolutely.

 

If there is one thing you learned along the way that you would tell new developers, what would it be?

The way to move "up" in the world is not to always become a project manager.  I know those people look "large and in charge" and they do play a vital role.  Find yourself a great role model – if you like being technical – find a great technical role model and learn as much as you can.

 

What’s the most fun you’ve ever had … programming?

Programming… definitely my first application with ASP.NET – which was a web application to parse dependencies in SQL Server 7.0.

 

Who am I Calling Out?

Jim Morrison

Posted in Personal | Tagged: , | Leave a Comment »