Thursday, July 01, 2010

History of DILE

I registered DILE exactly 6 years and 7 days ago. To celebrate this anniversary, I thought I'd share the history of the project.

It all started in 2003. I was still a noob programmer with only 3 years of experience. I was still having my first job where I was developing an accounting and a leasing program for a small Hungarian company. The former was a typical data-focused WinForms application. It was full of maintenance screens where you could add partners, offices and so on. All the usual stuff. This application was also used by my company in the hardware shop.

I still remember that I - as a developer - worked on the 2nd floor of the building while the shop was in the basement. One day I was asked to deploy the latest version of the application. So I went down to do so. After finishing with the installation one of the managers took a look at the program and "played" with it a little bit. Unfortunately he found a "very serious bug": sorting in one of the grids was incorrect. So I had to climb upstairs just to change the sorting string from "ASC" to "DESC". I was quite angry to walk so much just to make such a trivial modification and meanwhile I thought it would be really cool to have a program that would allow me to modify the application without recompiling it...

This idea kept cropping up in my mind. Then came PDC '03 and lot of interesting new products were announced: Longhorn, Whidbey, Yukon and so on. I wanted to get familiar with them and I was lucky enough to get a copy of them. So I decided to discover what was new by working on a real project. Of course, the idea of an "assembly editor" came in my mind immediately... But that sounded far too complicated so first I tried to create a bug tracker using Yukon, Indigo, Avalon and ObjectSpaces. But I quickly got bored of it and there were too many bug trackers available anyway. I couldn't think of any good reason why anyone would choose mine... And then that idea of the "assembly editor" was still in the back of my mind...

After hesitating for a few days, I couldn't resist starting to work on that recurring idea. First I created a very naive implementation using Reflection and Reflection Emit. As I remember it took only a month to create a very simple editor that could be used to modify a "Hello, World" style console application. It did work. But I felt that Reflection won't be enough for the job... Anyway, I sent this application to a guy who influenced my mentality quite a lot. He suggested me to put the source code on SourceForge and he also helped me to get a job in Budapest. A few months later I moved to Budapest with his help. The project got a proper name and I restarted it from scratch, this time using the lot more powerful Unmanaged Metadata API.

So, that's the story. Simply laziness (climbing 3 floors from the shop to my room) resulted in a project that I have been working on for more than half of a decade. And I'm not even near completing it yet... :-)