windows 10 build 14393.10

It’s been over three weeks since I last wrote about Windows 10 build 14393.0. Note the ‘.0’ at the end. It’s still version 1607 but the point release has bumped to ‘.10’. Based on that bump I’m assuming I’ve picked up all the bits for the Anniversary Update, and so far I haven’t had any issues with using the OS or any of my typical applications. For example, after the updates I used Lightroom 6.6 to edit a series of photos I took in Indiana and posted in the prior blog post. Rather than talk about what I did find, let me lead off about what I didn’t find:

  1. Unlike any number of articles on the web have seemed to document, I did not have Skype re-installed on my system against my will. I uninstalled Skype early on (when it showed up in Windows 8.1) because I had no use for it. It has stayed uninstalled ever since. Whether that non-installation is due to my being on the ‘slow ring’ I can’t say, but I went looking for it and the only thing I found was a ‘Skype Preview’ in the Windows Store. It can stay there for all I care.
  2. I don’t get ads, either on my lock screen or anywhere else for that matter. I do get the occasional question, such as “Would you recommend Windows 10 to your worst enemy?” to statement such as “Too many background apps can drain your battery. Select here to improve battery life.” Little things, but I expect those, because I am running with pre-release code and the coders in particular would like to know how it’s working out.
  3. Unlike Thom Halwerda’s bombastic whining, I don’t find Windows 10 an “incomplete, buggy, slow, broken, and effectively useless mess” (It should be noted he writes the same things about Mac OS X and Linux). Honestly, if you’re that provoked with the current state of desktop environments then get off your lazy duff and write your own. Then present it out to your peers and make sure your underwear is sufficiently fire retardant and bullet proof. Otherwise, kindly STFU.

So, with those points taken care of, let’s meander a bit and see what’s on the system. The most interesting change for me is the Windows Subsystem for Linux, or WSL. Practically speaking it’s Bash plus Ubuntu 14.04 LTS minus the graphical subsystems running on Windows. Here’s what it looks like running on my system:

There’s a lot going on in that shell, so let’s break it down a bit.

  1. ‘cat /proc/version’ gives us the version of the kernel we’re running with. It’s a fairly current version (greater than 2.6, but not up to the current 4.x releases). It’s the same version underpinning Ubuntu 14.04 LTS.
  2. Since it has a kernel as part of the subsystem, it’s various /proc resources I’ve checked out seem to work. In particular the ‘cat /proc/cpuinfo …’ shows the eight cores of my Samsung notebook (four cores with hyper threading enabled on each core).
  3. Free shows all memory available and in use on my notebook, not a subset.
  4. ‘ll /mnt’ shows it sees my Windows ‘C:’ drive. If I cd down /mnt/c I’ll be able to traverse my entire C drive. Any other drives attached under Windows are equally visible. The problem I’ve run into so far is soft links. I created one from my home to /mnt/c/Develop (C:\Develop), and while it shows up properly under ls, traversing down the link creates a peculiar error condition. I get to the part of the filesystem it points to, but any attempt to traverse deeper leaves me in the top area the link points to. The only way to traverse deeper is to take the full path down /mnt/c. As an alternative I can create bash aliases (alias develop=’cd /mnt/c/Develop’) and move there that way. But other applications that depend on soft links behaving properly may break, so YMMV. Just beware.
  5. ‘gcc -v’ produces a higher GCC version (4.8.4) than that used to build the kernel (4.7). The gcc version also includes the full 14.04 LTS version it was produced from (14.04.3). Unfortunately for me I need a gcc version 5 or 6 for the kind of work I’m interested in, so this version of gcc is something of a non-starter for me.
  6. I can update and upgrade using apt and/or apt-get, and I can install standard Debian/Ubuntu command line applications (such as htop).

Overall WSL is both an impressive tour-de-force as well as an ever-so-slight disappointment. I fully understand basing WSL on a long-term-support version of Linux, but it would have made life a lot better if Microsoft had chosen 16.04 instead of 14.04. Perhaps future versions or the official release will switch. All the tools are locked to the 14.04 baseline, such as Python and Ruby, not just gcc. Overall I consider working in WSL’s bash superior to Cygwin‘s, but then again, Cygwin has more up-to-date tools.

Another mark against WSL is its difficulty in mixing Windows tools at the command line. There are (hackerish) ways to do this currently, but I’m more interested in a clean built-in way to do this. It would be very nice to call a windows executable directly from the WSL bash command line instead of possibly having duplicate tool chains on both Windows and WSL. Currently the only way I see of avoiding this is to have tools on either one or the other, but not both.

Is there a better way than WSL? Possibly; it involves using VirtualBox and installing a full-blown Linux distribution. My recommendation for Linux development on Windows 10 if you can support it is to install Mint 18 in a VirtualBox VM. Linux Mint 18 comes with VB drivers already built and installed (negating the need to mount the Guest Additions and building them from scratch within the running VM), so that all you have to do is download the ISO and install the OS from the ISO in a VM. During VM configuration you can enable file system sharing to any part of the Windows file system (not just at the root of the Windows drives) and have full networking out of the VM and into the world. It is, for all practical purposes, a full graphical Linux installation indistinguishable from one on hardware, except it is more tightly integrated with Windows. And from my own experience, the latest VirtualBox combined with the latest Windows 10 is very fast and smooth. That’s a lot of effort to go through and it consumes non-trivial system resources, so you should think this path through carefully.

Other native Windows applications have no issues with Windows 10. In particular I still have Office 2010 and Visio 2013, and they work just fine. I’d migrate over to my Office 2016 subscription I have running on my MBP, but Office 2016 subscription wants to fully uninstall my Visio 2013, and there is no Visio equivalent for the Mac (although I do have OmniGraffle). For the time being I keep going back to my Samsung/Windows 10 notebook for Visio work that can’t be handled by OmniGraffle (and Lightroom work, to be honest) while the majority of my work is done on the MBP.

If you came here looking for Windows 10 controversy you won’t find it here. Windows 10 is like every other major OS/DE out there; it has its strengths and its weaknesses, but it is overall a very solid environment that works just fine as long as you leave your rabid political leanings concerning certain software companies at the door.

Update 8 August – WSL Is Removed From My System

After reading a few shrill articles on the Interwebs about how WSL is another security “attack surface” to Windows 10, I disabled it completely. Perhaps it is, perhaps it isn’t, but the soft-link problem coupled with these rumblings made me to decide to remove a marginally useful capability. Perhaps I’ll revisit it when it’s finally released, but for the time being I have Linux Mint18 running in VirtualBox, and that’s a far more complete Linux environment for me. The command to do this (in either a command or powershell window) is ‘lxrun /uninstall /y /full’

This is the story that convinced me turn this feature off is: Risk From Linux Kernel Hidden in Windows 10 Exposed at Black Hat