First Project at CDOT - CDOT Dashboard

As some of you may know, 2 days ago I started my new job at CDOT as a research assistant.   I got to meet a ton of new people, from those working on the fedora project, to Java developers, to the people I will be working closely with.  After some introductions I found out that I will be working closely with about 4 other people.  It was sorta cool being that I knew almost all of them from classes and so on, so it should be a pretty exciting summer.

After our first day of orientation and getting to know one another I found I that I will be primarily working on Popcorn.js and Butter.js.  From what I gathered, most of my time will be centered around butter as its still very much a proof of concept, and still in its infancy.  This is exciting for me as I will get to really see a project go from a hacked together idea to a fully functioning project that will probably finish in its 0.4 - 0.5 milestone by the end of the summer.  But before any of us got to begin work on Popcorn or Butter, David Humphrey (my boss/teacher), instructed us that we would be performing a team strengthening exercise for the next week.  I'm not gonna lie, when I first heard him say this, I thought it was going to be one of those lame grade 6 team exercises where we hold hands for a week all tangled up and try and figure out the best way to untangle ourselves.  This wasn't the case.  Instead we were provided with a rather interesting project.

Dave explained that he wanted some sort of a CDOT Dashboard where he, and the rest of the staff at CDOT, could view the status of the various projects people are working on.  In the end it would be run of a small computer and displayed on a tv that would be mounted on the wall for all to see.  One of the constraints was that it had to be done through the web, as it would be accessing data across various sources throughout the internet.  Some idea's were to be able to display the number of git commits done for a particular milestone on a project, the number of lighthouse tickets left for that milestone, a countdown to how many days until a particular milestone is supposed to ship, a twitter feed of all of the employees at CDOT that are working on a particular project, and many more.  This would provide the staff with a sleek interface that would display what is going on right now for a project, and give them a rough idea of the "health" of the project.  We were given the freedom of using whatever languages we wanted, both client and server side, and given quite a bit of freedom and creativity to roll with.  Today we had a good hour and a half brainstorming session between myself, Scott, Daniel, Jon, Chris, David, and Mohammed.  We starting throwing ideas onto an etherpad as we were going and quickly came up with a huge list of features and so on that we'd like in the dashboard.  We all understand that it was not possible to finish all of this by Monday (did I mention we have 7 days to do this?) so we each took on 1 or two things to accomplish by then.  I took on the task of working with the lighthouse api to access data such as the amount of tickets that are open, under review and so on, how many tickets are left until a particular milestone (percentage complete), tickets being completed per developer, and so on.  This also tied in with the other thing I was working on which was researching and using Google Charts as an easy way to create charts that would be used throughout the dashboard.  The rest of the group, or The Group of 7 as we jokingly named ourselves, picked up tasks such developing the server side software which would provide us with a way of accessing all of the api's we would be working with as well as storing all of the data we are receiving from them, working on other widgets such as the ones I am, and creating the overall framework that the whole dashboard would run off of.

After the meeting we all went our seperate ways and began hacking on some code, though we came back shortly after and had another lengthy discussion.  Mohammed brought up a few points up the design that we came up with and some problems that could happen later on down the line if we stuck with the design that we set out to use.  Some of us thought that the original design was fine, and that these wernt really issues.  We proceeded to have a long discussion on the subject, and ultimately came to the conclusion that we were almost all talking about the same thing, but reffering to it in different ways.  I remember someone mention afterwards that this is probably why Humph wanted us to do this as a team, because problems like this happen all the time, and we need to know how to effectively communicate with each other under a strict deadline in order to effectively get stuff done.

At our last 10 minute scrum of the day, we went over what we all did and talked about the problems that we were having.  I started out trying to grab the lighthouse api through xml data, but quickly found out that the method I was using wouldn't work as the domains were not the same, which threw a nasty security error my way.  After some searching, I came across JSON and JQuery, and found out that the lighthouse api offered data in JSON format.  I included the JQuery script and threw togethor some code and was able to grab the data from the api.  The problem I was now having, was that I needed to parse through a crap ton of data and make something of it.  This isn't really a problem so to speak, but more of the next major hump I have to cross to get to where I need to go.

The project as a whole seems really cool, and its amazing to be working along side so many talented people, it really motivates you to do your best and produce some quality code.  The summer's already started off nice and fast, and I hope the pace doesn't let up, as I'm loving every minute of it.  I'm getting paid to do what I love with like minded individuals all day, what more could I ask for.