I made the switch to Mac for development around a year ago, and it’s awesome. Whilst I don’t agree with many of the policies and ideas that run Apple, they do have a damn good and fast OS, and some incredible hardware. Everything always feels super responsive, and with OSX you get a proper terminal since it’s basically a fancy linux distro. It is also a fancy linux distro with actual software support. Everything I need to work with designers or clients I can run without a damn VM, even Office 2016 now mostly works on OSX.
In this article I will share some of the tools I use every day for development, not necessarily the best software, but definitely the best for me!
XCode
XCode is not only a handy IDE for iOS development, but installs a bunch of essential tools with it like ruby, python, perl and a bunch of compilers for, as an example, the C family of languages. If you don’t want to install the IDE unnecessarily you can simply install the command-line tools.
xcode-select --install.
Command-line Tools
Homebrew
Homebrew is a application manager akin to apt-get in linux, it can install all the software and applications you might need to extend OSX to suit your needs. Basically all the things you need that Apple left out. It can be installed using a ruby gem with the following command:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)
Homebrew allows you to install the command-line tools you’ll need with simple commands. For example if I want to install node the command would be as simple as:
brew install node
No need to find the correct download page, or link, or anything.
If you have upgraded to El Capitan you can use
sudo chown -R $(whoami):admin /usr/local
to fix permission issues due to apple’s new SIP process.
ZSH with OhMyZsh
Zsh is a shell tool that provides a much improved terminal experience. It allows you to take advantage of features like improved auto completion, Git and Mercurial status in-line, completions, and interactions. OhMyZsh is a community configuration that gives you an easier way to configure the shell and a default configuration for zsh to start seeing the advantages immediately. As a modern web developer we still use a lot of the good old terminal.
Node.js
Node.js is a JavaScript runtime environment that allows you to use JavaScript to run tasks, create servers, and a million new ways people think of every day. Node basically lets you run JavaScript code outside of the browser.
JavaScript started out as a plucky way to run scripts, and has been extended to run a large chunk of the web in a million different ways, a lot of those ways through node. Node also bundles with it npm
, package management software an indispensable tool to rapidly download and install packages and code.
Grunt and Gulp
Grunt and Gulp are two competing task-runners to ease your development process. They can be set up to run all the commands you don’t want to, for example automatically run compilers when there are changes to your files, as well as provide you with other tools to enable the development process.
Grunt and Gulp perform the same base functions, and are interchangeable tools depending on your requirements and codeferences. While both these task-runners exist in a state of rivalry, the difference to the end user is one of semantics. Your choice should be based on the syntax you codefer, and that should become apparent when you have tried both.
Software
Atom
I’m not sure if you know this, but text editors are kind of a big deal to developers. Developers get really stubborn about what they use and what they like. There are a bunch of options, however at the moment I really enjoy Atom from Github. Atom is Open Source and insanely customizable. It’s a developed by the guys from Github, to give it some net-cred and contributed to by loads of developers. With version 1.0 it’s become mostly stable, and delivers on the promise of a hackable text editor.
Slack
Slack is a chat application that provides integrations with everything. It allows you to communicate with your team, send code snippets with syntax highlighting, and sweet gifs. It’s simple yet extremely functional.
Typora
Typora is a Markdown text editor. This is another simple piece of software that I use to write in. Markdown has become the codeferred syntax for documentation, probably due to Github’s use thereof. I like it because it can be easily compiled to simple html, that can be easily styled.
SourceTree
SourceTree is a Git and Mercurial client that helps you manage your repos visually. It provides a great interface to manage your repositories. It seamlessly manages your files and provides you with visual comparisons of your changes.
XAMPP
XAMPP is a server development environment, it allows you to quickly deploy a web server on your local machine for development. I personally codefer setting up a LAMP stack by manually installing Apache and MySQL if required, but XAMPP is much faster and easier.
There are a lot of apps and software out there to, like Sketch, Caffeine and all of the Jetbrains IDE’s, to further enable you to develop easily. The best way to improve your development environment remains poking at it till it works for you. It’s not about using the most current, talked about software, It’s about using what works well for you.