Beacon Bits


Beacon Bits is a tool for system administrators and other IT professionals.

My team submitted this project at MangoHacks 2016 and won the Best Use of Amazon Web Services prize.

A Beacon is a small, WiFi-enabled device that submits information about the network to a cloud-based service. Administrators can see the data from a website.

The rest of my team used an Arduino UNO as our development beacon. We used the Johnny-Five framework to diagnose the network by measuring ping rates and upload and download speeds.

I wrote the back-end, which ran on Amazon Web Services. The back-end was written in Ruby with the Ruby on Rails framework.

This was my first time using Amazon Web Services. I usually prefer to use DigitalOcean, but was excited to try a new tool called otto by HashiCorp. Unfortunately, otto has shipped with a few bugs that prevented me from using it past the development feature. I ended up creating the instances I needed for the hack manually.

This was also my first time using Ruby on Rails (and Ruby itself). I found Ruby easy to pick up. The most confusing part was letting Ruby on Rails do whatever “magic” it was doing while also not completely knowing the Ruby language. My favorite part about using Ruby on Rails was how similar it was to Laravel 4. I soon realized that Laravel seems to take after Ruby on Rails, and this allowed me to focus on learning the Ruby language, instead of how Rails wanted me to build the app.

Team members:


One of our school’s I.T. administrators discussed how they have no way in knowing how a student truly experiences the internet on campus.

What it does

Beacon Bits allows the admin to place arduinos or raspberry pi anywhere on campus and gives them a visual of where on campus the internet works, is subpar, or disconnected. Beacon Bits is scaleable to where any home user could place one around their house, be used in every Starbucks, or placed in every department store in a mall. Anywhere there is wifi.

How we built it

Using Amazon Web Services, we used an arduino running node.js to do ping and pull requests to determine the internet speed, then pushed the information up to the cloud where the information is displayed on a web interface.

Challenges we ran into

A lot of hardware was incompatible with to connect to the internet or running the code needed.

What’s next for beaconBits

Adding graphical representations, allowing the admin to change what sites are checked for downloads.

Built With

amazon-web-services, arduino, bitbucket, bootstrap, github, javascript, johnny-five, jquery, node.js, otto, ruby, ruby-on-rails