DotNetFringe 2015 Recap From a Former .NET Developer
As some may or may not know, I have quite the storied past in .NET. The year was 2008 and I just landed my first job as an internal IT developer for a largeish corporation in San Antonio, TX. The first project I was on was a WinForms application written in C#, .NET 2.X if I recall correctly. It was built using CAB, CAB was a rather complicated and possibly controversal project from the Microsoft Patterns and Practices team. I was young and rather new to programming, it was my first “REAL” line of business app and I was very excited to just be making money doing what I loved.
Most of the code base was not very good by my standards today, but it suited our team well enough. The project had all the classic problems that largely don’t exist in the .NET ecosystem anymore (at least I hope). It used all of the evil things that folks in the Alt.NET community we’re trying to fight against.
- Stored procedures
- Heavy use of inheritence
- No tests
- Shared developement database
- Magic strings everywhere
- Click once deployements from a developers workstation
We were a small team lead by the quintessential expert beginner, but at the time I loved it. We were still doing a lot of good things, but I strived for more. I was a furocious seeker of knowledge, it was a GREAT time to be a .NET developer. There were so many of us with the same shared pain, I read every blog post I could get my hands on. I’d refresh CodeBetter, Los techies, etc all day. Enevitably I landed at the legendary blog of Jeremy D Miller, the shade tree developer. The Build Own CAB Series spoke directly to my pains at work. I’m not sure if anyone else at the time fought so hard against stored procedures. His twitter debates about them were legendary. I think back on how badly he was attacked on twitter about it and it most have been hard, others too, it was a hard hard hard fight. At the time I didn’t fully understand the problems, but I certainly benefited from that effort. His efforts truly spoke to me, I told myself “I want to work at Dovetail someday, I want to learn from the best.”
This lead me to attend Pablo’s Fiesta in February 2010. I remember getting off of the plane and renting a car to go down to the Holiday Inn near the conference. There I ran into Dru Sellers and he says, “Hey, would you like to join me for lunch, I’m going to Chuy’s with my good friend Jeremy Miller”. I was blown away, hells yeah I want to come with you. Afterward he said invited me to join him on a visit to the Dovetail offices, it was like a dream come true, I was there when Chad Myers, Jeremy Miller, and Josh Flanagan were giving Phil Haack the very first demo of FubuMVC. I was there to see Dru give the first demo of Nubular (which inspired NuGet). It was there I met Ryan Kelley and we became known as “The two Ryan’s“
In 2011 I went to work for Dovetail and I had achieved my goal. I finally made it and for two great years I got to work with my programming heros Jeremy Miller, Chad Myers, and Dru Sellers. In those two years me and the rest of the FubuMVC team built some awesome truly innovative things, we tried to boil the ocean so to speak.
- Command line parsing with model binding
- Multi view engine support
- Controllers without base classes
- IoC all the way down
- Html conventions
- Content negotiation
In 2013, I left Dovetail, moved to ruby and formed my company HuBoard, Inc but I’ve always kept my eye on the community and I’m still friends with many people in the community.
Why all this history, get the point man
I tell you all the history, because that was the theme of #DotNetFringe in a large part. There was a lot of history in that conference ballroom. The people there were the people that fought tooth and nail to get MSFT to embrace open source.
Elitist and mean
That will be a moment in the history of open source in .NET for me. It’s history just like the time Rob Conery called the Alt.NET community a bunch of assholes on stage. There are a lot of sins that Microsoft has not atoned for and to put it bluntly there are a lot of mean people in the community that need to be nicer.
All of that history, is all the drama history it’s just the past so to speak, it’s meaningless in the grand scheme of the true historic moment. We won!
Microsoft open sourced .NET
The real history is:
- the day NuGet took its first community contribution.
- the day Azure tools developed out in the open on GitHub
- the day ASP.NET MVC hit GitHub
- the day @kangaroo merged OSX support into coreclr
That is the only history that matters. There are a lot of people that are afraid of the past and they shouldn’t be. It’s open source now and there is no going back.
They have reached the point of no return, Microsoft has a hard task ahead but if they mess it up, the community will fork it. It happened to NodeJS with io.js and it seems to be working just fine for them. I don’t want that to happen, but open source will win.
I for one am excited and any other current or former .NET developers should be too. Java is a huge disappointment if you move over from a strong C# background. There are problems that compiled, strongly typed, fast as hell languages are really really good at and I can wait for .NET versions of java technologies like Apache Storm and Hadoop.
Things I’m excited for:
- static linking the CLR
- apt-get install CLR
- CLR support for languages on the JVM
- .NET + Linux == Happiness
- debian packages
- FastCGI (nginx)
Things you should expect and thus not be mean to people about:
- Tooling that doesn’t support windows
- version managers like rbenv, rvm, nodenv for .NET
- former .NETers returning
- Java converts
It’s my opinion that the CLR is better than the JVM and hopefully Microsoft handles .NET better than Oracle has handled the JVM.
For me, I’m letting the past go.
I’ve realized I have a chip on my shoulder too and DotNetFringe was the therapy I needed to get over it and let it go.
In closing, don’t be mean, the drama history is not history it’s just the past.
Cheers’s to the true history, .NET is open source!
Cheers’s to the future, I can’t wait for the next DotNetFringe