PDA

View Full Version : An old programmer is a new programmer again




jbucaran
Jun 1, 2009, 08:41 PM
Database access and what options are available.
Creating documentation / help for applications.
Recommended software for designing beautiful icons for applications (as those traditionally found in every app).
Creating custom binary data files as well as text files.
Developings games (OpenGL, other options).
Interoperability with Windows only data like Access files, executables.
Internet access, URL requests, fetching data from REST resources.
Manipulation of basic OSX UI devices like the Dock, Menu (status panel in the top), KeyChain, iSight, etc.
Running applications in the background (does that even make sense?)
Interoperability between Cocoa applications written in Objective-C, Ruby, etc.
Packaging and distributing the application


Where?



kainjow
Jun 1, 2009, 11:15 PM
Database access and what options are available.
As long as there is a C API for a database, you can access it in Objective-C. SQLite is built-in to the OS if you need simple databases. For most common ones there are Cocoa wrappers available. Just look around.

Creating documentation / help for applications.
Apple Help Programming Guide (http://developer.apple.com/documentation/Carbon/Conceptual/ProvidingUserAssitAppleHelp/user_help_intro/user_assistance_intro.html). Basically they're HTML pages that are viewed with Help Viewer.

Recommended software for designing beautiful icons for applications (as those traditionally found in every app).
Photoshop. If you're not a designer, hire someone to do this for you.

Creating custom binary data files as well as text files.
NSData, NSFileHandle, NSString.

Developings games (OpenGL, other options).
There are game libraries you can use (for example Unity). You can role your own via NSOpenGLView (which I did for a small game).

Interoperability with Windows only data like Access files, executables.
You'd have to use some third-party library to read Access files AFAIK. What do you mean "executables"? You can't run those directly, but you could with virtualization.

Internet access, URL requests, fetching data from REST resources.
NSURLConnection

Manipulation of basic OSX UI devices like the Dock, Menu (status panel in the top), KeyChain, iSight, etc.
NSDockTile, NSStatusItem, Keychain Services Programming Guide (http://developer.apple.com/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html#//apple_ref/doc/uid/TP30000897-CH203-TP1). For video recording look at the QTCapture* classes in QTKit.

Running applications in the background (does that even make sense?)
Look up LSUIElement

Interoperability between Cocoa applications written in Objective-C, Ruby, etc.
You can write Cocoa apps in Ruby, Python and Objective-C, but I'm not sure if you can mix it up since Ruby and Python are interpreted languages.

Packaging and distributing the application
For 99.99% of apps you'll just place your Release build in a DMG and upload it. You can use PackageMaker to create a package which then is installed with the Installer utility.

lee1210
Jun 2, 2009, 08:19 AM
kainjow did a good job of covering things, but i thought i'd plaster some links here in support of some of his points:

For small things, sqllite will probably be adequate. Here's the intro page, and there's plenty of other documentation:
http://www.sqlite.org/quickstart.html

If you need to run a larger database, mysql and postgres run fine on OS X. I can't say for anything else. Obviously MS SQL Server is a no go, but I'm guessing Oracle is available (though I've never tried it). As kainjow said, for any of these options if you can do it in C you can do it in Objective-C, and if you'd like you can write your own wrapper class if no one has done so already.

For storing data, if it is a small amount often the "standard" way to do this is with property lists.
http://developer.apple.com/documentation/Cocoa/Conceptual/PropertyLists/Introduction/Introduction.html

For anything more than this, an archiving mechanism is provided. You can check this out here:
http://developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/Archiving/Archiving.html

There was recently a discussion about web services:
http://forums.macrumors.com/showthread.php?t=693307
Unfortunately this is an area you may find less refined, simply because in Java/C# there are already tools to deal with .wsdl files and generate the code you need.

There are all sorts of ways to run things in the background. kainjow mentioned one way to present a Cocoa app in the background, but you can also start GUI-less things with launchd (http://developer.apple.com/documentation/Darwin/Reference/ManPages/man8/launchd.8.html) .

Here is Apple's tutorial on RubyCocoa, which leverages the bridging available:
http://developer.apple.com/documentation/Cocoa/Conceptual/RubyPythonCocoa/Articles/BuildingRubyCocoaAppl.html
It is part of a larger documentation set on Python and Ruby interaction with Cocoa.

Here is the Package Maker User Guide:
http://developer.apple.com/documentation/DeveloperTools/Conceptual/PackageMakerUserGuide/Introduction/Introduction.html
This isn't really necessary in many cases. I find it much more straight-forward to have a DMG that has a decent custom finder window with the Application Bundle (.app) ready for me to drag to Applications (or run from the DMG if i just want to try it out).

Good luck!

-Lee

mpemburn
Jun 2, 2009, 09:17 AM
Hi Jorge,

I'm pretty much in the same boat -- a developer of many years just starting out with XCode (Cocoa and Objective-C, etc). Although I'd sworn off platform-specific development for many years, I was compelled to take up Mac programming when I discovered that there was just no good, standards-compliant application for image scanning on OS X.

My approach has been more haphazard than yours -- I tend to throw myself into the midst of things and figure them out as I go along. Now about six weeks into my scanning app (working part-time between my paying work), I have a pretty good feel for how Objective-C works and how the code interacts with the user interface. My task was complicated a bit by the need to integrate Obj-C with an API written in C (the SANE API). It is a major headache interconverting between the data types of the two languages -- especially strings. Oy!

The Apple "Developer Connection" documentation is superb and many classes reference pages have several full applications under "Related Sample Code" that illustrate not only practical examples of the class in question but also give a good feel for the best coding practices.

Best of luck!

Mark

jbucaran
Jun 5, 2009, 02:27 AM
:apple:

duggram
Jun 29, 2009, 01:12 PM
Good thread. I quit programming in 2001 when the bust hit Seattle. Back then I made fun of Mac! Not now. Back then I worked in VB for 3 years, Java for 5 years and earned a certificate in C++ from UW (Java wasn't available at the time). Life was good till they started locking doors, putting people out of work.

A recruiter told me to go back to OR nursing. I had >15 years experience at it, but hated it. Now I'm in New Mexico, got busted up in a motorcycle accident and can't work. Also recently married a successful physician. She supports my desire (and me) to return to programming.

A year ago I got a MBP, played with terminal, installed Netbeans and did some recreational programming on simple stuff. Fell in love with Mac OS X. But I still have a good Vista laptop that I'm sure will come in handy.

Now I see a lot of ads for iPhone developers. Got a bunch of Macrumors recommended books and I'm hard at it. First with Cocoa/O-C on the MBP, then I'll start with iPhone. Signed up for Mac dev program. Reminds me of Microsoft in the 90's.

If you have any other advice, I will be paying attention. BTW thank you for what's here already.

Doug