|Dec. 14th, 2007 @ 06:46 am hey, I wrote something (maybe not what you think)|
|I woke up one day a few weeks ago and decided I was missing something important. I started spending all my free time programming, and the more I did it the more I wanted to do it. I got sucked back into the feedback loop! I've burned off a lot of my life on various games and I can live with that, but I'm very happy that for whatever reason I want to do this now. Will the motivation hold up? I think it will - I broke through some critical resistance layer.|
It's pretty intimidating when you've barely programmed in ten years to learn a brand-new language on an OS you've never programmed for, relying on libraries you've never seen, in a world that's come quite a distance since you got your degree. Oh, and I'd never written anything with a GUI before. Balancing all that is that today's tools completely kick the ass of the "vi and make" world I came out of (of course I had to learn the tools too) and I did dodge the worst pain of OSX programming by starting with leopard. Objective C 2.0 finally offers garbage collection (though if my console messages are any guide, there are GC bugs in the apple frameworks.)
I'd never seen objective c before this. It is a nifty little language. It's a superset of C, so any C code can be linked into an obj-c app unchanged, but there's a thin object/messaging layer on top of it that opens a ton of doors. Just about anything you want to be determined at runtime can be. Typing is optional. You can dynamically add methods at runtime - by runtime-determined name if you want. You can catch unrecognized messages and forward them to another object, and the runtime will make this transparent. You can add methods to unrelated classes that you don't control without even subclassing them, which means you can easily change the behavior of apple's built-in classes if you feel like it. You can tell any object to listen for property changes in any other object, and it will be notified when they take place, so there are wide-open communication channels that you don't have to plan in advance. I'm still wrapping my head around all the possibilities.
Of course it being C means your foot is available for frequent shooting, and key-value observing and other features make it easy to write programs where the flow control is impossible to figure out. But I guess all interesting languages make it easy to write code nobody can understand.
Point of all this is, I need some feedback. My software doesn't do anything too earth-shaking, but it scratched a personal itch - I've been waiting years for something that does this to come out for the mac. Actually I couldn't find any software for any OS that does it. Finally i got tired of waiting. The real purpose of it was to familiarize me with cocoa so I could do some iphone programming, and that mission is accomplished.
Before I can release it I have to figure out a hosting setup that doesn't go over my DSL. I opened an account at bodhost.com yesterday but they set me up with too old an OS. If I can't work things out there I'll have to try somewhere else. Can anyone personally recommend a reliable VPS provider that offers centos-5.1 or another linux dist released in 2007 as an OS choice? Only VPS will do, as I require total OS control but I don't want a dedicated machine.
I'll post a testing release for download as soon as I have the hosting problem solved. Yes, I know I didn't mention what it does. Allow me my mysteries. (Don't get too excited... though I admit I find it weirdly entertaining to watch it do its thing.)