It's All In Your Head
OK, so GenX.NET has been slower to launch than I wanted it to be. WAY slower. Part of the reason was because we've been building the the new “Store” and “MyAccount” sections of the website. Since the hostages have not been freed yet, I've had to start over on a lot of my DB work. But, since the new system runs completely on top of XHEO's yet-unreleased application suite, I haven't had to do a whole lot of DB work thus far. The biggest problem though, has been all in my mind.
I'm sure I'm not the only one to go through this. I've been working on this project for almost 4 months now. That's not 40 hours a week mind you, because we've been working on other things too. But it is constantly in my mind. Now, I came up with this really cool architecture, but I know it is not complete yet. It works, and works pretty well, but I know it can be better. I've had this real mental block regarding the stability of the design, because I was worried that the extensibility would not work the way I wanted it to.
Well, the problem was, I had never tested the extensibility outside the main project, which is where I kept getting errors. So finally I got fed up today and whipped up a sample application. I didn't look at the code, I didn't look at the docs, I just thought about it and said.... “OK. How would I expect this to work?” I kicked out 4 lines of code to test it, and compiled, not expecting it to work. Well, I was wrong. Here's what I wrote:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadDim Format As IFormatProvider = New Biff2XmlFormatProvider
Dim Excel As New SheetBuilder.FromDataSet
Excel.Data = Example2("ALFKI")
Excel.Build(Format)
End Sub
It built without incident, and executed flawlessly, much to my absolute shock. I have to tell you, and this is not an ego statement by any means. Sometimes I am truly and genuinely shocked by some of the code I write. Not that it is cooler than anyone elses or anything, but because I learned programming by screwing up over and over again until I got it right. For a very long time my expectation was that something would not work the way my brain thought it would. So when it works right the first time, I am stunned.
Here is what I still have a problem with: I don't have a way yet for GenX.NET to be able to call up providers through a configuration file instead of an enumeration. I want to completely separate all the providers from the main assembly, so that I can, for example, fix a bug in the XmlFormatProvider (don't even get me started on that HACK) without affecting the main engine assembly. I'll have to figure that out for GenX.NET 3.1, when we also introduce some cool new features for API design.
So basically, had I just tested what I knew to be true, I would have been fine. Now I can finally wrap development without any worries, and launch the thing. Hopefully tomorrow if the rest of the day goes well. I'm really excited now that I know everything works. Should have done that weeks ago.