Andrew Coates ::: MSFT

It's all about community!

November, 2006

  • Andrew Coates ::: MSFT

    Use the new Office Ribbon UI in your Applications Today!


    One of the first things that happens when a new version of Office appears is that people start to use its UI as a guide for their own applications. This makes a lot of sense because users of their applications are likely to also be users of Microsoft Office, and if that's the case then the users are more likely to instinctively understand the ISV's UI.

    We've made this job a whole lot easier with the release of a License to use the Office Ribbon UI.

    Frank's got more info about it and the definitive post is from Jensen Harris

    My favourite bit from Jensen's post is this:

    If you choose to implement the Office UI, you sign up for the program by accepting the license terms and giving us a little bit of information about your product. There's no fee, you don't owe Microsoft any royalties, and the license is perpetual—meaning that the terms won't change.

    Please don't hesitate to leave a comment here if you have created an application that uses this UI.

  • Andrew Coates ::: MSFT

    Teaching programming to primary school kids - Part 2


    We had our second meeting of the School Programming Club last Monday. As the boys want to write an online game, I decided that we should start with some basics about the most common online delivery mechanism, HTML.

    We talked about the structure of HTML and about tags. I also set them a task for next Monday:

    This week we talked about HTML – Hypertext Markup Language.

    In particular we discussed the fact that HTML uses tags to "mark up" the parts of a page, that is, give the items on the page context and properties.

    Tags are instructions enclosed in less than and greater than signs, and they should either appear in pairs with an opening and a closing tag like this:

    <h1>This text is a level-1 heading</h1>

    Or be self-closing, like this:

    <img src="images/image1.jpg" />

    The tags are interpreted by a web browser like Internet Explorer and the result of their content displayed.

    An HTML page has two parts, the header of the page, which contains information about the page, and the page body, which is what’s displayed on the screen. A sample HTML page might look like this:

    <title>This is a valid HTML page</title>
    <h1>This is a level 1 heading</h1>
    <p>Here's some text in a paragraph. In a web browser, it will be rendered in the default 
    font at the default size. Notice that even though we haven't specified a different font 
    for the heading above, it's automatically been assigned different attributes because it's 
    been tagged as a heading.</p>

    Viewing this in Internet Explorer looks like this:

    There’s lots more information about HTML all over the web

    Here’s what I asked you to do for next week:

    Use the second or third link above to create an HTML page about you. Use tags and include:

    • Headings
    • Images
    • Links to other pages
    • Some other HTML tags
    • For extra credit - research styles (CSS)

    E-mail me your pages before our meeting on Monday and we can have a look at them.

    I'm looking forward to seeing how self-educating these guys are. One of the real requirements of a good programmer is the thirst for knowledge and the ability to do some research to find it (that and laziness)

  • Andrew Coates ::: MSFT

    How I learned to stop worrying and love the rebuild


    One of the questions I get from time to time is "don't you get tired of rebuilding your machine all the time?". Well, the answer is no. There are a couple of reasons for this. Firstly, I love playing with the toys. Secondly, and perhaps more importantly, a rebuild is not really a painful exercise for me.

    Some people do all of their work inside virtual machines, and only install a base OS, Office and either Virtual Server or Virtual PC on the metal. Don't get me wrong, I love virtualisation, and I use it all the time for demos and experimentation (and now for development with VS2003), but it doesn't solve the problem of the environment getting clogged up with flotsam and jetsam from installs, uninstalls, betas and CTPs on my main machine.

    The approach I take is to have 2 partitions on my main machine. I have a 90 GB drive in my A7 and it's partitioned like this:

    C:\ 53 GB, D:\ 40 GB

    This means that a rebuild only blows away the c:\ drive, and all of my data are preserved.

    In fact, that's not the only thing that makes it easy to decide to rebuild. The thing that makes it easiest is the servers.

    Firstly there's the Windows Deployment Services (link from Kleefy's blog) server. This means that I can have a new base image on the box (with Vista and Office 2007) within 45 minutes.

    Next there's My Documents Redirection. All of my My Documents folder (currently about 830 MB) actually lives on a server (possibly in Singapore, but then, hey, who cares). When I do a rebuild, there's an offline copy made on my machine automatically (on the C drive by default), and the Offline Folders technology keeps the two copies synchronised. I don't have to worry about backups - that's all done for me.

    Finally, there's Exchange Server. When I first start Outlook, all of my Exchange settings are automatically discovered (via Active Directory) and a local copy of my Exchange mailbox is made on my machine (again, on the "expendable" C drive). I still need to run a whole bunch of installs (as per my list), but they just run in the background while I'm working.

  • Andrew Coates ::: MSFT

    Make and Mend Day - Installation, Configuration and Celebration


    I recently upgraded my Toshiba Tecra A7 to the RTM versions of Vista and Office 2007, and have been going through my list of things to install on a new machine to check that I haven't missed anything. In addition, I've been meaning to enable access to my TFS box via the internet for some time now, so here's my ToDo list and comments thereon:

    Install VSTS on the Vista Box

    Just shoved MSDN DVD 3075 into the drive and away it went. I did get a compatibility warning saying that VS2005 couldn't be installed on Vista, but I clicked Run Anyway because I'm going to install SP1 in the next step.

    By the way, I already had Visual Web Developer 2005 Express Edition, Visual Basic 2005 Express Edition, Visual C# 2005 Express Edition, SQL Server 2005 Express Edition and SQL Server 2005 Developer Edition installed on this box. This morning when I got to the machine, I was notified of a new update available - SQL 2005 SP1, so that just happened in the background. I love Microsoft Update!

    I also installed Team Explorer from my MSDN DVD 3538 (but after the SP1 install below, so I re-installed SP1 as well)

    Install VS2005 SP1 Beta on the Vista box

    I had already grabbed the beta from the connect site, so I went ahead and installed it. No dramas (although I did need a reboot because I had a bunch of things open while the install was running). Note that the beta's now closed (that is no more bug reports are being taken that will be included in this SP), but you can still download the beta.

    Install VSTO SE on the Vista box

    Grabbed this from the Microsoft download site.

    Install VS2005 SP1 Beta on the TFS Box

    When I checked this, it turns out I'd already done it, so a big check in that box first up. Nice way to start.

    Enable internet access to the TFS box

    I run a Small Business Server network at home (behind an ISA Server 2004, which is part of the Premium Edition of SBS R2), and the TFS box is a member server. I want to be able to access the server from outside the firewall, so I'm going to need to publish the site using ISA and I'm also going to need to issue a certificate from the SBS box that matches the domain name I'm going to use coming in.

    I set up a static host entry on to point to my static IP address on my ADSL 2+ modem (which one of the NICs on my ISA machine plugs into). The entry has the wildcard flag set, which means that while the main entry is of the form <myname>, I can use a fqdn in the form tfs.<myname> and it will get resolved to the correct address, and I can use the additional name at this end to reroute the traffic correctly.

    Next, I followed the steps in Walkthrough: Setting up Team Foundation Server with Secure Sockets Layer (SSL) and an ISAPI Filter on the VSTSUE blog. NB, when I was following the steps in the section entitled "Issuing a Certificate Request and Creating a Binary Certificate File", I came across a couple of anomalies:

    • Firstly, when I opened the Certification Authority MSC (which, btw, was on the SBS box, not on the TFS box), I was prompted to upgrade to the 2003 version, which I did.
    • Next, Rather than take the default (unqualified) common name in creating the request
    • Finally, when I tried to submit the request file as per step 3 of that section, I got an error:
      Certificate Request Processor
      The request contains no certificate template information. 0x80094801 (-2146875391)
      Denied by Policy Module 0x80094801, The request does not contain a certificate template extension or the CertificateTemplate request attribute.
    • I tried submitting an immediate request to the certificate authority (rather than delaying the request and submitting via a request file as specified). This appeared to work, but there was no certificate installed. Looking in the Failed Requests node of the Certification Authority MSC, I found the rejection (as well as the rejection from the attempt above):
      Request Status Code:
      The requested certificate template is not supported by this CA. 0x80094800 (-2146875392) 
      Request Disposition Message:
      Denied by Policy Module 0x80094800, The request was for a certificate template that is not supported by the Certificate Services policy: WebServer

    There were a couple of vaguely relevant hits on, but the best hint was the error message itself. Right-clicking on the Certificate Templates node in the Certification Authority MSC and choosing Manage opened a list of the templates installed on the box, but in doing so, it reported that there were templates that needed to be imported. Doing so enabled the request and issuing of a certificate, so off we go again.

    Configured the ISA server to pass traffic addressed to tfs.<myname> through to the TFS box.

    I've got no separate build or proxy servers, so there's no need to install certificates there.

    Time for a reboot and testing ...

    This post took some time to write, so at infrequent and irregular intervals during the day, I clicked the Insert Currently Listening... button in Windows Live Writer (btw, Frank's got a good list of pluggins for Windows Live Writer here)

    Currently Listening To "Les Adieux" Klaviersonate Nr.26 Es-dur Op.81a : Das Wiedersehn. Vivacissimamente from Beethoven-Sonaten by Emil Gilels

    Currently Listening To PC5 in E-flat, Op.73: 1. Allegro from Beethoven 5 Piano Concertos by Vladimir Ashkenazy/CleveSym

    Currently Listening To Holst: Duet for trombone and organ from art of the trombone,the by Alain Trudel

    Currently Listening To Alexandre Guilmant: Chorale (Kirchenordnung Braunschweig) from the art of the trombone by Patrick Wedd

    Currently Listening To the 1st Ashes Test

    Currently Listening To Piano Concerto No.1 in C major: Allegro con brio from Beethoven - Piano Concertos 1-2 by Vladimir Ashkenazy & The Clevela

  • Andrew Coates ::: MSFT

    Thoughts and Links about the Ecma Office Open XML Formats


    While on the Ready tour, I've had lots of interest about the session I'm doing on the Ecma Office Open XML Formats. There have been some great questions from the audience, both during the session and afterwards via this blog. In response to those (and for my own interest), here are some answers and some links.

    Steve Kay asked:

    I have installed the file converters on my box running Office 2003.

    I can read & write Office 2007 docx files, but cannot create Excel xlsx files from within Excel.  It isn't available from the 'Save As' dialog within Excel.

    I can use 'Save As' from windows explorer to convert 2003 xls files to the 2007 xlsx format, but when opening with Excel it gets converted to 2003 xls format and again I cannot save as 2007 format.

    Is it meant to work this way?

    No, it's not meant to work that way, but you do need to make sure you read the instructions on the download page for the compatibility pack. In particular, this bit:

    Ensure your system is up to date by installing all High-Priority/Required updates on Microsoft Update (required for Microsoft Office XP and 2003 users).

    This article discusses the updates required in more detail.

     The blog is a great resource. In particular, I found these posts useful:

    MSDN Articles on Open XML and Related Topics - heaps of really good pointers to info.

    Working with Open Packaging parts - great article on the structure of the formats themselves which, by the way, includes the XPS format as well as the office formats.

    Content Control Toolkit - link to a project on CodePlex that allows you graphically link content in a Word document to custom XML in the document (see also Gary Sharp's info below)

     Gary Sharp came to the sessions in Melbourne and then sent me a couple of follow-ups via my blog:

    I spoke to you after the session – mentioning my interest in being able to store a custom dataset (xml) within a word document and then referencing it into the document.

    After returning to work and doing some research, I've found the mechanism you were speaking about. Namely: Xml files stored in the CustomXML folder inside the package. The contents of these files can then be referenced to "Content Controls" within a document. While I was extremely impressed by this technology (and it will no doubt appear in several applications I contribute to), I was a little disappointed that there seems to be no UI (inside the Word client itself) to be able to make these mappings.

    I was hoping for something similar to the “Insert Merge Field” picker (although more advanced) made available to the Mail Merge feature. At the very least, I was expecting something similar to a “Field” so that (with training) the end user could configure where the content appeared in the document.

    I was wondering if you knew of any ways to do this (other than programmatically modifying the document xml file). For example, could a (daren’t I say) macro be used? Might office contain this UI in final release?

    See comments:


    I'd really appreciate your thoughts.

    And then he answered his own questions:

    I just wanted to pass on a note to say that after much 'wondering' and exploring I found more than enough information on CustomXML documents and their capabilities (Didn't want you to double-up on my work...).

    I now understand the reasons why a GUI for Mapping XML to Content Controls wasn't created.

    Below are some links which I found invaluable: - For manipulating the Office Ribbon UI - For creating templates programmatically (and thus Content Controls) - Word 2007 Content Control Toolkit (absolute must-have) - Content Controls Intro (Toolkit demo) - Creating CustomXML Documents (via Packaging API) - Content Controls to CustomXML (via Notepad)

    Don't know if any of this will be useful to you - but I thought I'd pass it on (seeing it took me a while to sort the good from the bad).


    Gary Sharp

    Thanks Gary.

    And finally, Mitch sent me

    An interesting perspective on why the new office document formats are good:

  • Andrew Coates ::: MSFT

    Introduction to .NET presentations for DiData in Canberra


    I had a great time yesterday presenting to some of Dimension Data's customers in Canberra. This is was a continuation of the series I started in Sydney a few months ago (and has subsequently been seen in Melbourne, Brisbane and Adelaide via other members of my team).

    The sessions were well received and we got some good feedback. I promised I'd put the decks up, so there are links below. Note that they're in the new Ecma Office Open XML format, so if you don't yet have a copy of Office 2007, you'll need to download the Microsoft Office Compatibility Pack for Word, Excel, and PowerPoint 2007 File Formats, which allows you to read and write the new format with any version of Office back to Office 2000. More details on using the pack are available here. Note that the pack even works for Word, Excel and PowerPoint 2003 viewers!

    Microsoft .NET Overview (2.3 MB)

    ASP.NET and IIS (2.6 MB)

  • Andrew Coates ::: MSFT

    New Books Arrive


    Update - Andrew and Nick reminded me that their book arrived (thanks Andrew - Nick I still need it signed next time you're in town) on my desk a couple of weeks ago. Another that's well worth a look.

    When I got back to my desk this morning, there was a package from Amazon. There was a pirate (or, more accurately, a Tatar) and a group of what might best be described as the usual suspects.

    Congratulations to both Darren and Glav. Looking forward to playing with both of these.

  • Andrew Coates ::: MSFT

    Teaching &quot;Programming&quot; to primary school kids


    I had a phone call last week from the head of the learning centre at my kids' school. The learning centre works within and outside the regular school curriculum with children that need help keeping up, with kids that need extending, and with kids that just express an interest in learning something else. It's a great addition to the rich tapestry that the school nurtures. The teacher that runs the centre had discovered a group of three kids in year 5 who had got together to "learn programming". She's an excellent educator, but has very little experience in software development and immediately decided that this was something that she needed some outside help for.

    I met the kids for the first time today (by the way, while I was waiting for them in the library, I watched the librarians set up a wiki on pbWiki for the students to use when discussing novels - way cool!) and we talked about what it is they want to achieve. It turns out that they want to write a game, and not just any game. They had a list of features:

    • On-line
    • Multi-player
    • Mythical Ages
    • Adventurous
    • Free and Paid Members (like Runescape)
    • Worlds can be designed and uploaded
    • Low minimum hardware and software requirements (ability to scale up when resources permit)
    • Possibility for other devices to control

    Their programming experience so far is the for ... next construct in VBA in the Excel macro editor, so we might start with our sights set a little lower and work up.

    I'm going to spend an hour or so with them a week for the rest of the school year (only 3 more weeks), and then set them a task for the holidays. Here's what I left them with this week:

    • Add me to your MSN Messenger Contacts
    • Download and install Visual Web Developer Express from
    • Create a personal web site with the personal web site starter kit
    • Be ready to talk about VWDE and the personal website next week
    • Email me your current web site address

     Next week we'll talk about what programming means and I'll set a little assignment on writing a web page to add up a couple of numbers and manipulate some text.

    I'm looking forward to this journey of discovery.

  • Andrew Coates ::: MSFT

    I'm feeling so Web 1.0

    I can't believe I haven't claimed this blog on Technorati before now. Here's my Technorati Profile.
  • Andrew Coates ::: MSFT

    More Developer Evangelists Please!


    As part of the developer keynote on the Ready tour, I've been introducing myself and my role at Microsoft. Here's the spiel I use:

    They give me toys (new OS, hardware, IDE, gadgets etc). They say "Play with these toys, get excited about them. Now, show them to other geeks and get them excited about them too. Here are some more toys. By the way, here's a pay cheque."

    As you can imagine, this description elicits an appropriate amount of drooling and jealousy amongst the assembled geeks, and I often get questions about how one gets such a lush gig. Well, today my boss, the unkillable Frank Arrigo, announced that we're hiring. There's a link to a more formal job description than the one above on Franks blog.

Page 1 of 2 (15 items) 12