Development Tool

Missing a Development Tool? Make Your Own!

Do you ever wish you had a certain tool, but you don’t have the budget for it, or it doesn’t even exist? I’m here to tell you: you can build it!

And as I discovered, the build can give you more than that tool you want—it can also be a great way to strengthen your skills, add value for your teammates, and even have a bit of fun.

The problem

My team works in two development environments. I noticed that often when we tested new code and it wasn’t working, we’d have a fire drill, running around to find the source of the problem… only to discover that the database had been down the whole time.

Ongoing visibility into the database status would save us a lot of time and energy, but we lacked the access to implement a proper monitoring solution. One of the best things about working at Metal Toad is having dedicated time for R&D—so I decided to use my R&D days to build a status board for our team.

The solution

My aim was to create a text-based dashboard for monitoring our development databases. Because the Internet of Things (IoT) is a key part of Metal Toad’s strategy, I decided to run the status board on a Raspberry Pi. IoT often demands very tight hardware constraints, so this was a great opportunity to sharpen my skills in building for cheap, low-power hardware. And besides, it was more interesting this way—doing this on a laptop wouldn’t have been much of a challenge!

The status board is powered by Node.js, a server-side javascript runtime that I’m rather fond of. The system tracks the status of each of our development environments; when one goes down, it updates the status board and records the time of the outage in a SQLite database.

I used a javascript framework called blessed to make a simple, text-based for the interface. I like the simplicity and the retro vibe—I totally nerd out on old green screen terminals. After adding the environment monitor to the board, there was a lot of empty space on the screen, so my teammate Toby and I worked together to add some other useful widgets: a transit stop tracker, weather info, and a headline feed from Y Combinator hacker news.

The Impact

Since we installed the status board, the fire-drill mentality has been replaced with a much calmer environment—we have constant visibility into the status of the database and can notify the right team to bring them back. Our project manager can pull info on all outages through an express web server for analysis.

And as a bonus, the transit tracker has meant fewer missed busses!

I’d love to build on the project to add more features and functions for other teams, such as:

  • an alert function to ping team members when something goes down

  • Slack integration for alerts

  • other status boards to monitor things like status of builds and pull requests

I’d also be excited to see what other people can do with this code. What I love about open source is how we can all share our work and build on it, which is why I put the code on Github for other developers to play with. Realizing that it’s within my power to make the tools I need to help my team has been fun and freeing—and I’d love to see what other people can build with this!

Add new comment

Restricted HTML

  • Allowed HTML tags: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <cpp>, <java>, <php>. The supported tag styles are: <foo>, [foo].
  • Web page addresses and email addresses turn into links automatically.
  • Lines and paragraphs break automatically.

Ready for transformation?