# Tuesday, June 17, 2008

Fellow Team System MVP Mike Azocar has announced an awesome new contest to stir up the Team System tools ecoystem.  There are some really cool prizes so far including a free license for Microsoft Visual Studio Team Suite 2008 w/ MSDN Premium Visual Studio Team System Logosubscription and there are more donated prizes coming...  Get the full details at his blog post:  Want to be famous- Enter the Coolest Team System Gadget Contest!

Have you created a useful gadget for Team System? Do you have one in mind? I am looking for the coolest community built tool for VSTS. It can be something for TFS, for Visual Studio, or something that is stand alone. The winner will receive a one year subscription to MSDN with Team Suite!

To enter, submit a screen cast (up to 3 minutes long) which tells everyone why your gadget is the coolest and the source code. All submissions will be released to the public as free source to use and enjoy (with you getting all the credit of course). Videos will also be made available to the public to help make you famous! This should be something new (i.e. not on Codeplex or previously released) and not something repackaged. Submissions accepted up until August 31st 2008. Winner will be announced September 15th 2008.

Judges will be Mike Azocar, Martin Woodward, and I so this is going to be a lot of fun!

 

Ed B.

posted on Tuesday, June 17, 2008 6:46:35 PM (Central Standard Time, UTC-06:00)  #    Comments [0] Trackback
# Wednesday, May 21, 2008

There is a new book about VSX out from Wrox called “Professional Visual Studio Extensibility” and looks pretty promising if you are first starting out to learn add-ins and VSPackages.  It's actually the first one that I've seen get released so I hope it does well.  VSX is a topic that I have a keen interest in.

  • A quick overview of Visual Studio Shell and Domain-Specific Languages Tools
  • Techniques for creating, debugging, testing, and deploying your add-ins
  • Ways to work with user interface elements, Windows Forms, and controls via code in your add-ins
  • Steps for extending Visual Studio functionality using VSPackages
  • Tips for writing and managing code snippets to make your coding process easier
  • Using Visual Studio templates to save time when writing code for common projects
  • How to use MSBuild to write custom builds for Visual Studio and .NET applications
  • New techniques for recording, developing, debugging, deploying, and running macros

 

Ed B.

posted on Wednesday, May 21, 2008 7:57:43 AM (Central Standard Time, UTC-06:00)  #    Comments [1] Trackback
# Thursday, November 01, 2007

Ever since I started at Infragistics, I had been working in the User Experience Group (under the Evangelism umbrella) primarily with WPF & WinForms.  As some of you know, I wasn't too fond with WPF at the beginning :) but now I love it.  [Shameless Plug:  Have you checked out Tangerine?  See my blog post about it.]

I have taken a new position now as what is usually referred to as the Configuration Manager (HR Title:  Configuration and Process Improvement Engineer.)

As some of you know, I have been working with Team Foundation Server since pre-beginning (is that a word?) like during the Betas.  [Strolls down memory lane... Anyone remember the Beta 2 to Beta 3 upgrade? whew... Ed K. remembers that day with the 3-hour phone call from the TFS Product Team.  Those were the days. I got a cool TFS All Stars shirt from it though!]  I digress.  Infragistics has decided to adopt TFS and planning to migrate pretty much all of our separate systems to it.  So, that's what I'm doing now in the Engineering department!  Although I'll be missing doing WPF and Evangelism work, I'm pretty excited about getting to do TFS stuff full-time.

If you were at Grant and I's talk at Boston ReMix or my talk at Tulsa Tech Fest, you got the preview of a community WPF application that we're working on to gather data from TFS and replace our Release Status Wall.  It's basically an application to visualize your release process.  As soon as we get something ready to preview, I'll definitely post up on here.  So I get to put my love of both WPF and TFS together!  Grant's a God-send when it comes to making applications look great. I'm really blessed to be working for a company that has a dedicated Visual Design team... We have 5 dedicated Visual Designers now... wow.

Another one of my goals with our new system of tracking development data is to provide more transparency to our customers in regard to feature tracking, bugs, etc.  I think it's important (as a previous customer) to be able to have that kind of transparency.  I'm thinking something along the line of Microsoft's Connect website.

So I look forward to being able to talk more about TFS and coming out with some exciting tools and information.  Don't worry, I still do WPF development too so you'll still see me from time to time blogging about it and speaking.  I just finished up a WPF magazine article yesterday even :)

 

BTW... I'll be in DevConnections next week in Las Vegas doing some WPF Evangelism stuff so be sure to hit me up if you'll be in town!

 

Ed B.

posted on Thursday, November 01, 2007 2:30:06 PM (Central Standard Time, UTC-06:00)  #    Comments [0] Trackback
# Tuesday, December 05, 2006

NOTEThis is an unfinished article.  I have been working on this commentary for several weeks now but I felt I needed to post what I already have.  I will be adding sections over the next several days to complete everything so look for more links, screenshots, images, sections, and content.  I'll also watch for comments and post answers to really good questions or requests for more commentary.

I have been working on this post for several weeks now.  It's the "Toy Boy" in me that has been irking to talk about my experience with all of the .NET UI "toys" out there.  I am a huge fan and proponent of organizations choosing a third-party .NET component suite for purchase for their development team(s).  There are just so many reasons to have one chosen and used in all of an organization's applications.  The question that always pops up though is:  Which One?  In the last three years this question has come up for me from several different organizations including clients that I have consulted with.  Honestly, the best choice will always depend on the organization and its needs but I would like to go through a comparison of the major component vendor suites that are out today.  Even though I have my favorites, my goal was to be completely objective in my analysis and judging.  I will be comparing the following versions:

I have further split my comparison into control groupings to ease the reading for major controls.

Grids

<Section Not Completed Yet - Update Soon>

I'd like to see the component vendors offer data bars support like in Microsoft Office Excel 2007... that would be way awesome!

ASP.NET AJAX(Atlas)

Now, for the longest time I have been a huge fan of Telerik ajax control because of how simple it was to "ajaxify" your current web apps.  You still can easily but now you can also do the same with the new Infragistics release.  I would suggest giving them both a try but both components compete extremely well with each other and are compatible with the latest beta release of Microsoft AJAX.

Something minor but worth saying:  I love the gallery of different "loading" animations that are available out-of-the-box with the Telerik r.a.d. ajax control.  Take a look at them:  http://www.telerik.com/demos/aspnet/Ajax/Examples/Common/LoadingImages/DefaultCS.aspx

Editors

<Section Not Completed Yet - Update Soon>

Charting

Anyone who knows me knows how much I LOVE charts.  Love them Love them Love them!  (I know... the look you are giving me now is the same look I get from many when I talk about charts.  But hey, I LOVE charts!)  Charts in my opinion are one of those most fundamental tools you can use to convey so much information to an end user.  Well-presented charts are a must-have for every application that deals with data and needs to convey useful information.  With that said:  Absolutely nothing else to say:  Infragistics has the best charting controls between the two comparison suites.  I love using them.  They are just too easy to learn.  Just figure out how you want to convey the information using the design-time designers and then data bind!  POOF! 

Aside:  There are some things that I wish Infragistics would include in their charting controls.  Best of breed in the charting control space would have to be Dundas.  If you haven't taken a look at them, they have great controls for charts, maps, and gauges.  (Something that I would like to see included in the other component suites.)  Beware though... Dundas charges a pretty penny for them, but if all you need is really good charting controls, Dundas is definitely the way to go.

XHTML/Accessibility

<Section Not Completed Yet - Update Soon>

Toolbars

If you think about it, toolbars and menus have been around for a very long time; way before I was even born.  I think since the 1970s!  Wow... and they have really been the way UI designers have presented commands and features to users in just about every application.  With the latest release of Microsoft Office, Microsoft has invested several years of R&D for a new concept to replace menus and toolbars.  I think they did a great job with the Ribbon with Galleries and the Quick Access Toolbar, and "Office Button."

Telerik and Infragistics along with other component vendors have jumped onboard to offer us the ability to easily use these new UI features in our own applications!  Both have done a great job.  I'm somewhat biased with the Infragistics toolbar managers controls (with run-time customization support for end users) because I think the architecture of this is great.  The only two things that they missed (and I'm sure they know about since everyone has brought it up already) is that the window frame that would normally be "glass" in Windows Vista is being drawn over and the missing support for ribbon command merging in an MDI application.  The MDI merging has been one of the great features that has allowed Infragistics to excel.  Between all of the different ribbon controls out there I also think that Infragistics has done the best job at making their ribbon implementation most look like Microsoft's ribbon implementation in Office 2007.

<I want to put an image of each of the component suite's version of the Ribbon for comparison against an actual image from the Word Ribbon>

Office 2007 Ribbon UI Licensing Information

Microsoft has recently released how it is going to allow ISV's to use the new Ribbon.  It's pretty simple and here's my summary: 

  • Follow the Design Guidelines (Five years down the road we don't need to see a million different versions of the ribbon!  We want to keep it the same so that end users will be able to feel comfortable going from application to application
  • Register your application on the Office UI Site
  • Don't use the new UI in an application that competes with the core applications in Microsoft Office - (Sorry, you can't use the Ribbon if you are developing something like a commercial version of Open Office)

There is a great Channel 9 video available that even includes a Microsoft attorney in it (probably the only one that has a member of their counsel) that discusses this new licensing.  Both Infragistics and Telerik (and several other component vendors) are partners in offering controls that follow the design guidelines.  I am really happy that Microsoft has opened up I am proud to see the vendors stepping up and making this new UI revolution available to the masses for use in their own apps.  (They've even been released before the official release of Office 2007 to the public! CRAZY)  If you happen to have any more questions about the whole licensing thing you can always shoot a good question over to officeui@microsoft.com.

Scheduling

<Section Not Completed Yet - Update Soon>

Tablet PC

This is one area that Infragistics definitely wins over all component collections.  Coming from doing medical industry development, I have been able to leverage the Tablet PC features of the Infragistics NetAdvantage suite.  We were able to use the ink-enabled controls inside our Windows Forms medical records app and the physicians loved the ability to write with their Tablet PC into the patient's record.

Surprisingly, it is extremely easy too.  All you have to do is drag and drop the WinInkProvider on to your form and all of the Infragistics controls instantly show their Ink buttons on an Ink-enabled OS installation (if the Ink button display visible property is in its default state.)  You can force the display of the ink button as well for devices that aren't ink enabled so that you can draw ink with your mouse...  Not fun though :(

Composite UI Application Block (CAB) Support

Both suite's controls support the CAB framework.  If you haven't taken a look at this new application block it's actually quite handy for UI developers.  I really enjoyed learning about it and am looking forward to the opportunity to take advantage of it in my next app.  For more information on CAB:

From what I heard, developers from Infragistics actually contributed greatly to the CAB project and were an instrumental piece of making it all happen... Kudos to them.

Miscellaneous

Support

I have very strong opinions about support with a product.  Let's face it, you will never everything about the control suite that is available.  I would be surprised if there is someone at each of the component vendors who knows EVERYTHING about their control suite.

The one thing that just drives me bonkers is the inability to be able to call somewhat up on the phone to get some support at Telerik.  The support tickets that I have submitted have gone great in solving the issue but you know how well e-mail correspondence can go for in a support situation.  Especially having to wait between responses.  (Can you tell that I can get impatient at times? :) )

I just want to pick up the phone sometimes and just get something resolved so I can keep trucking with my development.  That's the nice thing about purchasing Priority Support with an Infragistics subscription.  You got to do it, it's well worth it and the people on the other side have always been extremely courteous and knowledgeable.  Not to mention spend as much time as is needed getting the issue resolved.  You know how you call some support lines and you can just tell the person on the other end just wants to get you off the phone as quickly as possible?...  Completely irritating if you ask me!

Learning

If you are looking for a great suite that has tons of further reuse but will require an investment of learning ramp-up time then go with Infragistics.  I will describe the Telerik r.a.d. controls suite as "simple" in comparison but that's not always what you want out of a control suite that you will use again and again.  Plus, a good way to go is to make the investment of going through the offered training.  Infragistics has both a fundamentals and advanced course that can be taken in person or online.  You can't beat that.

Some amount of time is needed to sit down and learn the Presentation Layer Framework (PLF) and use the controls effectively.  But once you have made the investment, you don't have much to learn about the individual controls after that since the whole suite uses the PLF.  Infragistics even offers the ability to use the PLF in any components that you actually write.  (See specifics)

Documentation

This is one area in which Telerik is lacking tremendously.  I have found it really difficult to navigate through their documentation.  Over the past couple of releases I would have to say that Infragistics has been improving their documentation pretty much exponenentially.  Before selecting a component suite for your organization be sure to download the trials and check out the documentation and make sure your developers will be able to find the info that they need!

Source Code

Both Telerik and Infragistics offer you their source code as part of a subscription purchase.  Until recently, Telerik would require that you purchased more than five licenses to have access to the source control.  I'm glad they changed that licensing model.

Pricing

Here's what I found as of December 1, 2006:

Telerik:

r.a.d. controls for ASP.NET Subscription:  $999
r.a.d. controls for ASP.NET:  $799

r.a.d. controls for Windows Forms Subscription:  included with ASP.NET subscription until March 2007
r.a.d. controls for Windows Forms:  included with ASP.NET license until March 2007

Infragistics:

NetAdvantage .NET (ASP.NET, Win Forms, and AppStylist) Subscription with Priority Support:  $1,490
NetAdvantage .NET (ASP.NET, Win Forms, and AppStylist) Subscription:  $995

NetAdvantage ASP.NET Subscription with Priority Support:  $1,290
NetAdvantage ASP.NET Subscription:  $795

NetAdvantage for Windows Forms Subscription with Priority Support:  $1,290
NetAdvantage for Windows Forms Subscription:  $795

NetAdvantage AppStylist with Priority Support:  $1,195
NetAdvantage AppStylist:  $695

Value

Telerik has a total of 18 controls (36 including the Windows Forms suite.)

Infragistics has a total of 88 controls and in my opinion has more bang for the buck...

<Section Not Completed Yet - Update Soon>

Volume Discounts

Telerik:

3 to 4 licenses - 10%
5 to 9 licenses - 20% 
10 to 19 licenses - 30%
20 or more - 40%

Infragistics:

Member of Enterprise License Program (>25 Any Infragistics Licenses) - 15%

Licensing

Pretty much every company has had great licensing models to deal with.  Per-Developer and royalty-free for applications produced from the licenses is definitely the way to go.  One thing that I am disappointed with is that the big developers force you to purchase another license for a build machine.  I really don't agree with this model.  The ability to centralize team builds using a product like Microsoft Team Foundation Server is a great feature to have... but having to spend more money just to have the binaries to compile your app?  Not a good way to go.  I hope that each of the components vendors will address this issue soon and change their licensing models to allow for a build machine license.

Single Vendor Exclusives and Other Vendor Comments

I've made a couple of comments about what each of the vendors developer that is exclusive to the other component vendors.  Also, I wanted to take the opportunity to make some comments that don't necessarily fit in any other section of this article.

Telerik

r.a.d. Rotator, r.a.d. Window, r.a.d. Upload and more... 

<Section Not Completed Yet - Update Soon>

Infragistics

AppStylist, TestAdvantage, JSF, and more....

<Section Not Completed Yet - Update Soon>

Developer Express

<Section Not Completed Yet - Update Soon>

Component One

<Section Not Completed Yet - Update Soon>

ComponentArt

<Section Not Completed Yet - Update Soon>

Summary - Final Conclusion

Honestly, if your organization hasn't already chosen a component suite for regular daily use in your applications you absolutely will benefit so much by going out and getting one.

 

<Section Not Completed Yet - Update Soon>

 

Let me know what you think... I'd like to hear about other developer's opinions about what they like/don't like in the different component suites!  I hope that this helps you out in your product selections and feel free to let me know if you have any further questions about my experience with any of the component suites.

I will end with this:  I also know the other camp of developers who feel that only the controls that are in Visual Studio should be used.  The opinion I hear from that camp is that you get stuck down to a third-party when you begin to use outside controls.  Well, here's my opinion:  You can make a good UI with the out-of-the-box Visual Studio components but you can't make an AWESOME one without a lot of effort.  Imagine having to draw really good looking charts using only the System.Drawing namespace!  Now imagine just dropping a chart from the toolbox, using a designer, and then data binding...  That is what is in store for you!

Now Go Vote

There are several publications that are asking for your votes on the different component suites... So now is your chance to give your opinion for which one is your favorite:

 

Some legal disclaimer stuff:

This article expresses my personal views and opinions and are not the views of my employer, previous employers (or future employers for that matter.)  The information contained in this article is provided without any express, statutory, or implied warranties.  In addition, the respective companies, products, components, and other commercially available software suites are either registered trademarks or trademarks of the respective organizations in the United States and/or other countries.

Funny aside:  While I was in college, I would always complain about writing reports anything over 500 words... LOL  I just absolutely hated doing it.  Although, if you haven't seen one of the cool new features of Microsoft Office Word 2007... wait until my next post.  I sure would have loved to have that while I was doing research and stuff in school!  Kids these days...  They have everything handed to them :)

 

Ed B.

posted on Tuesday, December 05, 2006 3:04:37 PM (Central Standard Time, UTC-06:00)  #    Comments [1] Trackback
# Sunday, October 08, 2006

When playing around with this Interface you will notice that it is very easy to subscribe and unsubscribe to events via the TFS Object Model.
The method signature for Subscribing to an event is:

 

int SubscribeEvent (
        string userID,
        string eventType,
        string filterExpression,
        DeliveryPreference preferences
)
 

As you can note there is several string values that are needed to pass in. I found no documentation on what eventTypes
or Filter expressions were available.  Hopefully the following information will help you as you develop with the
Object Model.

UserID: simple enough. 
eventType: Out of the Box
  • AclChangedEvent
  • BranchMovedEvent
  • BuildCompletionEvent
  • BuildStatusChangeEvent
  • CheckinEvent
  • CommonStructureChangedEvent
  • DataChangedEvent
  • IdentityCreatedEvent
  • IdentityDeletedEvent
  • MembershipChangedEvent
  • NodeCreatedEvent
  • NodePropertiesChangedEvent
  • NodeRenamedEvent
  • NodesDeletedEvent
  • ProjectCreatedEvent
  • ProjectDeletedEvent
  • WorkItemChangedEvent

To view event types on a certain TFS server you can consume http://ServerName:8080/Services/v1.0/Registration.asmx to enumerate through the list
or, you can use the IRegistration interface and loop through each RegistrationEntry for each EventType.

Filter Expression:

  • PortfolioProject
  • System.AreaPath
  • System.AssignedTo
  • System.AuthorizedAs
  • System.ChangedBy
  • System.ChangedDate
  • System.Id
  • System.IterationPath
  • System.OpenedBy
  • System.Reason
  • System.State
  • System.Title
  • System.WorkItemType

Example expression:

Condition String = "PortfolioProject" = 'Project Name' AND ("CoreFields/StringFi
elds/Field[ReferenceName='System.AssignedTo']/OldValue" = 'Ed Kisinger' OR "Core
Fields/StringFields/Field[ReferenceName='System.AssignedTo']/NewValue" = 'Ed Kis
inger') AND "CoreFields/StringFields/Field[ReferenceName='System.AuthorizedAs']/
NewValue" <> 'Ed Kisinger'

 
Ed K.
posted on Sunday, October 08, 2006 6:28:38 PM (Central Standard Time, UTC-06:00)  #    Comments [0] Trackback
# Monday, September 25, 2006

Say you built an application that connects to TFS and you want a dialog box to appear if a user is not authorized to connect to TFS. To do this is quite simple.  There are two methods you might have seen when you are playing with the TeamFoundationServer object, Authenticate() and EnsureAuthenticated(). The difference between the two is Authenticate will always call the server and EnsureAuthenticated will only be called if the user has not already authenticated to the server. You should use the EnsureAuthenticated method as a performance point since you only want the call to go to the server if the user has not authenticated. Notice we are using the TeamFoundationServer constructor instead of the Factory; you can use the factory if you wish. The deciding point that you need to decide is if you want to reference the same object on subsequence calls and without the need to re-authenticate. Remember the factory method will return a cache instance of the object.

 

TeamFoundationServer tfs = new TeamFoundationServer(TFSServerName,new UICredentialsProvider());

tfs.EnsureAuthenticated();

 

If the user presses cancel on the dialog box then a UnauthorizedException will be thrown ,so handle it gracefully.

 

Ed K.

posted on Monday, September 25, 2006 9:47:25 PM (Central Standard Time, UTC-06:00)  #    Comments [0] Trackback
# Sunday, September 24, 2006

Here is a simple example of how to connect to a Team Foundation Server and display some of its properties.

To start we need to fire up VS 2005 and create a new console application.

Now that we have a new project we need to add a reference to Microsoft.TeamFoundation.Client.

Now we can access the TeamFoundationServer object. To create an instance of the object we will use the TeamFoundationServerFactory, we are using the factory so that we create a cache version of the object for subsequence calls.

 TeamFoundationServer tfs = TeamFoundationServerFactory.GetServer("FriendlyNameOfYourTFSServerOrURL");

Now lets display some data:

Console.WriteLine("The Authenticated User is: {0}", tfs.AuthenticatedUserDisplayName);
Console.WriteLine("TeamFoundationServer Name: {0}", tfs.Name);
Console.WriteLine("TeamFoundationServer Object GUID: {0}", tfs.InstanceId);
Console.ReadLine();

Here is the OutPut:

Thats it! Very simple and fun.

 

Ed K.

posted on Sunday, September 24, 2006 9:52:53 PM (Central Standard Time, UTC-06:00)  #    Comments [0] Trackback
# Friday, September 01, 2006

So, Wow... All of y'all that happen to use Facebook they have released an initial API that you can use to make applications that will read data from it once Facebook users have logged in and approved to use either your web or desktop application.  Pretty cool I think!

http://developers.facebook.com/index.php

I haven't dived too much into it since I am getting ready to leave out of town for Labor Day Weekend but at first glance:

  1. One thing I don't like is that it uses the REST protocol.  For more info about it check out the Wiki on it:  http://en.wikipedia.org/wiki/Representational_State_Transfer  It's pretty much making a POST of XML and then returning
  2. They do say that they have plans on supporting SOAP:  http://developers.facebook.com/faq.php
  3. I also noticed two guys have already made a VB.NET and a C# library to use.  I haven't looked at them yet and will take a look at them to see how well they did.  Obviously, I'll use the VB one :)  If I don't happen to think they will be useful for me, then I'll just create a Facebook.NET Library for it or just wait for them to implement SOAP so we can just use web services.
  4. You can't get the entries of the logged in user's wall (or whichever user they choose to view.)  You can only get the wall count.  Boo!

Once again, it's a very early implementation.  I'm going to have to blame all those people who have nagged me for three years while I was in college about not having a MySpace and a Facebook because I broke in and now I'm glued on checking mine everyday.  I have gotten to meet up with a lot of people though that I haven't talked to in a long time.

Have a safe and fun Labor Day Weekend!  I'll be heading to Austin!

Ed B.

posted on Friday, September 01, 2006 4:29:24 PM (Central Standard Time, UTC-06:00)  #    Comments [0] Trackback