the rise and fall of the microsoft empire

1975-1980

Our historical timeline begins in 1975 when an unlikely duo—Paul Allen as Batman and Bill Gates as his awkward “Boy Wonder”—started Microsoft Corporation.  I’m guessing that ro-sham-bo was involved in this decision but incredibly somehow Bill was made the CEO when the company got its start.  Maybe dropping out of Harvard gives you that kind of confidence.

1981BillPaul

1981-2000

Nothing really significant happened until they managed to modify an existing operating system for the IBM PC in 1981 from another company and rename this to MS-DOS. Significant sales of the IBM series of computers and those of their competitors then launched a thirty-year stretch of dominance in the business world in the area of operating systems, software and development platforms.

For most of us, we reasonably dismissed Apple’s hardware and the MacIntosh operating systems as nothing we could seriously use in business outside of the marketing department.

Consumers bought new versions of software and that license was good for life.  It could often be transferred from one computer to the next as long as the last one was de-registered first.  If you built software for Windows, you likely used a Microsoft compiler to do so and you paid for that.  In fact, the Microsoft Technet collection of CDs was quite expensive.

2001

About six years into the “Internet Tidal Wave” as Bill would call it, Microsoft was starting to lose its way.  They tried to dominate in the browser wars but never quite managed to quash the competition.  Others saw their efforts in this area as annoying.  Their software for creating programs, Visual Studio, first hit the scene about four years prior to this.

Google was founded some five years prior and was just beginning to get attention from an investor before they had anything real yet.  In 1999 they moved from their garage to an actual building in Palo Alto.  Yahoo’s popularity as a search engine from a decade ago was waning.  Google’s ad-based revenue from keywords was paying off; they’d planted a money tree which eventually created an entire forest of money trees for them.  It wouldn’t be long until Microsoft’s executives behind closed doors would consider Google their biggest threat.

About this time Apple created a very clever method of provisioning content for one-and-only-one device within the music-delivery space.  The iTunes store would turn out to be the goose that laid the golden egg, as seen in the following revenues.  And yet, it would take years for either Microsoft or Google to realize the beauty in this fulfillment model and to come up with their own versions.

showmethemoney

The “Internet of Things” concept started gaining in popularity at this time.

2009

Microsoft’s attempts at copying Google’s success (MSN Search, Windows Live Search, Live Search) now culminated in the introduction of Bing as their default search engine destination for all things Microsoft.

Apple introduced the first iPhone and the first iPad about this time, noting that the same provisioning model from iTunes was incorporated into both via iOS.  The subscription model of sofware licensing was born with this, if you think about it.  If you wanted to write a program for either, you needed to use Apple’s software to do so.

Google has just introduced Chrome as a browser and would begin their campaign to slowly break Internet Explorer.  The same was true of the Android phone and its related operating system.  It would take a few years for Microsoft to catch up to either the iPhone or the Android before releasing their own app-savvy smartphone offering.

Amazon some three years prior had introduced the beginning of what would be a full complement of cloud-based services to support web development.  It would take Microsoft two full years to realize that they needed to be in this space and they didn’t have their offering ready for a few years more, too late to effectively compete.

Github.com had just celebrated their first year online, hosting over 46,000 repositories by then.  The world of open source was the very antonym to the way that software had been developed prior to this.

The free Ubuntu operating system was released about four years prior to this, backed by the well-funded company Canonical.

2015

Microsoft releases Windows 10, “the last version of Windows” (they claimed).  Rumors suggested that Windows would eventually go from a version-based license model to an annual-subscription model with respect to pricing.  I think it’s safe to say that the market hasn’t really embraced either Windows 8 or Windows 10.

The subscription-based model for Office 365 was introduced four years prior to this so the writing was definitely on the wall:  Microsoft wanted to depart from their former methods of making money and to chase the monthly subscription model.

2015-popular-coding-languages

The world of open source was offering new programmers a wealth of free code.  All they had to do was to take it and make it their own.  Formerly, Microsoft-friendly coding languages like C, C++, C#, VB and .NET dominated the playing field but this graphic shows how the game had changed.

2017

And here we are, present-day.  That curious number 42 now describes the number of years that Microsoft has been around.

Yesterday evening, I attended a very geeky meetup of perhaps fifty or sixty coders and only saw one Windows-based laptop.  Almost everyone had a MacBook of some kind.

I just spent about two hours today installing the free Visual Studio Community 2017 software so that I could—in theory, anyway—alter a free copy of the source code for TightVNC software.  Out of the box, so-to-speak, Visual Studio doesn’t want me to build this project since it uses an earlier target platform (Windows 7 or 8, one would assume).

Microsoft only wants me to make things for Windows 10.

So rather than making it easy for me to build a program that will happily work with Windows 7, they’re forcing me to jump through hoops in order to add the necessary pieces for this to happen.

Add two more hours to this and I find that my installation does not want to download the earlier pieces to allow this to happen.  I’m forced to then upgrade the code to Windows 10 compatibility mode… only to find that the build fails with 528 errors.

The main crux of all these errors appear to be:  “we can’t find common files”.  It’s a very amateur sort of error from a company that’s been providing compilers for several decades now.

I have to think that Microsoft doesn’t want me to do anything with Visual Studio unless it benefits Microsoft.  And this is the core of the reason why I suggest that they’re doomed.

Every time a coder like myself runs into obstacles like these, the usual seed that’s planted inside their head is “this would be easier with another free compiler or another language from someone else”.

2022

Fast-forward another five years and Microsoft will have lost ground on many fronts.  New software development here, there and everywhere will be via some language which wasn’t popularized by Microsoft on computers which aren’t Windows and with browsers which aren’t Internet Explorer or Edge.  Our toasters and refrigerators and our cars will be powered by the Ubuntu operating system or perhaps Debian, a similar free Linux flavor.  These appliances will be connected to our wi-fi and even to the Internet but there won’t be a scrap of anything Microsoft about them.  They’ll be coded up with something that isn’t C#, doesn’t use .NET and doesn’t need Visual Studio in order to compile it.

The only thing with a Microsoft pedigree with some staying power could be some of the websites and services currently served up at Microsoft’s datacenters via Azure.  But Amazon or Google could kill that by simply lowering their own prices for cloud-based services.

ubuntu bash now in windows 10…?

There’s a little-known feature now in Windows 10 which is a fairly awesome piece if you know Linux/Ubuntu and, say, you’re a coder. Microsoft and Canonical got together to add an Ubuntu on Windows subsystem in the 14393.0 “Anniversary Update” OS Build.

The feature is also called the Windows Subsystem for Linux. What’s interesting is that from bash you can actually invoke a Windows executable or one compiled for Ubuntu. It can run DOS batch files as well as shell scripts.

  1. Turn on Developer Mode in Windows 10 -> Settings -> Update & Security -> For developers
  2. Turn on the Windows Subsystem for Linux (Beta) in Windows 10 -> search for “Turn Windows features” -> select Turn Windows features on or off
  3. Restart Windows 10
  4. Go to a command prompt
  5. Enter bash and type a y to continue, noting that this step will take about 20 minutes
  6. When finally prompted, enter a UNIX username (it’s case-sensitive) and a password (again, case-sensitive) which are completely separate from your other credentials

From this point you can run an Ubuntu bash prompt either from the added Start entry or by entering bash in an MS-DOS or PowerShell prompt.

Notes

  • It’s probably not a good idea to use Notepad or similar Windows tools to edit configuration files within the Ubuntu space.
  • You should be able to sudo from this first user as you might expect.
  • Once logged in, you’ll land in a /mnt/c/Users/username location from a Unix perspective.
  • Since the OS is Ubuntu, you would run sudo apt-get update to install things.
  • If you want to invoke Windows executables from a bash session, you probably want to start by adding the SYSTEM32 folder to your path, for example: export PATH=$PATH:/mnt/c/Windows/System32 but since this is UNIX you’ll need to make sure that the capitalization is right for each path.
  • Run lsb_release -a if you’d like to see which release of Ubuntu is running.
  • In theory, you could run bash scripts within a PowerShell script.
  • At this time, it does not support GUI applications.

windows 10 from vm on ubuntu

If you’ve been reading my blog for any time whatsoever, you know that I have been irritated with Microsoft lately. I purchased a new HP laptop with Windows 8, upgraded it immediately to 8.1 Pro and then took advantage of the free upgrade to Windows 10 Pro.

Things seem to work out okay for a bit. I must admit my frustration at Microsoft for trying to be just like Apple. The Microsoft Store mentality, the logging in via Internet-based credentials rather than local credentials, the inability to innovate rather than to just copy. It’s a little sad, actually. There was a time when Microsoft led the industry and now they can’t make a move unless they’re mimicking something that Apple’s already done.

And yet, Microsoft is still the leader in business applications for the moment.

Ubuntu 16.04 LTS

After some ugly automated update that left my laptop is a non-working status, I decided after three months of this that I needed something else. I reformatted the hard drive completely and installed the free operating system Ubuntu Desktop. It’s nearly bullet-proof at this point. There is a manageable glitch regarding the ethernet adapter after a Restart but I’ve got a work-around. (And I’ve installed it on many other computers without this issue—it seems to be related to the wi-fi adapter only.)

Virtual Machine Manager

I was playing around with its features today and remembered that it includes a working VM solution. You can create a virtual machine, spin it up and run it from Ubuntu. I wondered if I could then run Windows 10 Pro again in a VM session on this same laptop.

WindowsOnUbuntu

Windows 10 Pro in a Virtual Machine

Why yes I can. (As in “been there, done that”.) The actual download of the ISO image of Windows 10 took more time than the actual installation itself. Here’s the overview of that install.

  1. Download an ISO image for Windows 10 and indicate your language choice
  2. In Ubuntu, select the Search item and look for Virtual Machine, selecting Virtual Machine Manager
  3. Create a new virtual machine, selecting the ISO file from the first step
  4. Give it at least 20248 RAM and at least 16GB hard drive space (I initially selected 3072 and 80 for these)
  5. Go with the defaults and give your VM a name, I chose Win10Pro for this
  6. Watch it go through the standard Windows 10 Pro installation and at the Product Key entry screen choose the option to do that later
  7. It will quickly run through the installation (much faster than it normally would or so it would seem)

Activating It On-the-Cheap

I followed the prompts afterwards to see what Microsoft wanted to charge on their Store for a legitimate Product Key. Microsoft wanted $199.99 for this.

So I searched on Google for anything less than this and wasn’t disappointed. eCrater just sold me the same thing for $10. They provided the Product Key, I entered it in and it’s now activated without any hassle.

Oddities

Since this is one of my first forays into VM on Ubuntu, I’ll note a couple of strange things which I saw.

  • Choosing the full-screen option seems to select a more squarish/middle part of the laptop’s screen rather than using its entirety.  I will likely have to research this or just ignore it.
  • Once in full-screen mode it’s not apparent how one gets out of that and back to Ubuntu.  It looks like pressing Ctl-Alt may bring down an upper menu. I’ve also heard that Ctl-Alt-F seems to toggle the cursor out of the VM window’s control. I was ultimately able to toggle from full-screen AND be able to move the cursor from its window, (a major breakthrough).

That said, I was able to finish up a session running Windows 10 Pro and then within that window, shut it down as you might normally do. The Virtual Machine Manager then informed me that this VM was down.  It’s possible then to alter the VM’s device settings, say, to change the available amount of RAM.

And the next time I need Windows, I can just spin up the virtual machine image again. I’m thinking that this is better than multi-booting, as I’ve done in the past. (I’m looking at my dual-boot MacBook with Ubuntu on it.)

Believe It Or Not…

The original Windows 10 Pro networking bug isn’t seen in this Windows-on-Ubuntu setup. It actually works… better?

I guess I’ll need to use it more to find out but it somehow seems faster than I remember. How is that even possible? Before, the native-mode Windows 10 Pro had access to all 6MB of RAM and now, it has only 3MB. Granted, I haven’t tried to run several programs at once on it and I haven’t installed Office 365, for example. We’ll see. I’ll keep an eye on it and let you know.

windows 10 sucks balls

Seriously. So today’s saga ends with me giving up on my relatively-new Windows 10—based laptop as just a lost cause. Since around November, it’s had its microprocessor firmly stuffed up its I/O port.

The Symptoms

The symptoms began about the same time. The Mail app just failed to sync: no new email.

Further troubleshooting suggested that the wi-fi adapter wasn’t consistently connecting to my own zone and not that of one of my neighbors. Tracking down the correct settings allowed me to definitely not connect to that other zone. Although that worked, still no resolution of the problem.

I thought updating might help. Unfortunately, Windows Update thought that it wasn’t connected to the Internet so I couldn’t update. I could browse the Internet with my browser but it just didn’t think that I was connected to the Internet.

The Attempts

I tried using only the wi-fi. I tried using only an Ethernet connection. Same result.

I tried opening an administrative MS-DOS console and entering a variety of terse commands in an effort to clear my DNS cache, reset my IP adapter’s DHCP lease, reset the WINS catalog, you-name-it.

I tried rebooting. Oh yeah, I rebooted the fuck out of that thing. Still, no-go.

I wanted to adjust the network’s location so that instead of thinking that I’m in a public space, it would know that I’m in a private place. But since it thinks I’m not connected, you can’t do that.

The Research

It turns out that I’m not the only one experiencing this. Almost 70,000 viewers on one Microsoft help page alone and thousands of participants in the discussion. Keep in mind that a subset of the users think that this is an email problem, another just-as-large collection of users think that their Windows Update has a problem, another several thousand think that they have a Firewall problem, another several thousand think that they have an Ethernet adapter problem…, (you get the point).

It looks to me like Microsoft has painted themselves into a corner. If Windows Update now doesn’t function, then you can’t easily push out a fix. You then have to rely upon the millions of users to ask you for help.

The Fix

Fortunately, it hit upon me how I could fix the problem which I now share with you.

buy-a-macbook

Update

Now that I’ve formatted the HP laptop with Ubuntu 16.04 LTS, I’ve been able to spin up a virtual machine and run Windows 10 Pro in it… and it doesn’t have the aforementioned bug.  Read more

why PowerShell sucks so badly

Here, I attempt to answer the rhetoric question, “Why does Microsoft PowerShell suck so badly?” Where to begin…? It has such promise, it’s clear that someone has spent much time coding everything. Ultimately, there appears to be power under that shell and it’s probably truthful to its name. But if you can’t use the tool in the real world, it should be renamed to Microsoft PowerlessShell.

“But if you can’t use the tool in the real world, it should be renamed to Microsoft PowerlessShell.”

It’s almost like a group of scientists in a desert setting somewhere—think “Manhattan Project”—created a collection of methods useful for annihilating the planet and then as almost an afterthought, enough preventive controls were placed upon its use that literally nobody could in fact blow anything up.

Today’s task is to automate the creation of a VPN button for Windows 10—based remote users here at the office. End-users then in theory can just double-click a PowerShell script that I’ve placed on a SharePoint server.  I would then individually share the link with them which would remotely install the new VPN profile. Sounds easy enough.  In fact, it sounds much easier than the two-page long tutorial in a Word document which attempts to educate them how to do all this manually.  Have you ever seen how long an L2TP shared key phase can be?  It’s pretty bad.  Just think of all the support calls I’m going to get if I can’t script this.

Is the PowerShell documentation easy to use? Hell no, it’s not. I’ve just spent a full hour trying to piece together the script required from this hobbled-together documentation on Add-VpnConnection. Does my script work under a test rig? I wish I knew, because at the moment I can’t actually run the script in any form or fashion because Microsoft doesn’t want me to.

“Does my script work under a test rig? I wish I knew, because at the moment I can’t actually run the script in any form or fashion because Microsoft doesn’t want me to.”

Now granted, I’m an Administrative user on my newly-upgraded Windows 10 laptop. The script fails with some terse error message which suggests that I need to run the PowerShell command as Administrator.  Well, that would foil things here in the real world because I’m trying to have the end-users run this script remotely so that I—the administrator—don’t have to be there in the first place.

So I doggedly trudge ahead and end my session and open up PowerShell by right-mouse clicking it and choosing Run As Administrator.  And yet, this still doesn’t work.  This time it fails with another terse error message which suggests that Set-ExecutionPolicy might help.  I then research this to find that “Unrestricted” is the probable attribute but when attempting to run this, I get another terse error message suggesting that I can’t change the policy.  Seriously?

I could now go back to my earlier research and re-learn how to digitally sign a script so that I can run it.  But the process to create and to troubleshoot a script usually requires multiple iterations before the script works perfectly.  And this is especially true since nobody yet on the Internet has provided a good example for creating a VPN tunnel to a SonicWall over L2TP/Ipsec with a pre-shared secret and authenticating to the firewall instead of the domain controller.  Designing a script like this takes trial and error.  Adding a signing phase between each script attempt effectively means:  I’m not going to do this.

“Adding a signing phase between each script attempt effectively means:  I’m not going to do this.”

In short, this is why Microsoft PowerShell sucks.  If you have to sign scripts just to run them while testing then it’s not worth the effort.  Why not include a button in the PowerShell IDE which allows me to “Sign & Execute” my script attempt?  And if I don’t have a digital certificate then open a dialog box to gather the information to magically make this happen.  Or even better, just allow me to create and run scripts without all the nonsense.  How about a big toggle that says “Unsafe Mode” versus “Safe Mode”?