Writing the article “Desktop Applications are not dead!” was an interesting experience that led to vivid discussions about the business of software for desktop applications, including the current limits and options available in this field. In the last comment by Eugueny Kontsevoy (the person I was responding to with my article in the first place), he expressed once again his frustration regarding Windows development:
“Seriously: I am an engineer for the sake of it: I love what I do and spending 20% of my time planning the deployment and dealing with failing Microsoft OS components is NOT something I want to do anymore. Period.” — Eugueny Kontsevoy
Before you dismiss his comment as an over exaggeration or peg him as having too picky an attitude, I would suggest thinking twice. The guy has a point, and if you’ve done Windows desktop application development before, you know this is often the case. My article proposed possible (partial) solutions for making Windows a more enjoyable and viable deployment platform for software startups. Of course, the easy way out is to leave the desktop market and move exclusively to the Web application arena. Hey, that’s what everyone else is doing, that’s the future, it’s buzz compliant, etc… But I want to take my own advice, and put my money where my mouth is.
Taking the red pill
I felt more at ease with my Mac after 5 weeks of using it, than I had with Windows after a dozen years. We feel like old friends, like Hemingway’s old man and the sea. I absolutely love Mac. I love its culture, the quest and appreciation for beauty. Quality over quantity, simplicity over complexity, beautiful design over crowded ugly interfaces. Mac is productive; Mac is zen-like, inspiring, and enlightening. Mac makes me happy to be a computer geek, and in my mind, Mac OS X is simply the best operating system available today.
I’m taking the red pill: I’ve decided to get serious about developing applications for Mac OS X. I can’t refrain from programming with this beauty.
Oh boy, where do I start?
I’m writing this as a quick guide for whoever decides to follow a similar path as mine. Consider that I’m just starting out, so I don’t know anything beyond what I’ve researched from reading other peoples’ opinions. I think it’s a sensible plan though. There is a wealth of good information on Apple’s site and many guides all over the web. Here is a list of resources that I am using or which I plan to use. They refer to Objective-C and Cocoa, which are respectively the favored language and framework for developing Mac applications.
First Step: Let’s get excited
- Let’s get motivated with these slides from one of the most successful Mac developers out there and his associated podcast (whose genre is ‘religious’, according to iTunes, hahaha);
- Beginning Mac Development: A good guide on how to get started by MacZealots.com;
- Subscribe to CocoaRadio, an awesome podcast including interviews with the most popular and successful Mac developers around.
Second Step: Let’s read some documents
- Get a quick, very basic intro to the C language. C is a subset of Objective-C, so it will make things easier if you already know the language or if you can at least understand the basics. This C Language Tutorial for Cocoa should get you started. (I’ll be skipping this step, and you can safely do so also if you know C, too).
- The Objective-C Programming Language by Apple;
- Cocoa Fundamentals Guide by Apple.
Third Step: Let’s get serious, with some books
I actually ordered the three books below yesterday night. The second one is already here, while the other two should arrive soon enough. All three of them have stellar reviews.
- This should teach the language in depth and serve as a decent reference to have on hand.
- This is, I believe, *the* crucial book. I plan to read this cover to cover and work through it.
- This book should provide some advanced techniques.
Fourth Step: Join the discussion
- Join the irc.freenode.net channels #macdev and #macsb, respectively about Mac development and the business side of Mac programming;
- Subscribe to the Cocoa-Dev and the MacSB mailing lists.
Fifth Step: Keep Reading
Apple Developer Connection (ADC) has a huge amount of information about developing applications and guidelines for delivering high quality products. Bookmark https://developer.apple.com/ and come back to it often. I know I will.
What about Ruby and Python?
RubyCocoa is a nice bridge that allows you to develop in Ruby and Cocoa. Yes, I’m super interested in this project, but I want to learn first the traditional way of using Objective-C and only then consider when and if Ruby and Python can be beneficial for my Mac development needs.
And what about DB2?
Do I miss DB2 when I am on my Mac? Hell yes. DB2 Express-C is just plain awesome and it’s the only software that I really miss on my Mac. It runs fine in a virtual machine, but wouldn’t it be great to see it run natively in Mac OS X? Well, this won’t happen tomorrow, but I’ll tell you something… sooner or later, we’ll get there!
I already know that the biggest challenge is going to be finding the time to study all this stuff, and above all, finding time to code (the only way to really learn). But it’s going to be awesome. What are your thoughts about this strategy for learning Mac development? I especially welcome comments from experienced Mac developers and people who, like me, have decided to give Cocoa a serious go.
Get more stuff like this
Subscribe to my mailing list to receive similar updates about programming.
Thank you for subscribing. Please check your email to confirm your subscription.
Something went wrong.
CocoaRadio is a nice introduction to the Mac community. The interviews cover companies, developers and applications, giving a sense of the culture but is a bit light technically.
Late Night Cocoa is a technical discussion with a developer on a particular API or area of development. For example Aaron Hillegass on NSResponder or Jonathan “Wolf” Rentzsche on hacking Cocoa. I would really recommend downloading a few episodes.
Another I recently came across is CocoaCast. This series is going through Cocoa API’s using the Aaron Hillegass book. You may find it useful as added material or a motivator.
Nice to find someone at the same point on the learning curve. Hope you keep at it.
Have you looked at RemObject’s Chrome for development on the Mac? Chrome is Pascal and apps run well under mono. Their chief developer now has a Mac and has been working a little with Cocoa# to get native look and feel for apps. I know you aren’t a fan of .NET but this looks very promising if Cocoa# can take off as a project.