Looking for a power supply for your laptop?

A few weeks back, I saw James O’Neill demonstrating Windows Server 2008 R2, using multiple notebook computers for his demo.

Anyone who regularly travels with several laptops will know that they soon become heavy and one way to save weight is to reduce the number of power supplies used. Unfortunately, there seems to be very little standardisation in notebook computer power supplies, so this is not always possible (even with two models from the same OEM).

James has found a workaround though – he has a switchable universal laptop power adapter and a global travel cable set, which meant he could get away with a single power supply (and some judicious juggling between PCs) to reduce the overall amount of equipment to be transported.

On a related note, I recently had to buy a second power adapter for the Dell Inspiron 1525 that we gave to my parents-in-law late last year. I couldn’t find the part on the Dell website but I an “online chat” led me to a parts department, who would charge me £34.50 for one. By shopping around, I was able to get a genuine Dell power supply (PA12) from a marketplace seller on Amazon (also available on eBay – Essex Laptops), delivered next day for around £16 including shipping and a power cable (which, admittedly was not a Dell part). Definitely worth shopping around!

A guide to creating digital scans from 35mm film with a Nikon Coolscan 4000 ED

I started writing this post in March 2006, so why did it take more than three years to complete? Well, it was partly a lack of time – scanning is a time-consuming process and it’s only in the last few weeks that I think I’ve finally cracked the image-scanning process. In the meantime I’ve considered outsourcing the job of scanning my old negatives and slides but just can’t bring myself to use an overseas service for something so precious (anyhow, the service I’ve heard good things about – Scan Café – is not available in the UK). Anyway, here goes, my long-overdue guide to creating digital scans from 35mm film.

Nikon Super Coolscan 4000 EDA few years ago, I was advised that, rather than switch to digital photography, I should switch to transparency film and buy a decent scanner. I did exactly that, but it took me some time to save up for the scanner, by which time I had a mountain of film to scan. A year or so later, 6 megapixel digital SLRs had become affordable and I switched to digital capture, keeping my film body as a backup although it’s hardly seen the light of day because the digital format provides me with so much freedom.

I’d still like to scan those slides (especially as many of them are from my honeymoon) but it’s a time-consuming process and, up until now, the odd frame that I have scanned has left me unimpressed with the quality. Even though 4000PPI is a lot to ask of any device, I couldn’t believe that a Nikon Super Coolscan 4000 ED (which cost me just short of £1000 at the time of purchase) would offer poor quality scans and after contacting the Nikon European Customer Support desk I found that it the scanner is actually excellent – it’s just that the user (i.e. me) didn’t really know what he was doing!

After Nikon had set me in the right direction, I googled a bit, read the NikonScan user manual, and learned lots. This post is a quick summary of how to get the best from a (Nikon) film scanner with Nikon’s NikonScan 4 software. Most of this information is lifted from the user manual but a short-ish article on the web should be quicker to read than a 150 page PDF.

In common with many other film scanners, the 4000 ED offers Digital ICE3 technology. Actually, this is three technologies from Applied Science Fiction that will increase scanning times significantly; however they will also affect the quality of the resulting images:

  • Image correction and enhancement (ICE) is about removing dust and scratches – even clean negatives tend to show up dust when scanned at such high resolution, so I always use ICE on its fine setting (even though this has a slight effect on the overall sharpness of the image).
  • Restoration of Colour (ROC) is used to restore color on old/faded images (I may try it on the foll of film I dropped in icy water whilst helihiking on a glacier!).
  • Grain Equalisation and Management (GEM) is used to remove the signs of grain on an image.

For most of the applications that I use, the default settings are fine and my initial scans used the defaults. That was the mistake I made with my image scanning and is the reason I’m writing this post! From my support call with Nikon, I learned that I don’t necessarily need to use all of the ICE3 technologies together – in fact, it was the use of ROC and GEM at their default levels (5 and 3 respectively) that was causing my scans to look so bad. I also chose to turn off the Unsharp Mask (it can always be applied later with a pixel editing application such as Adobe Photoshop if required) – similarly I would ignore changes to the curves, LCH and colour balance (although Nikon’s advice to reduce the blue channel by 0.5EV on my sample problem image made a huge difference).

Something else that’s worth noting is to zoom in to the required depth before generating a preview scan, as zooming after performing the preview will appear pixelated (and no zoom will do little to show the effects of the digital processing). It’s also worth ensuring that automatic exposure is selected within the software preferences. Note that the warning symbol is displayed if changes are made to the settings after the preview scan is performed.

Multisampling is another option that can increase scan times dramatically but which should also increase quality as the scanner makes multiple passes over the film. The idea is that it reduces electronic noise (the real values should average out, whereas the noise will be more random), rendering a more accurate image with smoother tonal changes. Personally, I’ve had great results using Noise Ninja as a Photoshop plugin instead – it’s faster and it works on my digital images too!

The boundary offset is a setting used with strip film to line up individual frames within the scanner..

The NikonScan application is able to scan images in either 8- or 14-bit colour although 14-bit images are actually converted to 16-bit for editing purposes. I wrote about this in a separate post but basically each channel is recorded separately for each pixel with 256 levels on an 8-bit scan and 16384 levels for a 14-bit scan (which actually requires 2 bytes for each pixel), so for an RGB (red, green, blue) scan:

  • 1 byte (i.e. 8 bits) x 3 channels (red, green and blue) x 5959 x 3946 (pixel count) = 70542642 bytes (67.3MB).
  • 2 bytes (i.e. 16 bits) x 3 channels (red, green and blue) x 5959 x 3946 (pixel count) = 141085284 bytes (134.5MB).

For CYMK (cyan, yellow, magenta, black), this would increase to 4 channels, so file sizes will be one third larger. Of course, these figures assume an uncompressed file, and does not take into account any overheads of the file type – Nikon Scan supports RAW (NEF) (read-only), JPEG (JFIF), JPEG (EXIF-compliant), TIFF, BMP (Windows) or PICT (Macintosh).

When considering the required resolution for a scan, it’s worth knowing that pixels per inch (PPI), is not equal to dots per inch (DPI). In fact, the scan quality will depend on the output device:

  • Commercial (dye sublimation) printers use continuous halftone, measured in lines per inch (LPI). For this, the artwork PPI needs to be set at twice the LPI of the output device.
  • Inkjet printers use something called simulated halftone – 240DPI should be adequate quality for most prints. A 4000PPI scan from a 35mm negative (actually 24x36mm) on my scanner is 5959 x 3946 pixels. Printing at 240DPI will allow print sizes of around 24.8″ x 16.4″.
  • Window PCs display monitor graphics at 96PPI; Macs display at 72PPI.

It’s also important to understand the way in which a computer represents the colour in an image. This is all controlled with colour profiles, which I still find a little confusing but, thankfully, NikonScan handles for me using the Nikon colour management system (CMS). Some points that are worth noting though:

  • Windows PCs use a gamma value of 2.2; Macs use 1.8.
  • Gamut is a term used to describe the range of colours that are displayed – a narrow gamut will be vivid with saturated colours, whereas a wide gamut may appear low contrast and flat.
  • Each monitor is generally provided with a monitor profile (or one can be created in software).
  • An RGB profile also needs to be set (e.g. Color Match RGB on a Mac, or Adobe RGB on Windows).
  • The CYMK profile can be left at the factory default setting if the output will be printed on a variety of printers, or a custom CYMK profile may be provided with a specific printer. Any other imaging applications used (e.g. Photoshop) should also be set to match the colour profile as it is not passed between applications.

Further reading

The following links provide additional information that may help to produce good scans:

How much data is really captured in a digital image?

A few weeks back, I dusted off my Nikon 4000 ED film scanner and scanned some film for some competition entries. I was pretty impressed with the results (once I’d worked out the best scan settings to use) but confused by the file sizes.

According to Digital Photography Review, my Nikon D70 has a 6.0 million effective pixels from a total of 6.3 sensor sites. At the largest setting, each image is 2000×3008 pixels (around 6016000 bytes or 5.7MB). There’s not an exact match between pixel count and image size (my raw files vary slightly in size but are each around 5.3MB) but we can work on a rule of thumb where each pixel accounts for around 1 byte of uncompressed image data.

Nikon Scan showing a file size of 65.3MB with a 3946x5782 imageWith the scanner though, things were different: the scan size for a 35mm frame was 5959 x 3946 pixels (around 23514214 bytes or 22.4MB), but the scan sizes reported by my scanning software were 67.3MB for an 8 bit scan and 134.5MB for a 14-bit scan. I could see that a 14-bit scan would actually use 16-bits (2 bytes) for each pixel but why were the file sizes three times the size they would be for a digital camera sensor?

After a lengthy discussion with Nikon’s European Customer Support team, I found that, whereas the Bayer mask on the digital camera limited each pixel to one colour (red, green or blue) – and software may be used to interpolate more values if required – the scanner actually captures three colour values (red, green and blue) for each pixel (instead of measuring the light falling on photo sensor sites and using a mask for the various colours, it shines red, green or blue lights through the film to measure the resulting values for each colour in turn).

On that basis 5959 x 3946 pixels x 3 channels = 70542642 bytes or 67.3MB in 8-bit mode (twice that in 14-bit mode) and the scanning software values suddenly make sense.

More on integrating an Apple iPhone 3G with Audi’s telephony and audio systems

A few days ago, it was my birthday. Whilst 37 is not a particularly significant age to celebrate (I prefer to think of it as the 16th anniversary of my 21st birthday), I did get a little present at the start of the month (hopefully it wasn’t an April fool’s joke) when my new company car was delivered. Bye bye Saab (I liked you at first but you soon showed yourself to be a Vauxhall Vectra in disguise… with aftersales service to match…) – this time I’ve gone down the German route and plumped for an Audi A4 Avant S-Line. I have to say that, even though it’s still early days, this could shape up to be one of the best cars I’ve ever driven (especially with the extra toys I’ve added to the spec) – mind you, I’ve always liked German cars and have bought a few Volkswagens over the years.

Don’t worry – I’m not going to start writing car reviews – but I did write something a few months ago about integrating an Apple iPhone 3G with Audi’s telephony and audio systems and I wanted to write a follow-up, now that I’ve had some opportunity to spend a bit more time with a suitably equipped car.

First up, telephony integration. This is simple, as long as the car has the Mobile Telephone Preparation Low option. No cradle is required as the mobile phone preparation provides Bluetooth connectivity. As I wrote in my earlier post, just pair the iPhone with the car using the code 1234 within 30 seconds of opening the car and inserting the key (i.e. activating the car’s systems). The handsfree device will be something like Audi UHV 0000, although the number will vary and, once paired, calls will ring the iPhone and the car simultaneously. The Bluetooth logo and signal strength are displayed on the Audi Multi Media Interface (MMI) display:

Audi telephone connection (MMI)Audi telephone connection (Driver Display)

My iPhone 3G is running software version 2.2.1 and I seem to have no difficulties accessing the phone’s number lists and directory (although voice activation/control is not availablethe phonebook that this refers to is the voice tag system, not the directory accessed on the phone over Bluetooth):

Audi accessing iPhone phonebook (Driver Display)

One thing to note – the car can only act as a handsfree for one phone at a time (although it can pair with up to 4 devices). When I’m “on the clock”, I turn off the Bluetooth on my iPhone so that the Nokia 6021 I use for work can access the car systems.

If you’re still having trouble, Audi provides a Bluetooth FAQ as well as a PDF with details of supported handsets (which is now over a year old and so does not include the iPhone 3G, although it appears to work).

Because Apple has not provided Advanced Audio Distribution Profile (A2DP) functionality on the current iPhone 3G or the first-generation iPhone, to integrate my iPhone with the music system so that I can access the phone’s playlists, etc., I needed to specify the Audi Music Interface option and buy an AMI iPod cable for £29. I think there is a minimum requirement on the sound system for this too (mine is the Audi Concert system).

The AMI is in the glovebox (close enough for a Bluetooth signal for the phone to carry on working) and the cable will charge my phone at the same time. The only problem is that the iPhone complains that the AMI is not a supported accessory and wants to go into airplane mode. If I tell it not to, the AMI will usually find the iPhone and let me navigate the playlists, etc. but I have found it seems to work better if I put start the iPod application on the iPhone before connecting:

This accessory is not made to work with iPhoneAccessory connected
Audi AMI access to iPhone playlists (MMI)Audi AMI access to iPhone playlists (Driver Display)

The good news is that the forthcoming iPhone 3.0 software is expected to include A2DP (and it should work with the iPhone 3G – but not the original iPhone), after which I should be able to stop using the cable (although I may just leave an old iPod semi-permanently connected to the car at that point).

[Update 12 December 2011: Even though iOS is now at v5.0.1, I’ve been unable to use A2DP. This worked in another Audi I drove recently so I assume the car needs a software update too.  This information from an AudiForums thread might be useful too:

“First, the difference between AMI and MMI, which threw me off, so hopefully someone else will find this helpful. This is for my 2011 A4… I don’t know what other years/models it may apply to.

  • MMI (Multi-Media Interface) is just the screen/knob system that controls the radio/sat/cd/settings/etc.
  • AMI (Audi Music Interface) is the link between the MMI system and your iPod or other MP3 device. It is a port in the glove box that you can attach different cables to for different music devices.”]

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

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)

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?

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 guid.cloudapp.net 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

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

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)

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.