Welcome to my MacBook Setup.
This page is intended to document my current setup on my development MacBook, right down to my “down-time” software. It should act both as a reminder to myself come the dreaded day I need to set up from scratch, and as a quick guide for anyone curious how I have things set up if they would like to do something similar.
Quick Note: I use Chrome as my primary browser, with synching enabled, which means all of the apps from my ChromeBook are available quickly and easily on my MacBook as well and I use them regularly. Check my ChromeBook setup for more on that.
MacBook Pro 15″ Retina
2.3GHz quad-core Intel i7 (Turbo to 3.5GHz)
NVidia GeForce GT 750M (2GB GDDR5)
16GB DDR3 RAM
512GB Flash Storage
MadCatz R.A.T. M BlueTooth Mouse
Apple BlueTooth Keyboard
Everyone has their own preferences when it comes to how to purchase. In my case, this model is fast and powerful right now, and should last me a few years easily. On top of that, it’s portable enough to take to work and bring home. I had considered a Mac Mini, but the setup/teardown would have been much more painful.
As for the accessories – even if you don’t believe in pair programming, I highly recommend having a spare mouse and keyboard available at all times. You never know when you’ll want to collaborate with another programmer, and sharing a laptop keyboard is a huge pain.
(The last question, why an nVidia model, is answered below. It was a small extra investment, and I didn’t have a gaming-capable PC to play with my friends. Now I do ;P)
Start by installing the following useful software packages.
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
Note that you may need to run
brew doctor before using homebrew.
Just get this straight from Oracle’s site. (Google if you’re having issues.)
By default, apache is already installed. Just start it up with
sudo apachectl start
You can also uncomment
Include /private/etc/apache2/extra/httpd-vhosts.conf in your conf file. I use the following Virtual Host:
<VirtualHost *:80> DocumentRoot "/Users/Crias/Web" </VirtualHost> <Directory "/Users/Crias/Web"> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny Allow from all </Directory>
There are other ways to accomplish this, but this has the fewest modifications to existing configurations and allows me to serve web traffic from the Web folder in my home directory.
MySQL can be installed with HomeBrew. After installing, pay attention to the output for extra instructions on setting up the launch daemon.
brew install mysql mysql.server start #To start MySQL mysql.server stop #To stop MySQL mysql -uroot #To connect as Root #Set the root password to 'password' (phpMyAdmin will want this) mysql-admin -uroot password password
Scala is easy to set up. In fact, it can be condensed down to a single command:
brew install scala sbt maven giter8
Python is also installed by default. However, to do web-development (like Django) you may need wsgi.
To install mod_wsgi simply:
brew install homebrew/apache/mod_wsgi
When I first did this it gave me an error relating to the XCode Toolchains. If you get this error, install XCode and then execute the following command first:
cd /Applications/Xcode.app/Contents/Developer/Toolchains/ && sudo ln -s XcodeDefault.xctoolchain OSX10.9.xctoolchain
Now all you have to do is edit your
/etc/apache2/httpd.conf and add the following line:
LoadModule wsgi_module /usr/local/Cellar/mod_wsgi/3.4/libexec/mod_wsgi.so
sudo apachectl -t to make sure it worked. (If not, check versions.)
PHP also comes pre-installed, so we’re just going to add it to our Apache instance.
To do this, edit
/etc/apache2/httpd.conf and remove the hash-sign at the start of the LoadModule for php5.
Once that’s done, you should try to run a script like the following to ensure PHP and MySQL can talk:
<?php mysql_connect("localhost", "root", "password") or die(mysql_error()); ?>
If that doesn’t work, you probably need to run the following commands:
cd /var sudo mkdir mysql sudo chmod 755 mysql cd mysql ln -s /tmp/mysql.sock mysql.sock
Lastly, I recommend installing phpMyAdmin. It should be as simple as downloading and unzipping to your web folder. You can have a more complex setup, but that should get you started.
I also recommend looking into the following software
Similar to spotlight, but I prefer it. I usually disable spotlight shortcuts and use this instead.
I prefer this to Terminal. At one point I’ll add a handy script here that I use to color-code environments I SSH into using profiles.
Useful text editor, opens files as well as directories and very powerful.
Great for keeping notes synchronized across multiple machines. In fact, it’s how I kept all of the details on this page until I put it up here.
Powerful IDE for Java, and the Community Edition is compatible with Scala and Python. Full version handles PHP, Node.js, Ruby, and everything else you could need.
SCUF Gaming XBox 360 Stealth (Wired)
TurtleBeach PX21 Headset
360Controller by MICE
CounterStrike: Global Offensive
Left 4 Dead 2
Ok, I admit it. I’m a console gamer. Don’t worry though, I’m not about to tell you I play FPS with a controller. At least, not how you’re thinking…
My biggest issue is I can’t use two unfamiliar controls (mouse/keyboard) at the same time. I end up either standing still and aiming, or spraying wildly while I strafe. To get past this, I use a strange Hybrid setup. My RAT mouse in my right hand to aim, and a shiny (ok, matte) black two-paddle SCUF in my left. This lets me just move naturally the way I’ve spent years learning to, while still getting the precision of a mouse for aiming.
For the software, “360Controller” acts as the driver for the controller and “Joystick Mapper” lets me map any extra buttons that games don’t recognize. My RAT mouse also isn’t recognized by some games, so “SteerMouse” lets me map all of my buttons appropriately.