Brewing a Local Development Environment
The final weekend after the holiday break is always bittersweet. Having worked for a public school as a state employee for the last 6 years I can definitely say one of the greatest perks is the generous leave around the holidays. That being said while I've enjoyed the time off, I've also been quite busy learning a ton of new web development techniques and frameworks. In mid-December, Jim and I had Kin Lane come for an intense few days where we began to architect the vision for Reclaim Hosting and Domain of One's Own beyond the LAMP environment hinged on cPanel that we have now.
Don't get me wrong, cPanel has been very good to us and what we've managed to build to enable a large number of folks to being reclaiming their digital spaces has been amazing to see. But far too often as technology keeps pushing ever further we've experienced the limitations of these tools. PHP is growing out of favor with modern applications being developed in Node.JS or Ruby on Rails. In some cases software requires a deeper level of server access that can't be accomplished in the sandboxed environment of cPanel (Geoserver is a good example). Alongside all this though is a new technology being adopted widely called Docker which in a nutshell provides virtualized containers for applications that have full control of the stack, so a LAMP application can run in a container right alongside a wiki running Node.JS and MongoDB. I'm confident this is a crucial moment for Reclaim Hosting to play a leading role in defining what the next generation of hosting applications for the web could look like, and we want to do it right.
I'll be writing more about our thinking along those lines in the weeks ahead. Kin's ability to help us understand how APIs can provide a common language for the interactions between various service providers and technologies is a treasure. In the short term though I came away from that feeling energized to start a crash course in personal development in web programming and the holidays seemed a perfect time to focus on it. For the last two weeks I've played with just about everything I can get my hands on primarily related to Javascript web development. Node, Angular, Express, React, and so much more. The world of Javascript has exploded in the past 2 years and I wasn't paying attention at all until now, but I'm a quick study. Part of what will help me learn all of this is to narrate it here for others so this blog is about to get quite geeky in the best of ways.
In this first post I wanted to start with a tool for Mac OS X (my primary computer) that helps getting some of the technology installed for you. It's called Homebrew and it's a package installer you run from Terminal. Now don't cringe at the Terminal, it's going to become a very good friend as we start to figure all of this stuff out, even if most of the actual development work is being done in the editor of your choosing and on the web. Installing Homebrew is pretty easy, you fire up Terminal and paste this in:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Homebrew runs Ruby which OS X has already. We can grab any updates by typing
brew update
Once it's installed you have access to loading technology with the command
brew install <insertappname>
The thing about Homebrew is that most of the time you'll only use it for low-level stuff. Running MongoDB or MySQL locally on your computer for example, or for install Node.JS globally on your system which is what we'll need for many of the frameworks and technologies I plan to explore, so let's do that now:
brew install node
Yep...it's that easy. Just like that your computer now has Node.JS on it. Doesn't feel all that different yet I imagine but trust me, you're going to start to see just how powerful it is. In my next post we'll look at a few other pieces that we need to build a local development environment and how we can utilize Node.JS to start grabbing packages.
Addendum
I had a few issues getting Homebrew working, partially because I think I had a very old copy from awhile ago that wasn't fully functional. brew doctor
is a great command to run to troubleshoot issues like that and it got me up and running after updating and clearing out some conflicts.