19
votes
What's your "must have" software for a MacBook Pro, especially for programming?
Just got my first MacBook Pro, and I've been setting things up. Wondering what people's "must have" software on MacOS is and what programming tools you might recommend. I've heard that I should definitely install homebrew
so that I can have a real package manager like I've got on Linux.
Try using Apple's first-party apps first.
Seriously. You just spent a large sum of money on a great software experience. I would recommend spending a month going "full Apple". Use Safari (at the very least, it's got the best battery life). Try out the iWork suite. Set up Time Machine, and use Preview for editing PDFs instead of Adobe. Use native multitasking, even though everyone will recommend BetterTouchTool. The default Terminal is great, and it's gonna get better with zsh in the next update.
Then, after the month is up, start to fill in the holes. I bet, if you give it an honest try, there will be less 3rd party software you need to install.
Safari is the only part I would disagree with. The last time I used it it was painfully slow. It's not worth any battery savings IMHO.
I was going to disagree with you on iWork, too, but that was before I realized that it was free now.
My mac is very old now. :(
So far, for me, Safari is definitely a bit slower than Firefox Nightly, but it's not too terrible. Definitely 100% usable. In my opinion, it's worth the battery savings, as I watched Nightly munch like 5% of my battery in about the same amount of time last night (although, admittedly, I did have a page that was doing some pretty intense WebGL stuff open).
Part of me wants to build a MacOS battery statistics application (emulating the one on iOS) so I can get some real answers about battery usage on this device.
The Activity Monitor has an Energy tab that will tell you about power usage. And if you want more, there's coconutBattery.
Yeah, I know Activity Monitor or a third party app could do it, but it's also kinda fun to roll my own stuff, even when it ends up being a half-baked implementation of 60% of the functionality I originally wanted.
Interesting, I love FF on my windows machine, but t feels painfully slow on my Macbook. Both computers are starting to show their age though, so it might be that
I mostly only notice Safari being slow on pages that have tons of external modules like twitter or disqus integration. I think it has to do with their built in stuff to foil device fingerprinting. Most other sites I haven’t noticed any difference. And even in the former case it hasn’t bothered me much. The seamless integration across my two computers, my iPhone, and my iPad is worth the tradeoff to me.
Were you running any extensions in Safari? I’ve noticed those can slow things down considerably if they aren’t well written.
That's definitely good advice. For the most part, that was my plan, especially after watching FF nightly, my usual browser on my desktop, munch my battery. Definitely gonna stick more or less to Apple's offerings when they have something in the area I need.
If you're use to Linux, honestly the best part of OSX for development is that you have a good terminal, a fully fledged unix system, competent package manager in brew, and (IMO) a much nicer desktop experience.
Personally I install VSCode as the text editor that fullfills the space when I want more than vim but not a full IDE.
I guess if you ever consider doing software for OSX/iOS, then you'll need XCode.
Xcode is helpful to install either way because it's the easiest way to get the most common UNIX-y dev tools (git, clang, gcc, etc) on newer versions of macOS.
And another +1 for VSCode for any programming you do outside of iOS/macOS native code. Xcode is still the king for Objective-C and Swift, but VSCode wins at just about everything else.
I work with a few older Apple developers that prefer BBEdit, and I do agree that it's a powerful tool (and there's a pretty fully featured free version available). Doesn't hurt to keep around.
Do you know what kind of programming you'll primarily be doing?
Going into college as a CS major, so I'm gonna guess that I'll mostly be doing Python, Java, C, and other typical academic languages for the foreseeable future. Also planning to learn Rust and CL and maybe some Go for side projects, as I've been fascinated by generative art for a while and also have some random ideas I think would be fun to implement.
If you are doing anything Java related, then I recommend downloading and installing IntelliJ IDEA - it is the de facto Java IDE as it is stupidly easy to use. You just point it at your source code, IntellIJ will think for a bit, and then 99% of the time it will work everything out. Also, good news - as you are still a student there may be a chance you will get free educational license and then you'll get additional licenses for other languages, such as Python and Go.
As a college student, you might be fine with using Oracle's Java JDK but I'd strongly recommend you look elsewhere for your Java JDK, such as Azul Zulu JDK. The difference between Oracle and any other JDK out there is that Oracle slaps in some proprietary APIs and then tries to charge out the nose for anyone who is caught using those APIs. Meanwhile, other JDKs build from OpenJDK which is the open source implementation of the Java spec. For the most part, they are both the same and I'd like to think Oracle isn't so evil that they will go after poor uni students - but this is Oracle we are talking about.
Love me some IntelliJ, the community edition is pretty great.
Bonus tips: the the following plugins:
I'll definitely keep your advice about the JDK in mind. Not sure if my school will have any specific requirements, but if they don't I'll definitely look towards a non-Oracle version (I've spent enough time around programming parts of the internet to know how shit they are as a corporation).
I'll chime in and tell you to give Sublime Text 3 and/or BBEdit a try!
I've heard Sublime is really good, and I tried TextWrangler for a while on a family Mac when I was younger. I'll make sure I take a look at both. Thanks!
TextWrangler's been deprecated and had its functionality folded into BBEdit IIRC.
That's correct, I miss TextWrangler but BBEdit fulfills the same purpose. BBEdit is an extremely solid and full-featured application, even if you don't purchase it. It's the gold standard Mac text editor as far as I'm concerned (though vim has its place in a companion role).
I know a lot of people love Sublime Text but I don't really get it. I've known a number of devs who use it as their primary IDE but it's painful to watch their workflows in it. Depending on your needs you should really be using VS Code, IntelliJ, Xcode, or even Eclipse for actual programming in a project of more than, say, 5 files. At the same time, I don't think Sublime really brings any functionality to the table that isn't already in BBEdit or vim. It just seems superfluous to me.
VSCode is shockingly good. Really, it's hard to believe this amazing free app came from Microsoft. I use it on both my Mac and Windows PC.
If your Mac is a laptop, how's the battery life with VSCode? IIRC, it's an Electron app, and I've seen from experience over the last little while that those munch battery quickly.
It's much lower than Chrome and Discord and the computer game I regularly play... but higher than everything else? So, I'm not sure if that's good or bad. It surely doesn't sink my batter quickly.
Well, that's good to know. Thanks!
iTerm2 is better than all the other terminals on macos.
Regarding xcode, if you don't want to use the ide, you can install 'xcode command line tools' to just have the compiler.
If you're learning CL, make sure you use SBCL as your common lisp implementation. Not that there's anything wrong with the others, but that one's the best one. Also quicklisp is a nice package manager.
Regarding generative art, why do you want to use go? Its constraints aren't really useful except in large codebases. I assume that in generative art, which tends to be more experimental, you would want something fluid and dynamic like python, ruby, or perl6. Or, for that matter, lisp.
Im going to nitpick a bit. iTerm 2 is the second best terminal on macOS, right behind the iTerm3 beta ;) idk if you have looked at the new features added to it but they are really nice and helpful IMO (also now that I say something I don’t know if it’s still a beta or if it’s been fully released. whoops). I’ll agree though, whenever I try to go back to macs default terminal (I haven’t gotten csshx to work with iTerm but I haven’t worked too hard on it since I usually use ansible over csshx) it is so painfully worse than iTerm.
Already installed the Xcode CLI tools :)
I've played with CL on Linux before, so I was already planning on using SBCL. Thanks for the advice, though!
And I guess I wasn't exactly clear about the generative art stuff, as I have no real intention of using Go for the generative art bits. I was thinking more along the lines of Python, Processing, and CL for that, if I actually go and try to make things.
My process: Get homebrew first (via Safari before anything else) and use
brew cask
to easily install standard mac apps like browsers, terminals, editors, and all the other must-haves from the CLI. When I'm already using it on a previous machine, I runbrew cask list
on the old box to get an app list and just reinstall these to get up and running super fast.Here's a selection of important ones for my current setup:
Havent seen Docker or VirtualBox mentioned yet but those usually find their way onto a fresh install pretty quickly
Gimp works very well. I use CyberDuck for ftp (though VSCode can do that, too). I use github desktop for simplicity's sake.
There's an app called "scroll reverser" or something like that. I need it. It allows you to change the mac's native scroll option, but also do different for touchpad and mouse.
I don't generally use a mac; but isn't there an option somewhere in the settings you can use to make the scrolling sane? I seem to recall toggling that once when i used a mac.
Indeed it is in the settings - Just untick "Natural Scroll" (like I did in the screenshot) - I just checked and it's under Trackpad for Macbooks and I believe it's under Mouse for iMacs or desktop based Macs.
The most annoying thing about it is that it's the default on Macs and for some reason this behaviour has been cloned on some Windows Laptops and in some versions of Linux - I personally cannot stand it!
I think it's more prevalent on (non-Mac) laptops that also have touchscreens. I can certainly see the logic there - it's an odd sensation to swipe one way on the screen itself but the opposite on the touchpad, but 20 years of pre-touchscreen conditioning is obviously hard to overcome!
Yeah, you can reverse the scroll direction... but it's "backwards" between the touch pad as mouse. So if I flip it so the touch pad is "right", the mouse is then "wrong". This app lets you control them independently.
This plugin adds a decent path bar to the finder:
https://bahoom.com/finderpath/
If you are going to use a command line I reccomand using Iterm2 and instead of Using an outdated version of bash osx comes with. Is updating to zsh which will be the default on macos in the future.
https://gist.github.com/derhuerst/12a1558a4b408b3b2b6e#file-mac-md
And use oh my zsh to make it even better.
https://github.com/robbyrussell/oh-my-zsh
Not so much for coding, but I've found BetterTouchTool awesome for enabling custom trackpad gestures in various apps. I've been using it so extensively, it feels weird to use someone else's machine and not have it.
I'm a little late on the reply, but a million times this. BetterTouchTool is the Mac user's secret weapon. I can't stress enough how useful and powerful it is, and how it has turbocharged the way I work. It's got a silly name that makes it sounds trivial, and describing it as merely a trackpad gesture utility does it a disservice.
In addition to custom trackpad gestures, BetterTouchTool lets you create Magic Mouse gestures, traditional mouse behaviors, keyboard shortcuts, remote control responses, and entire custom touch bar UIs. These things can trigger a deep library of configurable options, and can be made available globally or in app-specific contexts. You can define custom triggers for special use cases and easily automate tons of things. Whenever I dive into the settings I'm flabbergasted by how much control it gives you. It's still under active, heavy development after 10 years.
You can get a lifetime license for $21, which is frankly a steal.
I love TextMate 2 as an all-purpose, native macOS text editor. It has many bundles you can use to extend it, and you can write your own.
As many others said, iTerm2 is superior to built-in Apple's Terminal. After downloading that, install homebrew, but don't expect it to be as good as package managers on Linux.
Not all of this stuff is free/open source, but here's some stuff I use (listed in no particular order):
Get BetterTouchTool on there. You can configure all kinds of keyboard and mouse shortcuts that can make you way more efficient. I've got it set up at this point where I can navigate the entire interface without ever touching the mouse/trackpad, even to move and resize windows. Whenever I have to use someone else's Mac nowadays it's a bit disorienting.
The other thing to do is get comfortable with using Spotlight (invoked by pressing Cmd+Space). It's much more elegant of an app launcher than using the GUI. And then once you get used to Spotlight, you can upgrade to something like Quicksilver, Alfred, or LaunchBar and take it to the next level.
I use ByWord as a distraction free markdown text editor and pseudo-notebook. Though I've been considering switching over to BBEdit just for the file-manager features, but having to write everything in HTML is kind of a pain for how I use it.
Sublime Text 3 or Visual Studio Code
Transmit (FTP)
iTerm 3
No one seems to have mentioned BBEdit yet. It’s a text editor (and a lot more). I’ve used it for years and it can handle multi-gigabyte files with ease. It also has great find and replace functionality that has made tedious tasks a lot less painful.
It’s free to try and only $50 to buy. Well worth the money in my mind.
As many others have mentioned, Transmit is a great FTP client. The same company, Panic, also makes a very nice text editor named Coda.