Posts from "September 2010"

Opower Labs

Introducing the OPOWER Engineering Dashboard

  • By joel.strait
  • September 14, 2010

As Tom mentioned, we recently conducted our first company-wide Innovation Day. Everyone split into groups of 3-4 and worked on whatever they wanted (as long as it was related to the company).

Everyone did cool stuff. One group made a prototype of a website where you can enter your zip code, info about your home, and your last energy bill, and (via our Insight Engine) see how you compare to similar people across the country. Another group made an iPhone optimized version of our utility website. A third group went out and bought some plants to liven up the office.

Adam, Jeff #3, Matt and I decided to focus our attention toward the TV we have mounted on the wall. It’s been dormant since the World Cup, and we wanted to put it to better use. Inspired by Panic, we decided to build a dashboard for the engineering team.

We brainstormed beforehand, and came up with a lot of ideas. However, to make sure we had something working to demo the next day, we decided to just focus on getting 1 or 2 small things done as a proof of concept. We first set up a simple Sinatra Ruby app to act as a shell. Next Matt, Jeff and I worked on pulling data from various APIs (JIRA, Google Calendar, Hudson, etc.) while Adam built a killer grid-based design.

This turned out to be setting the bar way too low – 10 hours of non-stop coding later, we managed to have a working dashboard that displays the following:

  • How much time is left in the current iteration.
  • The number of story points each team has completed for the current iteration, and how many more are left.
  • The status of our Hudson continuous integration server. If someone breaks the build, the dashboard bursts into flames.
  • Any urgent production issues. (Once again, burning).
  • The X-Train Wall of Shame. It tracks how many times everyone has broken the build, as well as how many times they have atoned for it by buying everyone a drink.
  • Who is on vacation, and who will be on vacation soon. (Courtesy of Google Calendar).
  • When the next trains are coming to the Courthouse Metro station.
  • A Twitter feed of tweets mentioning OPOWER.
  • Random selections from the company quote wall.

We’ve been using the dashboard for about an iteration now, and it’s been a big success. It gives everyone (including people outside of engineering) an easy way to see where we are. Since the TV is mounted along one of the main office thoroughfares, people are always stopping to check it out throughout the day.

The OPOWER Engineering Dashboard

This was one of the most fun things I’ve ever done at work. Looking forward to the next Innovation Day!

Read More
Opower Labs

Picking up your Mac OS environment in RubyMine

  • By rob.fagen
  • September 7, 2010

Many of us are using RubyMine on MacOS to build our Cucumber based tests, and have had issues with picking up environment variables needed for working with some of our other internal utilities. Turns out that this is because applications launched from anywhere other than the command line don’t run through the same environment initialization as when you launch a shell. There are two possible solutions that I know of:

1. First launch a shell that you know has the environment variables you want already set, then:
> cd /Applications/RubyMine 2.0.2.app/Contents/MacOS
> ./rubymine

or

2. Follow these (untested) directions. In summary, you would add commands like “setenv VARIABLE_NAME variable_value” in /etc/launchd.conf — the downside is that you have to reboot after making changes, so this doesn’t help if the environment variables you need are somewhat dynamic.

Read More