
Today marks a great day. Umbraco 8 is out of support, which means my products are no longer supported on it either. This means I never have to use .NET Framework again and got me thinking about all the great moments it brought me the last 22 years.
Let's go through a few versions, add-ons and stories.
ASP.NET 1.0
The internet agency I worked for at the time was very Microsoft oriented, so we used classic asp to build websites and used vb6 in some cases for business logic (mandatory for Tridion). We were very young so of course we wanted to use the latest and greatest and used .net 1.0 without any courses/certifications/(knowledge) on one of our largest customers building an intranet.
I remember my manager coming to me that he really liked .net since Microsoft promised no more DLL hell which we had in the past for different components. Since our deployment strategy was not really optimized and we just copied files via FTP without deleting old files, we managed to introduce a new DLL hell for him.
To make it all even more difficult there were no partial classes so generated code and our code got mixed up, well you can guess what did go wrong....
Sorry Boss!
ASP.NET 2.0
When ASP.NET 2.0 came out I was more enthusiastic, there were some great cookbooks with samples and you could find more and more info on the internet (this was pre-Youtube) I did a self-study and became Microsoft MCSD and created the first version of this weblog which was picked up by the dutch .net community because it was all dutch content. All of this was done in my spare time since my day job still implementing Tridion using Vb6. So time to switch jobs.
I became a consultant for a company (that no longer exists, I see a trend since the internet company I worked for also no longer exists) and was hired to build a generic solution for a company that sold software for insurance companies (these days it would be a SaaS solution). My task was to build an XML generator that could share definitions for all the internal consultants. The younger me built a solution that was over-architected, these days I would use Serialize/Deserialize.
The reason that the whole solution was over-architected was because every developer had a copy of Head First Design patterns on their desk and of course we needed every pattern from the book.
By the way, all code was very enterprise and therefore written in VB.NET of course.
Page Lifecycle
Everyone that hired me (until 2009 or so) probably remember that I printed the asp.net page lifecycle and put it on the office wall.
If ASP.Net webforms would still have existed these days, my official job description would be "ViewState problem solver". The reason for that was that people everything in on-load event instead of on-init and everything in on-load and every control created in on-load was serialized to the ViewState which caused a lot of extra MB's in the HTML form.
I think I spent 3 years just fixing these issues for several companies.
ASP.NET AJAX
Then ASP.NET Ajax was released, remember this was pre jQuery so it was very revolutionary. Just Like webcontrols vs usercontrols in asp.net you had two options. The update panel what was easy to drag on the page and you wrapped all kind of controls inside of it and the update panel did some magic and you had partial updates of the page instead of full page postbacks. The other interface was much cleaner but so difficult to implement that I forgot its name....
My first presentation was about ASP.Net AJAX on a .NET community day in the Netherlands.
Why don't we just put the whole form inside an update panel.
When ASP.Net Ajax was released I was still hired by the insurance software builder. The Architect told us to use this since it would make the UI more responsive. First proof of concept looked promising so let's go.
After a few weeks the quality engineer had some issues with response times. It was time to buy dotTrace to profile the whole application of course. The engineer was very proud after 2 weeks, he managed to get a few ms of the response time. Ehh yes but it takes almost 20 seconds to load. Maybe we should check something else?
It turned out everything was stored inside of several update panels and remember the ViewState issues before? ViewState was posted on every update panel request so that was a(nother) few months of delay in shipping the application (and fixing ViewState issues), sorry manager!
Well the manager solved this in Excel by the way by making everyone doing a few hours overtime every week so we would be back on track, guess we both learned a lesson then.
But glad the engineer introduced me to Jetbrains, love their products even when my former employer used CodeRush instead of ReSharper.
.Net 3.x, Linq, WCF, WWF, WPF and WTF
This was the first time that I thought, too hard to keep up with all of this new tech coming to us. Could also be that I was young father back then and wanted to spend more spare time with my daughter than tech. But as I still was a consultant I needed to know a few things about all of the concepts since consulting is "Go expert or go home".
Linq I used in my day to day job (when I didn't solve ViewState problems of course) but to this day it wasn't revolutionary as generics to me. To get some knowledge about the other three letter frameworks that are long gone now I attended presentations at user groups where there was always some-one asking... and what about WTF? (stupid inside joke, still funny)
Starting a company
In the .net 3 era two old colleagues asked if I wanted to join their company. Before we started one old colleague started another company so it was just us. This lasted a week and then my wife said, either you continue yourself or you don't talk about your own company ever again.
So I did and was guns for hire for a year or 2.
.Net 4 Along came Umbraco
When you are hired by a company it's never just around the corner. If you are lucky it's 1 hour commute. So when stuck in traffic at 7 AM again when my youngest daughter was just born, knowing not being home before 19:00 it was time for a change.
The initial idea I had was building DNN Modules since DNN was very populair back then and I had some ideas. Then I met a developer at the local usergroup and he told me to look at Umbraco since this was way more flexible. If you talk about steep learning curve these days. Back then it was next to impossible to install the damn thing..
Anyway, after a few evenings, I succeeded. And I really liked the idea behind the CMS. Just like (enterprise) Tridion, you could build up your own definitions and render that in templates. The fact that you could use XSLT Extensions (yes I am that old, and still think XSLT is write only) blew my mind so I was hooked.
What about building products?
Just like DNN it was very easy to extend Umbraco. The community was getting bigger so the original idea building products came back to life. Back then the community was very active on Twitter and someone created an import package. You had to enter Id's in textboxes, upload a csv with fixed names.
Besides being ViewState solver I was also the import guy on every project. In the last project for a client I made a generic mapping between datasource and the import interface of the client, that allowed the sysadmin to import data without the need of a developer. So I decided to make a package for Umbraco that did just that and made it freemium from the beginning. A few weeks later there would be a package competition at the Umbraco US festival where you can send in a video demo-ing the umbraco package. Below the first video of the award winning package CMSImport (called umbimport back then).
MVC
Wow almost forgot to talk about the .NET Framework stuff that happened. In the .NET 4 era we finally got MVC which made me quit my fix ViewState job for good. The API Controllers I liked the most I guess since that was (sometimes still is) my main usage of ASP .Net these days since that is needed to create backoffice extensions.
With MVC everything was more structured and I was more in the umbraco backoffice so no real war stories about this era.
Well one I was hired to build some CRM extensions on top of Umbraco. This started out as a great project. Map a property to crm so you can post back, or retrieve some data. Then I complained about some DevExpress components that were needed by the company. The developer got mad that I complained and started to develop himself resulting in every form element had 20+ options with internal abbreviations , a few weeks later the owner came back to me and said the system was very difficult to use. I don't know how that is possible......
Thanks .Net Framework
Now, 22 years later .Net framework is gone. Umbraco is still here and touching many other concepts in .NET and Web development in general. I am looking forward to the next 20 years and hope to make more memories.