tags:

views:

499

answers:

6

I've been using MacBook Pro for a few months at home, and I was wondering if there's a good book or guide that can help me be a better programmer on Mac. Maybe Mac-equivalent of Beginning Linux Programming. Note I am not looking for resource on how to program Mac application, instead I am looking for more general guide of using Mac for general development environment.

As a background, I am a Windows programmer by day. I've also done some Linux and BSD over the years, esp in school, like socket programming, graphics, make install type stuff. At home, I'll be doing Java, Scala, PHP, etc. on Mac.

So far, I've been using Eclipse, QuickSilver, and TextMate. VMWare Fusion, XCode and NetBeans are set up, but I don't use them. A DVI KVM switch is hooked up to real keyboard, trackball, and monitor. Recently stayed up till late fighting with MacPorts, and figured out I needed x86_64. The most struggle I had was configuring PHP. I don't know why they don't ship with MySQL and GD library. I eventually figured it out Googling around, and built the extensions from source. I have a feeling that I didn't get the memo and didn't read some basic guide on how to become a programmer on Mac, like how the whole architecture works. How can a Windows programmer be sufficiently productive on Mac OS X?

Related: Setting up a Mac for programmers

Edit: The specific type of application I want to develop doesn't really matter in my opinion. It could be Java, Scala, PHP as I mentioned or Cocoa, C++, or whatever.

What I am looking for is specific book, resource, advice on how to be more effective programmer on Mac, preferably something beyond "install XYZ".

+1  A: 

If you're looking to write anything cross-platform, it can be very helpful to have a virtual machine for testing. When in Linux, I've always used VirtualBox, and it works on OS X as well.

Also, as for choice of IDE, a lot of it comes down to your preference. Eclipse is nice because there's a plugin for almost everything for it. My experience with TextMate is limited, but my local Ruby Users Group swears by it.

Finally, a suggestion for not just Mac, but any platform really. Learn your hotkeys, set up new ones for things you commonly do, and use them frequently. Not having to take your hands off the keyboard to click a mouse through a few menus can really improve productivity. It may take a little time for them to grow on you, but once they become second nature, you'll wonder how you lived without them.

statenjason
Virtualization can also be slow, and I don't think the author was asking how to use Windows on his Mac, but rather how to get used to his Mac.
Michael Aaron Safyan
I'm not saying that he programs in a virtual machine. I'm saying that if he's writing something (in OS X) that may be used in different platforms that a VM is a very helpful thing in testing.
statenjason
Make your computer work the way you want. If that means installing a virtual machine with a different OS, go with it. You can be productive quicker that way versus having to retrain yourself to do things some other random way.
Brian Knoblauch
A: 

I have a similar situation like yours. I use Windows for development and about a year back purchased a MBP for home (as I shifted to an office). I find it really difficult to get any real work done on my MBP. Somehow am used to the Windows environment with dual screens. But let that not stop you. A couple of software which I suggest you should get are:

  1. Transmit - Good ftp client
  2. MAMP - Runs a webserver nearly out-of-the-box. Good for basic development
  3. Quicksilver - Helps in quick finding of applications
  4. Spaces along with gestures (Configure your gestures to move from one screen to another, I use three fingers glide. its amazing)
  5. Entourage - for email
  6. Terminal - for ssh (putty alternative) (included)
  7. Dreamweaver/BBedit/Textmate (all pretty decent. but i love editplus on windows. not a fan of IDE)

I assume your question is not about learning COCOA and more about being more effective using a MAC. Well, the above tools might help you.

Unfortunately, your question isn't very clear as to what you really want.

Alec Smart
+2  A: 

You seem to want an overview of how Mac OS X works at a system level, more than recomenations about tools and so forth. If that's the case, I'd start with the (very basic) Mac OS X System Architecture Guide from Apple, then move on to Getting Started with Mac OS X, which should give you enough of an overview to get started.

It's not clear from your question what you intend to actually make with your programming time, but if you decide to persue Cocoa/OS X development, I recommend Cocoa Programming for Mac OS X by Aaron Hillegass.

Brian
+1 for Getting Started with Mac OS X.
eed3si9n
+3  A: 

Having converted from Windows to Mac OS X about five years ago, I often find myself thinking the same thing. I just cannot be productive on Windows (as much, I can be productive) as I can on Mac OS X.

To be honest, there are lots of small differences between Mac OS X and Windows. I find the biggest reason for people thinking like this (at it normally only applies to gamers and developers) is that they are trying to use the Mac like a Windows machine. You need to learn to accept that you have to use the command key, not the control key, etc.

It sounds like you are using a Mac because you have to as opposed to because you want to. It really is a much better platform than Windows once you get used to it.

I think a lot of Windows programmers come to Mac and don't try to learn it properly because they are complacent thinking they know it all because they have "used Windows all their life". I guess once you discover Spotlight, Expose, Mac OS X Keyboard shortcuts, etc. You will find your self being MUCH more productive that you ever were on Windows.... and its actually a fun OS to use.

Checkout some of the best Mac applications you can get here and here. You can also do a search for "top 100 mac apps".

Also, I noticed you were trying to setup some kind of web server directly into Mac OS X. It does ship with one, but if you are going to add MySQL and some other extensions I wouldn't go the MacPorts route. Get VMWare Fusion or VirtualBox (open source) and run the server in a VM. Much cleaner. I have a subversion/trac FreeBSD VM that handles my local version control.

I would like to add that if you don't presently use Xcode, you should definitely learn it and use it asap. It's a much nicer IDE to use than Visual Studio and it will make your life much easier.

Don't forget you have probably spent years on Windows help sites, you're going to a small degree need to do that with the Mac. Whenever you have a problem about using the Mac, ask a question on ServerFault. We are all more than eager to help you out.

Good luck.

Brock Woolf
I had to swap the meanings of Command and Control on my Mac so that I could stay sane while working on Mac/Linux/Windows.
Nosredna
I find having the command key in the centre of the keyboard makes it easier to reach the other key I need to press in combination. But now I can switch between Mac and Windows keyboard shortcuts and don't even have to think about it. It's become truly automatic for me.
Brock Woolf
+1 I was "converted" to the Mac OS last year when I bought my first Mac (one of the unibody Mac Book Pros). I too have learned all the differences from Windows (pretty quickly actually). There's just no turning back for me, at this point.
Ryan Delucchi
@Ryan I know It's a lot of fun being a Mac user. You couldn't make me go back to Windows if you tried. And that's after having used it all my life :)
Brock Woolf
A: 

Basically, you can apply all your Linux/UNIX knowledge that you already have to the Mac. If you use the Terminal (/Applications/Utilities/Terminal.app) you can run all your favorite UNIX commands. Mac has a special command called "open" which is equivalent to the Windows "start" command (used to launch programs and files). You can also use "open -a" to open an application by name (e.g. "open -a Finder").

You might want to reconsider Xcode. Xcode opens more quickly than Eclipse and provides very good syntax highlighting, brace matching, block indenting, and more. Xcode doesn't have to be used as an IDE, you can also use it as a code editor, just like you are currently using TextMate.

Michael Aaron Safyan
Instead of the built-in Terminal.app, I'd suggest iTerm - http://iterm.sourceforge.net/ - it adds lots of nice things like a tabbed terminal, transparency effects, etc.
Nate
Yeah, I use iTerm as well on my Tiger machine. However, builtin Terminal is slightly snappier and, since Leopard, supports tabs.
Michael Aaron Safyan
A: 

For code editing (and everything else), try Aquamacs (http://www.aquamacs.org). It's a Cocoa-native build of Emacs, and it's brilliant for any programming task.