At Rare Assembly, I am currently the only developer. Of course that means I get to wear more than one developer hat! A typical day involves a bit of systems administration, plenty of front end development (with HTML, SASS and JavaScript/jQuery), and a good chunk of the day spent writing functional, logical code when building WordPress themes and plugins.
Every modern day web developer probably has most of these tools under their belt, but if you are a developer and you aren’t using some of these, there may be good chance you are wasting more time than you could possibly realize.
I rely on many of these (almost all open source) tools to get me through the daily grind that is web development. I value all of these tools equally, as they all make my developer life far more simple.
Vagrant & VirtualBox
This is where I begin every project now. The Vagrant and VirtualBox setup is the most recent tool I have taken advantage of; I am pretty late to the game when it comes to this one in my opinion, but I’m glad I finally started using it. I freaking love how easy it is to use.
Vagrant and VirtualBox is a near perfect tool for creating virtual development environments. If you don’t know what that means, it basically means I can run a server (which is just a computer with some software) on my own computer. This really comes in handy, as I often have to move and / or test code in different sever stacks. Some may be running a particular version of Ubuntu, or could be using Nginx instead of Apache to serve web pages.
Where Vagrant really shines for me is being able to use other developers’ pre-built sever stacks directly from the cloud. This comes especially handy as they often include several other tools useful for my particular type of development. Once downloaded, all you have to do is boot up the machine with one simple command: vagrant up
. I’m not sure if it could be any easier than that.
Vagrant really can do much more, and I have yet to take advantage of its full potential. For the time being however, it really has changed the local development game for me.
WordPress
I could say a lot about WordPress. Too much actually. But For the moment I kind of owe my entire career to it. Almost every client project I have touched since I started really writing code in high school has been a WordPress based product. This is simply because of the demand I have from clients who need a website. If they don’t know about CMS’s, of course I point them to WordPress because of it’s tried and true simple user experience.
The WordPress community is huge. Not just in user size, but developer size too. So many fantastic hands of touched the WordPress core, growing it from a simple blogging platform to a robust content management system. It isn’t stopping there though. With every release, WordPress takes a closer and closer step to becoming an application framework. Just take a look at the new JSON REST API (aka: WP API) if you haven’t already.
More and more free and open source plugins and themes are being released on WordPress.org every day. If you are a user or developer and have heard something bad about WordPress before, then stop and throw everything you’ve ever thought about it before out the window. Try it out again. Read the Codex. It really is an amazing piece of software with very few limits.
Bower
Bower is a package manager for front end web developers. This package manager will allow a developer to manage all of their dependencies, or all other project files and assets necessary for development, from a single manifest file. It will find, download, and install all sorts of useful development tools for you. Bower should be used by every front end developer.
In order to use Bower, NodeJS and npm are required.
Foundation
Foundation has been around the block for a while, and for good reason. I got more and more into Foundation with the release of Foundation 5 late last year.
I can honestly say this is easily one of the easiest and most versatile front end frameworks available today. Foundation is a responsive mobile first framework, meaning all of the code you write is made for small devices all the way to large ones, unless of course you specify otherwise.
If you are already comfortable with task runners or using a preprocessor like LESS or SASS, then I especially recommend checking out this framework. Like the ever popular Twitter Bootstrap, Foundation also allows you to decide which components of the framework you would like to use, and which you would like to take out. SASS and Grunt make it incredibly easy to pick and choose your parts, declare primary and secondary fonts and colors, and oh so much more.
Sass
SASS has made writing really good, complex CSS fun and easy. I’m not kidding! SASS is a CSS preprocessor, described on it’s website as “CSS with superpowers” and I couldn’t agree more. Regular CSS is totally valid in a .scss file too, which makes it insanely easy to get started with it.
One of my favorite things to do with SASS is take advantage of variables. Like variables in programming or math, you can give a string a CSS value, making writing good CSS stupidly easy. An example of a variable would be $primary-color: #333;
. This variable says that the primary color is dark grey. Later in my .scss file, I can then reference that variable instead of using the hex value #333. That would look something like .myClass { color: $primary-color; }
.
When the code is compiled, it will output to a CSS file with the compiled code looking like .myClass { color: #333; }
. This example is very simple, and is only one of dozens of incredibly useful features that SASS has to offer.
Grunt
Ahh, Grunt. Seriously. What the hell would I do without this!? Grunt does one thing and it does it really well – automation. Grunt is a task runner, which means I can use it to do things I would normally have to do by hand.
For example, I love using SASS as I mentioned above. With Grunt, I can tell it to watch the .scss I am currently working in. When I make and save changes to that file, Grunt immediately compiles the code and spits it out into a beautifully minified CSS file. I also use Grunt for unit testing, linting, and more.
Git
Git has saved my ass too many times to count. Git does version control, and it does it incredibly well. Version control as defined by Google is management of changes to documents, computer programs, large web sites, and other collections of information.
Git can be used for tracking changes to just about any type of file, even Photoshop documents! When you make changes to a file and tell Git to track them, the tool takes note of what files have been changed and only records those changes. You can roll back to previous versions, or even create a branch of the current version you are working on. Branches allow you to work on a separate feature without messing up the working code. Once the feature is complete, you can use get to integrate it back into the main code base.
While I know several other developers using other version control tools like SVN / Mercurial, Git has become extremely popular thanks to Github. Github can be used for storing code repositories remotely, either publicly for open source projects or privately for private ones.
In Conclusion
These tools have truly made it easier for me to become a better developer every day. Not only to I work faster and become more efficient, but I learn something new all the time. They won’t be around forever – in fact, something else better will come out sooner or later. Maybe even next week!
That is the beauty of the web I work on. That is the beauty of Open Source! My job is so absolutely fulfilling, and I can’t appreciate all the hard work these other people have put out enough, just to make some lives easier.
Long live the internet and open source software!