In my first blog post I mentioned that Base Two provided me with a MacBook Pro as part of the apprenticeship program. Previously I had been running Ubuntu 16.04, and so I've had to learn the Mac way of doing things.
If you're on a Mac, you're likely to be familiar with how I set things up. But if you're new to developing on a Mac, you'll find this guide helpful.
- Oh My Zsh
- Python && Python3
- iPython && iPython3
- Shortcut to open terminal window
Mac users seem to use this instead of the default Terminal. I installed it, and I haven't found a reason not to use it.
I like that it makes the background black without me having to mess with
.bashrc (though #2 will take care of that anyways).
It loads a little more slowly than Ubuntu's terminal, but it comes with extra
features. For example, when there is a URL or directory path printed in the
Cmd to render it as a clickable hyperlink.
You can set a default window arrangement, including number of windows, their positions, font size, etc. Refer to this StackOverflow answer.
2. Oh My Zsh
I used this on Ubuntu also. It's a zsh configuration, and it's the only reason I'm using zsh instead of bash. I don't really take advantage of the differences between the two.
I like the default theme, and especially how it handles Git repos. It provides excellent tab-completion upgrades. For example, tab-complete is case insensitive, and it also searches for available CLI arguments.
Most of all, I like that I can rely on it out of the box. I value the freedom to wipe and reinstall without much overhead.
MacOS comes with
curl already installed. To get Oh My Zsh set up,
run the curl command found here:
Note: zsh has its own config files.
~/.zshrc instead of
~/.zprofile instead of
This is a package manager like Ubuntu's
apt-get. Commands I use:
brew update # Update Homebrew and its formulae from the main repository brew install <package> brew uninstall <package> brew upgrade <package> brew outdated # List all outdated packages brew upgrade # Upgrade all outdated packages to their newest versions brew pin <package> # Pin package at its current version, preventing upgrade brew list # Show all packages installed with Homebrew
brew updatebefore using Homebrew as good practice.
- After running
brew upgrade, if a package isn't working, run
brew uninstall <package>and then re-install it,
brew install <package>
4. Python && Python3
Mac comes with a system version of Python, but it's better to leave that be. Instead, use these new installations for your work. (It took me too long to learn this.)
brew install python python3
Note: This also installs
pip3 (Python's package manager)
5. iPython && iPython3
If you aren't familiar with iPython I strongly recommend you try it out. As a Python REPL, it gives you a score of features over the plain interpreter.
It has syntax highlighting and tab-completion. It auto-indents your blocks as
you type (functions, loops, etc). You can pull your code from the clipboard into
the REPL with
%paste, one of iPython's
(It even ignores '+' and '>' characters for pasting from diff files or the basic
I could go on. It's extremely powerful. If you play around in the Python REPL ever, use iPython instead.
pip install ipython && pip3 install ipython
I found that
ipython was running Python3. Test your installations:
ipythonto ensure it runs on Python2
ipython3to ensure it runs on Python3
ipython runs on Python3:
- In one terminal, run
- In another terminal, run
where ipython, and open the output in a text editor
- Change the first line of the file from (2) to point to the output of (1).
Example (the specific outputs are apt to change):
where python2 # (1) # /usr/local/bin/python2 where ipython # (2) # /usr/local/bin/ipython atom /usr/local/bin/ipython # (3)
The first line might look like this:
Change it to point to (1):
While you're at it, I recommend doing the same for
where ipython3. It's
possible that it currently points to a specific version of Python 3.x. I like to
change it to point to the output of
where python3, in order to use the newest
version of Python3 installed.
I used Sublime previously, and it has things that Atom doesn't have yet. That said, the team uses Atom, so I'm going to stick with it for consistency.
It has a nice CLI package manager that works like Node's, for example:
apm install linter apm uninstall linter apm ls
Atom was installed when I got the Mac, so there might have been some setup I'm not aware of. These are the community packages I have installed:
This is a mini-calendar for the menu bar. I didn't realize how often I used Ubuntu's until it was gone.
Note: To move menu bar icons around, hold the
Cmd key, then click and drag
8. Shortcut to open terminal window
When I first got the Mac, I really missed the Ubuntu shortcut for opening a Terminal. I followed the steps in this Stack Overflow answer to set one up, but unfortunately it doesn't work reliably.
Now I keep iTerm on the Dock for easy access, and press
Cmd+N to open new
windows from it.
There is also Spotlight, similar to Ubuntu's Launcher. Press
bring up its search bar.
Do you see things you disagree with, or things I could add or change to make this more helpful? Do you have questions and want to chat about any of this? Ping me in the comments @rdunkle.