Windows 8 Metro + Desktop: Give it a Chance

When I first heard about the idea of the Metro-style UI from Windows Phone 7 being incorporated into Windows as a wholesale replacement for the traditional start menu, I was extremely skeptical that it would work on a professional desktop. Things like the Ubuntu Unity and Gnome 3 environment are horrible. I don’t get the point of the Launchpad in Lion because it’s just superfluous.  The concept of putting the Metro phone UI in to replace the start menu seemed just crazy to me.

I have downloaded the developer preview of Windows 8. After I booted up for the first time, it was disorienting for a few minutes. It reminds me of when I booted Windows 95 for the first time and was thinking where’s progman and this explorer view is weird, can I get fileman back?

But after a getting my bearings, I realize that I can do everything I could before with about the same effort and very similar behaviors but there is this cool news stuff in there.

The Metro Start screen completely replaces the classical Start Menu from Windows 95, but even though it takes up the entire screen and looks very different with the tiles, it can do all of the stuff the Win7 Start Menu did.

First of all win + type stuff initiates a search just like in Windows Vista and 7, the UI is different but the functionality is the same. Next, any time you install a classic or what Steven Sinofsky called a “professional app” in his keynote, the icon is added to your Start screen. It is also available by browsing an alphabetical list of apps which you can get to from the “Seach Charm” which you access by hovering your mouse on the bottom-left where the Windows pearl is on Win7 or by using a swipe from the right edge touch gestures. Right-clicking on any tile that links to an applications that supports a desktop mode reveals an option to pin it to the desktop taskbar.

Alt+Tab and Win+Tab flip through applications pretty much as you would expect. The Win+Tab Aero Carousel effect is gone and you get the Metro swipe-from-left app switching where one of the screens is the desktop. Win+Tab is particularly useful if you have an app docked on the side of your screen and want to flip between the desktop and another Metro app.

I think this description sounds more convoluted than it is. The point is that everything works surprisingly well considering this is an alpha quality build. All of the old keyboard shortcuts and mouse behaviors work the same way.

The idea of having Metro apps docked on the side while using most of the screen for the desktop is very cool. the Metro demo apps are beautiful. A great example is the built-in RSS reader. It is just gorgeous, for consuming photo blogs. Any blog which publishes its entire content into the feed gets a really nice columnar newspaper-style layout. I’m convinced the Metro stuff is worthwhile and that Microsoft will successfully blend the classical Desktop and the Metro UI into a coherent and usable whole, although I suspect that phones and ARM-based tablets will not have the Desktop.

On with the screen shots.

Metro News App Columnar Text View

metro-rss-readability

Metro News App Displaying a Photo Blog

photoblog-metro-win8

 

Metro News Docked with Desktop

rss-win8-metro-sxs

SUA Deprecated in Windows 8

The POSIX subsystem in Windows is headed for a slow death march, again. Not many people realize that Windows NT had a POSIX subsystem from the beginning which was enriched along the way to run a fork of OpenBSD called Interix. Originally the POSIX subsystem was bundled with Windows NT 3.1 and was a barely useful POSIX.1 environment to meet DoD purchasing requirements. Later, it was removed from the Windows core distribution, re-implemented by an ISV and called OpenNT and then Interix. Interix was acquired by Microsoft and sold for a while before being distributed free of charge. Later it was bundled with Services for UNIX 3.0 and 3.5 before being re-integrated into the Windows distribution as the Subsystem for UNIX-based Applications (SUA). At one time Interix actually ran Hotmail during the migration from a FreeBSD to NT backend.

After passing back to the Windows team and being rebranded SUA, Interix languished. The original developers scattered to other projects like Monad/PowerShell, left Microsoft or were never hired by Microsoft when it acquired the technology in the first place. Interix is maintained by a very small team at Microsoft India and these guys are focused primarily on just keeping it working through kernel updates. In practice, the quality of the product has been in decline. At one point, for example, it shipped with most of the .so shared libraries corrupt so that nothing that linked to those libraries would run. The toolkit that makes SUA useful lags many, many months behind the release of a new version of Windows and Microsoft required “premium” client SKUs (ultimate or enterprise) or server SKUs to access the technology which greatly limited its distribution. It is generally as unloved by the powers that be as anything could be, except perhaps IronPython and IronRuby which have already been killed.

The Windows 8 M3 developer preview shows that the other shoe has dropped:

Subsystem for UNIX-based Applications [DEPRECATED]

Subsystem for UNIX-based Applications (SUA) is a source-compatibility subsystem for compiling and running custom UNIX-based applications and scripts on a computer running Windows operating system. WARNING: SUA is deprecated starting with this release and will be completely removed from the next release. You should begin planning now to employ alternate methods for any applications, code, or usage that depends on this feature.

sua-deprecated

One obvious reason to deprecate SUA is that loading the extra subsystem makes Windows take a noticeably longer time to boot. The architecture is very much at odds with the instant boot goals of Windows 8.

There have been a number of developments over the last few years that makes Interix less compelling. Things like fast-CGI on IIS and an official PHP port from Zend, lots of dynamic languages with native Windows runtimes, mySQL and PostgreSQL for WIndows, C libraries like pthreads for win32 and msys which have made Interix less necessary. For perl-heads there is even Strawberry Perl which is supposed to be a lot more CPAN friendly than ActiveState perl. I think Hyper-V and PowerShell are the real strategic replacements for SUA, though. PowerShell integrates with COM and WMI and fits the object nature of Windows better than any POSIX shell could. Hyper-V lets you actually run your UNIX app on Windows on a supported Linux platform which I’m sure smells much less MacGuyver to CIOs than this weird Interix POSIX on Windows thing that nobody ever heard of.

From the time that Hyper-V officially supported RHEL with hast enlightened drivers and Jeffrey Snover decided that the new shell and automation for Windows would be based on .NET and pivoted to build Monad/PowerShell rather than putting KSH on every Windows machine, Interix’s days were numbered. Now it’s official, Interix will be gone from the world about 11 years when Windows 8 reaches end-of-life but if you are smart you will jump ship now because this product will have the minimum life support staff imaginable.

A Better Telnet for Windows

console telnet in semi-transparent console2 powershell sessionThere’s no really nice way to say it: the telnet client in Windows is a little strange at best. I mostly use telnet to debug text-based TCP services. The Microsoft telnet implementation isn’t very good for this. I have used a PowerShell script to fill the gap by piping stdin and stdout to the console but sometimes I actually want telnet. I don’t want to go on a tirade about its problems here but telnet doesn’t work the way I want. What I really want is the telnet from GNU inetutils but compiled for Win32 with no extra runtime requirements. I don’t want to have to install Cygwin or MSys or SUA in order to get telnet.

I looked into this a little bit and it seems like inetutils has a lot of dependencies that make it hard to compile to run directly on Win32 without any POSIX layer. I also found an abandoned project on SourceForge called Console Telnet for Win32 which is under GPL, supports ANSI color codes and seems to have quite good VT100 emulation. The last code drop is from October 2000 and was originally written for old versions of Visual C++ or Borland C++, but it looked promising.

I spent a little time fixing up headers and a few functions here and there to get the code to compile with Visual Studio 2010. It works and it works pretty much like the GNU inetutils version of telnet except that it is annoyingly chatty about printing out info about its configuration on every connection so I put the chatty stuff behind an #IFDEF CHATTY and compiled without that CHATTY symbol defined which pretty much gave me what I wanted. It works by piping stdin/stdout to the TCP connection and doesn’t do any crazy erasing of your entire console scrollback buffer the way that Microsoft’s telnet does. It also doesn’t crash Console2.

I haven’t done extensive testing but everything seems to be working on my computer. I watched as much of Star Wars as I could stand at towel.blinkenlights.nl (“telnet towel.blinkenlights.nl”) and I’ve passed a bunch of HTML GET queries and responses through it.

Get the Code and Binary

Here’s the source code and compiled binary. You need to have telnet.exe, telnet.cfg and telnet.ini together in a directory for it to run correctly.

Let’s Play Spot the Scam

IMG_0235I just received an SMS message on my phone from +37240017000:

call for free your number has been selcted [sic] to win 50000$ call us 0037240017000 now this is your chance

Based on the country code that SMS originated from Estonia. I don’t know anybody from Lithuania and my phone is on the Vodafone network in Ghana. Occam’s Razor says this is most likely a scam rather than my newfound Estonian friends wanting to send me $50,000.

I don’t know exactly how this scam works. Is calling the number enough to somehow have charges placed on my phone? I don’t know. My bet is that it is a flavor of 419 scam where I have to give these nice people my bank wire details and then rather than wire transferring money into my account the wire money out.

Remember kids, if someone has your account number and routing code, they can initiate the transfer in either direction.

Also, you should always avoid replying to SMS messages for “contests”. These can be set up to charge you a fee for the SMS just like you can text the Red Cross or NPR to make a donation.

For people with more time than I have, there is a scam baiting community which aims to make the 419 scam unprofitable for the fraudsters. Its pretty entertaining to read.