Most Valuable Player? Minimum Viable Product? In this case it kind of applies to both. We worked on some pretty great projects during our most recent hack day at Aztek and we wanted to share the results.
What is "Hack Day" anyway?
You know that idea that you had for a cool app or project, but you couldn’t find the time or resources to get it done? Our company gave us a few hours to get creative and work together on some of these “what-if” projects.
With Target gift cards for the best idea at stake, we got started.
The top three projects share summaries of the experience creating their minimum viable product (MVP) below, at times in very technical detail (hey developers!).
1. Metal Detector App - Find Metal Concerts Near You: by Josh, Justin, and Frank
You know what really grinds our gears? Not being able to find all of the doom metal or grindcore shows in our town in one place.
With this frustration, we set off on a valiant quest to slay the concert genre-searching beast.
We wanted a site or an app where we could type "Show me all the upcoming heavy metal concerts in the Cleveland area," and it would provide results for all the local venues that typically host metal shows. This way you could see both the bands you’re familiar with and bands you might never have heard of.
I brought this idea to Frank and Justin, two other Aztek employees who share my questionable taste in music. Their suggestion was Metal Detector, a web app that searches local concert events by genre keywords and pulls back all the shows that match "metal" or other related subgenres.
How We Did It
Frank found SeatGeek, an aggregator where you can search for events by band, name, genre, etc. and get local results.
As a team, we decided what our minimum viable product (MVP) should be:
- Hardcoded geographic search of Cleveland
- Limited to one genre at a time, with a limited set of possible genres
- Black metal
- Death metal
- Doom metal
- Power metal
- Prog metal
Once we decided what we wanted it to do, Frank went to work on the back end while Justin and I threw together some quick concepts. After 30 minutes, we compared our concepts, picked the things we liked best from each one, and made a combined concept. I threw together a Bootstrap framework while Justin worked on specific styles, and we had the layout done within an hour. While Frank finished up the back end work, I went searching for some icons to add a little flavor to the genre buttons, and then time was up.
We developed a proof of concept of the Metal Detector app that uses public APIs to find shows by genre. The next iteration will pull in more information about the bands and provide a mechanism to buy tickets. We're planning on a late summer launch! And our team won the most votes for best project at Hack Day, plus all the gift cards.
What We Learned
- Defined roles are important, especially in a narrow scope like this. Frank tackled the SeatGeek API while Justin and I did not have as clearly defined roles, which meant we sometimes overlapped in what we were trying to do.
- Version control is a pain when three people are working on the same thing in a rush. I spent more time resolving conflicts between my version of the HTML and CSS and Justin's version than I did actually writing the code.
- Even a silly idea can be successful and have merit if you can get other people interested in it. I thought this was just a crazy idea I had that couldn't really go anywhere, because I didn't know what resources were out there to make it happen. Without Frank and Justin's interest and support this would not have become a real thing.
2. Better Ways to Track Time: Aztek Intranet Timesheet by Dave and Keith
Aztek has outgrown the way we track time in our company Intranet. So Keith and I set out to improve it.
Over the years, we've heard various complaints from our users (which happen to be ourselves).
- The list of projects takes too long to load
- I don't understand how many hours are left on a project
- I can't see where I have "gaps" in my daily timesheet
- I sometimes forget which details to include in my description
- I want an easy way to filter out bug tasks so it doesn't get billed to a client
There was more, but those were the biggest value targets we wished to try and address. We had some other challenges too. For one, employees would have to keep using the old system while the new one was being tweaked, so certain data points would have to either remain intact or be mapped to the new format so nothing gets lost.
We also wanted to use MVC, HTML5 date/time input fields, and of course, make it responsive.
How We Did It
On hack day, we set up a new MVC project, I created some views and started mocking up the front end while Keith planned how to deal with the database structure on the back end.
We didn't finish, but we:
- Got a new responsive interface that tells the user how many hours are left on the project they are working on
- Created a component that shows them a more visual representation of the time they have billed for the day
- Used HTML5 date and time inputs so they page loads faster and doesn't need any outdated date pickers from a third party
- Created my first MVC views with no support from a "real" developer
- Successfully mapped his data migration plan and new data formats out
- Added better helper text for the users so they provide the right timesheet description
- Planned a way to integrate our issue tracking system to segregate out bug tickets so they can be excluded from the invoicing process.
3. Chat Bot to Keep Track of Mentions, by Michael Hagesfeld
Hack Day for me was an opportunity to remember both the immense frustration and ecstasy of being a developer. I tried to build a HipChat bot to keep track of how many +1 notices everyone gets in our HipChat rooms.
The frustration was borne of the "Quick Start" bot creator provided by Atlassian failing completely. The banging of my head against the wall, incorporating other people to also try to knock the wall down with THEIR heads, and the eventual abandonment of knocking down said wall are all familiar experiences for any developer.
On the plus side, I eventually decided if I couldn't go THROUGH the wall, maybe I could go around. I adapted the HipChat API to create "hooks" in the room to watch for messages. While I only got as far as having the hook recognize a sent message and take an action (in this case flooding one of our chat rooms with annoying messages), the joy of seeing that flood of messages because of something I did - THAT joy and excitement is why I became, and continue to enjoy being, a developer.
Overall, it was just fun to be able to take on a project that has been percolating on my personal back burner for a long time. I'm thankful to be working at a place open to giving their employees the time and space to explore these side projects on company time.
What project ideas do you have for our next hack day?
Image used under Creative Commons License. Courtesty of WikiMedia Commons.