Category Archives: Internet Explorer

Good day at Build

This was a good day. I’m at the //BUILD conference in San Francisco. Handful of really good things happened today.

One, I got to catch most of the keynote today and there were some really good surprises even for me in there.

  • Windows/Windows Phone is free for devices with screen smaller than 9”. I’m loving this. It greatly enhances our reach and all of the sudden it doesn’t matter that we’re buying Nokia to other device makers because they are getting the same price we’re giving Nokia…
  • Great new enhancements to Windows Phone. I’m not blown away by Cortana but it’s interesting. I’m LOVING the new notification center and all the little fit and finish with WP 8.1 and with IE11 on WP.
  • Great story around the “universal runtime” stuff unifying all the platforms development story. I think this is awesome and makes live much better for anyone trying to develop on any of our platforms.
  • Awesome store enhancements such as the being able to buy on WP and it just works on Windows as well and the like…
  • and a couple more things that are escaping me now. What was your favorite?

Two, I now have a CEO who stood on stage and fielded architecture questions about how to build a cloud solution. YES!!! This was awesome.

Three, I got to meet a ton of great folks and catch up with even more. Too many to name because I know I’d forget some. Leave a comment if we connected. 🙂

Four, I got to speak this year. This is actually the first tier one MS event I’ve ever spoken at. It went really well. I’ll link the video when it gets posted to Channel9.

I got to help launch the beta of This is a great site that will keep you up to date on Internet Explorer’s roadmap of features.

Fun with Regex

Yup, said fun with regex. My standard line is the old favorite “I have a problem that I solved with regex and now I have two problems”…

But Josh Bush tweeted about a regular expression game that Erling Ellingsen built.

There’s 15 levels that exercise different expressions in regex.

  1. Plain strings
  2. Anchors –
  3. Ranges
  4. Backrefs
  5. Abba
  6. A man, a plan
  7. Prime
  8. Four
  9. Order
  10. Triples
  11. Glob
  12. Balance
  13. Powers
  14. Long Count
  15. Long Count v2

I love these types of challenges specifically because gives a fun way  to learn new things and experiment without fear. I started playing it yesterday and it’s a fantastic time suck for a geek like me. Without looking up the regex cheatsheet, I got to about 1500 but then I had to dive deeper into backreferences and grouping than I had before. I wish JavaScript supported nested references but oh well.

I’m currently at 3293 but I’m positive I can break 3500 at some point in the near future as I don’t really feel like I’ve cracked Glob, Prime, or Triples.

Go play the Regular Expression game and make sure that you comment with your scores! 🙂

A little more about the Virtual Machines on modern.IE

Virtual Machines Logo Yesterday we updated somewhere around 90 VMs for modern.IE. This has been incredibly well received by most people but there was a little bit of "snark" that 90ish VMs was too many. But let’s break that down actually.

The reality is that we’ve got 9 client OS/browser combinations.

  1. Windows XP and IE6 (which A: goes out of support shortly and B: is less than 1% pretty much everywhere except China – – but for the 5 people that care, we’ve got a VM for you)
  2. Windows XP and IE8 (remember XP goes out of support in a few months)
  3. Windows Vista and IE7 (IE7 is still big in enterprises)
  4. Windows 7 and IE8
  5. Windows 7 and IE9
  6. Windows 7 and IE10
  7. Windows 7 and IE11
  8. Windows 8 and IE10
  9. Windows 8.1 and IE11

That’s a little more manageable and remember that two of those will drop off (theoretically) in just a few months.

How we get to 90ish is that then we cover virtual machines that run on 3 different OSes across all of the major virtualization platforms.

  1. Mac and Virtual Box
  2. Mac and VMWare
  3. Mac an Parallels
  4. Windows and HyperV on Windows Server 2008 R2 SP1
  5. Windows and HyperV on Windows Server 2012 and Windows 8 Pro
  6. Windows 7 and Virtual PC
  7. Windows 7 and Virtual PC
  8. Windows and Virtual PC
  9. Windows and VirtualBox
  10. Windows and VMWare
  11. Linux and VirtualBox

There’s a bunch of host OS/Virtualization platform combinations. If you multiple the guest OS/browser combinations and the host OS/virtualization platform combinations, you end up with a LOT of VMs but the reality is that you will only ever need to download a small handful of these at any given point in time.

The really good news, however, is that all of these options are free on the modern.IE Virtual Machines page when you need them.

Virtual Machine Downloads

More ways to test drive your sitemodern.IE has free virtual machine downloads for testing Internet Explorer.

As I mentioned in my last post about modern.IE, my team’s core mission is to write interoperable web sites across all of the major browsers and to help that, we’ve put together a set of tools to help you test cross browser and cross platform. The latest step that we’ve taken is that we’ve updated all of the VMs that we support which is a giant list. The updates include getting them up to date with security patches, latest versions of the right browsers, such as IE11 on Windows 8.1 and Windows 7, and more.

We have virtual machines for folks running Windows, OSX and Linux across the following virtualization platforms (dependent on base platform):

Hyper-V (Windows)
Virtual PC (Windows)
Virtual Box (Windows, OSX and Linux
VMWare (Windows, OSX)
Parallels (OSX)

The virtual machines include a lot of different Windows OS and browser configurations.

Windows XP with IE6
Windows XP with IE8
Windows Vista with IE7
Windows 7 with IE8
Windows 7 with IE9
Windows 7 with IE10
Windows 7 with IE11
Windows 8 with IE10
Windows 8.1 and IE11

To set expectations correctly, these are 90 day VMs. In other words, every 90 days they will expire and you can come back and download a new one that’s all up to date with the latest security patches but these are not just free Windows machines forever.

If you are testing web sites across multiple versions of Internet Explorer, I highly recommend that you go to the virtual machines page on modern.IE and download the latest VMs.


modern.IE I’m a Program Manager on the Developer Relations team for Internet Explorer. The core mission of my team is to help developers write interoperable web sites across all of the major browsers. To that end, we have put together a set of tools and downloads that will help you testing, especially for Internet Explorer but most of the tools help across app browsers.

modern.IE Scanner

The modern.IE Scanner is does a static scan of your web site looking for common issues on web sites. Currently, it looks for:

Fix common problems from supporting old versions of IE
Known compatibility issues
Compatibility Mode
Frameworks & libraries
Web standards docmode

Fix common problems from supporting old versions of IE
CSS prefixes
Browser plug-ins
Responsive web design

Suggested enhancement
Browser detection
Optimize the images on your page
HTML5 inputs

Suggested enhancement
Prerender + prefetch

Suggested enhancement

Compressed content

Consider building with some new features in Windows 8
Touch-first browsing
Flip Ahead Browsing
IE11 tiles + Notifications

Once you’ve scanned your site and reviewed the static results, you can take a look at how your site looks across a lot of browsers with the screen shot service by Browser Stack and also do a scan for code that’s no longer supported by current versions of Internet Explorer.

It will save you a bunch of time testing and looking for issues to scan your web site with the modern.IE Scanner.

Virtual Machine Downloads

The scanner is great but there’s nothing like looking at the real thing. To help here, the team has put up a large set of virtual machines to help you out here. These virtual machines are designed for you to do Internet Explorer testing.

We have virtual machines for folks running Windows, OSX and Linux across the following virtualization platforms (dependent on base platform):

Hyper-V (Windows)
Virtual PC (Windows)
Virtual Box (Windows, OSX and Linux
VMWare (Windows, OSX)
Parallels (OSX)

The virtual machines include a lot of different Windows OS and browser configurations.

Windows XP with IE6
Windows XP with IE8
Windows Vista with IE7
Windows 7 with IE8
Windows 7 with IE9
Windows 7 with IE10
Windows 7 with IE11 (Currently RP but soon to be release)
Windows 8 with IE10
Windows 8.1 and IE11 (Currently preview but soon to be release)

This is a lot of machines. If you count up all the variations of virtualization platform, OS and browser, it’s a little over 90 VMs that we’ve got for you to download.

These are 90 day VMs because they are not activated VMs. This means that in 90 days, you’ll need to come back and download a new one but that’s a good thing because we’ll be keeping them up to date with security patches and the like on the web site so you don’t have to think about it.


There are also partner offers that we give from time to time ranging from some percentage off of Parallels to a 3 month trial of Browser Stack (rather than their normal 1 month trial) and so on. These change from time to time so I’m not going to go through all of these here.


There’s a ton that the team is doing which is all aimed at helping web developers build an interoperable web. What I hope never happens again is a “Best viewed in X Browser” tag on a web site again.

Site Pinning in IE9

IE9Internet Explorer 9 (IE9) launched last week at SxSW! I was bummed that I wasn’t there but I was one of the 2.3 Million downloads in the first day. There’s a bunch of new stuff in IE9. There’s a load of examples out on that show off all of the new HTML5 support to javascript performance to a ton more.

A simple one, however is site pinning. This allows you to pin a website as if it were an application on the Windows 7 taskbar. This blending and merging of the web and desktop is awesome.

Now, you can pin any website to the taskbar and get generic results but you as a website author have control to actually do something cool and customize what that pinning does. You can customize the way your site is added to the taskbar as well as add your own jump list items.

MSApplication Meta Tags

The first place to get started is customize the application name, tooltip and frame with a few meta tags:

<meta name="application-name" content="Josh Holmes" />
<meta name="msapplication-tooltip" content="Random Thoughts" />
<meta name="msapplication-window" content="width=1024;height=768" />
<meta name="msapplication-navbutton-color" content="#ff7900" />
<meta name="msapplication-starturl" content="" />

That’s simple. The next step is to add in a custom task that will let people dive deeper into the site with the right click:

<meta name="msapplication-task" 
content="name=View Articles;action-uri=./articles/;icon-uri=./favicon.ico" /> <meta name="msapplication-task"
content="name=About Josh;action-uri=./aboutme/;icon-uri=./favicon.ico" />

By default, IE9 looks for your 32×32 sized version of your favicon but if it can’t find one, it it uses your 16×16 one in a 32×32 box so you should use a high-res favicon if possible…


If your site is pinned, you can, if you want, do more that just sit there on the taskbar. You can interact with the jumplist and more.

Checking For Pinned Mode

First thing to know is if your site is actually pinned or not:

if (window.external.msIsSiteMode()) {
 // in pinned mode
} else {
 // not in pinned mode


Activating the Taskbar Icon

Let’s say that you need your user to interact with the application to keep session alive, or need them to complete a form or for some reason you need their attention back on the site, simple activate the taskbar icon by making it glow (Win7 Users are used to this UI paradigm):


If making it glow is not enough but you have actual info for the user, such as if you are running a bulletin board service and want to let the user know that 3 new messages have arrived for them or something else random like that:

// clear current overlays
// set new one
window.external.msSiteModeSetIconOverlay("./newmessage3.ico", "3 new messages match your search");

Customizing the JumpList

And if you really want to customize the jumplist like with the last few articles that your user looked at, or the last few searches that they did or something more than the static setting of tasks that we did above:

// clear current jump list
// name the jump list
window.external.msSiteModeCreateJumplist("Adding JumpLists");
// add tasks to list – notice that these can have custom icons as well
window.external.msSiteModeAddJumpListItem("Item 1", "page1.html", "./favicon.ico");
window.external.msSiteModeAddJumpListItem("Item 1", "page2.html", "./favicon.ico");
// display list

JQuery Way

Of course, if all that’s too complicated or two much typing, you can just use the JQuery plugin – 😀


Hopefully this has been a short and sweet glance at some of the new site pinning features and the like.