Gotta Love OS X

OK, once again, I have to say that Mac OS X is a great step up from it's OPENSTEP roots, and I love doing development on this platform.

I have been working on a simple GUI query tool for PostgreSQL - with an eye towards making it as databse independent as possible. Lots of abstraction in the base classes, and then PostgreSQL-specific classes for the models. It's a good design, if I do say so myself. And the speed with which is goes together is incredible. You can leave all the basic initialization to the nib loading and instantiation and the just focus on the behavior in your model and controller classes.

Don't get me wrong, if you don't like Model-View-Controller (MVC) style coding or you don't understand how to create MVC designs, then I can really see that this design paradigm could be a pain in the neck. However, having said that, there aren't a lot of apps that need a GUI that aren't MVC, or couldn't be made in MVC easily.

While I've written a ton of Visual Basic code in my lifetime, I have to honestly say that their merging of the Controller and View objects just isn't what makes for really good, reusable code. Sure, you can hammer something out fast - drop a few buttons on a window - double click on the buttons, write code, and run it. But in the end, the View holds too much business information and that's never good as you try to scale things up.

Sure, you can use the COM objects to get the Models out of the code, and that's good. But you can't get the Controller out of the View in VB. And there's lots of reasons to have the Controller be the only disposable code you have. That's what I like about Mac OS X.

I guess that VB gets around this by the wealth of OCX controls that are reusable, but specific enough that they contain quite a bit of useful behavior. This is OK, and I used a ton of them in my day, but the idea of having a real Controller is just so nice and clean. It makes things so much easier to design.

I guess that's why the little database app went together so nicely. It's got all the functionality that I need and putting things together was the most demanding part and IB did the vast majority of that. Great tools for cool programming. Can't ask for anything more.