Making Progress

It seems that every Monday afternoon when I sit down to write this column, Microsoft Updater tells me that a patch for Microsoft Word is available.  So every Monday afternoon, I dutifully download and install an update to Word.  A thought occurred to me as I sat and waited the three or four minutes it takes for the update to complete.

I’ve probably spent more than half my time in front of a computer just sitting and watching progress bars.

All you DIY computer gurus know exactly what I’m talking about.  Every time you download applications from the Internet, what do you see?  A progress bar.  Every time you have to apply software updates, what do you get to watch?  A progress bar.  Do you need to reboot your system for some reason?  Guess what, another progress bar.

Of course, the intention of the progress bar is noble.  Most of what a computer does is not visible to the user.  The progress bar is how the computer says, “Hey, be patient!  I’m working on it!”  And back in the early days, we were glad see it.  As a matter of fact, we designed our own progress bars to show off.  Well, we never admitted that – the intent was to always “ensure optimal program performance.”  However, the program always seemed to run better when integrated with a cool progress bar.

The classical progress bar possesses a couple of flaws, however.  The standard left-to-right rectangle fill assumes that a process will run from beginning to end 1) at a reasonably constant pace, and 2) without error.  In reality, poor software design, bad data and click-happy users tend to invalidate these assumptions.  The resulting condition consistently ranks in the top three of the most frustrating computer issues – a stuck progress bar.

Software designers utilize several techniques to mitigate the occurrence of stuck progress bars.  For example, the rectangular progress bar can be changed from “fill” to “bounce.”  Instead of displaying progress from 0 to 100%, the bounce bar simply restarts in the reverse direction and repeats until the process completed.  While the users won’t have any idea when the process completes, at least they believe the process is running.

Designers also use other forms to display progress.  First popularized in the early-1990’s with the Mosaic browser, variants of the spinning icon are now ubiquitous.  While more graceful than the angular progress bar, the spinner still only displays activity.  While useful, a hung application forces the user to helplessly endure the endless rotations of the spinning wheel of death.

Interestingly, the behavior of the progress bar influences the user’s perception of application performance.  A faster spinning indicator makes the application seem its running faster.  A progress bar that accelerates toward completion gives the indication of accelerating performance.  A progress bar that “empties to the left” feels faster than one that “fills to the right.”

Designers have spent a great deal of effort to make applications seem fast.  Wouldn’t it be interesting to transfer these techniques to every day life?  Specifically, what would happen if you replaced traffic lights with LED progress bars?  Would wait times feel shorter if we watched a red bar empty?  Would drivers feel more confident when approaching a stale green if they saw that the bar is three-quarters full?

Yes, I know what you are thinking.  Traffic lights won’t matter when we all have driverless cars.  But its still fun to think about.  😉 


BASH on Windows

Bash on Windows (circa 1999) – The action of voicing a negative opinion toward Microsoft and/or the Windows operating system, typically, involving a large degree of sarcasm.

Bash on Windows (circa 2016) – Something entirely different…

Of all the ways to describe the long-heated rivalry between Windows and Linux, a calm, rational difference of opinion would not be counted among them.  The choice between Windows and Linux elicits passionate responses and spirited discussions.  Each tribe champions their cause with a religious zeal.  At its height, the battle was referred to as a Holy War between operating systems.

To be honest, the rivalry was much more intense during the first few years of the tech bubble.  At that point, Linux was still an unproven environment.  Very few executives were willing to trust their businesses to a first-generation platform largely maintained by an anonymous group of hackers working in their spare time.  However, IT managers quickly noted one quality that could really help them meet their budgets.

Free is a good price. 

And thus started the open source movement, and Microsoft’s battle against open source software.  In the early days, Microsoft repeatedly denounced open source software as destroying intellectual property.  “Linux is a cancer that attaches itself in an intellectual property sense to everything it touches,” said Microsoft CEO Steve Ballmer in 2001, stating a principle that would guide Microsoft for the next decade.  However, during that time Microsoft’s market share dropped from >90% of the desktop market and >55% of the server market to just under 12% of the world device market in 2015.

Well, so much for taking a principled stand.

Today, Linux and other open source products are no longer unproven platforms.  Nearly 80% of companies report using some open source package to run their business.  Faced with these realities, Microsoft changed direction and started to embrace the open source movement.  Microsoft recognized that to succeed in today’s devices and services world, developers must embrace your platform.  With >70% of developers adopting open source, well, that doesn’t leave very many options, does it?

So in April 2016, the seemingly impossible has occurred.  As a result of a partnership between Microsoft and Canonical, the Ubuntu version of Linux may now be run natively on Windows 10.  Just to be clear, this is not a recompiled version of Linux such as Cygwin.  Microsoft has developed a Linux interface called the Windows Subsystem for Linux (WSL) that translates Linux syscalls into Windows syscalls.  Windows run a bit-for-bit, checksum-for-checksum copy of the Ubuntu ELF binaries.  This is truly Linux running on Windows!

Every developer understands the hassles of running Windows and developing in Linux.  Typically, a virtual system or emulator is needed just to open a simple terminal screen.  With Ubuntu on Windows, the developer no longer needs to worry about a VM.  It goes something like this,

1.     On Windows 10, open the Start menu.

2.     Type “bash” [enter]

3.     A console shell opens running /bin/bash

4.     The users has full access to all of Ubuntu user space including apt, ssh, rsync, find, grep, awk, sed, sort, xargs, md5sum, gpg, curl, wget, apache, mysql, python, perl, ruby, php, gcc, tar, vim, emacs, diff, patch and so on.

Pretty cool, right?  OK, now here are the caveats straight from the Microsoft blog.

  • This is beta software.  There are some rough edges and some things will break.  Do not expect every bash script you write to run perfectly!
  • This is a developer toolset to help developers write code.  This is not a server platform!  There are other Microsoft products – Azure, Hyper-V, Docker – to run production software.
  • Sadly, Bash cannot call Windows apps and vice versa.  Sorry, you can’t open Notepad from Bash, or run Ruby from Powershell.  🙁

So, are you ready to explore Linux on Windows?  First, you need to be a member of the Windows Insider program that has access to early release software. From there you can find the installation details at,

Have fun!


 The topic doesn’t matter.  Even a simple comment regarding that latest (and cutest) cat video causes you to cringe.  This has got to be some extreme, literary superpower.  No human could possibly write so many offensive emails about such inane topics!

Of course, I’m not talking about any one person.  We are all guilty of sending that poorly written email.  It’s that email that sounds good when we send it, but doesn’t sound so great when your boss reads it back to you.  A poor word choice, an ambiguous phrasing, a failed attempt at humor – all of these items lead the reader to wonder, “What the heck were they thinking?”  And before you know it, a simple email thread turns hostile.

What makes an email sound rude?  While everyone has their own pet peeves, most emails considered snarky or abusive contain similar language.

  •     ALL CAPS – This is perhaps the most widely known method to escalate a written message.  It’s very simple – “ALL CAPS” = “yelling”.  SO DON’T YELL!
  • Unnecessary Punctuation – An exclamation point is used for emphasis.  However, multiple exclamation points do not add more emphasis.  They simply make you look like a troll.
  • Multiple personality words – The meaning of many words depend on a context not present in an email.  For example, the word “fine” could mean two different things: 1) That sounds good, or 2) That’s a horrible idea, but I’ll go along since I think you’re a butthead, and I want to watch you suffer.  Likewise for “Thanks”
  • But, actually… – Whether written or spoken, these two words tend to emphasize a single item:  I’m right, and you’re wrong.  If that’s the message you are trying to convey, then they might be the right choice.  Most of the time, you’ll want to try a different phrasing.
  • Demands – Engineers are notorious for placing demands in email.  Their training requires specificity, and their dry, yet charming, personalities hinder their ability to catch the snarkiness.  Please don’t hold it against your engineering team.  They just want to be loved!  😉

This list is by no means comprehensive.  A quick search of the Internet reveals hundreds of different sites dedicated to improving your email etiquette.  Go ahead and burn an hour or two on self-improvement.  It will go a long way to warming up your online personality.

Getting the Client Computer Name for RDP Sessions

A situation occurred where we needed to obtain the computer name of all clients connecting to a remote desktop server.  Thomas discovered the following article.  For anyone needing a similar capability, you can obtain a great deal of insight from this post.

Thanks to Ryan Ries for the post!  Enjoy!


NASA coming to Augusta

NASA’s open innovation incubator, the International Space Apps Challenge, will take place April 22-24. The global main stage for this year’s event will be in Pasadena, California, with local events taking place simultaneously in 193 locations spanning 72 countries.

One of those locations is Augusta, GA.  (BTW – Only 1 of 2 locations in the southeast and the only location in Georgia.) is hosting the Augusta event, and they are looking for teams of students and interested hackers to participate.  This year, NASA is offering 26 challenges in six mission-related categories: Aeronautics, Earth, International Space Station, Journey to Mars, Solar System and Beyond, and Space Technology.

This year’s challenge will include a Data Bootcamp on April 22, streamed live from the global main stage. The bootcamp is open to the public and will give participants the opportunity to learn new skills with computer coding and data.

On April 23 and 24, participants are asked to develop mobile applications, software, hardware, data visualizations and platform solutions that could contribute to space exploration missions and help improve life on Earth.

Teachers, for more information on the challenge, see  To register, go to