One of the talks I did manage to see at TechEd this year was the one about how they managed the network infrastructure for the conference. Part of the presentation when into a bit of detail about how they went about providing IPv6 connectivity including arranging the backhaul from the convention centre back to the Internet.
I wasn't surprised when they mentioned they used Internode as part of the solution, as I've seen the Internode guys talking on Whirlpool about IPv6 for a while now.
The things I remember coming away from the presentation were that:
- The need for IPv6 is growing as IPv4 address space dries up
- There's not much existing hardware or infrastructure that supports it
- It isn't easy to get working
- Security (Firewalls) becomes a bigger issue when you aren't using NAT anymore
The hardware is certainly an issue, so it's good to see that the manufacturers are starting to release entry-level devices that support IPv6. Internode announced today that they're now selling the NetComm NB6Plus4 which supports IPv4 and IPv6 in "dual-stack mode". Billion also have their 7800NL router which operates similarly.
I didn't knowingly use the IPv6 network at TechEd but the comments from those who did were that it was also surprising how few websites were available – even Microsoft Update didn't work.
A lot of problems still to be solved - interesting times ahead!
Unusually busy on the Excel helpdesk today – Jane's follow-up question was how to do the same thing with a range of cells. eg.
My initial suggestion was to use COUNTIF(range, criteria) where the criteria is "*", but it turns out there's a better answer – COUNTA(range) which counts the number of cells in the range with are non-empty. So the formula becomes:
=IF(COUNTA(B3:C3), "Y", "N")
If you wanted to do the inverse and only return "Y" if all values in the range are blank, then COUNTBLANK(range) will do the job. Also check out KB 274537 for details on some scenarios when COUNTBLANK doesn't work so well.
This might seem trivial to us 'developer' types, but it was today's "Jane's Excel question".
You have one or more cells in a spread sheet. You want to display some text "Y" or "N" depending on whether the cell has anything in it. eg.
One solution is to use this formula:
=IF(LEN(B3)>0, "Y", "N")
This checks the length of the text in the cell. An empty cell will have a length of zero. Anything greater than zero means the cell has something in it.
It's nice to live on the cutting edge – using the latest version of everything, especially web browsers. But sometimes you may have to support users running older versions, and it is a lot easier to support a user if you can be using the same software that they have in front of them.
The problem is that you can normally only have one version of IE installed in Windows.
Roger showed me IE Tester which looks quite impressive. It works by hosting separate version-specific instances of the IE rendering engine. Probably a good option if you're a web developer.
If you have access to Microsoft's Expression Web, then Expression Web SuperPreview offers similar functionality.
Another option is to utilise the free virtual machines provided by Microsoft. These are complete standalone copies of Windows XP and Vista with versions of IE6, 7 and 8. To run these, you need either Virtual PC 2007, Windows Virtual PC (Windows 7 Pro or Ultimate only) or Hyper-V.
If you're using Virtual PC 2007, one nice thing you can do is add a desktop shortcut to the VMs so they can be launched easily:
- Create a new shortcut on the desktop
- Point it at "C:\Program Files\Microsoft Virtual PC\Virtual PC.exe"
- Give it a useful name – eg. "IE6 on XPSP3"
- Edit the shortcut target and append
-pc "VM Name" –launch
- Replace "VM Name" with the exact name of the appropriate virtual machine (Include the double-quotes if the name has spaces in it)
- Change the shortcut icon to point to one from "C:\Program Files\Internet Explorer\iexplore.exe"
Ryan Adams has posted a comprehensive list of all the available command-line options.
One thing to note – the VMs do have an expiry date. Updated VMs are usually made available before then though.
I just encountered a problem upgrading a client’s website from ASP.NET MVC2 to the preview of MVC3:
Compiler Error Message: CS1061: ‘object’ does not contain a definition for ‘StartDate’ and no extension method ‘StartDate’ accepting a first argument of type ‘object’ could be found (are you missing a using directive or an assembly reference?)
This error happens at runtime when I go to view a particular View in the browser. The view’s Model property was not being typed as my custom type and instead was reverting to the default type of System.Object.
Turns out it’s a known bug that is caused by the fact that the particular view’s .aspx page also has a
<% Import %> directive after the
<% Page %> directive.
The workaround (until the next preview is released) is to swap the two lines around, so that the
<% Page %> is the last directive in the file. eg.
<%@ Import Namespace="Client.Models" %>
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Client.Models.CustomViewModel>" %>