Five amazing tools for developers
At Aerolab we’re constantly testing new tools when developing complex products. We totally recommend you to try these!
Here at Aerolab we’re always experimenting with new stuff to figure out which tools are going to make our lives easier when working on complex products. Over time we’ve accumulated a fair amount of these tools and their overall impact in our work has been amazing.
So, since sharing is caring, we’ve decided to share a list of some of the best tools in our digital toolshed. Hopefully you’ll be able to take advantage of them and they’ll make you just as happy as they make us. Or maybe you’ll try them out and think we’re crazy and have no idea what we’re talking about, who knows.
Disclaimer: As we’ve said before, we’re constantly trying out new things. So it’s somewhat likely that we’ll find better alternatives to some of these tools sometime in the near future. We’re not married to them and, again, who knows.
DOCKER
Docker is one of the most amazing tools we’ve seen in years. The gist of it is that it lets you build containers, which -in a nutshell- let you run your code in a predictable, isolated environment by using many features straight from the Linux kernel.
This means you get all of the advantages of running your code in a VM (like running your code in a single, predictable machine), but since containers don’t have the massive overhead of a VM, they are incredibly lightweight.
This, in turn, means you can run dozens of containers with ease both in your dev machine and in your test servers, which makes deploying and testing software unbelievably fast.
Docker is so awesome that we started the Docker All The Things Initiative at Aerolab, by using it for everything, including our dev environments, our production servers and our CI/CD pipeline. All of this put together means that we can get rid of most of our development headaches and help us concentrate on writing amazing software, as well as making the “Well, it works fine in MY machine” catchphrase disappear from our vocabulary.
GITLAB
Since we’re talking about productivity, we recently switched all of our code to Gitlab, an open source platform for developers. It has all the important features like Issues, Boards, Groups, and -of course- a very solid Git Server.
You can even Self-Host, which is great if you want more performance than on GitLab.com (and you probably will). But the most important feature is Gitlab CI, a great CI/CD tool that comes bundled with it.
CI (Continuous Integration) and CD (Continuous Deployment) essentially mean that all of your code gets integrated, tested and deployed multiple times during the day, preferably on every commit. We’ve taken that to the extreme with Review Apps, which mean that every commit and pull request gets it’s own server deployed immediately, letting everyone else on the team see your work and provide feedback. By using Dokku (a Docker-based Heroku clone) on our own servers, we can get from a commit to a live server in under 30 seconds, including automatic HTTPS from LetsEncrypt.
This is amazing both for QA and getting feedback from clients, since you can get something live just by doing a git commit and it helps you get into the mindset that everything is up for review. It rewards experimentation as well, since you can just throw quick demos online with very little effort, which lets us build and show prototypes very quickly to figure out which solutions work best within our teams.
LETSENCRYPT
Let’s face it: The internet is not exactly a secure space. For the last couple of years we’ve seen everything from people getting ransomware from using public WiFi, to ISPs -the companies we trust with our internet access- silently injecting ads into the sites you browse. This isn’t just creepy. It’s a flagrant violation of privacy.
Serving your sites and APIs over HTTPS is not just something only financial sites have to do anymore. It’s now an important part of caring for your customers, but so far it’s mostly been a chore, since you have to go through the trouble of researching and buying a certificate, setting it up on your server, and then renewing it every year again and again.
Letsencrypt offers free SSL/TLS certificates for everyone, which can be provisioned and renewed automatically. Certbot (the most popular CLI for Letsencrypt) even integrates seamlessly with Nginx and Apache, so setup takes only a few minutes and then you’re set with HTTPS s=forever.
Honestly, there’s no longer an excuse for not serving your sites via a secure channel. And with HTTPS2 (based on SPDY) there’s even a performance argument to be made, as it solves many of the performance issues from plain HTTP. Compatibility with older devices is pretty much no longer an issue, so it’s a very solid recommendation for everyone. We actually use letsencrypt on aerolab.co (as well as all of our services and subdomains), so we rely quite heavily on it too.
As an additional tip, check out the Qualys SSL Test. It’s a great way to make sure your HTTPS config is protected against the latest vulnerabilities.
GULP
Or more specifically, the ecosystem of task runners, which happen to run mostly on Gulp. We’ve been using this for quite a long time, but there’s a set of things that had a very meaningful impact in how we work:
- Live Reload: This is so incredibly useful for UI development that you feel like you went back in time when you don’t have it. Working on your CSS in one screen and watching your browser automatically update all your devices feels like cheating. And it’s fantastic.
- Linters: JS and CSS linters as well as a .editorconfig file help a lot when working with other developers who often have slightly different coding styles. This tends to make adjusting to new codebases a bit annoying. We picked a very lax approach to this (some people go insane with rules and it tends to be counterproductive), mostly to make sure our code is readable and easy to understand by everyone on the team.
THE COMMAND LINE
There’s a magic moment in the life of a developer in which using the Command Line for everything just feels right (there’s another one when you can finally use VIM without smashing your Mac to pieces). ZSH is a replacement shell that has a ton of plugins. In fact, Oh-My-Zsh (as well as Brew and a few dozen other apps) is part of our Standard Aerolab Setup.
ZSH comes with autocomplete, helpers for Git, NVM, NPM, Brew, Syntax Highlighting, and a ton of aliases (like typing gcam instead of git commit -a -m) to help you write less and do more. Some people prefer Fish, which is faster and also has a lot of plugins to make your life easier.
We’ve also been trying out Hyper, which is a Terminal built on Electron (using HTML+CSS+JS) that’s completely moddable and has spawned a great community around it. It’s a great tool to try out.
BONUS TRACK(S)
We mentioned five amazing tools, but there’s quite a few more that didn’t make the cut. Here are some of the still-useful-but-maybe-not-so-groundbreaking tools and gimmicks we use at Aerolab.
- Ngrok. This tiny tool with give you an external tunnel (even with https!) to anything running in your machine. This means you can expose your dev server (with live reload and everything) and share it with someone else on the internet. No deployment needed.
- Macdown. Most developers feel right at home using Markdown, and Macdown is a great editor for Mac (based on the also-great Mou). It’s very lightweight and great for taking notes during meetings or writing documentation. It even renders your markdown so you can share it with nicer formatting.
- Brew + Cask. Have you ever installed things with apt-get on Linux and said “I wish I could do this on my Mac”? Well, with Brew + Cask you can! You can install (and update!) pretty much anything with a few keystrokes. There’s even an autoupdater so you always have the latest version of all of your tools.
- Touch Bar Nyan Cat. There are some great new uses for the Touch Bar in the new Macbook. This is… not one of them.
All of the tools on this list have been subjected to the Aerolab test of awesomeness™ and passed with flying colors. As we’ve said before, we’ve used them quite thoroughly and gotten some pretty amazing results.
However, that doesn’t necessarily mean they will work as well for you and your team and that’s perfectly fine. If that’s the case let us know why in the comments or through Twitter, we want to hear from you! If you come to us with a tool that’s better than the ones we’re recommending on this list we’ll owe you a beer 🍺