I think any respectable IT professional can tell you when they were first introduced to some gadget or piece technology that made their brain squeeze out a tiny drop of endorphins that made them feel connected to it somehow. I generally say it was my mother's Pentium 75 and Windows 3.1, but I do not think that is necessarily true. There are other moments growing up that stand out in my mind and I think, "Maybe it's deeper than that..."
Growing up in the 80s in the Central Valley of California didn't afford me the latest tech. My cousin had a Commodore 64 and a console game but I didn't much play with them at the time. We did have an Atari 2600, however and my "sitter" down the street had an Intellivision. I for sure favored the Atari, but the Intellivision was interesting too... mainly because we didn't own one.
Then there was this Federeated Group electronics store in the mall.
The entrance to the store was on the ground floor and just outside the covered parking area where we would almost always park. I can recall strolling through the doors on many occasions and typing a few BASIC commands on the Commodore 64 sitting atop a short, white display counter right next to a main thoroughfare to the rest of the mall :
10 PRINT "YOU SUCK" 20 GOTO 10 30 RUN
I think that was the crucial turning point in my young little brain that ultimately decided what I would be doing professionally later in life.
Fast forward a "couple" of years...
As I started junior college and having been interested in graphics and the internet and breaking my mother Windows PC, I figured it would be a good place to start. I started taking animation courses, and that was fun, but it wasn't until around 1998 or so when I got my very own PC; A beige Power Macintosh G3. I took it to Chico State with me and it helped me graduate college.
While I was in college, I met a couple of guys who were building web sites for a company based in Arizona named Troika Web Design. They were funded by a well known thrash metal band's (according to Wikipedia) front man and managed by the band's sound engineer.
I did some work for them while attending classes and cut my teeth on PHP and MySQL. It was around this time I became interested in Linux and even spent a few late nights messing around with Yellow Dog Linux because it (kinda) supported PPC architecture. Had the first beta of OS X not been born around the same time, I'd likely be using Linux for more than just server stuff.
Fast forward a "few" more years...
Having been exposed to OS X in its early days, and, if I'm being honest, fully enjoyed OS 9 and all its flaws, I was destined to be the"Justin Long" type in the long run. And I have been for the most part. While I'm not completely thrilled with the price point, I do enjoy the platform. It's unix-y, supports running all the server level languages/services I need locally and "Just Works™" when you need it to work. I've also built two non-Apple hardware computers specifically to run OS X and aside from a few driver issues with audio or video in the beginning, they will run 24/7 for months without any issues. They make great home servers. Anyway...
After college and a short stint working as a graphic designer/web developer/tech support for an extended education department for Turkey Tech, I landed a job in Orange County. Sadly, they were a Windows shop so I was forced to use Windows XP. I learned old school ASP and VB script (along with some other languages that came later) and it was horrible. Six or so years later, I landed another job, also a Windows shop, and spent more time in ASP, this time with C# and .NET. It was better, but still, not my passion. I was still using PHP and Python and Node.js whenever I could. I did liked C# and the ability to run a good debugger and profiling tools and Redgate – man, Redgate was a life saver at least once – but Windows and IIS and DLLs all just felt, less than and bloated and cost prohibitive for the average small business or startup.
I had been aware that .NET core was the next major version of .NET and that it was poised to run on (*gasp*) linux. In the beginning, I didn't think much of it and thought it was a novel idea, but probably too little too late in the age of functional programming, rapid prototyping, containerization, etc. And it was cool and novel and I could run a
Hello World console program on my mac, written in C#. That's as far as I took it because A) tooling; there was none, and B) it was very young and very primitive in it's .NET support compared to .NET 4.5 (or whatever was out at the time).
And then, Visual Studio Code came out. It was great and essentially, a variant of Atom (I think) with some other things built in to support .NET Core and Kestrel and running things on non-Windows platforms. It still wasn't quite there, but it was promising. I have actually been using VS Code for quite a while now on an Angular project at work. It is an extremely powerful tool and I highly recommend it to anyone writing code in Typescript or ES6 or any language, really. It's good. It will even allow for Java development.
And then, I saw Microsoft released Visual Studio for Mac. A full fledged IDE that could read
.csproj files and entire projects and integrated with NuGet. Much to my surprise, it "Just Worked™" like on a Windows host. Now, it's getting interesting.
And then, I was pointed toward Azure Data Studio and microsoft/mssql-server-linux. I had those two things up and running locally in the span of about 20 minutes and most of that time was spent downloading. Warning, however, at this time, running Azure Data Studio on Ubuntu 18.10 along side mssql-server on the same machine, is not advised... lock up central in Data Studio
What is happening?!
So, in the span of a few years, Microsoft has essentially open-sourced the bulk of it's enterprise development projects and created real, compelling tools to contend with the likes of Java and other "traditionally deployed on *nix" languages and frameworks. And it does just work... for the most part. I mean, you're not going to be writing Windows services or running apps that use Windows specific APIs on a Mac. That defeats the whole idea of what Microsoft is trying to do with the .NET platform.
I haven't read too much into the "why," but I have my speculations. Microsoft saw the writing on the wall and realized that they could gain significant adoption of the platform by doing two things; open source the development side and create PaaS options that are cheaper than AWS. I think they may also realize that gouging developers and enterprise clients on software licenses doesn't significantly alter their bottom line like say, an enterprise client who uses they're free tools and framework but spend $20k/mo on IaaS because it's easy to start, (generally) cheaper to manage (less people) and can scale up/down quickly, saving money when you're not making money.
Five years ago I thought it was a novel idea and in all honesty, I didn't think it would get much traction. But it turns out, if you decrease the friction for companies to build, deploy and run applications, adoption happens naturally. Well, that, and blog posts from the industry.