Vive La Liberté
24/08/2016
I don’t like Windows. There, I’ve said it. I’m a long-time .Net developer who started not too long after it was first released back in 2002. I’ve have had many years of success and enjoyment developing using C# going from developer, through technical leadership to my current role as CTO at Cucumber.
Early in my career when I was developing using the LAMP stack I got thrown in at the deep-end of Linux server administration, literally. I was approximately two weeks into reluctantly looking after a Cobalt server appliance for a local (very) small business when we got sent a nasty letter from lawyers representing NASA telling is in no uncertain terms to stop trying to hack into their network. To say this came as a bit of a shock to an inexperienced, near complete Linux newbie would be a bit of an understatement. With the help of our account representative at Rackspace we got the server restored in quick-time only to be instantly hacked again. Meanwhile, I was desperately trying the learn as much about this Linux thing as possible. Luckily for me, we enlisted the help of a Linux security expert who hardened the server properly and we were good to go.
You might think that this negative first experience of Linux would have completely put me off it after coming from the relative comfort of Windows (based on my experience at the time). On the contrary this opened my eyes to the elegance, flexibility and most important of all, possibilities that Linux represents. The Unix philosophy has not only stood the test of time but it is arguably more important now than ever. From Wikipedia:
“The Unix philosophy, originated by Ken Thompson, is a set of cultural norms and philosophical approaches to minimalist, modular software development. It is based on the experience of leading developers of the Unix operating system. Early Unix developers were important in bringing the concepts of modularity and reusability into software engineering practice, spawning a "software tools" movement. Over time, the leading developers of Unix (and programs that ran on it) established a set of cultural norms for developing software, norms which became as important and influential as the technology of Unix itself; this has been termed the "Unix philosophy."
The Unix philosophy emphasizes building simple, short, clear, modular, and extensible code that can be easily maintained and repurposed by developers other than its creators. The Unix philosophy favors composability as opposed to monolithic design.”
Most of the .Net developers I’ve worked with over the years have been very entrenched in the Microsoft world. I can only really think of a handful who’ve had a broader understanding of the technology landscape. I’ve always thought this was a real shame and that they’ve all been missing out on so much. Thankfully times are a changing!
Looking from the outside-in Microsoft seems to have been changing for two main reasons, the unstoppable cloud juggernaut and the appointment of Satya Nadella as CEO. They are becoming increasingly open and co-operating more and more with industry partners instead of trying to crush them. In a leaked document written in 1998 Microsoft famously declared that the GNU General Public License (GNU GPL or GPL) was “a cancer”. This is the license that most open source software was released under at the time.
The Microsoft of 2016 is widely different and it kind of smells a little bit like “if you can’t beat them, join them”. Not that I’m complaining. Azure, like all of the major cloud platforms sells open source software-as-a-service wrapped by their tooling and branded as their own. The Azure Redis Cache service is based on the open source Redis project, Azure HDInsight (Hadoop-as-a-service) is based on Hortonworks HDP and Azure Machine Learning leverages the open source R and Python languages.
Recently, there have been announcements about the Linux Bash Shell on Windows 10, SQL Server on Linux and PowerShell on Linux. However, the thing I am most excited about is the recent (June 2016) release of .Net Core which makes the .Net Framework cross platform and open source along with the latest version of ASP.Net, As far as I’m concerned this is a total game changer for .Net developers, but I’m not sure that enough of them realise it yet.
For the first time we can utilise the skills and experience we’ve built up over the years as a first class citizen in the wider technology world without clunky workarounds and context switching. We can leverage the awesomeness of containerisation, fully scripted cross platform DevOps and we can easily achieve efficient cloud portability, freeing us from vendor lock-in to use the best tools for the job.
Add to this the fact that I get to use my Mac for development and I am one very happy camper!
Written by Tim King