The sad transition away from Microsoft Windows


I became a developer because of the rapid speed that you can prototype an idea and bring it to fruition. It is a satisfying feeling to produce something that is useful so quickly. I started coding at age 11 on the commodore 64. My first serious program was an oscilloscope interfacing with the parallel port and a self made circuit board when I was 13.

I have developed on a number of platforms, which was sometimes different that the platform where the product is eventually hosted. But I’ve learned along the way that nothing beats getting as close to the real thing for reproducability – i.e. performance characteristics, interoperability, or debugging.

There have been quite a few development tools that have led me to use Windows. Visual Studio, SQL Server Management Studio, and the myriad of smaller tools that one or another were not available on another platform (Fiddler, “Modern Web Browser”, Serious file explorer). Companies continue to sponsor my MSDN subscriptions and allowed the me unfettered access to all the Microsoft product range unhindered.

I’m showing my age here, because your saying to yourself that great alternatives to all these exist. The key here is the word alternatives. It infers that the original was the benchmark to be compared to. But of late, the alternatives are exactly the same product compiled onto a different platform – for example, browsers and IDEs, and cloud options to as of late, i.e. Google docs/sheets, and Jupyter.

I had a few years developing while using the Linux and Mac OS. However my platform of choice still leans towards Windows. Almost everything found on other platforms can be found on Windows, with some pointy exceptions (i.e. iOS development). Bash, regex, gnutools, databases, IDEs – they are all there. I am fond of shortcuts, but they are all there now for all the major platforms. Even free anti-virus provided my Microsoft, if you trust it…..


Windows has had some rough releases. Windows Me was a throw-away. Windows NT wasn’t a serious desktop platform thus wasn’t for development. Vista and 8.x reminded everyone how bad it could get. And now finally Windows 10 seems like a deliberate attempt by Microsoft to alienate it’s developers.

  • Windows firewall is a joke – any app/malware can add a rule for itself
  • The OS has ads in it (but wait, didn’t I pay for this OS??)
  • Great features have been removed and replaced with paid “premium” features
  • With each update something breaks – re-installation is usually the only option
  • New revenue generating features are hard to remove (cortana, app store etc)
  • The server version installs new apps from the internet without consent – WTF??
  • Forced Windows Updates have killed many PCs in our company
  • Forced reboots mean sometimes a work PC can’t be reached remotely
  • There are 2 versions of the UI – an old one, and a new one without enough features to complete whatever task! For example, try setting up a VPN client!
  • The OS size has bloated out to 30GB
  • Windows start menu is so bad that a greate alternitive called “Classic start menu” is popular

Visual Studio was really stable with version 7, and again with version 2008 and 2010. With 2013 a lot of auxiliary features were wired in which jeopardized the stability of the development environment. It has continued down-hill since then. We have special scripts to delete our .suo files with VS 2015 and 2017 just so that we can open the solution. Thinks like TypeScript, BCL and nuget are highly problematic.

SQL Server Management Studio and SQL Server stand out above the competition for the range of reliable features. The 2000 release had a number of features that made me start recommending it as the database of choice, along with how stable it was. However, the product is being collapsed into Visual Studio, and with 2015 its no longer stable (and 2017), yet has no valuable feature enhancements since 2008!

Windows shell has been replaced with powershell. I never liked windows shell, and always used a *nix alternative like cygwin. Now the git bash shell works so well, why would I look back? So I skipped learning powershell.

Windows Explorer had to be discarded around 2008 as Microsoft tried to make it into something for the consumer to navigate their media, not understanding that navigating the filesystem and priving a way to see your media are two completely different things. I went to xplorer2, but System Commander was equally good.

The filesystem got a lot worse. The windows folder is at 30GB, with most of the files being duplicates. Microsoft tells us that they are different versions, and are needed to support uninstallation/rollback, but recall that uninstallation is not supported for development environments, and is on a “best-effort” basis.

Windows Networking looks like it has been rebuilt 4 times, keeping all the previous baggage. With each service pack a new technology comes along that *almost* no one wants or ever knows about/uses, and that must be supported ad-infinium, and show up as numerous Windows Services, menu options, Filewall exclusions and registry entries.


As serious alternatives to Microsoft versions have sprouted, I have leaped on them. For databases this has been dbForge, DBeaver. For Visual Studio this has been Jetbrains. Powershell was never a consideration and git bash has been not only the best I could find, but a really good shell. Most other development tools are platform agnostic, but I have a VM on standby for when when it has to be run on Windows.

The breaking points are:

  1. Development environment must be stable
  2. No ads while working
  3. No risk of viral infection
  4. No risk that OS wont come back up after reboot
  5. If I am building apps to run on Windows, don’t try to make money out of my development environment – the OS licensing will make up for it!



I tried the Mac. I was so excited when they went to x86. But it isolates the developer from the OS so completely that I was discouraged. Also on a physical level, my wrists are slack and get cold on the metal south of the keyboard – I’m lame I know. The form factor and weight is great, and pretty much everything will work on this OS now.  I still use the Mac mini for some things and I have hope that one day it will become my primary OS.

Ubuntu is my alternative of choice, although I would never recommend it. I like regex’s, command line, and file-based configuration, but it’s interoperability is still not there after 2 decades. Almost all servers are running a flavor of linux, and when reproducing a production issue, spinning up a VM is easy. However linux offers lots of native ways to do this quickly with virtualenv, docker or a VM.

(While writing this, Windows just asked me to reboot for a windows update… no kidding..)


There are hundreds of thousands of active developers building for their platform, and together we have made Microsoft number 1, or at least kept it in the top spot. People still update to the latest Windows OS because developers make consumers do it by adopting the latest Windows features and forcing version upgrades, or because the app can only be found on Windows. Why are developers so loyal to Microsoft? Microsoft played about a 50% role in my development carrier, and with age comes conservatism and reluctance to change.


I am motivated by curiosity, innovation and excitement. Microsoft’s betrayal of it’s customers and developers is getting in the way of this and forcing me to seek these thrills elsewhere. Microsoft no longer offers the most compelling products. For .NET there is python. Java can be written anywhere. Jetbrains has great development tools for nodeJS, javascript, HTML and PHP. IDEs like dbForge and DBeaver mean that you can give up the Visual Studio IDEs (even though I am still struggling to find a better SQL query planner than SQL Server).


  1. Push Windows into a VM. The good thing about this approach is that it requires effort to access the VM, so any viable alternative in the native OS will always be tried first.
  2. Spend lots of money on a Apple laptop. Just the huge expense will encourage adoption, which will disentagle me from my M$FT dependence.
  3. Join an open-source community working on Ubuntu desktop features – whatever annoys me most about Ubuntu – redirecting OS frustrations into bug fixes and feature enhancements is a simple way to doubly benefit

December 28, 2017 · admin · No Comments
Posted in: Tech

Racquetball & Squash courts in SF

September 6, 2017 · admin · No Comments
Posted in: Sport

Code to get SQL table and column schema from Entity Framework


public static class Map
 static Map()
 var doc = new XmlDocument();
 using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("src.Admin.Entities.Model.msl"))
var nodes = doc.SelectNodes("EntityTypeMapping").Cast<XmlNode>();
 LookupTableByType = nodes.ToDictionary(
 n => (NodeType)Enum.Parse(typeof(NodeType), n["TypeName"].Value.Split('.')[1], true),
 n => n.SelectSingleNode(@"MappingFragment/@StoreEntitySet']").Value
 Tables = nodes.ToDictionary(
 n => (NodeType)Enum.Parse(typeof(NodeType), n["TypeName"].Value.Split('.')[1], true), 
 n => n.SelectNodes("ScalarProperty")
 s => s["Name"].Value,
 s => s["ColumnName"].Value
 public static readonly Dictionary<NodeType, string> LookupTableByType;
 public static readonly Dictionary<NodeType, Dictionary<string, string>> Tables;

May 5, 2013 · admin · No Comments
Tags: , , ,  · Posted in: MSSQL, Tech

SQL to concatenate column values from multiple rows


SELECT DISTINCT L2.Issue, substring(
 (SELECT ',' + L1.Label AS [text()]
 FROM jira.label L1
 WHERE L1.Issue = L2.Issue
 ORDER BY L1.Issue
 ,1000) [Labels]

March 27, 2013 · admin · No Comments
Posted in: MSSQL, Tech

SQL CTE to split a delimited string into a table

DECLARE @ListString varchar(8000)
SET @ListString = 'a,b,c,d'
DECLARE @List table (Item varchar(max))
 ;with cte (item, list) as
 select cast('' as varchar(max)), @ListString
 union all
 select cast(left(list, charindex(',',list+',')-1) as varchar(max)) item,
 stuff(list, 1, charindex(',',list+','), '') list
 from cte where list <> ''
 select item
 from cte
 where item <> ''

February 7, 2013 · admin · No Comments
Posted in: MSSQL, Tech

What’s next for free downloads after the fall of FBI anti-piracy notice

With being shut down, it is quite possible that more will follow. HotFile, FileSonic, UploadKing, UploadHere, FileServe, DepositFiles, xShare, wFiles not to mention a hundred others could all go any day now. So what’s next? Torrents! Torrents may be the only way left to host files on the internet without needing to have a fat internet connection and server.  Come sites are already doing it – take a look at ubuntu (a linux distro) for a non-warez download.  With ever more users becoming familiar with bittorrent and other torrent clients as warez/serials/cracks sites get shut down, it makes sense that the technology will be used for legal downloads as well. Plenty of usenet/newsreader users have already made the switch.

BitTorrent torrent download client

January 23, 2012 · admin · No Comments
Posted in: Free Software, Tech, Thoughs

C# Generic types

Code snippet:


August 18, 2011 · admin · No Comments
Posted in: ASP.NET, Tech

ClearTrace – Free SQL Server trace analyser

Download: ClearTrace


August 18, 2011 · admin · No Comments
Posted in: MSSQL, Tech

Bypass OS version check for applications and installer

Download and install Microsoft Application Verifier tool. This tool is free and you can google for it. Run the tool, pick “Add Application” from the file menu and browse to the software setup executable program you are trying to install. Add it. Open the “Compatibility” node on the right and check HighVersionLie. Right click it after checking it and pick properties. Fill in compatible OS properties to fool the setup program. Save. Run the setup program while the Microsoft Application Verifier still running.

Operating System Version Number Other Information
Windows 1.0 1.04 
Windows 2.0 2.11 
Windows 3.0 3 
Windows NT 3.1 3.10.528 
Windows for Workgroups 3.11 3.11 
Windows NT Workstation 3.5 3.5.807 
Windows NT Workstation 3.51 3.51.1057 
Windows 95 4.0.950 
Windows NT Workstation 4.0 4.0.1381 
Windows 98 4.1.1998 
Windows 98 Second Edition 4.1.2222 
Windows Me 4.90.3000 
Windows 2000 Professional 5.0.2195 
Windows XP 5.1.2600 Current SP3
Windows XP Professional x64 Edition 5.2.3790 
Windows Vista 6.0.6000 Current Version changed to 6.0.6002 with SP2
Windows 7 6.1.7600 RTM

May 12, 2011 · admin · No Comments
Posted in: Free Software, Tech

How do I use my new HP printer without installing the HP Yahoo toolbar?

Oh wait, I can’t. All I wanted was a printer. A also notice I can’t install the printer without having internet – so their phoning home too. Oh, and did I mention the installer crashes if I choose “minimum install”?

Just my rant about another company that can’t make a buck the honest way anymore. How about those ink refill prices, hu?

February 20, 2011 · admin · No Comments
Posted in: Thoughs