What Matrix persona are you? I am the Oracle…

You are The Oracle, from “The Matrix.”
Wise, kind, honest- is there anything slightly
negative about you? You are genuinely
supportive of others. Careful not to let people
take advantage of you, though.
What Matrix Persona Are You?
brought to you by Quizilla
MCSD Bound, cont’d
My MCSD books finally showed up. I’ve also ordered a Transcenders test for the C# Web exam.
To get an idea for where I should start studying, I took the practice exam. Gosh, Im a lot smarter than I thought I was. I ended up scoring 800/1000, which means that had it been the real test, I would have failed.
I do feel kinda good about the fact that I got that close. I remember the last time I took a Transcenders practice exam, I got like 50% with a technology that I felt fairly comfortable with.
Maybe I would have scored better if I wouldnt have been watching Stanley Cup finals while taking the practice test…
I do have a better idea for the things that I need to study. Also, hearing that the Transcenders tests are typically harder than the real thing has me feeling really good about taking a test soon.
Databinding is the devil
So, I’ve completely rewritten a project that i’m working on… The reason, you ask? Data binding is the devil…
I was greatly fascinated by its promises of being able to have a data entry UI without writing any code. Wow! This is cool. No more need to track dirty state. No need to write a bunch of code to get the values out of controls. Life is good!
Then I went to implement it… At first blush, everything seemed to work really well. Then the sporadic bugs started to appear. A control value was being pushed here, context was lost there, etc…
There are a lot of things to getting custom controls to work with databinding. The biggest one is that they require an OnValidating event to be raised up. This is just ridiculous. If I have a composite control with 5 textboxes on it and a combobox, I have to hook up to the validating event on each of these, and then call my custom control’s OnValidating method.
Hrmmm… Let’s look at this… Isn’t the control dirty as soon as the user changes the contents of that control? Why then is it required to hook up the Validating event? What this says is that a control’s value cant be updated to the dataset until after you’ve tabbed off the control. This may not be so bad, you think, until you start having to write code like this:
private void toolbar_ButtonClick(object sender, ToolBarButtonClickEventArgs e) { toolbar.Focus(); ... }
This is required, since clicking on a toolbar button does not give it focus. Since I had a save button on my toolbar, every time I clicked save, I was running into the last edited value was not being persisted to the underlying data store.
A few other gripes that I have:
- Why would the framework allow a call to CurrencyManager.AddNew to silently error when you’ve bound to a DateTimePicker or CheckBox that allows null values? (FYI: The work around is to set a default value on your column, via dataset annotations or editing of the generated code file.)
- Why can’t you set the SelectedIndex property of a databound combobox to -1? I have tried variations of this, such as SelectedValue, to no avail.
- What exactly is CurrencyManager for? Everything I expected this control to do, it wouldn’t. I had attempted to bypass SelectedIndexChanged on the combobox, in lieu of the PositionChanged event on the CurrencyManager. My goal was to provide a method to completely clear out the values of the user controls.
- Why isn’t data binding documented better in the MSDN files? The only thing that I’ve been able to discover in there is some very rudimentary examples, but nothing that even remotely resembles any real world example.
I should note that some of my frustrations may be because I’m not completely familiar with how the data binding architecture works. Although, I feel that I have learned all I want to know about it for now.
All in all, I went back to the old tried and true method for my application. The application is significantly quicker, and no more complaints from the client. Life really is good.
Maybe now I can have some time to relax and pay some more attention to this blog.
Life at 30
I guess Im officially an old man now. I turn 30 today. I’ve really kinda been dreading this for a while, but now that its here, I guess its really not THAT bad.
A friend told me that he was completely ok with 30, but 31 is what really bothered him, because then he was then “over 30″.
I’ve been thinking about this for a while. Thinking about everything that has happened since Ive been around. It’s completely amazing to me how far computers and technology have come. When I was in the 6th grade, my parents ended up getting me a Commodore 64, complete with tape drive and 300 baud modem. At that time, that was bleeding edge.
Then, several years later, I ended up getting a screaming 386sx/16 with 1MB of RAM and a 100 MB hard drive… Again, bleeding edge… Are you starting to see a pattern here?
Now, Ive got a Dell desktop that’s 2.4 ghz, 512 MB RAM (just over 5 times the size of my first hard drive), and 80gb.
Hardware is not the only thing that has made significant strides. Software and software development has also made similar jumps. I mean, how cool is it that I can write something here and my 2 readers automatically get notified? How cool is it that I can have an IM chat with my cousin in Europe? These kinds of things are common place now, and I can’t imagine living without them. Several years ago, however, I would have never thought these kinds of things possible.
I can only imagine what the coming years will bring…
Component Interaction Patterns
Earlier today, Sean sent me a link to a PDF entitled Component Interaction Patterns.
The abstract:
Many projects today use a component-based approach to developing software. Component-Based Development (CBD) stresses language and platform interoperability, and separation of interface from implementation. Existing and newly constructed components are being deployed to clients and servers to build flexible, reusable solutions.
However, assembling a system consisting of custom and pre-built components can be difficult because of hidden dependencies, complex interactions, and obscure design. This pattern language has abstract interactions, component bus, component glue, third-party binding, and consumer-producer as five patterns that make it easier to assemble components that communicate, collaborate, and coordinate to get a job done…
SQL Server Centric .NET code generator, cont’d
Olymars finally made primetime at Microsoft.com, who is now hosting it (as opposed to Microsoft France).
I talked previously about my thoughts on this product. Nice thing about this one is that now there is also a tutorial offered. Downloading now…
SQL Server Centric .NET Code Generator (code named OlyMars) is both a flexible and powerful code generator based on database modeling.
It allows instant generation of both SQL and .Net code providing a complete library of stored procedures, .NET classes and ready-to-use Windows/Web form controls (including associated documentation).
SQL Server Centric .NET Code Generator is also fully extensible to use one’s own custom templates and consequently can be adjusted to generate any custom code respecting a homogeneous implementation scheme within the company (can be written either in VB .NET or C# .NET).
Sosa Ejected for Using Corked Bat
Very interesting… Makes you wonder if this is what’s making this guy such a powerful hitter.
Sammy Sosa, the Chicago Cubs’ slugger, was ejected in a game against the Tampa Bay Devil Rays when umpires discovered cork in his broken bat.
Cordless Phones and WiFi
So, after several months of my previous cordless phone (a Panasonic KX-TG2583W) causing interference with my WiFi connection at home, I finally broke down and bought a new phone. I ended up getting the Uniden TRU5885-2 5.8 gHz Cordless Phone.
Some nice features on this phone, include dual handsets and bi-directional 5.8 gHz. This was important, because apparently the reason for the interference was due to the fact that the Panasonic was running at 2.4 gHz, as was my Linksys access point. This Uniden phone is apparently the only one that runs 5.8 gHz both ways. Most only go 5.8 from the receiver to the handset, and then 2.4 back to the base.
We’ll see how it works out tomorrow. I hope that I don’t have to send it back…
NewsGator Posted Items
Greg tells me this today regarding items posted from NewsGator:
There is a folder called “Posted Items” underneath your base news folder; copies of all posts are stored there, even if there’s an error in the plug-in.
So, for example, I keep all of my NewsGator feeds in a base folder called @RSS. Underneath that, there is a folder called Posted Items which contains everything I’ve posted via the plugins. How cool is that?
MCSD Bound
I finally decided that it is time to get some certifications.
While Im not the biggest fan of certifications, because most of them do not measure true ability, a lot of people do find a lot of value in these.
My chosen certification path is the Microsoft Certified Solutions Developer track using C#. I really think I will learn a lot from this. However, I would feel much better about gaining this cert if it was similar to the Java developer’s examination.
With the Java developer certification, you are required to author an application to a given set of specifications and then also are required to talk intelligently about the choices you made regarding architecture and programming techniques.
This type of certification is much more valuable, I think, because not only will you gain an in depth knowledge of the framework, but you will also know how to put this knowledge into practice. I hope that Microsoft ends up offering a similar certification path.
My first exam after I receive my books, 70-135 (Developing and implementing Web Applications with Microsoft Visual C# .NET and Microsoft Visual Studio .NET).
I’ll keep everyone informed of my progress.


