Windows 7 has some great new themes and I’ve been enjoying the image of Stonehenge in hoar-frost-covered fields from the UK set but I noticed some more eye-candy recently: The How To Geek site features some “awesome desktop wallpapers” (I found them via Windows 7 Hacker); and awesome seems to be the word as AddictiveTips has “26 Awesome Windows 7 Themes” (not all of which are themes – some are just wallpaper). Just like Rob Margel, I’m particularly taken with Clean Green.
Backing up my tweets
Over the last month or so, I have gone Twitter crazy. I’ve been transformed from someone who didn’t “get it” into someone who uses Twitter as his main source of news… leaving behind a big pile of unread RSS feeds from blogs (which is exactly why this blog integrates with my Twitter feed). I’d like to further integrate Twitter with this blog (using something like Twitter Tools) but I’m still on an old release of WordPress and still have a way to go on testing the new site (although you can catch a a sneak preview as I inch forward in my development).
In the meantime, I wanted to archive my “tweets” in order to keep a backup as well as to manually transpose the useful ones (not all of the inane babble) into a blog post – sort of like the ones that come from my Delicious feed (although I use Postalicious for that).
I tried various scripts in Python (this one looked hopeful but it uses a deprecated API call), and PowerShell (incidentally, James O’Neill and Joe Pruitt have done some interesting stuff using PowerShell to interface with Twitter) but eventually I realised that a simple curl command could pull all of my Twitter status updates into one or more local XML files. Stage 2 is working out how to apply XSLT (or some other developer magic) to the XML and present it the way I would like, but at least I know I have a local copy of my tweets. The command I used is simple:
curl -O -k -u username:password “https://twitter.com/statuses/user_timeline.xml?count=100&page=[1-32]”
(thanks to Damon Cortesi for posting this – more information on the statuses user_timeline method can be found in the Twitter API documentation.)
I’d like to give one more piece of advice though: the Twitter API restricts the number of calls you can make in an hour to 150. With TweetDeck polling every minute or so, and this command pulling multiple pages of updates through the API, it didn’t take long for me to hit my limit during testing, so you may like to use the maximum page size of 200 tweets (up to 16 times to pull the maximum of 3200 updates that Twitter allows):
curl -O -k -u username:password “https://twitter.com/statuses/user_timeline.xml?count=200&page=[1-16]”
This gives me the data in XML format but I noticed that I can also get hold of it in JSON, RSS or ATOM format – unfortunately I can’t seem to retrieve results based on multiple parameters (e.g. http://twitter.com/statuses/user_timeline.rss?count=200?screen_name=markwilsonit) so Google Reader (or another RSS reader) is limited to the last 20 updates.
Just before I sign off, I’ll mention that, as I was writing this post, I saw that I’ve even begun to open my colleagues’ eyes to the power of Twitter… David Saxon (@dmsaxon) has just joined the party (mind you he pretty much had to after asking our IT Security guys to remove the proxy server restrictions on Twitter use during core working hours today…). Welcome to the fold Dave.
You can follow me on Twitter @markwilsonit.
Coalface Tech: Episode 4 (Windows 7 and Server 2008 R2)

Remember the Coalface Tech podcast that James Bannan and I kicked off? Well, after a long break, we finally got another episode out. To be fair, I didn’t have a lot to do with it – the logistics of scheduling podcast recordings between the UK and Australia, battling with VoIP technology, editing audio, losing our hosting provider and fitting it in with work and family life was all a bit too much. Episode 3 was recorded but, by the time we had it ready, it seemed a bit past its sell by date, so James has recorded episode 4 with a new member of the team: Craig Fiegert, who is a Melbourne-based consultant.
The closure of APC Pro magazine caused us some issues and we’ve moved everything across to the coalfacetech.com domain (which is currently working off James’ site). For existing subscribers, we hope to be able to put some redirects on to point to the new feeds but, for the time being, you can either listen to Episode 4 via the web or resubscribe at:
Coalface Tech (MP3 podcast).
Coalface Tech (AAC podcast with chapter markings and context-sensitive links, etc.).
The iTunes feed (which is the one that gets us recognised) should be back and running as soon as the redirects go in and I’ll also look into submitting the podcast to the Zune Store. Meanwhile, Google Feedburner will tell us if anyone is actually listening!
In short – thank you for bearing with us. Hopefully we’ve got through the worst of the infrastructure issues and James hopes to get new episodes out more regularly now. I’ll still be involved in the background and will make an occasional appearance but, until then, enjoy James and Craig’s discussion of Windows 7 and Windows Server 2008 R2.
Super User completes the Stack Overflow trilogy
A few months ago, I wrote about Jeff Atwood’s new site for sysadmins, Server Fault and, this week, Jeff launched the third site in the Stack Overflow trilogy: Super User. Like its predecessors, Stack Overflow (for software engineers) and Server Fault (for IT Admins), Super User is a sort of forum-meets-wiki-meets-blog-meets-digg site but this time it’s aimed at power users. There’s more information over on the How-To Geek site but this is a great example of community-based tech support (i.e. no Experts Exchange-style charging for user-generated content, or Yahoo! Answers-style lack of credibility).
Vista Squad has rebranded
The Vista Squad was a popular UK user group for the Windows client and related topics. Of course, now that Windows 7 is here, Vista is old hat and so they have rebranded to the curiously named “Edge” user group.
Existing requests to the old website should redirect to the new domain and the meeting structure will remain the same. Sadly they seem to have dropped the dynamic Lego characters from their logo… that’s a shame because all the other UK UGs have such dull logos.
You can also find follow the Edge User Group on Twitter @edge_ug.
Creating a Hyper-V workstation
A couple of years back, I was running Windows Server 2008 on my everyday notebook PC so that I could work with Hyper-V. That wasn’t really ideal and, these days, I’m back on a client OS – Windows 7 as it happens…
Even so, I’ve been discussing the concept of a developer workstation with my friend and colleague, Garry Martin, for some time now. I say “developer”, because Garry works in our application services business but the setup I came up with is equally valid for sysadmins who need a client side virtualisation solution (and no, type 2 hypervisors do not cut it – I want to run on bare metal!).
I finally got Hyper-V Server running from a USB flash drive a few days before Microsoft announced that it is a supported scenario (although I still haven’t seen the OEM document that describes the supported process). That provided the base for my solution… something that anyone with suitable hardware can use to boot from USB into a development environment, without any impact on their corporate build. Since then, I’ve confirmed that the RTM version of Hyper-V Server 2008 R2 works too (my testing was on the RC).
Next, I integrated the network card drivers for my system before starting to customise the Hyper-V Server installation. This is just the same as working with a server core installation of Windows Server but these days sconfig.vbs makes life easier (e.g. when setting up the computer name, network, remote management, Windows updates, etc.), although it was still necessary to manually invoke the control intl.cpl and control timedate.cpl commands to convince Hyper-V that I’m in the UK not Redmond…
Other changes that I made included:
- Using the built in FTP client (
ftp.exe) to download a selection of my favourite tools for use when working with server core/Hyper-V Server: a Windows port of the GNUwgetutility; 7-Zip; anddevcon.exe. In order to do this I needed to create a firewall exception usingnetsh advfirewall firewall add rule name="FTP client" dir=in action=allow program="c:\windows\system32\ftp.exe" enable=yes(following the guidance in Microsoft knowledge base article 947709). - Installing PowerShell using the following commands (although I later found that I could do this with
sconfig.vbs– note that it didn’t work for me usingocsetup.exe–dism.exeis a new command in Windows Server 2008 R2 and it looks pretty powerful):dism /online /enable-feature /featurename:NetFx2-ServerCoredism /online /enable-feature /featurename:MicrosoftWindowsPowerShell
- Downloading and installing the PowerShell management library for Hyper-V.
- Copying 4 files from a full Windows Server 2008 installation to allow the Microsoft Remote Desktop Connection client to run as a portable application.
The real beauty of this installation is that, now I’ve got everything working, it’s encapsulated in a single virtual hard disk (.VHD) image that can be given to any of our developers or technical specialists. I can take my bootable USB thumb drive to any machine and boot up my environment but, if I used an external hard disk instead, then I could even take my virtual machine images with me – and Garry has done some research into which drives/flash memory to use, which should appear as a guest post later this week. Creating and managing VMs can be done via PowerShell (remember, this setup is mobile and is unlikely to be accessible from a management workstation) and access to those running VMs is possible from PowerShell or Remote Desktop. I could even install Firefox if I wanted (actually, I’ve not tried that on Hyper-V Server but it works on Windows Server 2008 server core)
Of course, what I’d really like is for Microsoft to produce a proper client-side hypervisor, like Citrix XenClient but, until that day, this setup seems to work pretty well.
So how, exactly, should a company license a hosted VDI solution with Windows?
Late last night, I got myself involved in a Twitter conversation with @stufox, who works for Microsoft in New Zealand. I’ve never met Stu – but I do follow him and generally find his tweets interesting; however, it seems that we don’t agree on Microsoft’s approach to licensing Windows for virtual desktop infrastructure.
It started off with an article by Paul Venezia about the perfect storm of bad news for VDI that Stu thought was unfairly critical of Microsoft (and I agree that it is in many ways). The real point that upset Stu is that the article refers to “Microsoft’s draconian licensing for Windows XP VDI” and I didn’t help things when I piled in and said that, “at least from a managed service perspective. Windows client licensing makes VDI prohibitively expensive“.
Twitter’s 140 character messages don’t help much when you get into an argument, so I said I’d respond on this blog today. Let me make one thing clear – I’m not getting into a flame war with Stu, nor am I going to disclose anything from our conversation that isn’t already on our Twitter streams, I just want to explain, publicly, what one of my colleagues has been struggling with and for which, so far at least, Microsoft has been unable to provide a satisfactory solution. Hopefully Stu, someone else at Microsoft, or someone else in the virtualisation world will have an answer – and we can all be happy:
- Microsoft SPLA does not have a provision for Windows client operating systems, leaving two options: Vista Enterprise Centralized Desktop (VECD) for Microsoft volume licensing customers who have Software Assurance (SA); or Full Packaged Product (FPP).
- VECD is applied to a physical device used by a customer. It includes the operating system license for that device and allows them to use a virtualised desktop (e.g. in a VDI scenario). So, if you provide a hosted VDI service, how can you buy VECD for a device over which you have no control (remember, Windows client licenses are tied to hardware)?
- Furthermore how do you transfer that license from customer to customer, e.g. if a customer leases a virtual desktop for a few months.
- FPP is the most expensive way to license Microsoft products – that’s why most enterprises use volume licensing (although many do not have SA).
Stu asked me if I thought Microsoft should give away Windows for free. Of course not, not for free (but then I remembered that, after all, that is what they do with Windows Server if I buy Datacenter Edition). I understand that Microsoft is in business to make money. I also understand that all of those copies of Windows used for VDI need to be licensed but there also needs to be a way to do it at a reasonable price (perhaps the price that OEMs would pay to deploy Windows on physical hardware).
Stu’s final (for now) public comment on the subject was that “Blaming VECD licensing for ruining VDI is like saying ‘I’d buy the Ferrari if the engine wasn’t so expensive’“. Sure, VDI is not a cheap option (so a supercar like a Ferrari is probably the right analogy). It requires a significant infrastructure investment and there are technical challenges to overcome (e.g. for multimedia support). In many cases, VDI may be more elegant and more manageable but it presents a higher risk and greater cost than a well-managed traditional desktop solution (many desktop deployments fail in the well-managed part of that). So, the real issue with VDI is not Windows licensing – but Windows Licensing is, nevertheless, one of the “engine” components that needs to be fixed before this metaphorical Ferrari becomes affordable. Particularly when organisations are used to running a fleet of mid-priced diesel saloons.
VDI is not a “silver bullet”. I believe that VDI is, and will continue to be, a niche technology (albeit a significant niche – in the way that thin client/server-based computing has been for the last decade). What I mean by this is that there will be a significant number of customers that deploy VDI, but there will be many more for whom it is not appropriate, regardless of the cost. For many, the traditional “thick” client, even on thinner hardware, and maybe even running virtualised on the desktop, will continue to be the norm for some time to come. But if Microsoft were to sort out their licensing model, then VDI might become a little more attractive for some of us. Let’s give Microsoft the benefit of the doubt here – maybe they are not sabotaging desktop virtualisation – but how, exactly, is a company supposed to license a hosted VDI solution with Windows?
Licensing does tend to follow technology and we’ve seen instances in the past where Microsoft’s virtualisation licensing policies have changed as a result of new technology that they have introduced. Perhaps when Windows Server 2008 R2 hits the streets and Remote Desktop Services allows provides a Microsoft product to act as a VDI broker, we’ll see some more sensible licensing policies for VDI with Windows…
Upgrading from Windows 7 RC to RTM… you had to try it didn’t you?
In-place Windows upgrades are never a good idea. Sure, if you reinstall from scratch you have to reinstall applications, but at least they are installed on something known and supportable. In addition, if you manage more than a few PCs, it’s probably worth creating an automated installation, although that may cause some issues where applications require activation.
Regardless of whether it’s a good idea or not, it is possible to upgrade to Windows 7 RTM from previous releases. XP users have two paths: a two step migration via Vista, which will keep the applications; or what effectively amounts to an archive and reinstall, as described by Scott Hanselman. [Update: From Vista, follow Tim Andersen’s post on in-place upgrade adventures with Windows 7.]
For those of us who were running pre-release versions of Windows 7, it is possible to upgrade to the RTM (Tim Andersen wrote about it recently) but Windows does put a few blockers in the way.
Next, although the install.wim file on the DVD includes several editions of Windows, setup no longer presents a list to choose from and will refuse to continue if there is a version mismatch between the installed version (typically ultimate edition, for a release candidate or beta installation) and the RTM media (even if it’s enterprise edition – which has the same features and functionality). Some comments over at 4sysops suggest editing or removing the \sources\ei.cfg file but that didn’t work out for me (this is how it should work). I had to restart my upgrade using the correct media and, this time, Windows didn’t like the fact that I had profiles stored on another drive. Even changing the ProfilesDirectory in HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ProfileList was not enough. I had to completely remove the profile and then restore it from backup after the installation was completed.
Furthermore, because my backup was taken whilst logged in as the user whose profile I needed to restore, Windows refused to load it (even after I restored the associated registry settings) and logged on with a temporary profile each time, regardless of me renaming the registry key to remove the .bak from the end of the SID and changing the state from 0x00008000 (backup) to 0x00000000. In effect, the profile was there, including all of my data, but it could not be loaded.
So, in short, you can carry out an in-place upgrade to Windows 7 from a previous version but do you really want to? It’s potentially a lot of hassle for limited reward, particularly as the resulting machine is bound to suffer from various nuances where things have changed at each release. For me, this was just an experiment and tomorrow my machine will be rebuilt from a standard image that, if we get it right, should deliver a reliable end user experience for years to come.
[Update 22:36: Windows7Hacker’s post confirms I did the right thing to work around the profile issue. I just didn’t have a good enough profile backup… and I didn’t actually need to delete the profile either – I could have just changed the ProfileImagePath in the registry.]
[Update 11 August 2009: corrected the part where I suggested Tim Andersen’s post relates to Windows 7 RC to RTM upgrades. Sorry Tim.]
Come in [Internet Explorer] number 6, your time is up
As from this evening, anyone who visits this website using Microsoft Internet Explorer (IE) 6 or earlier will be greeted with a message advising them that their browser is outdated and suggesting options for an upgrade. I thought long and hard about this (just as I have thought about blocking anyone who uses an ad blocker) and, for a long time, I was of the view that it’s not up to me to dictate the web browsers that people use to access my site but, more recently, I’ve been convinced that legacy versions of Internet Explorer are holding back web development, or at the very least increasing the cost of developing for the web due to the need to integrate various hacks to address browser quirks. With the release of Internet Explorer 8 and many corporates starting to look at moving from Windows XP to Windows 7, I expect to see Internet Explorer 6 usage dropping off quickly in the next 12-18 months and it’s probably time to “encourage” people to update their browser even sooner.
I know that Internet Explorer 6 is still widely used in the enterprise (including at the company where I work) and many corporates have application support issues that preclude movement to a later browser but that’s why the move from XP to 7 on the desktop will be key – as organisations carry out application remediation for their desktop applications, they will also be looking at the intranet. Meanwhile, on the Internet, we’re seeing large sites such as YouTube dropping IE6 support and, whilst YouTube is owned by Google (whose motives are hardly altruistic), as more sites drop support for IE6, the movement to more modern alternatives is likely to increase. In fact, I just checked the analytics on this site and IE only accounts for 45% of my visitors (closely followed by Firefox with 39%, Safari with 8%, Google Chrome with just under 6% and Opera with less than 2%). Of the IE visitors, 46.5% run IE8, 37.5% run IE7 and just 16% run IE6. Effectively IE6 is already a minority browser on my site, although the stats for less technical websites are likely to show fewer users at the cutting edge.
The code I’m using to advise users is adapted from the IE6 No More site and the logo on this page relates to a recent article in .net Magazine.
I’m not saying that you can only view this site if you have a modern browser. That would be arrogant and reminiscent of the late 1990s when it was commonplace to see notices that said something like “this site is written for Netscape Navigator 4 with a screen resolution of 800×600”. It’s just that, these days, we have web standards and even Microsoft browsers support them.
My aim is to support all screen sizes from mobile devices, through netbooks (1024×576) up to multi-monitor and large displays (like my 1680×1050 and 2048×768 displays) and all modern (standards-compliant) web browsers on all operating systems. That’s a lot of testing and I’m just one guy so, if and when I get around to redeveloping this site using a recent version of WordPress, it will use semantically correct XHTML and there will be no hacks for legacy browsers.
If you’re running something recent (i.e. the currently released browser from Apple, Google, Microsoft or Mozilla) then your experience should be fine. Anything else and, as they say, your mileage may vary.
Windows 7 RTM running on my netbook
Last year I blogged about the Lenovo S10e that I bought to test Windows 7. I ran the netbook with Mac OS X for a while but the Hackintosh is no more. Today, the new Akamai download links for “top downloads” delivered the Windows 7 RTM bits to me in just over an hour (my first attempt direct from TechNet had slowed to a crawl overnight) and I installed Windows 7 Ultimate Edition on my netbook in about 15-20 minutes, although I didn’t actually time it.
Ultimate? Yes, Starter is too restrictive (no multi-monitor support – e.g. when presenting), I want to join a domain (so I need at least Professional), and it’s a mobile device, so I intend to use features like BitLocker (for which Ultimate or Enterprise Edition is required) – incidentally, the information I used for the Windows 7 feature comparison is on Dan Delaney’s blog (although it’s slightly out of date as the 3-app restriction on Starter edition was dropped a whole back). Of course, getting a free copy from Microsoft is always a bonus!
Installation was smooth, fast, and uneventful – as the best installs should be. Only one device was banged out in Device Manager – ACPI\VPC2004, which turns out to be a Lenovo Energy Management Driver, for which the Vista driver for the Lenovo IdeaPad Y710 can be used.
One thing that made me chuckle as I installed this was my DVD drive. This was a bargain picked up a few months ago (and unused until today) but is bigger than the netbook I was installing onto (it has an external power supply too that’s not even shown in the picture!).
I could have installed Windows from an external hard drive or USB flash drive but, even with tools to assist with USB boot drive creation, DVD was the fastest route.
Next up, I’ll try upgrading the x64 notebook that I use for work (I know it’s not supported, but I have to try it!) before I nuke that next week and apply an image using the Microsoft Deployment toolkit. I’m sure I have better things to be doing but playing with technology is far more fun.