Welcome to the MacNN Forums.

If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

You are here: MacNN Forums > Software - Troubleshooting and Discussion > Developer Center > Senior WIndows SW guy getting back into Mac dev. Where to start?

Senior WIndows SW guy getting back into Mac dev. Where to start?
Thread Tools
flatcatch
Grizzled Veteran
Join Date: Jul 2000
Location: Silicon Valley
Status: Offline
Reply With Quote
Jun 18, 2005, 12:44 AM
 
I've been an Apple guy since forever, have always used a Mac at home (PB 15" 1.5Ghz w/ Tiger currently), and don't miss a day without reading the current Mac news sites. However, since getting out of college Windows has been paying the bills. Although I wrote some Mac software back in college that was good for some pizza money, rent money, and video game money, that was a LONG time ago (well, 9 years or so). I think I still have some of my Inside Macintosh books packed away.

So basically I'm a senior level Windows developer (extremely comfortable in C/C++, Win32, MFC, ATL, COM) and want to have "fun" and that means writing stuff for the Mac again.

Can anyone suggest some good places to start? Books? I was checking out The Mac Xcode 2 Book but it's not out yet it looks like. Maybe the best place to start is Apple's XCode documentation. I've read primers on Objective-C but it never really sinks in since I never put it to use - but that will change soon.

I imagine the hardest part will be getting used to a new IDE after having used Visual Studio for such a long time.
( Last edited by flatcatch; Jun 19, 2005 at 08:10 PM. )

Keep the rubber side down!
     
Thinine
Mac Elite
Join Date: Jul 2002
Status: Offline
Reply With Quote
Jun 18, 2005, 01:51 AM
 
If you're on Tiger, great. Get Xcode 2.1 and go from there. Since you already know C and OO programming, learning Objective-C shouldn't be a problem. For a good book, there's Stepen Kochan's Programming in Objective-C, though it'll cover a lot of what you already know. Then there's Hillegass' Cocoa Programming for Mac OS X (2nd Ed.), which should be a good intro to the Cocoa API. That'll probably be your hardest problem. Cocoa is so massive, it may take you a while to be able to use all of it. Of course there's also Cocoa Dev Central and CocoaDev as online resources, and all of Apple's documentation.

Probably the hardest concept you'll run into are bindings, since they don't really have an equivalent in Windows. But they're awesome, and you should start using them as soon as possible.

Other than that, it's hard to know how to help you unless we know more about what you want to do.
     
smeger
Mac Elite
Join Date: Sep 2000
Location: Tempe, AZ
Status: Offline
Reply With Quote
Jun 18, 2005, 03:46 AM
 
I did this by first running through Apple's Currency Converter tutorial (on Apple's dev site). I made sure that I understood completely what every part of the tutorial was doing, how it worked, and why. I did this by referring regularly to Apple's objective-C specification, the document that covers how the language itself works, and why. I also referred to the Cocoa API docs regularly, which gave me an idea of how Cocoa is structured, and generally, how cool it is.

There were a couple of nice "eureka" moments. Figuring out that objective-C messaging is not equivalent to c++ method calls or C function calls was one. Figuring out that runtime introspection was something I both could and should rely on was another.
Geekspiff - generating spiffdiddlee software since before you began paying attention.
     
driven
Addicted to MacNN
Join Date: May 2001
Location: Atlanta, GA
Status: Offline
Reply With Quote
Jun 19, 2005, 05:44 AM
 
I'll echo the other comments here.

Obj-C is refreshing compared to C++. It'll take you about 2-3 hours to get a handle on it. (Granted, I like C# and Java better, but for Mac development you are better off with Obj-C.)

The currency converter app is a reasonably good tutorial. Go through the Hillegass book. It's valuable.

Learn bindings. I'm still trying to get my head around them. As Thinine pointed out they are VERY powerful. (I'm currently exploring CoreData .... something else that we don't have anything similar to in Windows ... ADO.NET is great, but this seems to be better thought out.)

Welcome to the club.
- MacBook Air M2 16GB / 512GB
- MacBook Pro 16" i9 2.4Ghz 32GB / 1TB
- MacBook Pro 15" i7 2.9Ghz 16GB / 512GB
- iMac i5 3.2Ghz 1TB
- G4 Cube 500Mhz / Shelf display unit / Museum display
     
flatcatch  (op)
Grizzled Veteran
Join Date: Jul 2000
Location: Silicon Valley
Status: Offline
Reply With Quote
Jun 19, 2005, 08:09 PM
 
Thanks guys for the suggestions - I appreciate it. It's helpful to know some of the key differences between the Windows C++ world and Mac Obj-C ahead of time.

As far as what I want to do, there isn't any particular answer at this point. There are a couple random and simple apps I want to try out, but other than that I'm just looking for a good foundation - which sounds like understanding the currency converter app top to bottom, getting familiar with Obj-C, Xcode 2, interface builder, etc.. This should help ease me into learing more complicated stuff as my inspiration heats up.

Keep the rubber side down!
     
driven
Addicted to MacNN
Join Date: May 2001
Location: Atlanta, GA
Status: Offline
Reply With Quote
Jun 19, 2005, 09:13 PM
 
Let us know how you make out.

Forget a lot about what you know about Visual Studio. It will hold you back.
- MacBook Air M2 16GB / 512GB
- MacBook Pro 16" i9 2.4Ghz 32GB / 1TB
- MacBook Pro 15" i7 2.9Ghz 16GB / 512GB
- iMac i5 3.2Ghz 1TB
- G4 Cube 500Mhz / Shelf display unit / Museum display
     
TampaDeveloper
Dedicated MacNNer
Join Date: Nov 2003
Status: Offline
Reply With Quote
Jun 20, 2005, 09:21 AM
 
Hi Flatcatch,

Glad you're getting back to Mac. I wrote a few small things in Objective-C but could not get myself motivated to write anything big in it. After being a Java guy, I had a very difficult time adjusting to the concept of developing for just one platform. I spent quite a bit of time exploring different options, including Objective-C using OpenStep, Python, Ruby, Mono, GUI kits for Java, and ultimately GUI kits for C++....

I found the last category to be the most promising of all. It would be an absolute DREAM to develop in Objective-C for all platforms. Unfortunately, the OpenStep stuff requires alot of compromises for your Windows/Linux versions...

Check out:

http://www.wxwidgets.org/ - An open source cross platform toolkit with a VERY large user-base. There are bindings to this toolkit in a HUGE number of language. In fact this is the default GUI toolkit for Python developers. Borland's C-BuilderX is based on this toolkit.

http://www.trolltech.com - A commercial GUI toolkit that has a dual license for open source developer. This toolkit is also well established. There are a large number of commercial applications built on this toolkit. The KDE desktop for Linux is built on this toolkit, as is the empire of k*.* open source alternatives (koffice?, kdevelop, konquerer, etc).

Not to discourage Objective-C. But I would rather point out the alternatives than have developers walk away from Mac development, like I almost did.
     
Thinine
Mac Elite
Join Date: Jul 2002
Status: Offline
Reply With Quote
Jun 20, 2005, 12:56 PM
 
Screw other platforms and their inferior GUI development tools.

     
driven
Addicted to MacNN
Join Date: May 2001
Location: Atlanta, GA
Status: Offline
Reply With Quote
Jun 20, 2005, 12:58 PM
 
Originally Posted by Thinine
Screw other platforms and their inferior GUI development tools.

Obviously a diplomat in a previous life. <GRIN>
- MacBook Air M2 16GB / 512GB
- MacBook Pro 16" i9 2.4Ghz 32GB / 1TB
- MacBook Pro 15" i7 2.9Ghz 16GB / 512GB
- iMac i5 3.2Ghz 1TB
- G4 Cube 500Mhz / Shelf display unit / Museum display
     
Person Man
Professional Poster
Join Date: Jun 2001
Location: Northwest Ohio
Status: Offline
Reply With Quote
Jun 21, 2005, 08:42 AM
 
Originally Posted by TampaDeveloper
Check out:

http://www.wxwidgets.org/ - An open source cross platform toolkit with a VERY large user-base. There are bindings to this toolkit in a HUGE number of language. In fact this is the default GUI toolkit for Python developers. Borland's C-BuilderX is based on this toolkit.

http://www.trolltech.com - A commercial GUI toolkit that has a dual license for open source developer. This toolkit is also well established. There are a large number of commercial applications built on this toolkit. The KDE desktop for Linux is built on this toolkit, as is the empire of k*.* open source alternatives (koffice?, kdevelop, konquerer, etc).
Yes but,

Applications built using these toolkits on the Mac won't FEEL like Macintosh applications. If an application doesn't FEEL like a Mac application (i.e. feels like something that was written for Windows first or Linus first), then I won't use it.

And I know many other Mac users won't either.
     
TampaDeveloper
Dedicated MacNNer
Join Date: Nov 2003
Status: Offline
Reply With Quote
Jun 23, 2005, 09:28 AM
 
Originally Posted by Person Man
Yes but,

Applications built using these toolkits on the Mac won't FEEL like Macintosh applications. If an application doesn't FEEL like a Mac application (i.e. feels like something that was written for Windows first or Linus first), then I won't use it.

And I know many other Mac users won't either.
I'm developing my applications on a Mac, from the viewpoint of a Mac user. But competition in the software industry is difficult enough, even when you target 99% of the market. It is even more difficult to earn a living when only 2% of the market is targeted. I am unwilling to compromise the performance of my applications. Thus they are native Mac executables. But unfortunately, I cannot commit professional suicide by locking my application into Mac. I know, I know.. Separate the GUI code from the logic (it is, btw) and write two GUIs... But hey... Guess what? That takes significantly more development and testing resources. Resources I don't have.
     
Chuckit
Clinically Insane
Join Date: Oct 2001
Location: San Diego, CA, USA
Status: Offline
Reply With Quote
Jun 23, 2005, 09:52 AM
 
It is not professional suicide to create real Mac-native applications.
Chuck
___
"Instead of either 'multi-talented' or 'multitalented' use 'bisexual'."
     
Millennium
Clinically Insane
Join Date: Nov 1999
Status: Offline
Reply With Quote
Jun 23, 2005, 09:56 AM
 
Originally Posted by Person Man
Yes but,

Applications built using these toolkits on the Mac won't FEEL like Macintosh applications.
Applications written in these tookits are no more difficult to make "Mac-like" than any other Carbon app, particularly if you start out with the intent to make them good Mac citizens.
You are in Soviet Russia. It is dark. Grue is likely to be eaten by YOU!
     
Millennium
Clinically Insane
Join Date: Nov 1999
Status: Offline
Reply With Quote
Jun 23, 2005, 10:05 AM
 
Originally Posted by TampaDeveloper
http://www.wxwidgets.org/ - An open source cross platform toolkit with a VERY large user-base. There are bindings to this toolkit in a HUGE number of language. In fact this is the default GUI toolkit for Python developers. Borland's C-BuilderX is based on this toolkit.
Minor nitpick: the default GUI toolkit for Python is Tkinter, not wxWidgets. Both toolkits come standard with Tiger, though neither one comes with previous versions of OSX.

Tkinter is a Pythonic wrapper around Tk, the default GUI toolkit for Tcl. Tk has two main advantages: it's very simple to hand-code a GUI in it, and it's been ported to many scripting languages. It's the default in Perl and Ruby, for example, and there's even a version of ksh that lets you write GUI shell scripts.

This is not to say that I encourage developing apps in Tk. Many GUIs are not hand-coded these days, and if you don't use a language to which Tk has been ported then that advantage also disappears. It's also extremely bare-bones by modern standards; although you have all the basic GUI elements -buttons, menus, frames, and so forth- you don't get anything like tabs, combo-boxes, or other advanced GUI elements which we take for granted nowadays.
You are in Soviet Russia. It is dark. Grue is likely to be eaten by YOU!
     
TampaDeveloper
Dedicated MacNNer
Join Date: Nov 2003
Status: Offline
Reply With Quote
Jun 23, 2005, 10:07 AM
 
Originally Posted by Chuckit
It is not professional suicide to create real Mac-native applications.
There is no doubt in my mind that there ARE successful companies that make exclusively Mac software. But unfortunately, I cannot provide you with links to all the dead companies that did, or wanted to be successful Mac-only software shops.

Also, I have searched for a Mac shop all of my career. I'm sitting here typing this at work on my Windows box, with Visual Studio open to my C# code in the background window. Its a dream that I wish I could persue, but it, like my dream of being a rock star, is dead.
     
TampaDeveloper
Dedicated MacNNer
Join Date: Nov 2003
Status: Offline
Reply With Quote
Jun 23, 2005, 10:14 AM
 
Originally Posted by Millennium
Applications written in these tookits are no more difficult to make "Mac-like" than any other Carbon app, particularly if you start out with the intent to make them good Mac citizens.
Thats good to know... I am going through lots of work and $3000 out of my pocket to use a toolkit that will 1) Allow my applications to work on a Mac, and 2) that I trust.... (I don't know enough about WxWidgets to be willing to risk my product... I've invested alot of money at this point and I'm unwilling to take another risk)...

I plan to release my applications first on Mac. Mac is my favorite environment. I have done extra work simply out of that love. So I don't want to hear that Mac users are not going to use my product simply because I didn't write it in Carbon or Cocoa. It would be my dream to develop all my applications in Cocoa. But reality sometimes sucks.
     
Chuckit
Clinically Insane
Join Date: Oct 2001
Location: San Diego, CA, USA
Status: Offline
Reply With Quote
Jun 23, 2005, 10:19 AM
 
Originally Posted by TampaDeveloper
There is no doubt in my mind that there ARE successful companies that make exclusively Mac software. But unfortunately, I cannot provide you with links to all the dead companies that did, or wanted to be successful Mac-only software shops.
Ditto for the ones that wanted to be successful software shops of any kind. It's not as though the phenomenon of developers failing is somehow special to the Mac.

There are pros and cons to both approaches. With Mac software, you could only reach about a sixth of the total PC user base. With Windows software, most of the users are much less likely to ever find and buy your app. With generic, cross-platform software, you have the advantages of both platforms, but a decent, native-feeling Mac app could probably annihilate you on that front. I'm just saying, the set of sacrifices you chose isn't the only reasonable one. I don't want to scare people away because of it.
Chuck
___
"Instead of either 'multi-talented' or 'multitalented' use 'bisexual'."
     
driven
Addicted to MacNN
Join Date: May 2001
Location: Atlanta, GA
Status: Offline
Reply With Quote
Jun 23, 2005, 10:46 AM
 
Separating the UI from the back end is a bit more labor intensive, but it does future proof your application. For anything but the trivial it's not only a good idea, but mandatory IMHO.
- MacBook Air M2 16GB / 512GB
- MacBook Pro 16" i9 2.4Ghz 32GB / 1TB
- MacBook Pro 15" i7 2.9Ghz 16GB / 512GB
- iMac i5 3.2Ghz 1TB
- G4 Cube 500Mhz / Shelf display unit / Museum display
     
TampaDeveloper
Dedicated MacNNer
Join Date: Nov 2003
Status: Offline
Reply With Quote
Jun 23, 2005, 11:30 AM
 
Originally Posted by Chuckit
Ditto for the ones that wanted to be successful software shops of any kind. It's not as though the phenomenon of developers failing is somehow special to the Mac.
ok. What follows is an oversimplification... But I think you can extend this out in a number of ways and come to essentially the same conclusion.

(# of PC users in the genera of your application) * (% of PC users who BUY in the genera of your application) = (Total potential PC market)

(# of Mac users in the genera of your application) * (% of Mac users who BUY in the genera of your application) = (Total potential Mac market)

If you choose a genera with a Mac user base that is nearly as large as its PC counterpart, then you can make the argument that Mac users tend to buy more. But if your application has a very broad genera, then you can start approximating your userbase based on platform sales.

In my case, I do have a broad genera. So I start looking at target markets and conclude that my PC market is more than 10x as large as my Mac market.

One must also consider competition too. If you have 1/10th the market to yourself, that may be better than competing with 10 others for 9/10ths the market. This is especially true if you are attempting to penetrate a market with established players.

So if you want to make this discussion about a particular genera, then we will discuss the merits of a Mac-only product. But if we are discussing REALISTIC, generalized development strategies, then I think its very difficult to argue a case for developing Mac-only products.

Originally Posted by Chuckit
There are pros and cons to both approaches. With Mac software, you could only reach about a sixth of the total PC user base. With Windows software, most of the users are much less likely to ever find and buy your app. With generic, cross-platform software, you have the advantages of both platforms, but a decent, native-feeling Mac app could probably annihilate you on that front. I'm just saying, the set of sacrifices you chose isn't the only reasonable one. I don't want to scare people away because of it.
You are right. One always must consider their market when determining what tools to use. I have been writing my application for several months, and I haven't yet written one line of GUI code. I will do everything within my ability as a developer to avoid being locked into any particular technology or platform. There are constraints that we MUST work in. That is a reality.
     
TampaDeveloper
Dedicated MacNNer
Join Date: Nov 2003
Status: Offline
Reply With Quote
Jun 23, 2005, 11:44 AM
 
BTW, if I could write code in Objective-C and deploy it on Windows as a second-class citizen to my Mac version, I would. But it doesn't require a vast amount of evaluating to come to the conclusion that Objective-C on a PC is not a viable direction. I could be wrong. I would love to get in contact with a developer that has successfully ported their Objective-C application to a PC and gone on to market their product as a cross-platform application. If it was easy, we wouldn't be seeing the Mac-only compaines listed above. They would be offering PC versions, even if they were second-class.
     
itistoday
Professional Poster
Join Date: Oct 2001
Status: Offline
Reply With Quote
Jun 23, 2005, 02:38 PM
 
Originally Posted by Person Man
Yes but,

Applications built using these toolkits on the Mac won't FEEL like Macintosh applications. If an application doesn't FEEL like a Mac application (i.e. feels like something that was written for Windows first or Linus first), then I won't use it.

And I know many other Mac users won't either.
That's a pretty crappy attitude, and an insult to the developers that spent their time making them. They could have just as easily ditched the Mac market and made those application soley for Windows. You should be thankful. But don't worry, even you will use an application that doesn't "feel" Mac-like if you really need it and there are no alternatives.
     
Chuckit
Clinically Insane
Join Date: Oct 2001
Location: San Diego, CA, USA
Status: Offline
Reply With Quote
Jun 23, 2005, 04:21 PM
 
Originally Posted by TampaDeveloper
I would love to get in contact with a developer that has successfully ported their Objective-C application to a PC and gone on to market their product as a cross-platform application. If it was easy, we wouldn't be seeing the Mac-only compaines listed above. They would be offering PC versions, even if they were second-class.
Actually, only one of those companies I mentioned (Omni) primarily uses Objective-C, to my knowledge.
Chuck
___
"Instead of either 'multi-talented' or 'multitalented' use 'bisexual'."
     
bseely
Junior Member
Join Date: Sep 2000
Location: San Francisco, CA
Status: Offline
Reply With Quote
Jun 23, 2005, 04:52 PM
 
Originally Posted by flatcatch
Can anyone suggest some good places to start? Books? I was checking out The Mac Xcode 2 Book but it's not out yet it looks like. Maybe the best place to start is Apple's XCode documentation. I've read primers on Objective-C but it never really sinks in since I never put it to use - but that will change soon.

I imagine the hardest part will be getting used to a new IDE after having used Visual Studio for such a long time.
My biggest recommendation would be to start with the Hillegass book - excellent way to learn cocoa, bindings, xcode, and just about all the other basics that you'll need.
     
Millennium
Clinically Insane
Join Date: Nov 1999
Status: Offline
Reply With Quote
Jun 24, 2005, 09:14 AM
 
Originally Posted by TampaDeveloper
I plan to release my applications first on Mac. Mac is my favorite environment. I have done extra work simply out of that love. So I don't want to hear that Mac users are not going to use my product simply because I didn't write it in Carbon or Cocoa. It would be my dream to develop all my applications in Cocoa. But reality sometimes sucks.
Actually, your app will be written in Carbon, as most of the cross-platform GUI toolkits simply wrap around it. It's good to hear that you plan to do extra work to make your app Mac-like, though, because you're going to need to do that. You can save yourself a little work by basing your UIs on other platforms around the one you've created on the Mac. Users of other platforms will usually tolerate this, whereas the reverse isn't always true.

There are quite a few zealots who avoid apps written in cross-platform toolkits on general principle, and there are even some who avoid apps written in anything but Cocoa. That said, there's not likely anything you'll be able to do to appease them. The best you can hope for is to not mention what toolkit you used. It's a shame that this would be necessary, but what can you do in the face of zealots? Fortunately their numbers are decreasing as time goes by, so it shouldn't be too much of a problem for all that much longer.

By the way, I do suggest that you learn Cocoa and play around with it, even if you don't plan to do much with it. Aside from being a good mental exercise, you can use it to get a feel for what Mac users will expect of your apps.
You are in Soviet Russia. It is dark. Grue is likely to be eaten by YOU!
     
Person Man
Professional Poster
Join Date: Jun 2001
Location: Northwest Ohio
Status: Offline
Reply With Quote
Jun 26, 2005, 01:43 PM
 
...
     
Person Man
Professional Poster
Join Date: Jun 2001
Location: Northwest Ohio
Status: Offline
Reply With Quote
Jun 26, 2005, 01:44 PM
 
Originally Posted by itistoday
That's a pretty crappy attitude, and an insult to the developers that spent their time making them. They could have just as easily ditched the Mac market and made those application soley for Windows. You should be thankful. But don't worry, even you will use an application that doesn't "feel" Mac-like if you really need it and there are no alternatives.
I'm not a zealot by any stretch of the imagination, and I DO use cross-platform applications with crappy GUI implementations, but ONLY when there is no truly Mac-native alternative. (Oh, and I won't pay money for anything unless it uses a proper Mac interface. If there is no alternative and I need it, I'll either do without or use it on a PC).

The INSTANT a PROPER Macintosh implementation (whether cross-platform or not) comes out, I switch to it.

I don't have a problem with cross-platform development per-se... I prefer that it be done correctly, by desigining the interface SPECIFICALLY for the OS it is run on, which means separating out the GUI from the background implementation and coding it for the platform it's intended for.

The Mac user base may be small now, but it IS growing. Eventually you will need to be able to do it properly. Might as well learn how to do it now, even if you won't be using it in actual practice anytime soon.
     
TampaDeveloper
Dedicated MacNNer
Join Date: Nov 2003
Status: Offline
Reply With Quote
Jun 26, 2005, 02:41 PM
 
Well, I consider myself a Mac guy at heart... But I'm starting my own business and I was having too many issues trying to develop on my powerbook. For one, I kept having to borrow my wife's PC Laptop to make sure my web pages looked okay in IE... Then there was the shared folders issues I was having.. They should just work.. but they just weren't. Next, we've got a Canon MultiPass F60 that doesn't have Mac drivers. I blame Canon and I never would have bought it had I known it didn't support Mac.... But alas, we're stuck with it.... Next, we were thinking of buying a Vinyl cutter, else an embroidery machine for doing promotions... You guessed it, very few choices in the Mac world.

Sooo... To make a long story short. I got sick of fighting the system and bought a VAIO. I'll probably buy one of the new Macs in a year or two.. The old powerbook is going on ebay as soon as I'm confident that I've got everything migrated over....

Anyway, I'm not as optimistic about the growing Mac market as others here. I think its a superior product and I root for it. But I've got bills to pay now.
     
Detrius
Professional Poster
Join Date: Apr 2001
Location: Asheville, NC
Status: Offline
Reply With Quote
Jun 26, 2005, 03:18 PM
 
Originally Posted by Person Man
Yes but,

Applications built using these toolkits on the Mac won't FEEL like Macintosh applications. If an application doesn't FEEL like a Mac application (i.e. feels like something that was written for Windows first or Linus first), then I won't use it.

And I know many other Mac users won't either.
The nice thing about wxWidgets is that on each platform, it's is a layer between the program and the native GUI. Qt, on the other hand, uses its own widgets, IIRC.

It just so happens that I'm using wxWidgets now. I prefer Cocoa, but wxWidgets seems pretty well designed. If you use Cocoa (or Carbon), you get to use Interface Builder. If you use wxWidgets, you don't.
ACSA 10.4/10.3, ACTC 10.3, ACHDS 10.3
     
   
 
Forum Links
Forum Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Top
Privacy Policy
All times are GMT -4. The time now is 07:33 AM.
All contents of these forums © 1995-2017 MacNN. All rights reserved.
Branding + Design: www.gesamtbild.com
vBulletin v.3.8.8 © 2000-2017, Jelsoft Enterprises Ltd.,