For some part of the past three weeks, Three Byte has been working on a “Tuning Chamber.” The software is a control system responsible for monitoring, visualizing and routing between a wide range of input sensors and visual effects including columns of light animations, a projector, fog-machine and a hallway full of speakers that play at different volumes and fade between sources and respond to the position of people in the space.
From a software perspective this project posed many unique challenges including how to assimilate information from a wide range of potentially noisy sensor events to infer the position of the people or peoples responsible for triggering those events. Additionally, this project has been interesting from a UI design and user-experience perspective. For our software to be an effective tool for our clients it must allow them to:
Also, interaction with the software needs to be fluid, but intelligent enough to protect against mistakes and information loss. The software should make user interaction intuitive and easy to understand while also exposing a fairly complex feature set. This software would need to expose differentiated user experiences for different users and use cases including monitoring, configuring and testing.
In this blog post, Jeff Atwood addresses the hazard of letting software developers build user interfaces and illustrates his point with examples. Atwood's post highlights the importance of investing time and resources in planning an intuitive and good-looking UI is. Dealing with the user's experience with our software up-front is an essential part of the development process at Three Byte and helps us to:
The Tuning Chamber UI was designed to expose the state of the Tuning Chamber system and all its constituent input/output components and also exposes power tooling capabilities for testing the software when hardware dependencies are missing. The Tuning Chamber UI allows a user to simulate a sensor event with mouse click or hover operations and see the audio-visual output behavior of the system on screen. These tools complemented by our unit tests, were an invaluable asset to the development of the functionality we were targeting.