Case study: Audience Response

Wow, AgileTestingDays 2013 it's being awesome! I gave my talk today, a practical "live coding" session. Last week I created a real-time application to communicate with the audience so that when I am speaking they can tell me if they are understanding or if they want me to repeat ...
So we started off using this app on my session. Interestingly enough the session was about building the tool again. From Cucumber specifications, all the way down to the GUI and the hub (server).

You can find the actual code of the application here and more importantly, the process I followed to write it, because I checked-in the code on every green test so by looking at the diffs, you'll figure out how code evolved.
Unfortunately the wifi didn't work well so I couldn't really take advantage of the app. Next time I'll bring my own wireless router to create our private LAN.

In order to prepare the session, I rewrote part of the app again myself. In here you can find this second iteration, again with a test committed at a time. By looking at the commits you can follow part of what I did during my session. You can take the code and practice yourself from this particular commit, comparing your moves with mine ones to see what we can learn.

Find the business specifications of the app here and the step definitions (glue) in here.

Now, the session didn't go bad, but it didn't go as well as I'd like. I did quite bad with the timing.I would have needed 90 minutes rather than 45 to illustrate the process properly. When I was preparing the talk, I wrote the code on my own and it didn't take much time, but presenting it's a different story, I've learned that I need about twice as much time.

2013-10-31 01.24.06But I am satisfied because several people understood the process and got value from it. Next time I run this session, it will go much better. And you know what? I've been approved by The Code Cop! Look at this picture.


I'll be happy if you were attending the talk and can give me some feedback in the form of a comment in this blog. As a reward, one person out of the people commenting will be randomly selected and I will run a free 90 minutes session for her/his company (remotely, videoconferencing), doing this same exercise properly with Q&A session.

James Lyndsay and Bart Knaack from The Test Lab have used an instance of the app for testing purposes and people have found several defects. I am happy for that because I didn't do any exploratory testing or even took care of network failures or latency problems. Thanks for that guys!

This exercise will be part of my upcoming book on Agile JavaScript for Rich Internet Applications. I expect to have the book done in 2014.

If you want to have a look at the sample deployed app on Heroku, use these urls:
Load a page in the browser with this url (as a speaker).
Then load the page as the audience in other window.
Then just interact.

Thank you very much for all your support, I really appreciated you invested your time on my talk. If are there questions please let me know of find me tomorrow in the conference to catch up or hang out 🙂

  • Ruben Martin Pozo

    Hi, Carlos. I was at your talk yesterday. Don’t worry about the application not working properly, these things happen all the time. I liked your talk but I think the example was a little bit complicated to follow. Too many moving parts and not so much time. I didn’t quite understand the connection between the spec and the tests and I got a little bit confused with the javascript server code (did I get it right?).

    Anyway, I really enjoyed your talk. It would’ve been great seeing you typing in that fancy keyboard!!! Maybe next time.

    Congrats and keep on the good job.

  • Antonio Martel

    I wasn’t lucky enough to attend your talk in Berlin. A pity as your meta-talk using Cucumber (Feature: Get feedback from the audience :D) sounds like good fun.

  • carlosble

    Thanks for your feedback Ruben! You’re right, I was too optimistic with my time. Even though I’ve worked on the presentation for 1 entire week, I didn’t get the time to run it in my local community group to have a more realistic estimate of the time.
    In the conference somebody told me that the Bluetooth keyboard I brought might have stopped working because of too many bluetooth devices in the room. Who knows.
    With 90 minutes, you guys would have understood everything, so am going to repeat this talk in more conferences because I believe it’s gonna be a great talk.

    JavaScript was in the server just because the Websockets implementation is very easy to use, it was the less effort possible in the server side 🙂 But I can be made with any other backend too 🙂

    I’ll keep you informed about the free in-house session.

    It was a pleasure meeting you in Potsdam!

  • carlosble

    Hi Antonio!
    Well, I can’t find a reason why you can’t be part of it, I mean, if you are interested in the in-house session for your team, let me know and we can repeat the talk for you guys.
    The idea was nice, but as Seb Rose said, it will mature and improve like fine wine… I spent too much time on the app itself but I needed some more time to prepare the performance. The good part is that people that attended can dig into the code and practice and I guess that with no much time they could understand the whole life cycle.

  • carlosble

    By the way, the sample deployed app had a mistake in the url. This is the url to act as a speaker:

  • Antonio Martel

    Thank you Carlos for updating the url and for you in-house session offer. I’ll keep it in mind!
    I have checked out the audience/talker app. It looks great for an explanatory session: neat and tidy. Did you use Bootstrap?

  • Juan Fernandez-Corugedo Igual

    Don’t worry about the final result. The objectives of the session are very ambitious but one hour isn’t enought time to cover all the topics. I’ve enjoyed the session and I think your application is a very good choice for this purpose.

  • carlosble

    Thank you for your feedback Juan! You are right, I was too ambitious specially for an audience where the majority are testers. I plan to run the same session, this time taking 90 minutes in upcoming conferences 😉

  • Jenny Mulholland

    I like the look of the feedback app, seems like a great idea (and a typical software developer’s way of solving a problem – write an app for it! 🙂 )

  • Carlos Ble

    Thanks Jenny! Feel free to check out the code and play with it. It uses Cucumber-JVM for acceptance tests and Jasmine for unit tests. It includes all the tools I currently use for JS development 🙂