Workstations and Workflows (Part 2)
Whereas part 1 covered the workstation and hardware setup, this article will lean more towards software and user interface setup. Specifically I'll show you the tools that I use daily when developing websites and databases. And if you haven't read part one I'd suggest doing so -- if you have, feel free to have another look as I've made some changes to the hardware setup that are worth reviewing.
Workflow: Mac vs PC
I've been working on PCs since 1992 starting with an old 286 IBM clone that I got secondhand*. I recently calculated that my phone now has exactly 1600 times as much storage capacity as that piece of classic hardware. Since that time I've gone through about a dozen other Windows PCs through the years and never really gave much thought to working on a Mac -- I understood how to build PCs so that if something went wrong I could usually figure out how to fix them. Then along came the iPhone and I got my first real taste of Apple's UI design.
I bought my first Mac in January of 2014 and right away I was impressed with how much faster my workflow became -- particularly with regards to the multi-touch interface provided by the Mac's trackpad which made switching windows and juggling between browser tabs far easier. After diving right in I discovered a few Mac-specific applications and tweaks that make my development process even more efficient. However, this is not really an article debating the pros and cons of Windows versus Mac - suffice it to say that you can get good work done with either OS, I just happen to prefer OS X at the moment.
*Technically my first computer was a Texas Instruments TI-99 which I got as a gift in 1985 but that was such an oddity in the burgeoning personal computer industry it's hard to count it.
There's an App For That
Here's a quick list of the applications that I use on a daily basis and I'll go back through and describe how and why I use each one afterwards:
|Coda 2||Text editor/web development studio|
|Sourcetree||Git version control|
|Adobe Photoshop CS6||Graphic design and layouts|
|Evernote||Site account notes|
|Transmit||FTP/SFTP file transfer|
|VMWare Fusion||Virtual development server hosting|
|Vagrant / PuPHPet||Virtualization platform and server generation|
While we still use FTP for many of our projects, a proper version control system is becoming the standard way to manage web content and in our case, we went with Git as our version control system of choice. There are many methods for working with a Git server but Sourcetree is a fantastic, graphical interface to make tracking project changes a simple process and rollbacks are just as simple in case of problems.
Adobe Photoshop CS6
There are few people who are at all interested in web design who have not heard of Photoshop. It's been the workhorse of the raster graphic design industry since the late 1980s and is still the premier tool for creating graphic layouts of websites.
I use Evernote to store anything to do with a project: abbreviated discussions I've had with clients, login details, to-do lists, etc. It's fast, searchable, and accessible on all platforms (Windows, Mac, and mobile.)
Another Panic creation, Transmit is my FTP client of choice. Why use a dedicated FTP application when Coda has FTP built in? Because sometimes you need to be able to upload or download an entire site's worth of files and it's much simpler to use a reliable FTP client. Also, managing permissions is very easy with this application and if you're operating on a web server there are always going to be permission issues.
The originator of desktop-level virtualization, VMWare developed Fusion as the Mac version of its already successful Windows platform. Fusion lets me run traditional Windows instances as well as integrating with our other development server solution, Vagrant, described below.
Vagrant is a sort of middle-man for virtualization. It uses VMWare Fusion as it's virtualization layer but provides simple command-line tools to make spinning up development servers very simple. Complementing Vagrant is PuPHPet, a web-based virtual machine deployment utility. With PuPHPet we can configure a virtual machine using a simple graphical interface and have control over all aspects of its software: operating system, database, web server, etc. Once everything is ready to go we then download a text file which is used by Vagrant to spin up the server exactly as expected.
Tying it all Together
With this setup I can keep multiple windows open simultaneously and rapidly switch between others hidden in the background. In part 1 I mentioned my use of the Apple Trackpad as my mouse device. While it was a bit of an adjustment to discard my old traditional mouse and go with the trackpad, I can now do things like three-finger swipe between full-screen applications, "tip-tap" (a two finger tap followed by a one finger tap) to jump between tabs in web browsers, counter-clockwise circle-swipe to close tabs, among others. There is a great deal of customizability that Mac's gesture control provides.