After spending a few years stationed on Kelly AFB in San Antonio (for those of you who aren't aware, this base is now closed and I find that, oddly, I miss the days of when it was it's on base) I moved into a new work section and met a man by the name of Chris Weule. Aside from a strange last name, even stranger quirks that border on making him a genetic freak of nature (anyone unable to feel cold has to be off in the head a bit), and some crazy personality issues that can only be attributed to being too smart for his own good, we became pretty good friends.
One day, after discussing college issues, we decided to enroll in a programming class at UTSA, and so began my truly learning how to write C code. After doing nothing special with it besides acing the class, I got into learning some basics of C++ and writing simple windows applications that output data to a simple MSDOS window. I did, once, attempt to learn the MFCL. I say briefly because I spent one day playing around, and after typing up a good two hundred lines into a code file that fast reached more than a thousand lines combining generated and hand written code, I had a window that could open, close, and display the text, "Hello World!". Upon attempting to modify the behavior, I ended up with a program that didn't work and I couldn't figure out why. What made it worse was that I had Visual C++, and the interface was supposed to be simple to design and implement. I wasn't impressed, and ever again touched the MFCL.
I still had one thing missing. Stand alone GUI programs. Enter the Fox toolkit. A ruby implementation hooks into the libraries lead to creating applications written in FXRuby that were actually easy to develop. It was lots of code, and hundreds of lines written, but each one did something! Each one made sense! I loved it. I even delved into Qt4 a bit after that, which was just as nice. What I learned was that GUI programming didn't have to be nonsensical as it had been using the MFCL.
Now, I got married about two years ago (April 22, 2007, I do know it exactly so HA!) to arie, the greatest wife ever. I ended up inheriting a rather old iBook G4. Now, it may be an old laptop, but I'm still using it. This thing is past it's prime yes, but it's still fighting, and it will fight with the best of them, running more things than I would have ever asked a windows computer to do. It even runs Aperture 2, which I had to hack the binary for to remove restrictions that would not let it launch because my hardware was too old. Not once have I regretted trading in an Alienware gaming laptop for this thing. Not once.
Now in the world of Mac I discovered XCode and have never been happier with a development environment. It's spectacular and I recommend it to any dev. Ruby pre-installed on the OS made it even easier to move forward in my preferred programming language, and while there was no FXRuby on OS X, I did get RubyCocoa. This started a new experience for me, learning the mac way of writing and creating an interface. RubyCocoa was different. It took some time to learn to translate Objective-C code into RubyCocoa, but I did it and I loved it. Then along comes MacRuby, a much more sane implementation of the hook into Cocoa. The syntax is much closer to the Cocoa syntax, and instead of using a dual interface, the entire Ruby language is mapped on-top of Cocoa. Wow, so much simpler, faster, and more powerful. I'm cruising along in heaven with it, though it does have some limitations still.
Now, I learned a LOT about Cocoa and I decided I wanted to go full Objective-C. So tonight, I started my first true Cocoa App. I'm not starting simple either, I'm going with a CoreData application which is an app that uses a specialized library for persistent data storage. Initially reading the documentation for CoreData I knew I was going to put tons of hours into learning how it all works together, and probably start over several times. Then I started my project in XCode and realized that I couldn't be more wrong.
The project skeleton it created implemented the minimum requirements for a CoreData application and the code made sense. I read through it and it all became instantly clear. No, I haven't mastered CoreData, but I can see it's not going to be at all time consuming to learn. I won't even have to hand code my object references (descriptions of every object that is stored, it's properties, and how it relates to every other stored object) because it has a nice little interface where not only do you just click + signs and type in names but you get a nice little graphical flow chart created on the fly!
So, from MFCL where tons of code and hassle leads to a broken application, Cocoa and XCode leads to an app that has full database persistence, graphical interface, and actually launches in less than ten minutes. Why on earth would anyone ever want to be a windows developer when being a mac developer is so much more productive? I can't wait to see what I can do with my pure cocoa apps. It's going to be amazing.
Now, the real problem. Designing the information for my new RPG system. Setting up characters and everything that is needed to represent one in a game. I could go with an already established system, but I don't like those and since I only want to use the app to create characters for my private gaming/writing, why waste my time with another system?
Wow... a long update! lol.