Controlling the view on diagrams generated with Visio 2007’s Save As Web feature

This content is 15 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

I’ve been doing some work recently with a “taxonomy” of technology “building blocks”. Even though a taxonomy is technically expressed as a hierarchy, technology terms do not really fit into a hierarchical structure – what we really need is a network diagram but management want it to look like an organisation chart (some cynical people might say that’s all they understand)!

My colleague, Alan Dodd, who understands TOGAF (I’m not an enterprise architect) has been instrumental in defining a structure that we can slice many different ways, generating views based on particular metadata and he’s also the one who came up with the idea of using Visio 2007’s Organisation Chart Wizard to import data from an Excel spreadsheet and use the column headings as metadata. Excel data for importing into Visio with the Organization Chart WizardFor example, if I have columns of: Item; Parent Item; Vendor; and URL, I can build the hierarchy using the Item and Parent Item columns and the Vendor and URL columns can be defined as metadata on the shapes in Visio, from where I can save the whole diagram as a web page (and the URL data will actually work as a link). Add a bit of conditional formatting and we have something that’s actually quite usable as a navigational tool for linking to the various technology building blocks.

The problem I had was that my diagram was huge and needed to be zoomed it to 500% in order to be legible. Increasing the font size didn’t help either, as that just needed larger shapes, making the overall diagram larger (and so the default, whole page, view was just as tiny). What I needed was a way to adapt the zoom factor on the diagram… for instance to set the initial view to 500%.

It turns out that’s perfectly possible using ?zoom=500 on the end of the URL to load the diagram. After a brief conversation on the Microsoft Discussion Groups, John Goldsmith has helpfully posted the four basic URL parameters accepted by Visio-generated diagrams served via HTTP.

The next steps will be to make the diagram zoom closer than 500% and then the big one… to automatically generate the Excel data from a SharePoint document library. Answers on a postcard…

Web 2.0 according to Mitch Benn (and I’ve given in and signed up for Twitter)

This content is 15 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

According to The Guardian, primary school children in England are going to be taught about web 2.0 technologies. This is probably a good idea, but I have some reservations too… after all, I’m the head geek in our family and it’s only a matter of time before my son tells me that blogging is passé and that I really should be doing something else that I haven’t even heard of yet!

Fans of The Now Show may have heard Mitch Benn‘s ditty from a week of so back, which highlights all the key points of web 2.0 technology in about a minute:

“A blog is just a diary you post on the Internet so everybody in the world can read along.
It means you’re under the impression that your every waking thought is a source of fascination but you’re wrong.
Then there’s MySpace which is mainly full of dreadful Indie bands who want a record deal although it’s a lost cause.
Then there’s Facebook which is mainly a way to reassure yourself that your buddies’ lives are just as dull as yours.

A podcast is a radio show you make and post yourself so it doesn’t matter if it’s really crap.
MP3s are just a clever way of stealing people’s songs which is why the record industry’s collapsed.
Wikipedia is a site where you could have looked all this up for yourself if you weren’t such a lazy git.
And twitter is for messages that last 140 characters or less and I’m the King of it!”

[Mitch Benn, The Now Show, 27 March 2009]

I thought it was worth sharing… and if you like to hear Mitch’s irreverant musical satire then you might be interested to know he has a gig in London this June which could be a giggle.

Anyway, if my son (who is due to start school in a few months) is going to learn about Twitter, I thought it was about time I got an account… I can’t promise I’ll update it (any more than I do my Facebook status) but, for those who really are interested in the minutiae of my life (are you? really?), I’m @markawilson and Mitch Benn just got a new follower…

If you still haven’t got a clue what I’m talking about, this video explains Twitter in plain English:

So, what exactly is Windows Azure?

This content is 15 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

Windows Azure logoAt last year’s Microsoft Professional Developers’ Conference, Windows Azure was the big news. Finally, Microsoft had put its cards on the table and announced their strategy for cloud computing!

But, since Ray Ozzie’s keynote in LA last autumn, it’s seemed pretty quiet on the Windows Azure front. That’s understandable – Azure is still in development and it will be some time before we see mainstream use of this computing platform – even so, I was interested to attend the inaugural meeting of UK Azure User Group (AzureNet – not to be confused with the hosting company by the same name) at Microsoft’s London offices, including a presentation from Microsoft’s James Conard about what Windows Azure really is.

James is a Senior Director of Developer and Platform Evangelism at “corp” (i.e. he works in Redmond, not Reading!) and he looks after the Microsoft.NET Framework, Visual Studio and the Azure Services Platform – all things that I know very little about but, based on his presentation, I think I’ve got a grip on how Windows Azure hangs together.

So what is Windows Azure? James Conard described it as:

“An execution environment in the cloud for your applications.”

Which begs the question of what is the cloud? Conard’s view is that this is being made out to be more complex than it really is – as normally happens with a platform shift. Analysts/reporters/experts [bloggers!] define new terms such as: cloud computing; platform as a service; software as a service; infrastructure as a service – and some of these terms are sticking as vendors snap their marketing onto the terms.

But today’s application challenges are not specifically related to technology or to a platform – they are issues like:

  • How many users will an application need to support (after 1 month? 6 months? a year?)?
  • What are the bandwidth, storage, server, rackspace requirements?
  • How can we handle scalability (up and down)?
  • How can we provide high availability?
  • How can we quickly go live?
  • How can we reduce operational costs?
  • How can we move to a service delivery model?
  • How can we provision servers for the short term (without buying extra infrastructure)?

Windows Azure is intended to provide three core services: compute, storage and management which are:

  • Scalable – with a virtualised hosting environment.
  • Flexible – providing storage with blobs, tables, and queues.
  • Manageable – with a model-driven service lifecycle management.
  • Usable – with a rich local and offline developer experience.

Looking first at the compute service, applications are built (based on role definitions, modelled using an XML service configuration file), deployed to the web and run via a load balancing mechanism. Building the application in Visual Studio 2008 (SP1) with the SDK for Windows Azure and Visual Studio Tools for Azure ensures familiarity for Windows developers and the SDK’s Development Fabric simulates a cloud application whilst running locally for debugging purposes. The publishing process packages the application as a service package including all assemblies and configuration files ready for upload to the Azure Services Platform via the Azure Services Developer Portal. This portal allows the developer to create a hosted service and access production and staging environments. Once initialised according to the applications configuration, the appropriate number of instances (virtual machines) is started and the application deployed. Staging environments use a DNS name in the form of but friendly names are provided for production environments.

Most applications need to store and manage data, and Azure provides access to tables and blobs, with a queuing mechanism for communications between roles (some of which may run asynchronously, others as batch jobs, with a worker process to handle the interaction).

Management is concerned with ensuring that there are sufficient instances of a running application, monitoring when to bring more computing resources (extra instances) online, and when to take down one or more instances.

In short, Azure provides the infrastructure to run an application in the cloud including the environments upon which to run code and the underlying servers, datacentre services and connectivity. There is no need to directly manage this as the application is abstracted from the infrastructure and Microsoft highlights that, whilst some vendors focusing on the infrastructure (physical and virtual machines up to the operating system layer), over time, Azure will expose more and more capabilities of the Windows Server operating system, Microsoft .NET framework, etc. and the available services will be expanded.

Of course not all applications are as simple as the ones that Microsoft uses to demonstrate Azure. Some applications need additional capabilities in the cloud such as:

  • Relational database support.
  • Connectivity between on-premise applications and cloud applications (some applications cannot move to the cloud and the data needs to remain local, or the functionality does – hence hybrid applications).
  • Single sign on support.
  • Federation with existing identity providers.
  • Orchestration of several different services.
  • Access to user profile and contact data.

Windows Azure is a baseline and there are also additional services within the Azure Services Platform, implemented as building blocks which may be consumed (as required, wholesale or piecemeal) from an application running on Azure, including:

  • Live Services, for building user-centric applications that require end user interaction and access to contacts, calendars, folders, etc.
  • .NET Services, providing key building blocks required by many cloud-based and cloud-aware applications including access control, a service bus and workflow.
  • Microsoft SQL Services, extending Microsoft SQL Server into the cloud for – cloud-based instances of SQL capabilities.

In the future, these initial services will be supplemented with:

  • Microsoft SharePoint Services, for workflow, list management and document management.
  • Microsoft Dynamics CRM services.

Windows Azure Services Platform

SQL Data Services link applications to SQL Server using SQL’s tabular data stream (TDS) protocol. James Conard’s presentation only mentioned it in passing, but there is a session available online from the MIX09 conference with the detail on SQL Data Services.

(At this point, I’d like to plug Jamie Thomson – SSIS Junkie – and my former rival for the top blogger spot when I worked at Conchango… Jamie was at the AzureNet meeting too – if you want to know about how SQL and .NET services fit together, he’s your man!)

A few paragraphs back, I mentioned the service bus and this could probably do with a little more explanation. Referenced using a URI with a sb:// suffix, this provides a publisher/subscriber model based on service bus queues (queuing messages until a listener is available) and service bus routers (distributing messages according to the routing policy) with a REST-based interface for managing access control (via authorisation rules).

So, what next for Windows Azure? The latest Community Technology Preview (CTP) was issued in March 2009 and includes a number of changes and improvements including:

  • Full-trust support for .NET applications, allowing native code to run as part of service package.
  • FastCGI support on IIS7 (for running PHP and other extensions).
  • A single SDK and tools installation.

Soon, Windows Azure will be available in a second United States datacentre (and developers will be able to select which to run in via the portal) and, as Windows Azure approaches commercial availability, there will be a datacentre in Europe too.

Finally, pricing and service level agreement information is expected during Summer 2009 with commercial availability in the Autumn.

As an infrastructure guy, I might be scared by the idea of all of this infrastructure moving into the cloud, but there are a few things to remember:

  • The transition won’t happen overnight.
  • Many organisations will still require an extensive local infrastructure (if only for client connectivity to the cloud).
  • Someone has to build and run those cloud datacentres!
  • Security will be key to the success (or failure) of this brave new world.

Regardless of my future job prospects, I’m looking forward to the day when someone asks me to integrate an on-premise infrastructure with Windows Azure.

A state of calm returns to the Wilson household as the CBeebies TV signal is restored

This content is 15 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

A few years ago, I wrote about getting free to air digital TV from Sky. At that time, FreeSat was a relatively unknown service and I was trying to avoid the cost of an aerial upgrade (antenna for those of you reading this outside the UK) but, at the end of last week, my Sky box developed an intermittent sound problem and became unwatchable (on top of the frequent need to reboot before it will pick up Channel 4), leaving us with two poorly children and no CBeebies!

For most people, CBeebies is of no significance but is you have children between 2 and 5 (I have two that age), it may be considered vital! Luckily, I have my Mac Mini hooked up to the TV, so I streamed CBeebies directly from the web for Saturday’s early morning shift but, as the rest of the street woke up and went online, we saw more and more buffering and it’s hard to explain to little people why their favourite CBeebies programmes keep on stopping!

It was clear that I needed to do something about the TV signal. Digit AlAs part of the UK’s digital switchover, analogue TV is due to be switched off in my region in 2011 and the signal has already deteriorated to the point that it’s virtually unwatchable so digital is the only real choice. I could get another satellite decoder but, a little while back, the existing one was automatically upgraded to use Sky’s auto standby functionality (great if you’re looking to save power, not great if you’ve set the video to record from the satellite signal and meanwhile the Sky box goes into standby…) so we decided to bite the bullet and switch to digital terrestrial (Freeview). I picked up a nice little Philips DTR220/05 set top box from John Lewis and the (extremely easy) setup meant that within minutes I had it set up to pick up almost every channel, except those in multiplex B. After a bit of googling I found that’s because the local TV transmitter (Sandy Heath) transmits this signal on channel 67 – right at the edge of the frequency range, and the existing (loft mounted) aerial wasn’t up to the job (not really surprising as, even though I live on the top of a hill, the signal has to pass through three brick/block walls and an electricity substation).

So, this morning, the my local aerial installation company visited to fit a nice new digital TV aerial to my chimney stack, after which the CBeebies TV signal was restored (along with several other channels of less significance). And, because there are a few channel differences between FreeSat from Sky and FreeView, I can even watch Dave now (which I’m sure will not impress Mrs. W)!

Microsoft Virtualization User Group meeting: April 2009

This content is 15 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

The Microsoft Virtualization User Group has its next meeting coming up soon, but it’s pretty short notice so Patrick has asked me to spread the word (which I’m happy to do).

So, if you’re into Microsoft Virtualization and you’re in the London area on the evening of 16 April 2009, come along to Microsoft’s offices in Victoria to watch Matt McSpirit give a deep dive into Hyper-V R2 and SCVMM 2008 R2 before Adam Downie talks about Disaster Recovery and Business Continuity Management with Double-Take for Hyper-V.

Read more and register at the MVUG website.

Don’t write off Internet Explorer just yet (and how to make sure your website renders correctly with Internet Explorer 8)

This content is 15 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

Microsoft Windows Internet Explorer 8 logoI’ve had a few communications from Microsoft this week attempting to hammer home the point that Internet Explorer (IE) 8 was released last week. My personal view is that many technical users switched to alternative browsers during the time when “Internet Exploder” was, frankly, not that great (a deliberate understatement) and that it will take a long time for them to return (if, indeed, they ever do); however the majority of consumers and enterprises are still using IE for two reasons:

  • It ships with Windows.
  • They see no need to upgrade/switch browsers (unless Windows Update does it for them).

There are of course those who will highlight IE’s problems (for example, that it accounts for a significant number of the security updates produced for Windows) but, in fairness, competing products have similar issues and in some ways I’d rather be running a popular browser that others will find the holes in and the vendor will (hopefully) fix (of course, the same argument is often levied as a reason to run open source applications).

I would like to point out though that Internet Explorer 8 is a huge step forward for Microsoft – both in terms of standards compliance and when looking at its feature set and these days I rarely run anything other than a native browser (IE on Windows, Safari on Mac) because the return of the browser wars has really helped operating systems to raise their game when it comes to browser functionality. IE8 works for me – and whilst there may be tons of add-ins for Firefox, it’s those add-ins that can make the browser unstable too. Similarly, Google Chrome is great for running Google Apps as though they were desktop applications but I fall back to IE when a website fails to render in an alternative browser. And Opera (one of the competitors currently winding up the European Union to drag Microsoft through the courts again in a battle which does little-or-nothing for end users and costs us all a load of money) – they are little more than a distraction, as can be seen in my webstats for March:

Browser Percentage of traffic
Microsoft Internet Explorer 47.26%
Mozilla Firefox 39.24%
Apple Safari 6.33%
Google Chrome 3.91%
Opera 1.90%

If I look at the IE versions in use though, almost 70% are on IE7, around 10% are on IE8, and 21% of my IE visitors (so around 10% of my overall traffic) are still running IE6. My stats are probably skewed due to the number of technical readers (who often run the latest and greatest or the more obscure technologies) but it seems that IE6 is finally becoming a minority browser (and I had just 9 visits from other versions of IE last month).

It seems to me that, for most web developers, there really is little reason not to adhere to web standards and those IE hacks to sort out transparent PNGs, rendering issues and a miscellany of other “quirks” will soon become a thing of the past. Even so, there are still a significant volume of users running older browsers, so we can’t cut loose entirely (IE6 users accounted for over 12% of this site’s revenue last month… that might not be a lot of money but there is a saying that “if you look after the pennies, the pounds will look after themselves“) and, if redeveloping your site to tell it not to run loads of IE hacks is too big a project (or if you still want to direct IE8 to view your site in a particular manner), I saw a document today that details the metatags that can be used:

Internet Explorer 8 ships with multiple rendering modes that may be set by using the X-UA-Compatible header. Web developers can use the ‘meta tag’ to instruct Internet Explorer 8 to render content using a specific mode – to ensure legacy code and applications work properly. The ‘meta tag’ can be included as an HTTP response header for a server-wide solution or on a page by page basis. At the page level instructing the browser to render using the IE7 mode, the ‘meta tag’ would look like:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" >

More than just IE7 mode
The following chart lists the available modes and values for the ‘meta tag’:

Compatibility Mode Value Render Behavior
IE=5 “Quirks” mode
IE=7 Internet Explorer 7 Strict mode
IE=EmulateIE7 Use the !DOCTYPE declaration to determine mode:

  • Quirks mode !DOCTYPEs result in Quirks mode
  • Standards mode !DOCTYPEs result in Internet Explorer 7 Strict mode
IE=8 Internet Explorer 8 Standards mode
IE=EmulateIE8 Use the !DOCTYPE declaration to determine mode:

  • Quirks mode !DOCTYPEs result in Quirks mode
  • Standards mode !DOCTYPEs result in Internet Explorer 8 Standards mode
IE=edge Uses latest standards that Internet Explorer 8 and any future versions of the browser support. Not recommended for production sites.

Browser competition is great news – if it hadn’t been for Firefox, Microsoft would not have kick-started Internet Explorer development – but I think that, for the majority of users, Internet Explorer 8 is worth a look. Meanwhile, for many web developers with sites that don’t render correctly in IE8 (like mine!) the chances are that a single line of code in the <head> section of your (X)HTML will fix it – you can find out more (including fully-functioning demonstrations and code samples) at the IE8 developer demonstration website.