Archive for August, 2005

This week marks my first inspection of the Component UI Application Block, or CAB for short. The motivation for looking at the CAB is that we’re preparing to do some enterprise level application development, and we wanted a framework in place that would allow us to write consistent code with a standard architecture. It’s also a good excuse to download the Visual Studio Beta 2 and dig into some of VS’s new features.

I’ve barely dug into the CAB – I just finished the first of seven labs today that the CAB developers have graciously provided. But it wasn’t the CAB that caught my attention today. It was C#’s new partial keyword.

Right off the bat I think this is a bad idea.

Very quickly in Lab #1 we’re introduced to the partial keyword:

If you are unfamiliar with the .NET framework 2.0 beta, you will be wondering what the ‘partial’ keyword is doing within the class declaration. You may also be wondering why there is a call to the InitializeComponent method, but the InitializeComponent method is nowhere to be seen!

Hmm… What’s that make you think of? Basic with Goto maybe? I thought we were evolving programming with first, Structured design, and later Object Oriented design with Design Patterns. This feels like a huge step backwards. Now we’re not encapsulating objects anymore (at least not at the physical level, even if the compiler is smart enough to assemble all these partial classes into one object), but we’re splitting them up.

Ask yourself: why do we make classes in the first place? It’s not for the compiler. The compiler couldn’t care less how our code is organized. Be it spaghetti Basic or well-structured OO, the compiler doesn’t give a damn. We do though – we encapsulate as much for ourselves as for any other reason. So that we humans can understand the logical layout of our code, and our application architecture. So that we can break complex systems up into discrete, reusable components that make sense and are easy to understand. Object Oriented design evolved because human beings write code, not machines. We encapsulate for ourselves.

And now we’re taking that thing of beauty – that self-contained object – and breaking it up into separate files. Ugh.

The Lab writers go on to say:

This is very handy, because not only can you save cluttering, but you can also implement your UI plumbing in one file, and your event handling in another. You can send your UI off to your visual designer who will create the front end, and your business logic and event handling code to your business logic developer, who is not interested in how the form looks.

Handy? Save ‘cluttering’ at the expense of consolidated code and physical representations that mirror their logical ones? How cluttered are your objects exactly? I think the first question anyone should be asking here is, “Why are your objects so cluttered that you have to break them up physically?”

And as for the UI, aren’t events part of the UI? If you put a button on a form or web page, it needs to do something. Even if you have a Graphics Designer who knows nothing about code building UI’s with a tool like VS, then you still need someone to wireup those events. You still need a programmer to step in and do something.

Now, someone is going to say, “Yeah, but if you have partial classes, then you can have the Graphics Designer and the Event Programmer working on the same class and the same time, in different physical locations.” My response is: this is one reason why we have pair programming – so people with specialized skills can share the wealth of their knowledge, and reduce errors at the same time. Do you want the Graphics Designer and the Event Programmer working separately at the same time on partial pieces of the same class, each creating their own set of bugs and mistakes? Or, would you rather have them working together, sharing knowledge, communicating intent and design to each other, and eliminating bugs? And what about complex UI components that have to talk to each other as part of their behavior? (reference: Gang of Four’s Mediator pattern)

The more I think about Partial Classes, the more I dislike what they do and why they do it. But the good thing is we don’t have to use them if we don’t want to.

Still, I can just imagine the horror new developers are going to have to deal with when they join a team that has implemented partial classes in their design. They’re going to take a look at a method call and wonder, “Where the heck is that implementation?” And, “Why don’t I have a Goto pointing me to its location?”

I am an volunteer (read: amatuer) writer for the Everquest 2 Vault, and a regular contributer on the forums, so you’d think I’d know when a new game is coming down the pipe, right? After all, the only MMO’s on the horizon that have been worth any press lately have been Vanguard and Dungeons and Dragons Online.

So how the heck did I miss Irth Online? (That name isn’t earning any points for creativity either) I logged into my Gmail account today to find a Beta 3 invite. I’ve never even heard of this development company, or this game. I guess my status on EQ2 Vault has a perk every now and again.

I thought it might be wise to do a little research on these guys. The front end of the website sure doesn’t seem up to the quality level of D&D or Vanguard. Their forums look nice though.

Then I ran across this review at GamerGod:

Traveling and exploring go hand in hand. The world is huge, so huge that often times you find yourself surrounded by nothing. Players are even harder to find, but that can be attributed to it being a beta. There is plenty of land to be explored and plenty of traveling to be done. There is no instant travel in the game, but there are horse routes and mounts. Horse routes require upwards of an hour to travel sometimes and offer little to do along the way, making them less desirable than some sort of portal system.

Did he say upwards of an hour to travel? Magic Hat Software, the makers of Irth Online, tout in their FAQ how big their world is. When are developers going to realize that more land mass does not equal fun unless you do something interesting with it? The review points out this glaring design error further:

The world is massive, but monsters and enemies to fight are few and far between. Starting areas barely support a single combat focused player because of the lack of targets. A good amount of travel is required to find a good hunting ground, and even then the combat is diluted because of some glaring imbalances.

And it seems that even in Beta the game has serious technical issues with the graphics engine:

Further hampering the enjoyment of the game is the slide show effect that you get while inside buildings or towns. The work around in beta has been to put your head down and run backwards through the worst areas. Even on higher end systems the game does not perform that much better.

I’m sure the folks at Magic Hat Software are trying really hard to build a game that they feel is fun to play. They sound like a much smaller development team, and the reviews of the Beta echo that fact. The website says they’re pushing for a September 2005 release – which seems too soon. I haven’t downloaded the Beta client yet (although I’m certain I will), but from the sounds of things this game doesn’t appear ready for primetime.

I really like seeing the small developers build MMO’s. A lot of players have become disgruntled with the way Everquest 2 and World of Warcraft turned out – much simpler MMO’s than the generation that came before them. The benefit to the company is a much wider audience, larger subscription numbers, and a bigger profit margin. But I think ultimately the players lose out on richer gaming experiences.

I just hope Magic Hat’s desire to reach a September release date doesn’t kill their game. The same thing happened to Horizons – it launched before it was ready, and the subsequent bugs and constant patching/fixes ticked off enough players that the company had to eventually file for bankruptcy.

Having a blog is one thing. Making it look your own is quite another.

I’m trying to squeeze minutes out of each hour to dig into WP little by little, and figure out how to customize this thing, because I think it’s important that my blog be unique and reflect a bit about me beyond pure text. I looked at several Themes but I had two problems with them: (a) I couldn’t find anything that I thought was ‘me’ and (b) they are all someone else’s themes.

What software geek wants to put someone else’s theme on their own site?

I thought Russel Beattie made a pretty good point about blog designs, since he recently switched from a custom blogging package to WordPress:

The design of the blog says a lot about the author, though, whether we want it to or not. Something that seems super-professionally designed signifies that the content is going to be super-professional. A default WP, Blogspot or MT design signifies a newbie. And something unique many times signifies an old-skool blogger (which is what I think my old design did).

It’s the use of the term newbie that makes me want to tweak this layout. That’s the last thing I want my blog to say. Sure, I’m new to the blogosphere, but I’ve been doing this HTML/Programming/Database/Design/Analysis bit for a while…

Back in 1996 I was running around the internet, an avid video game player and budding computer programmer, when I ran across John Carmack’s .plan concerning 3D API’s. It was effectively a blog long before the term blog was coined. I thought it was the coolest thing because it epitomized, to me, the usefulness of the internet in terms of information sharing, opinions, ideas, etc. I was fascinating to read the thoughts of a man I admired on a subject that I barely understood.

At the time, I thought the idea of an online journal was a really cool one. But at the same time I didn’t have the motivation (or the hardware) to really do it the right way. I had only a scant few MB of web space on a dial-up plan and no database to work with. The thought of updating hardcoded HTML every few days made me nausious. Plus, I was only an undergraduate programmer, and I didn’t think I had much to contribute in terms of ideas or opinions that mattered.

Now, it’s almost 10 years later. I’m a seasoned programmer, developer, database administrator, webmaster, and all-around coding geek. And the blogosphere has emerged. Wouldn’t you know it? I’m behind the curve.

It’s about time

So, here I am, about to enter the sphere and blog away. And professionally, I feel like I finally have something worthy to say. I’m in an environment at my new job where we’re doing something I love, and we’re digging deep into .NET, Whidbey, Yukon, and a host of development technologies that gets me really excited about work. It’s a fun time to be a software developer.

With that said, welcome to my blog. I hope it’s a fun ride :)