Capture audience feedback with IBM Bluemix OpenWhisk

When I present on a topic, following the session, I like to get feedback from the audience. Nothing too detailed; basically was the audience happy or not with the content?

You may have seen these smiley stands in airports or at retail shops. With one tap, you provide feedback about your experience. Pretty much everywhere you’re queueing, there’s an opportunity to capture such feedback.

We can’t really bring a stand with us at every session we present or every meetup we attend. But what if we had a simple, lightweight alternative to this option?

Here comes emoting, a virtual feedback stand, small enough to fit in the palm of your hand. emoting is a serverless app built with IBM Bluemix OpenWhisk and Cloudant to easily capture audience feedback.

First, type a question you want your audience to answer. Then emoting will give you two unique links: one to share with the audience; one to view the results. Bring a tablet to the session, circulate the tablet in the audience or place it at the exit of the room for people to tap as they leave.

emoting is a serverless app by nature.

You don’t want to have the emoting backend running all day long, just waiting for your next talk or the next event where you’ll use it. On the other hand, if you’re running a conference with several talks, many attendees, you want emoting to scale with the audience. No money spent when idle, and automatic scaling are two characteristics of a serverless platform.

The app is made of a set of static assets (HTML, JavaScript, images, stylesheet) and its backend is implemented as OpenWhisk actions exposed as REST endpoints.

Host static web page assets with GitHub Pages

To host the static content, I picked GitHub Pages. GitHub Pages allows you to publish static websites. This is the ideal option for emoting in our quest to build a serverless app. Stored under the docs folder in the master branch of the project, the static assets are served by GitHub Pages. The docs folder approach is one of the three options offered by GitHub Pages to publish your static website.

Every time you make a commit in the docs folder, GitHub Pages will update the live site. You could even use Jekyll static website generator but that isn’t needed for emoting.

OpenWhisk as backend as a service

The backend for emoting is quite simple, a typical CRUD to manage the questions and the answers. We need OpenWhisk actions:

  • to create a new question,
  • to retrieve the question to collect feedback,
  • to record the answers,
  • to view the results.

The actions are exposed as REST endpoints thanks to the API Gateway support in OpenWhisk (still experimental but already very useful).

emoting does not manage any username or password. Instead unique links are associated with any question: one admin link gives access to the results, and one public link captures the feedback.

Detailed instructions on how to deploy this app with Bluemix are available in the l2fprod/openwhisk-emoting project on GitHub.

I find emoting to be a great serverless app example. OpenWhisk offers a solution to deploy an app with no server to maintain, no runtime to deploy, nothing to pay when the app is not used, scaling when needed and giving me more time to focus on the app itself.

If you have feedback, suggestions, or questions about this post, please reach out to me on Twitter: @L2FProd.

See emoting in action