a tale told by an idiot

Windows10Version14393.67I have been wrestling recently with a series of self-imposed requirements that sprang from two personal needs; the first being the development of “sane” native tools and libraries for manipulating Raspberry Pi 3 built-in peripherals (GPIO being at the top of my list), and the second being a way to find a common language and framework that would work across multiple operating systems, those operating systems being Arch Linux ARM, Mac OS X, and Windows 10. And a web framework would be really nice to have because I’m really getting tired of having to use ssh all the time.

So I did a bit of research and decided to focus on Python, specifically version 3.5 and later. That version of Python is available across all those platforms, and appears to work equally well across them. That means that trivial and not-so-trivial Python applications that aren’t platform specific work equally well across all three. That means I can do a good deal of work on either my Samsung running Windows 10 or my MBP, which includes debugging. I would then transfer the code over to the RPi3 and do final integration there.

The problem I ran into was the choice of a Python web framework. For reasons I won’t go into here I decided to install and learn how to use Django. I’ve successfully followed the getting started tutorials on both the MBP and the Samsung. On the MBP I’ve used Homebrew  to install a number of up-to-date software tools, specifically Python 3.5, while on Windows I downloaded and installed Python 3.5 from the Python site. The only comments I have to make about installing Python on Windows 10 are these:

  • Install Python at the root of the C: drive (i.e. C:\Python3.5, for example). This makes the path to Python a lot shorter than where the default is, somewhere in your private user area.
  • Assuming you installed Python in C:\Python3.5 (for example) you should also add the Python Scripts folder to the path, i.e. C:\Python3.5\Scripts. This will put pip and django-admin in the path and make the instructions for using both the same as under Linux and Mac OS X. I don’t know why the tutorial instructions didn’t point this out.

As I said, running the Django utilities works just fine on Mac OS X and Windows 10. Getting Django installed on Arch Linux ARM doesn’t work, either as a pacman package or via pip. There is no package for ARM Arch, and even though the pip install seems to work, trying to create a default site with django-admin on Arch ARM fails, with django-admin complaining there is no django.core. This makes the second major framework failure I’ve run into under Arch ARM, the first being the failure of Express under Node.js. The Express failure was particularly annoying, as it worked about a year ago when I was investigating Express and Node.js on the Raspberry Pi 2. If anything, these failures have proven that the Raspberry Pi 3, at least under Arch Linux ARM, is not the full first-class client that regular installations are.

I suppose I could be a hero (to someone) if I could find and fix the problems I’ve run into on the Raspberry Pi 3, but I don’t feel particularly heroic. I’e gone down multiple paths now with trying to build a full stack of software with a web front end on the RPi 3, and it’s not gone well. One reason for doing the same types of activities on a “regular” computer is to see if the tutorials are repeatable, and they are. It’s trying to move over to the RPi 3 with Arch Linux where it breaks down.

Perhaps it’s time to realize that if I want a better development experience that I need to spend more money and buy a more commercial system than the Raspberry.

As for where the title came from, here it is:

Life’s but a walking shadow, a poor player
That struts and frets his hour upon the stage
And then is heard no more: it is a tale
Told by an idiot, full of sound and fury,
Signifying nothing.
Macbeth, Act 5, Scene 5

The quote about life could just as easily apply to software development.

how to remove skype from windows 10 anniversary (build 14393.67)

Windows10Version14393.67In the last post I stated that Skype hadn’t been re-installed. Turns out I was wrong. When I typed ‘skype’ in the search box I got the Skype application, which I at first thought was a reference to the version in the Windows Store. That was actually the official Skype application.

To remove Skype completely, I performed the following:

  1. Open up a power shell
  2. Type ‘Get-AppxPackage *skype* | Remove-AppxPackage’ at the prompt
  3. Search for skype again, and get ‘No results found for ‘skype”

You’re welcome.

windows 10 build 14393.10

Windows10Version14393.10It’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

windows 10 build 14393

Windows10VersionIt’s no secret I’ve been spending a considerable amount of time working only with my MacBook Pro. The tools I want and need are available on that platform, and I like the way Mac OS X works and looks. When I’m not working on the MBP I’m working with Linux, either with the old Samsung notebook and Ubuntu, or via virtual machine guests hosted on VirtualBox under OS X. The only time I even power on my Windows 10 notebook is to pick up the security updates that Microsoft continues to release. I am grateful for those updates.

And then one day I finally decided to become part of Microsoft’s Windows Insider Program. I put this notebook on what Microsoft refers to as the “slow ring” for early releases. I get early releases that are as stable as possible, and on a slow release cadence; hence the name. Tonight build 14393 was downloaded and installed on this system. This should be the final early release before the official Anniversary release.

Nothing horrible has happened. If anything, the overall Windows 10 system is fast and stable. The look and feel of the desktop has been changed in subtle ways so that it’s now noticeably different from what this Samsung notebook was originally sold with, Window 8 Pro. I played a bit with some of the applications, one of which is Edge, the browser replacement for Internet Explorer. I must admit I like the way it operates. I reminds me a lot of Vivaldi. I installed the Adblock Plus browser extension to turn off the incredibly intrusive and annoying ads from Wired and Ars Technica.

I also decided to see how compliant it was, so I visited the Google Dart web page and brought up DartPad, the browser-based editor and execution test tool.

From what I can tell there is absolutely no difference between how DartPad works with Edge or any other browser under Windows 10 (Vivaldi, Chrome, and Firefox). It just works. Oh, and I’ve enable the dark theme, just like I’ve enabled every other application’s dark theme if it has one. Not only did I run this sample Dart example, but I wrote this entry with Edge. I’m thinking maybe that Edge is a pretty good browser. Windows 10 is certainly being refined into something different than Windows 8. Please note I liked Windows 8 quite a bit and had no issues using it. I was not happy when Windows began to “regress” back towards Windows 7 and earlier. I was very unhappy with Windows 8.1. But Windows 10 might not be so bad.

Still, I’m distrustful of Microsoft; because of that mistrust I’m still on the long path away from Windows, only using it when I have to, or when I want to try something out, like this little test. For the most part it sits powered off in its bag until I pull it out to check for security patches and updates. But for people who are still committed to the Windows platform I believe that Windows 10 Anniversary edition, which is to be released in August, will be a very good release.

i’m not a “windows guy” anymore

Windows_10_LogoI’ve been a Windows user since Windows 1. I still have my Windows 1.03 SDK from the late 1980s, siting in its genuine cardboard box, complete with three-ring binders and 5 1/4″ floppy drives.

I have suffered through every release, including Windows 2, 286, 386, 3.0, 3.1, Windows for Workgroups 3.11, Windows 95/98/ME. I was a beta tester for both Windows NT 3.1 and Windows 95. Along with that cardboard box of Windows 1.03 SDK I have a huge crate filled with every Chicago/Windows 95 beta CDROM Microsoft ever shipped to me. And I faithfully installed every one and reported every problem I ran across. When it was finally released I personally drove down to a local FedEX office to pick up my gold copy. And I drove to Comdex Atlanta in 1995 to be at the local launch party.

And not just a Windows user, but a Windows developer, using Borland’s tools (Turbo Basic and C) through the Microsoft tools (VB, C, C++, etc), Java, Eclipse, and on and on. I used it, helped sell it, developed on it, and supported it across many decades.

With NT I have installed an run every single release and service pack since Windows NT 3.1, with the notable exception of Vista. I skipped from Windows XP to Windows 7. When Windows 8 came out I actually bought a full-blow Samsung 17″ notebook with Windows 8 installed. I loved it, far better than any previous release of Windows. And then a funny thing happened.

The majority of Windows users decided they didn’t like Windows 8, especially the start screen. No matter that it was dead simple to set it up to navigate between it and he desktop with mouse and keyboard, in spite of what its detractors said. The dissing of Windows 8 got so bad that Steven Sinofsky left Microsoft (quit or fired, it doesn’t matter). And Windows 8 began to change, to move back to what had come before in earlier releases. Microsoft went from being a leader to being a mere follower of public whim.

But I kept faithfully upgrading my Samsung through all the Windows 8 updates to Windows 8.1, and then when Windows 10 came out I upgraded to that. I even upgraded the 1TB spinning HD on the Samsung to a 1TB SDD, a Samsung 850 Pro. The change to SDD was amazing and breathed new life into the system as a whole.

A funny thing happened during the transition to Windows 10. Maybe it was the forty years of continuous Windows exposure (even more if you consider DOS before that). Maybe it was how Microsoft transitioned from Windows 8 to Windows 10. Or how Windows 10 just feels, well, odd. But within a month of upgrading to Windows 10 I bought my current Macbook Pro, and that’s the system I now turn to for day-to-day work as well as anything of significance. I still have the Samsung because it still has a number of important (“legacy”) applications and data I bring up from time to time. And I still faithfully power it on at least once/month to pick up the latest OS and Microsoft application updates. But all my interesting creative work (with the notable exception of Lightroom and photography) is done on my Mac, and special work with my Raspberry Pi is done with (ironically) an even older Samsung notebook running Ubuntu 15.10.

I’ve read the critics of Mac OS X complain rather noisily about how poorly it currently runs, but based on my experiences with all three (Windows, Mac OS X, and Linux), I find I turn to the Mac for nearly everything. It has its quirks to be sure, but every OS does.

I like where the Mac and OS X are at. Far better than where Windows 10 seems to be headed. If there was one word that summed up my overall feelings about the Mac and OS X, it would be quality. Windows 8 had it. Windows 10, not so much. The Mac is my insurance against the strange path Microsoft has plotted and seems to be headed down, a path I’m not comfortable following myself. I’m not accusing Microsoft of some sort of evil and nefarious plot like other noisy critics have cried and seem to continue to cry out. I’m just not all that crazy about it anymore. For me, if I want to do commercial OS development and support I can turn to Linux, and for the more complex work, I can turn to Mac OS X, which is a nice balance between standard Microsoft Office workflow and Unix/Linux tools and philosophy. Odd things are happening at Microsoft and as a consequence to Windows. Mac OS X is my safe harbor against the unknown and unknowable happening in Redmond.