Behind the Scenes #2: Tooling

A programmer walks into a bar and asks the bartender for 1.00000000000003123939 root beers. Bartender says, "I'll have to charge you extra, that's a root beer float." Programmer says, "Better make it a double."
Programming humor

 

Continuing with our behind the scenes series, I wanted to talk to you today about some of the tooling that we use as a team to get stuff done.

Git/GitHub

GitHub keeps the history of every change we've ever made to the code.
GitHub keeps the history of every change we've ever made to the code.

 

This is one of the first things we (and I really mean Paul here) got up and running. GitHub is where we keep the large majority of our code. We do this for two main reasons:

  1. We want everyone to be able to look at it.

Maybe you're curious about the Dart programming language and you're a fan of Glitch so this kind of project could really show you what's possible in a subject that you're passionate about. Or maybe you want to take our code and try setting it up on your own server and tweaking it, adding a feature, etc. We love when users come to us with bugs and feature suggestions. And if you want to fix a bug or add a feature yourself, we'd be happy to look it over and add it back into our code base.

  1. It enables us to work simultaneously on the same project at the same time.

Without a form of source control, it would be way too difficult to successfully navigate the waters of a team trying to build a project together. You might edit a line of code one way while someone else edits it another. But without something like Git, you have no way of tracking those changes and you could end up saving right over top of your co-workers work. That's no good. GitHub gives us a nice, web-based interface to many of the features  of Git and it's worked well for us.

WebStorm

WebStorm is my preferred way to code CoU
WebStorm is my preferred way to code CoU

 

WebStorm is a fantastic IDE from the folks at JetBrains. It makes the actual task of coding and debugging so much easier than a text editor. I use it for things like:

  • Renaming all instances of a variable or method throughout the project
  • Press one key and be taken instantly to the definition of a variable or method
  • Testing our REST endpoints with a built in client
  • Auto formatting code in the file

Even nicer is that JetBrains makes WebStorm freely available to teams who are working on an open source project. This is great because it helps us minimize the amount of personal expense we need to handle just to be able to produce this game.

Codeship

Codeship takes care of all the tedious work every time we make a change to the code
Codeship takes care of all the tedious work every time we make a change to the code

 

Many software projects need to go through some kind of automated testing, compilation and a deployment process before they are ready for the consumer to use. CoU is no different. What makes Codeship so nice is that it integrates with GitHub and as soon as we push changes to the code there, Codeship starts cranking away doing whatever we tell it to.

For example, each time we push a change to the client code, Codeship downloads the code from GitHub, compiles the Dart files into one large JavaScript file and then uploads all of the code and images to our site so that the next time you try to play the game, you get to play with the new features. Of course we could do this by hand, but then each developer needs to know all of the steps and take time to do it. By writing a script on Codeship, we can be sure that it's done the same way each time and everything is automatic.

I hope this was an interesting look at some of the tools that we use to build CoU. If you're interested in learning more about the process, leave a comment below and I can go into more details about how it works.

Thaderator