2019
Team: Jena Martin, Andrew Bretnall, Dane Galbraith
Professor: Sung Park, Ph.D
Savannah College of Art and Design
Indigo Design Awards winner (four times!)
Gold in UX, Interface & Navigation 2020
Silver in Digital Tools and Utilities 2020
Bronze in Interactive Design 2020
Honorable Mention in Website Design 2020
Stress and anxiety inhibit a designer's creativity and ability to empathize.
Huddle is an interactive table on which colors representing users’ levels of stress illuminate their respective corners. The table facilitates an environment for open discussion, thus encouraging empathy among a team.
“The affective component is seen as an immediate emotional response of the ‘empathiser’ to the affective state of the ‘empathee’. This emotional response can have several forms, of which congruence or emotional contagion (e.g. automatically responding with a smile and feeling happy when you see somebody smile at you) is the most common form.”
Emotional contagion is a cool term and not always bad, but when it goes wrong, it goes really wrong. Think of it as walking into a packed sports bar on game night. If the home team just won and everyone is boisterous, clanking beers, and all the strangers are hugging, you might be inspired by the lively atmosphere. If, on the other hand, the home team is down 0 to 10 and the atmosphere ranges from dismay to anger, you're less inclined to have a smile on your face and might even take some of that anger on yourself.
Design teams bring their emotions with them to meetings. If a teammate is experiencing personal anxieties about the project (or life in general), that pressure is likely to permeate the rest of the group. It's important to stay cognizant of individual team members' mental health and the entire team's average.
UX rhetoric constantly reminds us that you are not your user, so what happens in a project where you are? Huddle came at the start of our senior year, a time where hard skills are mostly developed but soft skills like proper intra-team communication are still lacking. So, we made Huddle for us. For the UX students that are still learning how to have a disagreement without crying in the Adler hall bathroom. We started with a few research questions:
Working on a team can be stressful (shocker!)
Like ice cream, stress is good in moderation.
User-centered designers need to be empathetic
Stress spreads like the flu (emotional contagion!!!!!!)
Huddle was originally called "The Hands On Table" and arose after a several hours long, frustrating, ideation session.
This doodle is the first of many iterations, but ended up looking pretty close to the real thing.
Huddle's first iteration involved a cardboard box, some acrylic paint, colored string lights pulled off Dane's bedroom wall, and a Barry Manilow record. It looked better with the lights off.
Users felt "called out" by being forced to lay their emotions "out on the table." The consensus, though, was that this wasn't necessarily a bad thing. Our concept was validated.
We traded Barry for a flat screen TV playing an After Effects generated blob simulation. In the cardboard version, users felt a little lost about what to do with the box. We added visual prompts and even toyed with a voice prompt. This ended up getting scrapped for feasibility reasons.
Huddle's user testing phase fell around midterms at SCAD, which we saw as a unique opportunity to test its stress mitigation properties. We planned on rigging up a prototype for a real team to use during an actual stressful team meeting, with us sitting behind a two-way mirror. An ethical debate arose when we realized that Huddle could have a real, measurable impact on the success of the student's projects. If this impact turns out to be good, and we successfully facilitate open communication, then great! We helped! But, if the Huddle concept failed and inaccurate reads from our cheap sensors displayed the wrong emotions, we might actually hurt our classmates. There's also the issue of emotional amplification (lighting up the room with a big red light might have the unintended effect of making everyone more volatile). So, while this concept would be really cool to explore in the future, we scrapped it.
I've had the privilege to work with the Industrial Design/UX wizard Andrew Bretnall a few times now. My part of building the table mostly consisted of holding wood clamps and Andrew psyching me up to use the band saw.
Huddle uses four Galvanic Skin Response (GSR) sensors. Basically, when you get stressed out your palms get sweaty. Sweaty hands conduct electricity differently than dry hands, and we can measure this. The user places two electrodes about two inches apart on their palm and the GSR reads the electrical resistance between them. GSRs provide an admittedly less than accurate reading of stress, but work well enough for a proof of concept (see above: the ethical problem with displaying inaccurate results).
Reading the GSR output is tricky. It typically requires other biometrics like heart rate and eye tracking to accurately understand what the user is feeling, but sometimes the GSR output is pretty straightforward. I have a heart condition called sinus tachycardia, which, mixed with Generalized Anxiety, means my body displays the physical symptoms of fight-or-flight mode pretty randomly. I entered one of these states after walking a little too briskly to class, and my team jumped at the opportunity to get a baseline test of the GSR output. The above graph shows my actual decline from showing all the physical signs of stress to sitting down and looking at a picture of my dog over the course of a minute.
We collected a few more of these base readings from our users to construct a stress scale. The colors are drawn from a conventional application of color theory: blue for calm and red for stress. The GSR outputs a numerical value then mapped to a specific color.
Before Huddle, I'd never been driven to tears by a soldering iron. Your options for a 2x2 ft LED light matrix are buying one on Amazon for about $600 or soldering your own using individually addressable RGB LED light strips. I had just quit my part-time job at Publix, so the latter option was the only financially viable one. Looking back, I wish I saved up for the $600 matrix.
The matrix has 1404 RGB LEDs in individually addressable groups of three. The LED strips were cut into 40 sections and then painstakingly soldered together. There were something like 230 connections in total, but since I had never soldered anything before this became more like 600 since I eventually replaced each and every connection during troubleshooting.
I fried five Arduinos in my feeble pursuit to send 12v wall power through a device that takes 9v on a good day. Eventually, it took two Arduino Megas and two separate wall plugs to power Huddle. I also burnt out three of the school's fancy soldering irons in the electronics lab (shh) and set four small fires.
Coding Huddle was my main task (besides burning my hands on a soldering iron). I have some experience coding in Java and C, but this was my first Arduino based project, so I did about a million things wrong. The first thing I did wrong was make the code super complicated. The final code ended up to be something like 700 lines long which, if you're a programmer, is definitely an indication that I did things the stupid way.
The available Arduino LED matrix libraries assume that the matrix has been wired in a non-stupid way, so we had to come up with a solution on our own to map out our LEDs. The solution was to write down on the board the number of the LED in sequence and then...
...create arrays with each LED in the sequence that it should be colored. The GSR output updates the colors every five or so seconds, so updating them in this specific order creates the "propogation" effect. Colors start from under each user's hand and spread into the other users' sections.
Gradients are created in the spaces between each section using some simple math. Gradient 221 is the space between P1 and P2, closer to P2. It takes the average of the P1 and P2 color values weighted more to P2. Since RGB lights take the R, G, and B color values separately, the weighted averages are also taken separately and then added together to get the final color.
Remember how I said I did this the stupid way?