Treefort 2016 App Retrospective

In the past I have blogged about the Treefort 2015 Lineometer, well the Lineometer got such great reviews that I felt inspired, I felt like we could do more. So shortly after Treefort 2015, a group of friends and I reached out to the people who were working on the app last year and asked if they wanted some help. They graciously accepted and furthermore, gave us full control of the app!
Based on feedback from users and Treefort stakeholders, this years app (v.4.0.0 – v4.4.0 in the App Store and on Google Play) has been a great success! We haven’t been without our bugs (see What Went Poorly).

What Went Well?

From the get go all the people who helped with this project gave it their all, everyone brought their best skills to the table and we really made some great software.


Matt worked his ass off on the client portion of scheduling and I worked a bit on the back end storage/sync functionality. We ended up writing a NodeJS script that requests data from Google Drive (managed by Treefort HQ) and transforms it into what the app expects for an event stream. We run this update whenever data changes and it is still a manual process due to the sensitive nature of the event data.


Daniel was the lead for this feature and he really kicked it out of the park. We started out with a handful of static playlists that we hard coded into the client app and quickly realized the potential we had by moving the playlists into the back end. Daniel and I started by moving the same hard coded playlists we had on the client into the back end.
After we informed Treefort HQ of the potential we had here, they grabbed onto the idea and started supplying us with curated playlists! Long story short, they curate the playlists, we run a script, and push playlists to all our client apps whenever we want.
To top it all off, just a month before Treefort Daniel finished coding up an entire custom playlist feature! Now users can create and manage their very own Treefort playlists; so badass.

  • Audio Streaming
  • Lineometer/Lineomaster
  • Volunteerism/SCRUM/Trello
  • Favorites

What Went Poorly?

  • Push Notifications
  • Losing LocalStorage

Technology Stack


The previous version of the application (developed by Phil Merrell) was written with Ionic and PhoneGap if I remember correctly. Even though we were starting from scratch with version 4.x.x, we decided to use Apache Cordova and Ionic because of the distinct benefits writing code once and building to separate platforms offered us. For a small team, with limited time and plenty of web dev skill, Cordova and Ionic was definitely the way to go.
Special thanks to Blake for all his hard work getting us setup in a new framework and providing us with the technical guidance through this phase of our design.

  • Apache Cordova provides cross platform functionality allowing us to write code once and compile to different targets (iOS and Android currently)
  • Ionic Framework is the front end SDK we use to customize the look and feel of our app, Ionic also provides some of the advanced functionality through (e.g., User Management, Push Notifications)
  • AngularJS and ngCordova, to build our client side MVC code
  • GitHub + CircleCI to automate build/test/deploy cycles. Since a Cordova app is really just a static website, deploying with CircleCI to an AWS S3 bucket makes smoke testing new builds a breeze.


Early on in our process we found out that we would need more flexibility with our back end data provider than what was available from the Azure site that drives the main Treefort Music Fest website’s data. Near the end of 2015, Wade led the charge on setting up our Elastic Beanstalk and NodeJS solution and we have run with this infrastructure configuration ever since.
Splitting off our own back end solution and proxying certain calls back to Azure was easy and provided a clean way for us to valmorphorize our data. It also allowed us to write some custom functionality in our middle tier that isn’t required by the website (e.g., Lineometer, Playlists). Additionally, we can cache and scale at different rates than the website as our traffic patterns are different.

Next Year?

Shareable Schedule, Shareable Playlists, ideas?

Treefort 2015 Lineometer Retrospective

Well, we are now four days post-festival and we’re still basking in the awesomeness that was Treefort Music Fest 2015. After going over our numbers for the Treefort Lineometer, I gotta say I’m impressed. Every single person who contributed to this project is seriously a rockstar. We were featured as one of the best parts of the festival by David Greenwald at The Oregonian in his article 26 things we learned at the 2015 Treefort Music FestCheck it out:

3. Having a line-checking app to tell you about Thursday’s biggest line is the smartest festival technology ever.

That’s right folks, smartest festival technology ever.
We were also mentioned by Michael Deeds at the Idaho Statesman in Smile. Treefort has that effect on everyone.

Remember when Treefort debuted with what seemed like an insanely large number of bands? 130 or so? This year’s 430 makes that seem like a backyard keg party. And the waits outside certain venues were longer on opening night than they’ve been in past years. The Treefort app’s live “venue tracker” accurately reported the line at Neurolux as “entire population of Boise” on Wednesday night.

Our @treefortlines twitter gained 85 followers in 5 days and will surely grow over time. Wade led the social media push throughout the festival and created a ton of engagement by doing so. Before I get into all the details and statistics, I just wanna say thanks again to all the people who worked on this project. None of this could have happened without them. If you don’t already, FOLLOW THESE GUYS. They are doing (and will continue to do) great things in their careers, and are major influencers in the software scene in Boise. Here are links to their twitter profiles:

Usage Report

I’ve linked the Google Analytics PDF reports below, but here is a brief summary. The official Treefort app (into which the venue tracker was embedded) was released on 03/20/15 and the festival ended on 03/29/15. This is our date range for all the metrics listed here and linked in the reports.

  • 10,602 Pageviews: Translates directly into the number of hits our web server got from managers and users.
  • 1,957 Users: Largely calculated via Google’s pre-cached user data and cookies on our user’s devices.
  • 5,937 Sessions: Translates into usage within a 30-minute window or before midnight (if you use at 11:45pm for example). Google does recommend using shorter sessions for sites with fewer pages (ours has three).
  • 1.79 Pages / Session: This is sort of interesting because it shows that quite a few of the people who were using the venue tracker found it useful enough to check again within 30 minutes. A hypothesis of mine is that these people were using the venue tracker to navigate around downtown. Twitter traffic around @treefortlines seems to suggest this as well.

Here is a chart of hourly pageviews. It is really cool to see the nightly usage!
Here is a bar chart of our users by browser. As you can see, most Treeforters use iPhones; but Android certainly made a good showing.
I also found this map of sessions by city kinda cool. Sorry foreign visitors—you only account for 1.03% of sessions.

PDF Report: Analytics All Web Site Data Overview 20150320-20150329

Last Minute Updates

Based on interviews with several venue managers and festival attendees on the first few nights, we decided that the addition of an “At Capacity” status would be useful. Before adding this feature, many venues that were packed inside would show a “Sea of Humanity” or “Entire Population of Boise” line status when their lines actually had only five or so people in them. Now, when the venue is “At Capacity,” the line will only shrink if people leave the venue, giving a more accurate reading and helping festival attendees make the right venue choice (and thus make the most of their night). After a quick mock-up, Wade came to the rescue and added this feature before Hackfort, which we all attended. On the left is the manager screen and next to it, the visitor. Props to Wade again for cranking this out and adding this last-minute value.

Next Year

I’m speaking for the team who built this app when I say that I know we would all love to do something like this again next year. I’m looking at you, Treefort! ;). This was one of the most rewarding software development experiences I personally have had and I’m incredibly grateful to the team. A message to everyone who used The Lineometer, built The Lineometer, and updated The Lineometer…

Treefort 2015 Lineometer

Well folks, I’m writing this year just before Treefort Music Fest ’15 to announce the project that some of my righteous coworkers and I helped create…the Treefort Lineometer! Because I didn’t have much to do with the technical side of the app this year, I’ll just give an overview of the features, the major technologies we used, and award some kudos to all the hardworking developers that helped out with this project.

Team Members

All of these guys worked their asses off for this feature; I was mostly a pencil pusher and project manager. But I DID check in code…once. 😉

  • Phil Merrell: Original Treefort app creator and our special liaison to Treefort people.
  • Daniel Ryan: Badass developer who made the most excellent loading icon (with D3), general client side development, manager app, and visitor app.
  • Alberto Ruis: Badass developer in charge of syncing Treefort schedules with our backend, general client side dev, manager app, and visitor app.
  • Wade Dorrell: Main venue tracker designer and code ninja. Special thanks to this guy for making usability #1.
  • Blake Dietz: Back-end ninja, front-end ninja, authentication and security ninja, and all around badass developer.

NOTE: They all did much more than what I’ve mentioned next to their names; this is just a brief summary. Special thanks to Drew Lorona and Eric Gilbert at Treefort Music Fest for facilitating this app!


After Treefort 2014, I met with Phil Merrell and some other prospective developers for beers and to brainstorm about what technological improvements we could make for this year’s festival. We came up with some great ideas and let them simmer until I got back in touch with Phil this January. We immediately got the ball rolling on what we thought would add the most value for the least amount of work (borrowing from the 20/80 Pareto principle commonly referenced in SCRUM). That project would eventually become The Treefort Lineometer, and with Phil’s help, it would be embedded as a tab in the Sencha touch app he built for Treefort!


  • Real-time venue updates: When a manager changes the “currently playing” or line status, all the clients get updated in real-time. This is accomplished using Firebase and Angular Fire.
  • Security: Manager app authentication; only people with the code can update the venues. This is accomplished using NodeJS.
  • Last updated: When looking at the venue update, is the update even relevant? Intelligent text highlighting gives visual cues.
  • Lineometer!: How long is the line?! Should visitors even bother making the trek from their current party?
  • Free text + filtered lists of artists in the manager screen: Choose from the 20 artists who could be playing at this venue vs. a list of 300+. Impromptu show? Use the free text field and all the clients will get updated in the same way.
  • Intelligent wrist band visuals: Depending on the day of the festival and the venue being managed, the manager app will show the valid list of wrist bands.

Major Technologies

  • Firebase for our real-time venue tracking back-end
  • AngularJS and Angular Fire for our front end web app
  • Heroku for static file hosting
  • NodeJS for authentication logic
  • Github for collaboration, feature tracking, and workflow management


With help from Phil and the people at Treefort, we were lucky enough to get our Venue Tracker in the Treefort Music Fest iOS and Android apps. The Sencha touch framework that Phil used made integration relatively easy; more or less we get a web view inside the app to do what we want with!


For our team, some notable obstacles were:

  • Limited funding, and thus limited connections on our Firebase plan. Thanks to Treefort for coming up with some cash to help us!
  • Limited time. Since we are all full time developers at WhiteCloud Analytics, our day jobs and families had to take priority. This is why everyone who worked on this project is such a badass, donating their time and skills for this.
  • Limited understanding of users. This seems like it is always a problem with software projects, but we went through several iterations of a line visualization until we got one that we thought would make sense to the most people. After interviewing our significant others and coworkers, our current design (the one with badges) was the most easily understood.


Download the Treefort Music Fest app and use it at the festival! Get up-to-date information about which venues have the longest lines. If you are a venue manager, don’t hesitate to contact me personally or any of the members of the team. We will be monitoring and providing updates throughout the festival on our Treefortlines twitter account, so feel free to contact us there too!



If you liked this, consider reading the retrospective as well

Treefort Musician Map v2.0

First things first, go HERE to see what this post is about. If you are interested in how I did this … keep reading.
Note: Nobody from Treefort Music Fest knows I did this, I just did it for fun.
Last year I made a heatmap to show the geographical layout of all the artists that would be playing at Treefort Music Festival. You can see that post here and the original heatmap here. For v2.0 I had a couple of ideas that I wanted to implement.

  • Search
  • Thumbnail pictures of bands
  • Better layout
  • Auto scrolling to bands location on the map

Continue reading “Treefort Musician Map v2.0”

Radiation Treatment #1

Today I had my very first radiation treatment! Only 19 more to go and I will be done by the end of April. I’ll be doing this daily so the side effects are supposed to slowly build up towards the end. Enjoy the video.

Video is fast forwarded 4x, total treatment time is about 15-20 minutes.


Another Friday night, contemplating some more LaTex fun. But just had a big math test today so I’ll probably take a night off.
I’ve been thinking a lot about math today and lately, and I really have been growing an affinity for it. Not in the sense that I’m very good at it, but in the sense that mathematics when viewed in the right light is really a beautiful and pure thing. Not many things in this world are fortunate to be as logical. I struggle in math class everyday, and anyone who thinks that math ever gets easy … well they are just kidding themselves.
As I was losing hope today about my mathematical education, and browsing through some old teachers web pages, I came across a certain article written by my previous Calculus 2 teacher (Dr. Harlander). He captures exactly what it is like to be a student of mathematics, a “constant confrontation of ones own limits.”
His paper gave me a sort of new perspective on my education. I, more than most people, get caught up with the deadlines of certain activities. This loss of focus seems to make the learning process more difficult, so from now on I will be focusing on the process of learning, not just the end result
Currently Listening