Andrew Coates ::: MSFT

It's all about community!

  • Andrew Coates ::: MSFT

    VSTO v3 Deployment Session


    I had a great time over the last couple of days hanging out with Christen Boyd and some of the other folk from the VSTO team here in Seattle. This culminated yesterday with a webcast of the session I’ll be doing here next week and then again at TechEd in Sydney. As promised, here are my slides from that session.

    I’ve added one blog to the list of resources. I had the pleasure of meeting Kris Makey yesterday and his VSTO deployment blog is great. Subscribed.

    Here is a summary of the VSTO resources I list at the end of the deck:


    Code Gallery



  • Andrew Coates ::: MSFT

    Enterprise Library Webcasts


    As David Hayden notes in this post, the Patterns and Practices team has a series of webcasts about the recently released Enterprise Library. Some have already happened, some are still to come, but all are or will be available as recordings.

    Note: All Webcast times are Pacific Standard Time (GMT-8:00)
    To get to Australian Eastern Daylight Time (GMT+11), subtract 5 hours and add a day. After that, you're on your own. I have translated the dates into DD/MM/YYYY from the wierd format the yanks use.








    Enterprise Library Overview

    Enterprise Library is the next generation of the patterns & practices Application Blocks. This guidance is designed to assist developers with common enterprise development challenges and will deliver the most widely used blocks into a single integrated package. Our vision is to build a broad community of customers and partners using, sharing and extending their own Application Blocks that are consistent with and integrate into the patterns & practices Enterprise Library.





    Enterprise Library Configuration Application Block

    Configuration data is a constant challenge for application development.  The way in which your application handles configuration data dramatically impacts its manageability.  In this webcast we will discuss the requirements for building a great configuration system and how you can leverage the configuration application block to meet these requirements.





    Enterprise Library Data Access Application Block
    Discover how you can implement the recommended data access architecture using Enterprise Library to quickly build a robust and secure data access layer which supports connectivity to SQL Server, Oracle and DB2.





    Enterprise Library Caching Application Block

    Properly designed caching can make your system more robust and increase performance dramatically, poorly designed caching adds unnecessary overhead and provides little benefit.  Learn how you can make use of the new caching application block to help lessen the demand on your back-end systems while increasing throughput.





    Enterprise Library Logging & Instrumentation Application Block

    Properly instrumented applications are a dream to manage, they tell what is happening and when things are going wrong point you to the source of the problem quickly increasing your mean time to recovery resulting in increased system availability.  In this webcast you will learn how to use the Enterprise Library logging and instrumentation block to consistently and easily build an application that tells you where it hurts.





    Enterprise Library Exception Handling Application Block

    Exceptions happen...the question is what you will do to handle them.  Poorly written applications behave unpredictably when exceptions occur and often this bad behavior results in crashes or security holes.  Learn how you can create exception policies that can be consistently and quickly applied in your application to insure predictability even when things go wrong.





    Enterprise Library Cryptography Application Block

    So you have a secret...what are you going to do with that credit card number, connection string or password?  Stuff in a secret place and hope that no one ever finds it?  Of course not, you want to encrypt it.  But how?  With the Enterprise Library cryptography block you can quickly encrypt and decrypt these secrets allowing you to secure them and sleep better at night.





    Enterprise Library Security Application Block

    Every enterprise needs security and within most large enterprises there are many different security systems.  Discover how Enterprise Library’s security block can help you to put a consistent API in front of many different back end implementations allowing you to use these security systems without having to become an expert in them.





    Enterprise Library - Building your own application block

    So you love application blocks?  You want to create your own and share it with your colleagues, your enterprise...the world?  Great!  We want to help you.  In this session we will walk through a simple application block to consider how you can build a block that integrates with the rest of Enterprise Library.





    Enterprise Library Applied

    You stand at your manager’s door working up the courage to walk in and tell them that you want to use Enterprise Library in your next project.  There are so many questions about support, licensing, maintenance and futures...good thing you listened to this webcast to understand what it means for an enterprise to adopt this library.  As you listen to real examples from enterprises like yours to understand how they are managing the risks and opportunities associated with Enterprise Library



  • Andrew Coates ::: MSFT

    VSTO 2.0 Demo Videos


    I've been meaning to blog about this for ages, but better late than never I guess.

    One of the questions to which I get the most positive response when showing the great new features in VS2005 (or even VS2003 for that matter) is "Who here would laike to be able to write .NET applications that live inside Word or Excel?". Especially in financial institutions, law firms and beauracracies (but in plenty of other places as well), there are light bulbs going off over the developers' heads as they realise that their users don't have to ever leave thier beloved Office app to get the functionality they need -- no mater what that functionality is!

    Over on the VSTO 2.0 blog, Kathleen McGrath has been posting links to video tutorials showing how to do a bunch of great things in VSTO 2.0. Here's what she's posted so far:

    Dunno if that's the lot or not, but either way, these are well worth a look.

  • Andrew Coates ::: MSFT

    Canberra VSTS User Group Rocks the House


    It's 8am and I'm sitting in the inaugural meeting of the Canberra VSTS User Group. The turn-out is amazing. Over 40 professionals are crammed into the room in the Canberra MS office. This is a sensational turn out. Kudos to Grant, Sean and Mitch.

    Grant kicked off with news, tips and tool of the month (he chose Brian Harry's TFSServerManager Power Toy).

    Andrew Lyons talked about his experience migrating a 100 developer government department (DEWR) from a VSS environment to TFS (for source control mainly). His final word(s):

    Planning is Key

    • Particularly with initial deployment
    • Disaster recovery plan
    • Security Plan

    Practice Makes Perfect

    • Non-trivial migrations need trial runs
    • A development TFS server is invaluable

    Next, Sean Ferguson talked about branching and merging in the ATO development environment. A couple of things that stood out for me were a reference to Buck Hodges' great post from 2004 on branching models and the usefulness of the TFS Power Tools (see also Brian's post).

    Finally, Stu and Rick from AFP talked about their experience with branching there. One of their main points was that there needs to be a lot of work done to introduce the TFS culture to the dev team (especially as many of the current devs have strongly entrenched opinions about the current process and are resistant to any sort of change).

    All-in-all a great first meeting and I'm looking forward to the next one on Feb 28!

  • Andrew Coates ::: MSFT

    Visual FoxPro - Do we still sell that?


    Internally, especially when I'm wearing my cool VFP 9.0 shirt, this has to be one of the most common questions I hear. Of course, the answer is YES! David Anderson has written an opinion piece on DevX entitled Visual FoxPro 9.0: Still Here, Still Relevant. The article has an interesting history of Visual FoxPro and a discussion about why it will never be a .NET CLR language.

    If you want to get more information about the history of VFP, check out

    There are a number of VFP links in the links section of this blog.

  • Andrew Coates ::: MSFT

    Online Study group for Beta Exam 71-528


    A bunch of us (keen, or is that masochistic, local developers) have signed up for the beta version of the 70-528 exam — TS: Microsoft .NET Framework 2.0 - Web-based Client Development (called 71-528 while it's in Beta).

    Exam 70-528, is one of two exams required for the "Microsoft Certified Technology Specialist: .NET Framework 2.0 Web Applications" credential. To achieve this credential you will also need to pass exam "70-536: TS: Microsoft .NET Framework 2.0 - Application Development Foundation". After achieving the Technology Specialist credential for Web applications, you will be able to achieve the "Microsoft Certified Professional Developer: Web Developer" credential by passing one additional exam: "70-547: PRO: Designing and Developing Web Applications by Using the Microsoft .NET Framework."

    All of the new exams will be Beta tested prior to general release.

    The problem with doing a Beta exam is that there’s not a lot of material to study from. To help with the study process, Tatham Oddie has set up an irc server and we’ll be chatting twice a week for a couple of hours in a study session for the next couple of weeks. I’ve done beta exams in the past (back in the days of VFP 6.0) and the chat format worked very well. It’s also great to have the chat transcript to review and for others to use as an aide.

    Update: Andrew Higginbottom points out that:

    there are some online MS courses for VS2005 (4 for webforms dev) that are free if you sign up before 8 nov and once downloaded the content is valid until feb 2006.
    I'm yet to do any but they seem OK from a quick look...

    The schedule for study (all times Australian Eastern Daylight Time [UTC+11])

    Monday 31 October 1930 – 2130

    Wednesday 2 November 1930 – 2130

    Monday 7 November 1930 – 2130

    Wednesday 9 November 1930 – 2130

    Monday 14 November 1930 – 2130

    Wednesday 16 November 1930 – 2130

    Chat server details

    • Server:
    • Port: 6667 (standard)
    • Channel: #Exam71-528

    So, if you're signed up for the beta exam, or if you just want to get a head start on the new certs, please join us next Monday

  • Andrew Coates ::: MSFT

    ADNUG ACS badged .net training in Adelaide


    Peter Griffith, President of the Adelaide .NET User Group sends me the following excellent news:

    Once again ADNUG is offering 3 ACS badged 5 day courses in VB, C# and ASP in conjunction with Kaz with considerable discounts for members. (over 40% off rrp). For details
    • Programming with Microsoft® Visual Basic .NET Course 2373B
      Monday - Friday 6 - 10 December 2004
    • Programming with C# Course 2124C
      Monday - Friday 17 - 21 January 2005
    • Developing Microsoft® ASP.NET Web Applications Using Visual Studio .NET Course 2310B
      Monday - Friday 7 -11 February 2005
  • Andrew Coates ::: MSFT

    ClickOnce Webcast Session Posted

    My Security Summit session on Deploying Applications with ClickOnce is now available to view online or offline. Access it from here. To view it offline, you'll need to download the free LiveMeeting replay application.
  • Andrew Coates ::: MSFT

    WPF? Pah!


    I'm sitting in Joseph Cooney's (excellent) session on WPF at CodeCampOz, and it seems to me that the canonical demo of WPF is an animated button bouncing around a form. Of course, this is something VFP has been able to do for ever:

    *-- Form:         form1 
    *-- ParentClass:  form
    *-- BaseClass:    form
    *-- Time Stamp:   04/01/07 02:18:00 PM
    DEFINE CLASS form1 AS form
        DoCreate = .T.
        Caption = "Form1"
        llanimating = .F.
        ndirection = 0
        nspeed = 0
        Name = "Form1"
        ADD OBJECT command1 AS commandbutton WITH ;
            Top = 60, ;
            Left = 108, ;
            Height = 109, ;
            Width = 157, ;
            Caption = "Command1", ;
            Name = "Command1"
        ADD OBJECT timer1 AS timer WITH ;
            Top = 216, ;
            Left = 336, ;
            Height = 23, ;
            Width = 23, ;
            Interval = 50, ;
            Name = "Timer1"
        PROCEDURE llanimating_assign
            LPARAMETERS vNewVal
            *To do: Modify this routine for the Assign method
            THIS.llAnimating = m.vNewVal
            this.Timer1.Enabled = this.llanimating
            IF ! this.llAnimating
                this.nDirection = RAND() * 2 * PI()
                this.nSpeed = INT(RAND() * 10) + 1
                this.Command1.BackColor = RAND() * 0xFFFFFF
        PROCEDURE resetbutton
            * Reset the button to default values
            this.Command1.Top = INT(this.Height/2 - this.Command1.Height/2)
            this.Command1.Left = INT(this.Width/2 - this.Command1.Width/2)
        PROCEDURE movebutton
            WITH this.Command1
                * move the button by (nSpeed) in the (nDirection) direction
                .top = .top + (.Parent.nSpeed * COS(.Parent.nDirection))
                .Left = .Left + (.Parent.nSpeed * SIN(.Parent.nDirection))
                * check to see whether we've hit a wall
                IF .Left < 0
                    .Parent.nDirection = 2* PI() - .Parent.nDirection
                    .BackColor = RAND() * 0xFFFFFF
                IF .Top < 0
                    .Parent.nDirection = PI() - .Parent.nDirection
                    .BackColor = RAND() * 0xFFFFFF
                IF .Left + .Width > .Parent.Width
                    .Parent.nDirection = 2* PI() - .Parent.nDirection
                    .BackColor = RAND() * 0xFFFFFF
                IF .top + .height > .Parent.Height
                    .Parent.nDirection = PI() - .Parent.nDirection
                    .BackColor = RAND() * 0xFFFFFF
        PROCEDURE command1.Click
            thisform.llAnimating = !thisform.llanimating
        PROCEDURE timer1.Timer
    *-- EndDefine: form1


  • Andrew Coates ::: MSFT

    Unable to customise context menus in PowerPoint 2007?


    I got this question from one of our partners yesterday.

    The application developed by my client is an add-in for PowerPoint. One of the features it provides involves adding custom items to the context menu of shapes and pictures using the Office object model. This add-in works perfectly well in 2003, but not at all in 2007.

    So far, what I’ve discovered is that the only context menu I can add items to is the Frames CommandBar. Some other CommandBar interfaces in the Application.CommandBars collection allow me to add without throwing an exception (e.g. Pictures Context Menu), but they don’t actually show when the application is running.

    I’ve read on a couple of forum posts that you simply can’t do this anymore. Is this true? Or is this a problem with either Office or the way we are attempting to customise the context menu?

    If you can’t add items to the context menu anymore, then what is the recommended method of displaying context information for such objects? I have played with the idea of displaying a tab in the Ribbon bar when an item is selected, but it just doesn’t jump out at users like the context menu...

    I couldn't see a way of doing what was required either, so I kicked the question up to one of our internal tech aliases. Unfortunately, the answer is not what you’re probably hoping for (bug rejected – feature deprecated):

    Unfortunately, the PPT 2007 OM does not allow adding context menu items for all objects (like shapes), the suggested way is to use Ribbon UI customization. Have a look at the following bug that contains a detailed explanation on this (and an internal link)

    The explanation in the bug record was in the form of a letter to the original (external) raiser of the bug:

    The Microsoft PowerPoint and User Experience Team have investigated the "PPT2007: Needs ability to Customize Right Click menus in PowerPoint” feature request and determined that this is not a feature that is feasible to implement outside of a full product cycle due to the extensive redesign and integration of core menu and object model functionality that would be required. For this reason, and because an explicit goal of the Office 2007 product’s design was to expand Ribbon functionality and deprecate classic menu functionality, we recommend that xxx design this portion of its solution around the new Ribbon feature, given that PowerPoint 2007 no longer provides legacy right-click menu customization.

    We understand that the intention is for you to customize the right-click menus with custom actions to navigate through the application and perform various tasks, however, right-click menu creation and functionality is not a feature in Power Point 2007. There is currently no upgrade path for previous Power Point solutions that have customized right click menu functionality. All previous Power Point solutions using this functionality will need to implement the Ribbon into their solution to drive user choices.

    In reviewing the proposal of adding in legacy right-click menu customization functionality, the Microsoft User Experience Team found several areas that pushed a potential solution beyond the scope of a Hotfix or CDCR.

    1. The sheer scope of designing and adding the right-click menu customization feature and full legacy functionality exceeds the risk capacity for post-release changes. Design changes of this scope typically require a full product cycle in order to ensure end-to-end quality.

    2. Office 2007 has a new object rendering engine, which could cause inconsistencies if the submenu feature were implemented. A new solution would have to handle all changes between the two code bases.

    3. PowerPoint 2007 does not provide the same high-fidelity representation of legacy Main Menu functionality that was available in PowerPoint 2003. The layout of the controls in the Ribbon's Add-ins Tab is sub-optimal with a highly complex add-in such as yours. To fully maximize the end-user experience, the add-In would need to be upgraded to fully utilize the Ribbon UI, as part of moving to Office 2007.

    Our recommendation is for you to combine the redesign of both the legacy Main Menu and right click menu issues together. This will provide the opportunity for your users to move to the Ribbon in both areas and utilize the new Ribbon functionality.

    In summary, Microsoft recommends that you model your UI on Office’s own built-in Ribbon UI, specifically around the use of Contextual Tabs as the mechanism for displaying contextually relevant content. For each object type that the add-in supports, a tab could be added to the appropriate contextual tab set that would contain the Add-In-specific tools for working with that object. With this type of design, the UI would better match the UI of Office 2007, and the end-users could potentially not require much extra training on top of the training for Office 2007 itself. For more information, please check out the Office Fluent UI Style Guide at the Office Fluent Ribbon Developer Portal.

    I guess that it makes sense in the long term to continue to leverage the great work the Office UI team have done with the Ribbon and the Fluent UI generally, but I do feel for the team who are looking to implement equivalent functionality in the new version of their Add-In as already runs in the current version.

    Backwards compatibility is a perennial problem.

Page 5 of 48 (472 items) «34567»