Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am about to start a new job at a startup company on Monday. Today they asked me what I want for a PC for work, Windows, Linux or Mac (presumably a laptop). I am proficient with Windows and Linux but I have never used a Mac, so without hesitation I said I wanted a Mac. Without looking like a idiot on the first day of the new job and without access to a MacBook over the Thanksgiving weekend, what resources would you recommend for me to learn as much as possible before I lay my hands on my Mac? Looks like they use Google Apps so the office suite part is all set, for development, I will use C++/STL/Boost and GCC.

A few months ago, I asked about a slightly different question on the Stack Exchange Unix forum: Software developer switching from Linux to OS X, what are the gotchas?

Update 1: I'm expecting to work longer than normal hours, so I wouldn't think using some time on the job to acquire a new skill is such a bad thing to the company.

Update 2: I'm writing on my new MacBook Pro now, I love my new Mac. thanks for all the answers for helping with this transition.

Update 3: to naysayers out there, I'm glad that I picked a MacBook without hesitation. I love my new job and new Mac. :)

share|improve this question
14  
Without hesitation huh?.. Maybe you should have hesitated. :) –  Fosco Nov 24 '10 at 19:18
2  
Just as a footnote to answers here, I'd recommend browsing this useful question over at Apple.SE: apple.stackexchange.com/questions/400/… –  Philip Regan Nov 24 '10 at 19:59
2  
If you can't get along with Mac OS X you can always install Windows or Linux on it using Boot Camp. –  Mark Thalman Nov 24 '10 at 20:01
7  
This is a bad idea. You shouldn't be wasting company time and money for you to learn a new operating system and tools. –  Thomas Owens Nov 24 '10 at 23:45
2  
@Thomas: +10 from me, this is not about being "a man", it's about the company paying you to do a job, not waste time learning something that you're "too cheap" to learn on your own. –  Dean Harding Nov 24 '10 at 23:55
show 7 more comments

closed as off topic by Tim Post, Mark Trapp, Walter, aasc, bigown Dec 1 '10 at 12:13

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

10 Answers

up vote 17 down vote accepted
  • Terminal will be your bash shell.
  • Cmd + space is the shortcut to open Spotlight, which you can use to launch any application that you don't have in your dock.
  • Understanding the File System helps:
    • /Applications is where system wide apps go (I install everything here). An "Application" is essentially a folder with a .app file extension and most well-written apps are entirely self-contained
    • /Library is where system settings, caches, etc. are stored. Applications will put any support files into /Library/Application Support/[folder for that app]. /Library/Preferences/... is where the system and apps store preferences (duh). /Library/PreferencePanes is where Third-party system preference extensions go. *
    • /Users/[username] is the convention for your user just like every operating system these days. Inside your User directory there will be a Library folder with the same structure as above, but for your user (again, duh).
  • SVN is preinstalled.
  • XCode Developer Tools (shipped with the OS but not installed by default) will install most of the GCC stuff (I believe) but I'm not a C programmer so I can't give you details on this :)
  • Mail, the built in Mail app is great, it's the only desktop mail client I still use (by choice) on any system.

By the way, since other users seem to be poking fun, I should say I think it's a great choice, especially for a Linux user. I find that Mac has all the power and convenience of a Unix system (basic Unix commands built in, native SSH, etc.), combined with the best hardware available, a great UI and great utility apps (Adium for IM, Mail, Textmate, Preview, iCal/Address Book, etc.)

The only case in which I wouldn't choose a Mac is if I were developing specifically for Microsoft/Windows components!

[Edit:] I forgot the most common keyboard actions for someone new to Mac:

  • Cmd + Q Quit program
  • Cmd + W Close window
  • Cmd + H Hide program (better than minimize, as minimize fills up your dock. To get back, just use the application switcher)
  • Cmd + tab Switch program
  • Cmd + ` Switch window
  • Alt + ←/→ Move caret by word
  • Cmd+ ←/→ Move caret to beginning/end of line
  • Home/End or Cmd + Fn + ←/→ Beginning/end of file
  • Cmd + , for preferences in most apps
  • In a confirmation window (like Save/Don't Save/Cancel), hit Enter for the primary (colored blue) action (Save), and Space for the selected action (blue outline), which is usually the secondary (Don't Save). So just remember - Enter to Save. Space to Quit without saving.
  • Most everything else should be the same with Cmd replacing Ctrl on Windows/Linux.

*The significance of the Library structure is that to uninstall an application you can just drag the .app to the trash. You will of course still have all the support files it stored while using it, but those can be trashed in one group too if you just go to /Library/Application Support. If your application gets corrupted on upgrade, your data is safe - just delete and reinstall the .app.

share|improve this answer
5  
Actually, it's Command + Space for Spotlight. A good general rule of thumb is that if the shortcut is CTRL + <key> on Windows, it's often Command + <key> on the Mac. –  Chinmay Kanchi Nov 24 '10 at 20:01
    
@Chinmay Kanchi - oops - that's what I meant. Edited, thanks :) –  NickC Nov 24 '10 at 20:42
    
@Renesis, you can easily develop for Windows, if you install Windows in Boot Camp, and then run VMWare Fusion in Unity. VERY nice. –  user1249 Nov 24 '10 at 21:19
    
Good point! I should say "The only case in which I would use Windows at all..." –  NickC Nov 24 '10 at 21:36
    
ruby and RoR is preinstalled! –  jellyfishtree Nov 25 '10 at 4:09
show 3 more comments

There are many differences between Mac and Windows, but there are far more similarities:

  • Cut/Copy/Paste/Undo are Ctrl+X/C/V/Z on Windows and Command+X/C/V/Z on Mac.
  • Safari/Firefox/Chrome options for web browsing, VLC for playing various video file formats. The window manager is different, but the app is the same.
  • A built-in graphical file manager that acts as the default 'shell' - Explorer on Windows and Finder on Mac. Both have icon/list/hierarchical/thumbnail views and built-in zip/unzip too.
  • Your files and documents are in C:\User\<you> on Windows (Vista & 7) and /Users/<you> on Mac.
  • Quick access your commonly-run items - Quick Launch on Windows and the Dock on Mac.
  • Index-all-my-files-for-fast-searching mechanism - Windows/Google Desktop Search on Windows and Spotlight on Mac.
  • "Quickly switch between running apps" - ALT+Tab on Windows, Command+Tab on Mac.
  • Lots of equivalent applications: Notepad/Wordpad => TextEdit, Windows Address Book => Address Book, Windows Calendar => iCal, Outlook Express => Mail, Control Panel => System Preferences

There are some differences tho:

  • 'Print to PDF' and 'PDF Viewer' are built right in and just work.
  • Being an Administrator just doesn't mean the same thing. On XP (and Windows 7 in 'Run As Administrator' mode), being Admin means you can pretty much do anything you want, any time you like. You want to delete some critical file? Ok. Install drivers? Ok. On Mac, an Administrator account is required for permission to do things which affect other users or the operating system in general, but you will still get a 'Please authorize this system-wide change' security dialog before you mess things up. On Windows, Administrator is pretty much 'root user', but this is absolutely not the case with Mac - the root user account is disabled by default.
  • On Windows, it's quite easy to dive into a ton of different settings and tweak your PC to your hearts' content. On Mac, there's less tweakability and certainly a lot less UI around tweakability. Windows has the Registry to maintain all the systems settings (alas also a single point of failure) but Mac uses XML files called 'Property Lists' or .plist, which you can read/write at the command line if you need to.
  • On Mac, there's less UI (due to Design Guidelines/philosophy) and apps try to 'do the right thing'. Of course, if the right thing is not what you want, there often is no way to achieve that result in that app, so you may end up frustrated. A good way to deal with this is to describe what you want to achieve in English, rather than how you used to do it in Windows and then go hunting for the analogy. A simple example is 'Maximize a Window' - there is none in Mac. There is a similar function ('zoom window') but it's not quite the same.
  • Application installation is pretty much a drag-drop into the /Applications folder. Actual 'installers' are less frequent.
  • Windows uses Scripting to achieve a lot of automation, Mac has Automator, which is a great app for automating repetitive tasks like renaming sequences of photos, and has lots of community support.

Here are some of the best resources I can think of right now for finding your way around the Mac, migration from a PC, etc:

  1. Apple has a 'Migrate to Mac' section on their website. Start there.
  2. Apple's Find Out How website introductory videos. They're short and to-the-point. Worth watching once.
  3. Apple's "Quick Tips" video podcast on iTunes. Also short and to-the-point and worth watching once.
  4. The site ars technica has some awesome in-depth information and reviews on Mac things, particularly their huge in-depth review of Mac OS X 10.6 'Snow Leopard'.
  5. Some excellent podcasts ranging from really detailed to cynical japery. Of note are The Mac Cast (excellent detail, calm and clear presentation), The Mac Geek Gab (In-depth technical, some witty banter) and Mac OS Ken (Mac/iOS news delivered in cynical style)
  6. http://apple.stackexchange.com is coming along nicely.
  7. Apple's Developer site has lots of reference material in multiple languages.
  8. Apple's Support site has a ton of info on it.

I can also recommend attending some of the free presentations given in your local Apple Store - see their schedule for what's on.

My overall impression of Mac so far, from a technical perspective, is that it's an extremely pretty UI on top of 'normal' Unix. All the Unix command line stuff I know works just fine in Terminal, but there are UI apps too.

(I chose Windows vs Mac as my Linux knowledge is old, but I am sure there are the same analogies, even with different desktop environments)

share|improve this answer
    
PDF-support is very nice (and PostScript too). –  user1249 Nov 24 '10 at 21:34
    
Good guide. Windows has had User Account Control (UAC) for a while, so you get prompted before doing any admin/root tasks just like with a Mac. –  Adam Nov 24 '10 at 23:31
    
thanks for the links. They are very helpful. –  grokus Nov 25 '10 at 5:46
add comment

Closing the window doesn't quit the app.

share|improve this answer
    
True for most apps, not all of them. (System Preferences is a good example.) –  rightfold Oct 11 '11 at 19:40
add comment

The first order of business will be to install the development tools from the second operating system DVD; this will give you GCC, Xcode, and a bunch of other necessities for doing development on the Mac. The next thing will be to decide between MacPorts and Homebrew. MacPorts has a larger library, but is often out of date and (my opinion speaking here) in a state of super-gradual decline. Homebrew is the trendy product of the Ruby community and is more modern and up-to-date; however, Homebrew does not have the massive selection of packages as MacPorts (a quick check shows that it does have the Boost package).

As far as applications go, the first thing you need to install is Quicksilver (essentially a better Spotlight, but you'll discover it has a whole lot more than just a better Spotlight as you use it). Beyond that it's really not too different from UNIX/BSD; you'll quickly figure out where you're familiar things have moved to.

share|improve this answer
    
I am a Quicksilver fan but the only thing I really find it better for are better handling of typos (finding Te r min al if I type "Temin") and I like the look & feel better (big icon in the middle of the screen instead of small in the corner). –  NickC Nov 24 '10 at 19:47
    
A few things I depend on it for are the clipboard history, calculator plugin, and the actions menu for basic navigation and manipulation. The customizable appearances are also a major appeal. –  dirk Nov 24 '10 at 19:56
    
+1 for mentioning Brew. I was certainly confused there was no package manager bundled. –  Alison Nov 29 '10 at 16:55
add comment

When you open the new laptop, look for an icon like this (usually it is in the dock, which is at the bottom of the screen):

safari_icon

It is the browser.

share|improve this answer
    
Thanks, this one I do recognize because I have an iPad and iPod touch. –  grokus Nov 24 '10 at 23:03
add comment

Chrome is Nice. Also, live with the choices Apple has made for you, otherwise you Will be VERY frustrated

share|improve this answer
1  
...but realize that when you do live with them, you'll still be very frustrated -- but it'll be about the same level of frustration, and less work to achieve it. –  Jerry Coffin Nov 24 '10 at 20:29
1  
@Jerry, not quite. I find the Mac quite nice after realizing that you just have to go with the flow and let Apple make their decisions. Eclipse runs nicely too. –  user1249 Nov 24 '10 at 21:16
1  
I suppose I can't speak for anybody but myself, but when I've tried it, I've consistently found it incredibly frustrating. The only UI I've ever used that I could honestly say was worse was a Control Data mainframe with various and sundry dumb terminals -- and even that was only slightly worse. Then again, I've tried Eclipse several times too -- and am pretty well convinced that whoever designed it had to be either sadistic or stupid. I'd (quite literally) rather write code using DOS edlin or UNIX ed. –  Jerry Coffin Nov 24 '10 at 21:22
2  
@Jerry, as we say around here "taste cannot be discussed". I like my Mac, you don't. Fine with me. What do you like better? Windows? Ubuntu? and why? –  user1249 Nov 24 '10 at 21:33
1  
@Jerry, that sounds like a problem with the editor or IDE you use and not the whole platform. –  user1249 Nov 25 '10 at 9:16
show 4 more comments

Fink

Not a gotcha; it'll give you apt-get access to some stuff you were used to on Linux. It works for me (though, to be fair, the programs I use for development are just git and emacs). If you used a specific window manager on Linux, you should be able to do the same on OS X by running X. I haven't tried it, but I know xmonad and ratpoison are avaliable, among others.

share|improve this answer
add comment

Great answers so far. Here are a few more suggestions:

Virtualization on the Mac rocks

I develop on Mac, Linux, and Windows, and use a MacBook Pro for all three at times. But I never use BootCamp because the virtualization tools are so good. I personally prefer VMWare Fusion because it's really solid, has a great feature set, and makes installing Windows or Ubuntu a snap. But I've also found VirtualBox to be reasonable (and free), and some folks swear by Parallels. Right now, I've got two Ubuntu Meerkat virtual machines set up in VMWare, and historically have used it for every version of Ubuntu back to Hardy, as well as WinXP and Vista, and even the BeOS clone Haiku. The only serious problems I've run into have been with drivers for prototype USB devices that really expected to run on genuine iron rather than a virtualized USB system.

There are some great GUI text editors on the Mac

Xcode's editor isn't bad, but if you really want Mac cred, grab yourself a copy of the completely free TextWrangler, which also does great recursive searches and graphical diffs. Some other good ones include the open-source Fraise, and commercial options like BBEdit (TextWrangler's big brother) and TextMate.

Lots of version control options

All the modern commercial and open-source players have ports to the Mac. I use Perforce currently, and have recently used Subversion and git. The GUI tools are pretty good, too, with the exception of git, for which the best option was the old-school git-gui the last time I checked.

Incidentally, MacPorts vs. Fink for getting Linux-y stuff is mostly a matter of personal preference. Would you rather get your binaries prepackaged ala Ubuntu (Fink)? Or have a tool that downloads the source and builds it locally (MacPorts)? I use MacPorts myself, but that's because I hack on some open source components and wind up replacing parts of what MacPorts or Fink would install, and prefer to use things that are built and installed in the exact way I'd do it myself.

share|improve this answer
    
Smultron is pretty awesome and free for a text editor. no longer maintained though :( sad face. smultron.sourceforge.net –  jellyfishtree Nov 25 '10 at 4:16
    
@jellyfishtree: Smultron is now Fraise. (The app names are strawberry in Swedish and French respectively; the original developer was Swedish, and the new guy is French.) –  Bob Murphy Nov 27 '10 at 23:49
add comment

I realize you've already accepted an answer, but here's a bunch of tid-bits I've picked up since I made the switch from windows, for you or others making the switch.

For more geeky/terminal-ish stuff, install homebrew. This is a life saver for me. It works just like MacPorts or Fink, except (IMO) it does a better job. For example, to install the Boost libraries to all the right places: brew install boost

For general text-editing, you can't go wrong with TextMate. When I first got my MacBook, I tried a bunch of different editors, but TextMate was worth every penny; I use it everyday for everything and haven't looked back.

If you spend a lot of time in your Terminal, a super-useful tool I've found is Visor, which binds a Terminal overlay window to a custom hot-key, to just pop in and out at your command.

For C++ development, I tend to either use TextMate for light-weight stuff, or I use QtCreator as a suitable replacement for Visual Studio. Note that although it strongly pushes you to use the Qt framework, you don't have to, and last time I tried, it had mediocre support for Boost...

share|improve this answer
add comment

Besides the things that have been covered, I'd like to add an answer to recount my own experience. By in large, Google is still the most useful tool.

Navigation:

  1. Space to page down and Shift + Space to page up.
  2. Use two fingers on the touchpad to scroll the screen.

Browser:

On Windows and Linux, you can press Alt+D to focus on the location box, but on OS X, you need to press Command+L. I'm still getting used to this.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.