Blog

  • That’s Not My Burnout

    That’s Not My Burnout

    Do you find it hard to connect when I read about people who are dying as they experience exhaustion? Do you feel like your feelings are invisible to the earth because you’re experiencing burnout different? Our main comes through more when stress starts to press down on us. Beautiful, content souls quieten and fade into the far, distracted stress we’ve all experienced. But some of us, those with fires constantly burning on the sides of our key, getting hotter. I am blaze in my brain. In an effort to overcome fatigue, I twice over, quintuple down, burn hotter, and burn hotter in an effort to overcome the situation. I don’t fade— I am engulfed in a passionate fatigue.

    What on earth is a passionate stress, then?

    Imagine a person who is determined to accomplish everything. She has two wonderful children whom she, along with her father who is also working mildly, is homeschooling during a crisis. She works for a lot of clients, all of whom she enjoys. She wakes up early to get some movement in ( or frequently catch up on work ), prepares dinner while the kids are having breakfast, and works while positioning herself near the end of her “fourth grade” to watch as she balances clients, tasks, and budgets. Sound like a bit? It is, even with a friendly group at home and at work.

    Sounds like this person needs self-care and has too much on her disk. But no, she doesn’t have occasion for that. In reality, she begins to feel as though she’s dropping balloons. Not enough is achieved. There’s not enough of her to be here and that, she is trying to divide her head in two all the time, all day, every day. She begins to question herself. And as those emotions become more and more real, her domestic tale becomes more and more important.

    Immediately she KNOWS what she needs to do! She ought to do more.

    This loop is challenging and risky. Hear why? Because when she doesn’t complete that new purpose, the story will only get worse. She immediately starts failing. She isn’t doing much. She is insufficient. She’ll discover more she may do because she might neglect, or perhaps her home. She doesn’t nap as much, proceed because much, all in the attempts to do more. Not succeeds in any objective target despite constantly trying to prove herself to herself. Not feeling “enough”

    But, yeah, that’s what zealous burnout looks like for me. It doesn’t develop immediately in a great sign; it develops gradually over the course of several weeks and months. My using process appears to be moving more quickly than one’s focus loss. I rate up and up and up… and therefore I simply stop.

    I have the potential to do so.

    The things that shape us are interesting. Through the glass of youth, I viewed the worries, problems, and sacrifices of someone who had to make it all work without having much. I never went without and also received an additional here or there because my mom was so competent and my father was so friendly.

    When my mother gave me food stamps as a child, I didn’t think shame; rather, I would have good started any debates about the subject, orally eviscerating anyone who dared to criticize the handicapped girl who was attempting to ensure all of our needs were met with so little. As a child, I watched the way the worry of not making those ends meet impacted persons I love. Because I was” the one who was” make our lives a little easier, I would take on many of the physical things in my house as the non-disabled people. I soon realized that putting more of myself into it was linked to fears or confusion; I am the one who does. I learned first that when something frightens me, I can double down and work harder to make it better. I am in charge of the problem. I’ve been told that I seem courageous when people have seen this in me as an adult, but truth be told, I’m not. If I seem courageous, it’s because this behavior was forged from another people’s worries.

    And here I am, surrounded by enormous tasks ahead of me, assuming that I am the one who is and therefore should, more than 30 times afterward, still feeling the urge to aimlessly drive myself forward. I feel more motivated to demonstrate that I may influence change if I put in more effort, put on more responsibilities, and demonstrate that.

    I do not see people who struggle financially as problems, because I have seen how powerful that tide is be—it takes you along the way. I fully realize that I had the opportunity to prevent many of the difficulties that my children faced. Having said that, I continue to believe that she should and am still” the one who can.” As a result, I do think I’ve failed if I had to struggle to make ends meet for my own home. Though I am supported and educated, most of this is due to great wealth. But, I’ll give myself the haughtiness of claiming that my choices were wise and that they had sparked that success. My sense of self is the result of the notion that I am” the one who can” and feel compelled to accomplish the most. I can choose to halt, and with some pretty precise warm water splashed in my face, I’ve made the choice to previously. However, I don’t always choose to stop, so I move on, driven by a fear that is so present in me that I hardly ever notice until I’m completely worn out.

    Why all this history, then? You see, burnout is a fickle thing. Over the years, I have read and heard a lot about burnout. Burnout is a real phenomenon. Especially now, with COVID, many of us are balancing more than we ever have before—all at once! It’s challenging, and so many amazing professionals are affected by the avoidance, the shutting down, and the procrastination. There are significant articles that, in my opinion, relate to the majority of people out there, but not me. That’s not what my burnout looks like.

    The perilous invisibility of zealous burnout

    The extra hours, extra work, and overall focused commitment are often viewed as an asset in many workplaces ( and occasionally that’s all it is ). They see someone trying to rise to challenges, not someone stuck in their fear. Many well-intentioned organizations have procedures in place to safeguard their teams from burnout. However, in situations like this, those alarms don’t always ring, and some organization members are surprised and depressed when the inevitable stop happens. And sometimes maybe even betrayed.

    Parents are praised for being so on top of it all when they can work, participate in the after-school activities, practice self-care in the form of diet and exercise, and still meet friends for coffee or wine. More so mothers, statistically speaking. Many of us watched endless streaming COVID episodes to see how challenging the female protagonist is, but she is strong, funny, and capable of doing it. It’s a “very special episode” when she breaks down, cries in the bathroom, woefully admits she needs help, and just stops for a bit. Truth be told, countless people are hidden in tears or doom-scrolling to escape. Although we are aware that the media is a lie to amuse us, a large portion of society has been persuaded that it is what we should aim for.

    Women and burnout

    I adore men. And even though I don’t love every man ( heads up, I don’t love every woman or nonbinary person either ), I think there is a wonderful range of people who fit that particular binary gender.

    That said, women are still more often at risk of burnout than their male counterparts, especially in these COVID stressed times. Mothers at work experience the pressure to do everything “mom” while giving 100 %. Mothers who are not employed feel they must do more to” justify” their discontinuance from traditional employment. Women who are not mothers often feel the need to do even more because they don’t have that extra pressure at home. It’s so ingrained in our culture and vicious and systemic that we frequently are unaware of how much pressure we place on ourselves and others.

    Beyond happiness, there are costs. Harvard Health Publishing released a study a decade ago that “uncovered strong links between women’s job stress and cardiovascular disease”. According to the CDC,” Heart disease is the leading cause of death for women in the United States, killing 299,578 women in 2017—or roughly 1 in every 5 female deaths,”

    According to what I’ve read, this connection between work stress and health is more dangerous for women than it is for their non-female counterparts.

    But what if your burnout isn’t like that either?

    That might not be you either. After all, we are all unique, and how we respond to stressors is also unique. It’s part of what makes us human. Don’t put too much emphasis on how burnout looks; instead, learn to recognize it in yourself. Here are a few questions I occasionally ask friends if I’m worried about them.

    Are you happy? You should ask yourself this straightforward question first. Even if you’re burning out doing all the things you love, chances are you’ll just stop enjoying yourself as much as you do.

    Do you feel empowered to say no? I’ve observed in myself and others that when someone is going out, they no longer feel like they can say no to things. Even those who don’t” speed up” feel pressured to say yes to not let the people around them be disappointed.

    What are three things you’ve done for yourself? Another fact to keep in mind is that we all have a tendency to stop doing things for ourselves. anything from avoiding conversations with friends to skipping showers and eating poorly. These can be red flags.

    Are you using justifications? Many of us make an effort to avoid feeling burned out. Over and over I have heard,” It’s just crunch time”,” As soon as I do this one thing, it will all be better”, and” Well I should be able to handle this, so I’ll figure it out”. And it might actually be crunch time, a single objective, and/or a set of skills you need to master. Life happens because of that. BUT if this doesn’t stop, be honest with yourself. If you’ve worked more than 50 hours of work since January, then perhaps it’s not crunch time; perhaps it’s a bad situation you’re finding yourself in.

    Do you have a strategy for overcoming this feeling? If something is truly temporary and you do need to just push through, then it has an exit route with a
    defined the end

    Take the time to listen to yourself as you would a friend. Be honest, allow yourself to be uncomfortable, and break the thought cycles that prevent you from healing.

    So what do we do now?

    Although what I just described is a different path to burnout, it is still burnout. There are well-established approaches to working through burnout:

    • Get enough sleep.
    • Eat well.
    • Work out.
    • Leave the house.
    • Take a break, please.
    • Overall, practice self-care.

    These are challenging for me because they seem like more tasks. Doing any of the above for me feels like a waste if I’m in the burnout cycle. The narrative is that if I’m already failing, why would I take care of myself when I’m dropping all those other balls? People need me, don’t they?

    Your inner voice might be pretty bad by now if you’re deeply in the cycle. If you need to, tell yourself you need to take care of the person your people depend on. Use your roles to help facilitate healing by justifying the amount of time you spend working on you if they are making you burn out.

    I have come up with a few things that I do when I start to feel like I’m going into a zealous burnout to help me remember the airline attendant advice to put the mask on yourself first.

    Cook an elaborate meal for someone!

    Okay, since I’m a “food-focused” person, I’ve always been a fan. In my home, there are countless tales of people coming into the kitchen, turning right, and leaving when they noticed I was” chopping angrily.” But it’s more than that, and you should give it a try. Seriously. If you don’t feel like giving time for yourself, make it a priority for someone else. Most of us work in a digital world, so cooking can fill all of your senses and force you to be in the moment with all the ways you perceive the world. It can help you get a better perspective and help you get out of your head. I’ve always had the ability to locate a location on a map and prepare food from it ( thanks, Pinterest ). I love cooking Indian food, as the smells are warm, the bread needs just enough kneading to keep my hands busy, and the process takes real attention for me because it’s not what I was brought up making. And ultimately, we all triumph!

    Vent like a sniveling jerk.

    Be careful with this one!

    Over the past few years, I have made an effort to practice more gratitude, and I am aware of the benefits. Having said that, sometimes you just need to let it all out, even the ugly ones. Hell, I’m a big fan of not sugarcoating our lives, and that sometimes means that to get past the big pile of poop, you’re gonna wanna complain about it a bit.

    When that is required, turn to a trusted friend and give yourself some pure verbal diarrhea by expressing all your concerns. You must have faith in this friend to not judge you, to feel your pain, and, most importantly, to instruct you to take your own rectal cavity out of your cranium. Seriously, it’s about getting a reality check here! One of the things that I admire most about my husband is how he manages to simplify things down to the simplest. We’re spending our lives together, and I can’t wait to get over it. I’m so grateful for his words of dedication, love, and acceptance of me. It also, of course, has meant that I needed to remove my head from that rectal cavity. Again, those instances are typically appreciated in retrospect.

    Grab a book!

    There are many books out there that aren’t so much self-help as they are people just like you sharing their stories and how they’ve come to find greater balance. You might discover something that appeals to you. Among the titles that have stood out to me are:

    • Thrive by Arianna Huffington
    • Tim Ferriss ‘ book Tools of Titans
    • Girl, Stop Apologizing by Rachel Hollis
    • Dare to Lead by Brené Brown

    Or, a tactic I enjoy using is to read or listen to a book that is NOT related to my work-life balance. I’ve read the following books, and I think they helped to balance me out because my mind was thinking about the subjects they were interested in rather than whizzing around:

    • The Drunken Botanist by Amy Stewart
    • Darin Olien’s Superlife
    • A Brief History of Every Person Who Ever Lived by Adam Rutherford
    • Gaia’s Garden by Toby Hemenway

    If you’re not interested in reading, you can find a topic on YouTube or subscribe to a podcast. In addition to learning about raising chickens and ducks, I’ve watched countless gardening and permaculture topics. For the record, I do not have a particularly large food garden, nor do I own livestock of any kind… yet. I just find the subject fascinating, and it’s unrelated to anything that needs to be done in my life.

    Give yourself a break.

    You are never going to be perfect—hell, it would be boring if you were. It can be imperfect and broken. It’s human nature to be depressed, anxious, and tired. It’s OK to not do it all. You can’t be brave without being imperfect, which is scary, but you can’t be brave without being imperfect.

    The most crucial thing to remember is to grant yourself permission to NOT do it all. You never promised to be everything to everyone at all times. Our fears determine our strength, not ours.

    This is challenging. It is hard for me. That it’s okay to stop is what inspired me to write this. It’s acceptable that your unhealthy habit, which might even be beneficial to those around you, needs to end. You can still be successful in life.

    I just recently learned that we are all euthanizing in our daily lives. What will your professional accomplishments say, knowing that your speech won’t include them? What do you want it to say?

    Look, I understand that none of these concepts will “fix it,” and that’s not their intention. None of us has complete control over what happens in our environment, but only how we react to it. These suggestions are to help stop the spiral effect so that you are empowered to address the underlying issues and choose your response. They are things that most of the time work for me. They might be able to work for you.

    Does this sound familiar?

    If this sounds familiar, you’re not just going to know about it. Don’t let your sluggish self-talk indicate that you “even burn out wrong.” It’s not wrong. Even if I’m rooted in fear like my own drivers, I think this need to do more comes from a place where you have the same kind of love, determination, motivation, and other wonderful qualities that make you the amazing person you are. We’re going to be fine, you see. The lives that unfold before us might never look like that story in our head—that idea of “perfect” or “done” we’re looking for, but that’s OK. Really, when we stop and look around, usually the only eyes that judge us are in the mirror.

    Do you recall the Winnie the Pooh cartoon where Pooh ate so much at Rabbit’s house that his buttocks were unable to pass through the door? It came as no surprise when Rabbit abruptly declared that this was unacceptable because I already associate a lot with him. But do you recall what happened next? The big butt in his kitchen was made up of poor Pooh’s ankles and decorations, and he made the most of it.

    We are resourceful and aware that we can push ourselves when necessary, even when we are exhausted or have a ton of clutter in our room. None of us has to be afraid, as we can manage any obstacle put in front of us. And maybe that means we need to redefine success in order to make room for comfort for being uncomfortable human, but that doesn’t really sound that bad either.

    So, if you’re anywhere right now, take a deep breath. Do what you need to do to get out of your head. Give thanks and be considerate.

  • Asynchronous Design Critique: Giving Feedback

    Asynchronous Design Critique: Giving Feedback

    One of the most powerful sweet skills we have at our disposal is the ability to work together to improve our designs while developing our own abilities and perspectives, regardless of how it is used or what it might be called.

    Feedback is also one of the most underestimated equipment, and generally by assuming that we’re already good at it, we settle, forgetting that it’s a talent that can be trained, grown, and improved. Bad comments can lead to conflict on projects, lower confidence, and long-term, undermine trust and teamwork. Quality opinions can be a revolutionary force.

    Practicing our knowledge is absolutely a good way to enhance, but the learning gets yet faster when it’s paired with a good base that programs and focuses the exercise. What are some fundamental components of providing effective opinions? And how can input be changed for workplaces where workers are located and distributed?

    On the web, we may discover a long history of sequential suggestions: from the early weeks of open source, script was shared and discussed on email addresses. Developers and sprint masters discuss draw requests, designers make comments on their beloved design tools, and other things.

    Design criticism is frequently used as a term for a type of collaborative suggestions that is provided to improve our work. So it shares a lot of the rules with comments in public, but it also has some variations.

    The information

    The material of the feedback serves as the foundation for all effective critiques, so we need to begin there. There are many designs that you can use to form your content. This one from Lara Hogan is the one I privately like best because it’s simple and actionable.

    This formula is typically used to provide feedback to people, but it also fits really well in a style criticism because it finally addresses one of the main inquiries that we work on: What? Where? Why? How? Imagine that you’re giving some comments about some pattern function that spans several screens, like an onboard movement: there are some pages shown, a circulation blueprint, and an outline of the decisions made. You notice a flaw in the situation. You’ll have a mental model that can help you be more precise and effective if you keep the three components of the equation in mind.

    Here is a comment that could be given as a part of some feedback, and it might look reasonable at a first glance: it seems to superficially fulfill the elements in the equation. But does it exist?

    Not sure about the hierarchy and styles of the buttons; it seems off. Can you change them?

    Observation for design feedback also refers to providing a perspective that is as specific as possible, not just by pointing out which portion of the interface your feedback refers to. Do you offer the user’s viewpoint? Your expert perspective? From a business perspective? From the perspective of the project manager? A first-time user’s perspective?

    When I see these two buttons, I anticipate one to go forward and the other to go back.

    The why is the focus. Just pointing out a UI element might sometimes be enough if the issue may be obvious, but more often than not, you should add an explanation of what you’re pointing out.

    When I see these two buttons, I anticipate one to go forward and the other to go back. But this is the only screen where this happens, as before we just used a single button and an “×” to close. This seems to be breaking the consistency in the flow.

    The question approach is intended to give the designer some open guidance by provoking the designer’s critical thinking when they receive the feedback. Notably, Lara’s equation includes a second approach: request, which instead provides instructions for a particular solution. While that’s a viable option for feedback in general, for design critiques, in my experience, defaulting to the question approach usually reaches the best solutions because designers are generally more comfortable in being given an open space to explore.

    For the question approach, consider the difference between the two:

    When I see these two buttons, I anticipate one to go forward and the other to go back. But this is the only screen where this happens, as before we just used a single button and an “×” to close. This seems to be breaking the consistency in the flow. Would it make sense to unify them?

    Or, for the request approach:

    When I see these two buttons, I anticipate one to go forward and the other to go back. But this is the only screen where this happens, as before we just used a single button and an “×” to close. This seems to be breaking the consistency in the flow. Let’s make sure that all screens have the same pair of forward and back buttons.

    In some situations, it might be helpful to include an additional reason why you think the suggestion is better at this point.

    When I see these two buttons, I anticipate one to go forward and the other to go back. But this is the only screen where this happens, as before we just used a single button and an “×” to close. This seems to be breaking the consistency in the flow. Let’s make sure that all screens have the same two forward and back buttons so that users don’t get confused.

    Choosing between the request and question approaches can occasionally be influenced by one’s personal preferences. I spent a while working on improving my feedback, conducting anonymous feedback reviews and sharing feedback with others. After a few rounds of this work and a year later, I got a positive response: my feedback came across as effective and grounded. until I switched teams. Surprise surprise, one particular person gave me a lot of negative feedback. The reason is that I had previously tried not to be prescriptive in my advice—because the people who I was previously working with preferred the open-ended question format over the request style of suggestions. However, there was a member of this other team who preferred specific guidance. So I changed my feedback so that it included requests.

    One comment that I heard come up a few times is that this kind of feedback is quite long, and it doesn’t seem very efficient. Yes, but no. Let’s look at both sides.

    No, this style of feedback is actually efficient because the length here is a byproduct of clarity, and spending time giving this kind of feedback can provide exactly enough information for a good fix. Additionally, it can reduce misunderstandings and back-and-forth conversations in the future, boosting overall collaboration’s effectiveness and efficiency beyond the single comment. Consider the following example:” Let’s make sure that all screens have the same two forward and back buttons” instead. The designer receiving this feedback wouldn’t have much to go by, so they might just apply the change. The interface might change in later iterations or new features might be introduced, and perhaps the change won’t make sense anymore. Without explaining the why, the designer might assume that the change is one of consistency, but what if it wasn’t? So there could now be an underlying concern that changing the buttons would be perceived as a regression.

    Yes, this type of feedback is not always effective because some comments don’t always need to be thorough, some times because some changes are made because they don’t always follow our instructions, and others because the team may have extensive internal knowledge, which makes some of the whys possible be implied.

    Therefore, the equation above is intended to serve as a mnemonic to reflect and enhance the practice rather than a strict template for feedback. Even after years of active work on my critiques, I still from time to time go back to this formula and reflect on whether what I just wrote is effective.

    The atmosphere

    Feedback forms the basis for well-developed content, but that’s not really enough. The soft skills of the person who’s providing the critique can multiply the likelihood that the feedback will be well received and understood. It has been demonstrated that only positive feedback can lead to lasting change in people, and tone alone can determine whether content is rejected or welcomed.

    Tone is crucial to work on because our goal is to be understood and create a positive working environment. Over the years, I’ve tried to summarize the required soft skills in a formula that mirrors the one for content: the receptivity equation.

    Respectful feedback comes across as grounded, solid, and constructive. It’s the kind of feedback that, regardless of whether it’s positive or negative, is viewed as useful and fair.

    Timing refers to when the feedback happens. If given at the wrong time, to-the-point feedback has little chance of being well received. When a new feature’s entire high-level information architecture is about to go live, it might still be relevant if the questioning raises a significant blocker that no one saw, but those concerns are much more likely to have to wait for a later revision. So in general, attune your feedback to the stage of the project. Iteration in the early stages? Iteration that was later? Polishing work in progress? Each of these needs varies. Your feedback will be received favorably if the right timing is chosen.

    Attitude is the equivalent of intent, and in the context of person-to-person feedback, it can be referred to as radical candor. That entails checking before writing to see if what we have in mind will actually help the person and improve the project overall. Perhaps we don’t want to admit that we don’t really appreciate that person when we reflect on them. Hopefully that’s not the case, but that can happen, and that’s okay. How would I write if I really cared about them, aside from acknowledging and having that to help you make up for it? How can I stop acting aggressively? How can I be more constructive?

    Form is important because having great content, perfect timing, and the right attitude might not be effective if our writing is interpreted as misunderstandings, especially in diverse and cross-cultural workplaces. There could be many reasons for this, including the fact that occasionally certain words may cause specific reactions, that non-native speakers may not be able to comprehend all thenuances of some sentences, that our brains may be different, and that we may perceive the world differently. Neurodiversity is a requirement. Whatever the reason, it’s important to review not just what we write but how.

    A few years ago, I asked for some suggestions for how to give feedback. I was given some helpful advice, but I also found a surprise in my comment. They pointed out that when I wrote” Oh, ]… ]”, I made them feel stupid. That wasn’t my intention at all! I just realized that I had been giving them feedback for months and that I had always made them feel foolish. I was horrified … but also thankful. I quickly changed my spelling mistake by adding “oh” to my list of replaced words (your choice between aText, TextExpander, or others ) so that when I typed “oh,” it was immediately deleted.

    Something to keep in mind is that people frequently beat around the bush, especially in teams with strong group spirit. It’s important to remember here that a positive attitude doesn’t mean going light on the feedback—it just means that even when you provide hard, difficult, or challenging feedback, you do so in a way that’s respectful and constructive. The best thing you can do for someone is to encourage their growth.

    Giving feedback in written form can be reviewed by someone else who isn’t directly involved, which can help to reduce or eliminate any bias that might exist. I found that the best, most insightful moments for me have happened when I’ve shared a comment and I’ve asked someone who I highly trusted,” How does this sound”?,” How can I do it better”, and even” How would you have written it” ?—and I’ve learned a lot by seeing the two versions side by side.

    The format

    Asynchronous feedback also has a significant inherent benefit: we can devote more time to making sure that the suggestions ‘ clarity of communication and actionability meet two main objectives.

    Let’s imagine that someone shared a design iteration for a project. You are commenting on it while reviewing it. Let’s try to think about some factors that might be helpful to consider, as there are many ways to accomplish this, and context is of course a factor.

    In terms of clarity, start by grounding the critique that you’re about to give by providing context. This includes specifically describing where you’re coming from: do you have a thorough understanding of the project, or is this your first encounter with it? Are you bringing in a high-level perspective, or are you just learning the ins and outs? Are there regressions? Which user’s point of view do you consider when providing feedback? Is the design iteration at the point where it would be acceptable to ship this, or are there important issues that need to be addressed first?

    Providing context is helpful even if you’re sharing feedback within a team that already has some information on the project. And context is absolutely necessary when providing cross-team feedback. If I were to review a design that might be directly connected to my work, I would say that, underlining my opinion as external, and if I had no idea how the project came to that conclusion.

    We often focus on the negatives, trying to outline all the things that could be done better. That is obviously important, but focusing on the positives, especially if you saw improvement in the previous iteration, is even more crucial. Although this may seem superfluous, it’s important to keep in mind that design is a field with hundreds of possible solutions to each problem. So pointing out that the design solution that was chosen is good and explaining why it’s good has two major benefits: it confirms that the approach taken was solid, and it helps to ground your negative feedback. Sharing positive feedback can help prevent regressions in things that are going well because those things will have been deemed significant in the long run. Positive feedback can also help, as an added bonus, prevent impostor syndrome.

    There’s one powerful approach that combines both context and a focus on the positives: frame how the design is better than the status quo ( compared to a previous iteration, competitors, or benchmarks ) and why, and then on that foundation, you can add what could be improved. There is a significant difference between a critique of a design that is already in good shape and one that isn’t quite there yet.

    Depersonalizing your feedback is another way to make it better: it should never be about the creator of the piece of art. It’s” This button isn’t well aligned” versus” You haven’t aligned this button well”. This can be changed in your writing very quickly by reviewing it just before sending.

    One of the best ways to assist the designer who is reading through your feedback in terms of actionability is to divide it into bullet points or paragraphs, which are easier to review and analyze one by one. For longer pieces of feedback, you might also consider splitting it into sections or even across multiple comments. Of course, adding screenshots or identifying markers for the specific area of the interface you’re referring to can also be very helpful.

    Emojis have been a method I’ve personally used to enhance the bullet points in some situations. So a red square � � means that it’s something that I consider blocking, a yellow diamond � � is something that I can be convinced otherwise, but it seems to me that it should be changed, and a green circle � � is a detailed, positive confirmation. A blue spiral is also used for either something I’m uncertain about, an exploration, an open alternative, or just a note. However, I’d only use this strategy on teams where I’ve already established a high level of trust because it might turn out to be quite demoralizing if I deliver a lot of red squares, and I’d have to reframe how I’d communicate that.

    Let’s see how this would work by reusing the example that we used earlier as the first bullet point in this list:

    • 🔶 Navigation—When I see these two buttons, I anticipate one to go forward and the other to go back. But this is the only screen where this happens, as before we just used a single button and an “×” to close. This seems to be breaking the consistency in the flow. Let’s make sure that all screens have the same two forward and back buttons so that users don’t get confused.
    • Overall, I believe the page is strong, and this is a good candidate for a version 1. 1.0 release.
    • � � Metrics—Good improvement in the buttons on the metrics area, the improved contrast and new focus style make them more accessible.
    • Button Style: Using the green accent in this context gives the impression that it’s a positive action because green is typically seen as a confirmation color. Do we need to look for a different color?
    • 🔶Tiles—Given the number of items on the page, and the overall page hierarchy, it seems to me that the tiles shouldn’t be using the Subtitle 1 style but the Subtitle 2 style. This will maintain consistency in the visual hierarchy.
    • Background: Using a light texture is effective, but I’m not sure if doing so will cause too much noise on this kind of page. What is the thinking in using that?

    What about using Figma or another design tool that enables in-place feedback to provide feedback directly? These are generally difficult to use because they conceal discussions and are harder to follow, but in the right setting, they can be very effective. Just make sure that each of the comments is separate so that it’s easier to match each discussion to a single task, similar to the idea of splitting mentioned above.

    Say the obvious, please. Sometimes we might feel that something is clearly right or wrong, and we don’t say it. Or sometimes we might have a doubt that we don’t express because the question might sound stupid. Say it, that’s fine. Don’t hold it back, though. You might have to reword it a little to make the reader feel more at ease. Good feedback is transparent, even when it may be obvious.

    Another benefit of asynchronous feedback is that written feedback automatically monitors decisions. Why did we do this, especially in large projects? could be a question that pops up from time to time, and there’s nothing better than open, transparent discussions that can be reviewed at any time. I advise using software to prevent these discussions from being hidden after they have been resolved for this reason.

    Content, tone, and format. Each one of these subjects provides a useful model, but working to improve eight areas—observation, impact, question, timing, attitude, form, clarity, and actionability—is a lot of work to put in all at once. One way to take them one by one is to first identify the area you most need from both your own perspective and feedback from others. Then the second, followed by the third, and so on. At first you’ll have to put in extra time for every piece of feedback that you give, but after a while, it’ll become second nature, and your impact on the work will multiply.

    Thanks to Mike Shelton and Brie Anne Demkiw for their initial review of this article.

  • Asynchronous Design Critique: Getting Feedback

    Asynchronous Design Critique: Getting Feedback

    ” Any reply”? is perhaps one of the worst ways to ask for opinions. It’s obscure and unfocused, and it doesn’t give a clear picture of what we’re looking for. Great feedback begins sooner than we might anticipate: it begins with the demand.

    It might seem contradictory to start the process of receiving feedback with a problem, but that makes sense if we realize that getting feedback can be thought of as a form of design study. The best way to ask for feedback is to write strong questions, just like we wouldn’t do any studies without the right questions to get the insight we need.

    Design criticism is never a one-time procedure. Sure, any great comments process continues until the project is finished, but this is especially true for layout because architecture work continues iteration after iteration, from a high level to the finest details. Each stage requires its unique set of questions.

    Finally, we need to review what we received, get to the heart of its insight, and taking action, like with any good research. Problem, generation, and evaluation. Let’s take a look at each of those.

    The query

    Being available to input is important, but we need to be specific about what we’re looking for. Any comments,” What do you think,” or” I’d love to hear your mind” at the end of a presentation are likely to garner a lot of different ideas, or worse, to make people follow the lead of the first speaker. And finally, we become irritated because ambiguous queries like those can result in people leaving reviews that don’t even consider keys. Which might be a savory matter, so it might be hard at that point to divert the crew to the topics that you had wanted to focus on.

    How do we enter this circumstance, though? It’s a combination of various components. One is that we don’t often consider asking as a part of the input approach. Another is how healthy it is to assume that everyone else will agree with the problem and leave it alone. Another is that being extremely detailed is frequently not necessary in non-professional conversations. In short, we tend to underestimate the importance of the issues, so we don’t work on improving them.

    Great questioning helps to guide and concentrate the criticism. It also serves as a form of acceptance, outlining your willingness to make comments and the types of comments you want to receive. It puts people in the right emotional position, especially in situations when they weren’t expecting to provide feedback.

    There isn’t a second best method to request suggestions. It simply needs to be certain, and precision can take a variety of forms. A design for design critique that I’ve found especially helpful in my training is the one of stage over depth.

    The term” level” refers to each of the stages of the process, in our situation, the design phase. The kind of feedback changes as the customer research moves forward to the final design. But within a single stage, one might also examine whether some assumptions are correct and whether there’s been a suitable language of the amassed input into updated designs as the job has evolved. The levels of consumer experience may serve as a starting point for possible questions. What do you want to learn about job goals? User requirements? Funnality? the glad Contact design? Data structures Interface style Navigation style? physical architecture Brand?

    Here’re a some example questions that are specific and to the place that refer to different levels:

    • Features: Is it desired to automate accounts creation?
    • Interaction style: Take a look at the updated flowing and let me know if there are any steps or mistake states I may have missed.
    • Information infrastructure: We have two competing bits of information on this site. Does the framework make a good communication between them?
    • User interface design: What do you think about the top-of-the-page error counter, which makes sure you can see the future error even when the error is outside the viewport?
    • Navigation style: From study, we identified these second-level routing items, but when you’re on the webpage, the list feels overly long and hard to understand. Exist any recommendations for resolving this?
    • Are the thick alerts in the bottom-right corner of the page obvious enough?

    The other plane of sensitivity is about how heavy you’d like to go on what’s being presented. For instance, we may have introduced a new end-to-end movement, but you might want to know more about a particular viewpoint you found especially difficult. This can be particularly helpful from one generation to the next when it’s crucial to identify the areas that have changed.

    There are other things that we can acquire when we want to accomplish more specific—and more effective—questions.

    Eliminating generic finals from your issues like “good,” “well,” “nice,” “bad,” “okay,” and” cool” is a simple strategy. Asking,” When the stop opens and the switches appear, is this conversation great, for instance?” may seem precise, but you can place the “good” tournament, and transfer it to an even better query:” When the wall opens and the buttons appear, is it clear what the next action is”?

    Sometimes we do want a lot of feedback. Although that is uncommon, it is possible. In that sense, you might still make it explicit that you’re looking for a wide range of opinions, whether at a high level or with details. Or perhaps just say,” At first glance, what do you think”? so that it is obvious that what you’re asking is open ended but focused on a person’s impression after their first five seconds of inquiry.

    Sometimes the project is particularly expansive, and some areas may have already been explored in detail. In these circumstances, it might be helpful to state explicitly that some parts are already locked in and aren’t accessible for feedback. Although it’s not something I’d recommend in general, I’ve found it helpful in avoiding falling into rabbit holes like those that could lead to further refinement but aren’t what’s important right now.

    Asking specific questions can completely change the quality of the feedback that you receive. People with less refined criticism will now be able to provide more actionable feedback, and even expert designers will appreciate the clarity and effectiveness gained from concentrating solely on what’s needed. It can save a lot of time and frustration.

    The iteration

    Design iterations are probably the most recognizable component of the design process, and they act as a natural feedback loop. Many design tools have inline commenting, but many of them only display changes as a single fluid stream in the same file. In addition, these kinds of design tools automatically update shared UI components, make conversations disappear and require designs to always display the most recent version, unless these would-be useful features were manually disabled. The implied goal that these design tools seem to have is to arrive at just one final copy with all discussions closed, probably because they inherited patterns from how written documents are collaboratively edited. That’s probably not the most effective way to go about designing critiques, but even if I don’t want to be too prescriptive, it might work for some teams.

    Create explicit checkpoints for discussion is the asynchronous design-critique strategy that I find to be most successful. I’m going to use the term iteration post for this. It refers to a write-up or presentation of the design iteration that is followed by some sort of discussion thread. Any platform that can accommodate this type of structure can use this. By the way, when I refer to a “write-up or presentation“, I’m including video recordings or other media too: as long as it’s asynchronous, it works.

    There are many benefits to using iteration posts:

      It establishes a rhythm in the design process, allowing the designer to review the feedback from each iteration and get ready for the following.
    • It makes decisions visible for future review, and conversations are likewise always available.
    • It keeps track of how the design evolved over time.
    • It might also make it simpler to collect and act on feedback depending on the tool.

    These posts of course don’t mean that no other feedback approach should be used, just that iteration posts could be the primary rhythm for a remote design team to use. And from there, other feedback techniques ( such as live critique, pair designing, or inline comments ) can emerge.

    There isn’t, in my opinion, a common format for iteration posts. But there are a few high-level elements that make sense to include as a baseline:

    1. The objective is to achieve
    2. The layout
    3. The list of changes
    4. The querys

    A goal for each project is likely to be one that has already been condensed into a single sentence, such as the request for the project owner, the product manager, or the client brief. So this is something that I’d repeat in every iteration post—literally copy and pasting it. To avoid having to search through information from multiple posts, the goal is to provide context and repeat what is necessary to complete each iteration post. The most recent iteration post will provide all I need to know about the most recent design.

    This copy-and-paste part introduces another relevant concept: alignment comes from repetition. Therefore, repeating information in posts is actually very effective at ensuring that everyone is on the same page.

    The actual series of information-architecture outlines, diagrams, flows, maps, wireframes, screens, visuals, and any other design work that has been done is what is then called the design. In short, it’s any design artifact. In the final stages of the project, I prefer to use the term “blank” to indicate that I’ll be displaying complete flows rather than individual screens to make it simpler to comprehend the larger picture.

    Because it makes it easier to refer to the objects, it might also be helpful to have clear names on them. Write the post in a way that helps people understand the work. It’s not much different from creating a strong live presentation.

    A bullet list of the changes made in the previous iteration should also be included for an effective discussion so that attendees can concentrate on what’s changed. This can be especially useful for larger works of work where keeping track, iteration after iteration, might prove difficult.

    And finally, as noted earlier, it’s essential that you include a list of the questions to drive the design critique in the direction you want. Making a numbered list of questions available in the form of a number can also make it simpler to refer to each one by its name.

    Not every iteration is the same. Earlier iterations don’t need to be as tightly focused—they can be more exploratory and experimental, maybe even breaking some of the design-language guidelines to see what’s possible. Then, later, the iterations begin coming to a decision and improving it until the design process is complete and the feature is ready.

    Even if these iteration posts are written and intended as checkpoints, I want to point out that they are not by any means required to be exhaustive. A post might be a draft—just a concept to get a conversation going—or it could be a cumulative list of each feature that was added over the course of each iteration until the full picture is done.

    I eventually started using particular labels for incremental iterations, such as i1, i2, i3, and so on. Although this may seem like a minor labeling tip, it can be useful in many ways:

    • Unique—It’s a clear unique marker. One can quickly say,” This was discussed in i4″ with each project, and everyone knows where to go to review things.
    • Unassuming—It functions like versions ( such as v1, v2, and v3 ), but versions give the impression of something that is large, exhaustive, and complete. Iterations must be able to be exploratory, incomplete, partial.
    • Future proof—It resolves the “final” naming issue that you might encounter with variations. No more files with the title “final final complete no-really-its-done” Within each project, the largest number always represents the latest iteration.

    The wording release candidate (RC ) could be used to indicate when a design is finished enough to be worked on, even if there are some areas that still need improvement and, in turn, require more iterations, such as” with i8 we reached RC” or “i12 is an RC” to indicate when it is finished.

    The evaluation

    What usually happens during a design critique is an open discussion, with a back and forth between people that can be very productive. This strategy is particularly successful when synchronous feedback is being received live. However, when we work asynchronously, it is more effective to adopt a different strategy: we can adopt a user-research mindset. Written feedback from teammates, stakeholders, or others can be treated as if it were the result of user interviews and surveys, and we can analyze it accordingly.

    This shift has some significant advantages, making asynchronous feedback particularly effective, especially around these friction points:

      It makes it easier to respond to everyone.
    1. It reduces the frustration from swoop-by comments.
    2. It lessens our personal stakes.

    The first friction point is having to press yourself to respond to each and every comment. Sometimes we write the iteration post, and we get replies from our team. It’s just a few of them, it’s simple, and there isn’t much to worry about. However, there may be times when some solutions may require more in-depth discussions and the number of replies may quickly rise, which can create tension between trying to be a good team player by responding to everyone and attempting the next design iteration. This might be especially true if the person who’s replying is a stakeholder or someone directly involved in the project who we feel that we need to listen to. We must come to terms with the fact that this pressure is perfectly normal and that it’s human nature to try to accommodate those we care about. When responding to all comments, it can be effective, but when we consider a design critique more like user research, we realize that we don’t need to respond to every comment, and there are alternatives in asynchronous spaces:

      One is to let the next iteration speak for itself. The response is received when the design changes and a follow-up iteration is made. You could tag everyone in the previous discussion, but that is only a choice, not a requirement.
    • Another is to briefly reply to acknowledge each comment, such as” Understood. Thank you,”” Good points— I’ll review,” or” Thanks. These will be included in the upcoming iteration. In some cases, this could also be just a single top-level comment along the lines of” Thanks for all the feedback everyone—the next iteration is coming soon”!
    • Another option is to quickly summarize the comments before moving on. This may be particularly helpful if your workflow allows you to create a simplified checklist that you can use for the following iteration.

    The second friction point is the swoop-by comment, which is the kind of feedback that comes from someone outside the project or team who might not be aware of the context, restrictions, decisions, or requirements —or of the previous iterations ‘ discussions. On their side, there is something that one can hope to learn: they could begin to acknowledge that they are doing this and they could be more aware of where they are coming from. Swoop-by comments frequently prompt the simple thought,” We’ve already discussed this,” and it can be frustrating to have to keep saying the same thing over and over.

    Let’s begin by acknowledging again that there’s no need to reply to every comment. However, if responding to a previously litigated point might be helpful, a brief response with a link to the previous discussion for additional information is typically sufficient. Remember that repetition results in alignment, so it’s acceptable to repeat things occasionally!

    Swoop-by commenting can still be useful for two reasons: they might point out something that still isn’t clear, and they also have the potential to stand in for the point of view of a user who’s seeing the design for the first time. Yes, you’ll still be frustrated, but that might at least make things better for you.

    The personal stake we might have in the design could be the third friction point, which might cause us to feel defensive if the review turned into a discussion. Treating feedback as user research helps us create a healthy distance between the people giving us feedback and our ego ( because yes, even if we don’t want to admit it, it’s there ). And in the end, presenting everything in aggregated form helps us to prioritize our work more.

    Remember to always remember that you don’t have to accept every piece of feedback, even though you need to listen to stakeholders, project owners, and specific advice. You have to analyze it and make a decision that you can justify, but sometimes “no” is the right answer.

    You are in charge of making that choice as the designer leading the project. In the end, everyone has their area of specialization, and the designer has the most background and knowledge to make the best choice. And by listening to the feedback that you’ve received, you’re making sure that it’s also the best and most balanced decision.

    Thanks to Mike Shelton and Brie Anne Demkiw for their contributions to the initial draft of this article.

  • Designing for the Unexpected

    Designing for the Unexpected

    Although I’m not certain when I first heard this statement, it has stuck with me over the centuries. How do you generate solutions for scenarios you can’t think? Or create items that are functional on products that have not yet been created?

    Flash, Photoshop, and flexible pattern

    My go-to program when I first started designing platforms was Photoshop. I created a 960px paint and set about creating a design that I would eventually lose information in. Using set widths, fixed heights, and complete positioning, the development phase aimed to achieve pixel-perfect precision.

    Ethan Marcotte’s speak at An Event Off and subsequent content” Responsive Web Design” in A List Off in 2010 changed all this. As soon as I learned about flexible style, I was convinced, but I was even terrified. The pixel-perfect models full of special figures that I had formerly prided myself on producing were no longer good enough.

    My first encounter with reactive style didn’t help my fear. My second project was to get an active fixed-width website and make it reactive. You can’t really put responsiveness at the end of a job, which I learned the hard way. To make smooth design, you need to prepare throughout the style phase.

    A novel method of style

    Developing flexible or liquid sites has always been about removing limitations, producing material that can be viewed on any system. It relies on the use of percentage-based design, which I immediately achieved using native CSS and power groups:

    .column-span-6 { width: 49%; float: left; margin-right: 0.5%; margin-left: 0.5%;}.column-span-4 { width: 32%; float: left; margin-right: 0.5%; margin-left: 0.5%;}.column-span-3 { width: 24%; float: left; margin-right: 0.5%; margin-left: 0.5%;}

    Then with Sass so I could take advantage of @includes to re-use repeated slabs of script and walk up to more semantic html:

    .logo { @include colSpan(6);}.search { @include colSpan(3);}.social-share { @include colSpan(3);}

    Media inquiries

    The next ingredient for flexible design is press queries. Without them, regardless of whether the information was still readable, may shrink to fit the available storage.

    Media inquiries prevented this by allowing us to add breakpoints where the design could adapt. Like most people, I started out with three breakpoints: one for desktop, one for tablets, and one for mobile. Over the years, I added more and more for phablets, wide screens, and so on. 

    For years, I happily worked this way and improved both my design and front-end skills in the process. The only problem I encountered was making changes to content, since with our Sass grid system in place, there was no way for the site owners to add content without amending the markup—something a small business owner might struggle with. This is because each row in the grid was defined using a div as a container. Adding content meant creating new row markup, which requires a level of HTML knowledge.

    String premium was a mainstay of early flexible design, present in all the frequently used systems like Bootstrap and Skeleton.

    1 of 7
    2 of 7
    3 of 7
    4 of 7
    5 of 7
    6 of 7
    7 of 7

    Another difficulty arose as I moved from a design firm building websites for tiny- to medium-sized companies, to larger in-house teams where I worked across a collection of related sites. In those capacities, I began to work many more with washable parts.

    Our rely on multimedia queries resulted in parts that were tied to frequent screen sizes. This is a real problem if element libraries are intended to be reused because they cannot be used when the devices being designed for match the pattern library’s viewport sizes, thus failing to achieve the “devices that don’t already occur” goal.

    Then there’s the problem of space. Media inquiries allow components to adapt based on the viewport size, but what if I put a component into a sidebar, like in the figure below?

    Container queries: a false sun or our lord?

    Container concerns have long been touted as an improvement upon advertising questions, but at the time of writing are unsupported in most computers. Although there are JavaScript workarounds, they can lead to dependability and compatibility issues. The basic theory underlying container queries is that elements should change based on the size of their parent container and not the viewport width, as seen in the following illustrations.

    One of the biggest arguments in favor of container queries is that they help us create components or design patterns that are truly reusable because they can be picked up and placed anywhere in a layout. This is a significant step in the direction of a component-based design that can be used with any device, regardless of size.

    In other words, responsive components to replace responsive layouts.

    Container queries will enable us to design components that can be placed in a sidebar or in the main content rather than pages that respond to the browser or device size.

    My concern is that we are still using layout to determine when a design needs to adapt. This approach will always be restrictive because we will still require predetermined breakpoints. For this reason, my main question with container queries is, How would we decide when to change the CSS used by a component?

    The best place to make that choice is probably a component library that is disconnected from context and real content.

    As the diagrams below illustrate, we can use container queries to create designs for specific container widths, but what if I want to change the design based on the image size or ratio?

    The container’s dimensions shouldn’t be the design’s, but rather the image should.

    It’s hard to say for sure whether container queries will be a success story until we have solid cross-browser support for them. Responsive component libraries would undoubtedly change the way we design them, and they would increase the possibilities for reuse and scale design. But maybe we will always need to adjust these components to suit our content.

    CSS is evolving.

    Whilst the container query debate rumbles on, there have been numerous advances in CSS that change the way we think about design. The days of fixed-width elements measured in pixels and floated div elements used to cobble layouts together are long gone, consigned to history along with table layouts. Flexbox and CSS Grid have revolutionized layouts for the web. We can now create elements that wrap onto new rows when they run out of space, not when the device changes.

    .wrapper { display: grid; grid-template-columns: repeat(auto-fit, 450px); gap: 10px;}

    The repeat() function paired with auto-fit or auto-fill allows us to specify how much space each column should use while leaving it up to the browser to decide when to spill the columns onto a new line. Similar things can be achieved with Flexbox, as elements can wrap over multiple rows and “flex” to fill available space. 

    .wrapper { display: flex; flex-wrap: wrap; justify-content: space-between;}.child { flex-basis: 32%; margin-bottom: 20px;}

    The biggest benefit of all this is you don’t need to wrap elements in container rows. Without rows, content is not directly related to page markup, allowing for changes or additions to content without further development.

    The real game changer for flexible designs is CSS Subgrid, which is a significant improvement in terms of designing designs that allow for evolving content.

    Remember the days of crafting perfectly aligned interfaces, only for the customer to add an unbelievably long header almost as soon as they’re given CMS access, like the illustration below?

    Subgrid allows elements to respond to adjustments in their own content and in the content of sibling elements, helping us create designs more resilient to change.

    .wrapper { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); grid-template-rows: auto 1fr auto; gap: 10px;}.sub-grid { display: grid; grid-row: span 3; grid-template-rows: subgrid; /* sets rows to parent grid */}

    CSS Grid allows us to separate layout and content, thereby enabling flexible designs. Subgrid also enables us to create designs that can change to fit changing content. Subgrid at the time of writing is only supported in Firefox but the above code can be implemented behind an @supports feature query.

    Intrinsic layouts

    I’d be remiss not to mention intrinsic layouts, the term created by Jen Simmons to describe a mixture of new and old CSS features used to create layouts that respond to available space.

    Responsive layouts use flexible columns that use percentages. Intrinsic layouts, on the other hand, use the fr unit to create flexible columns that won’t ever shrink so much that they render the content illegible.

    frunits is a statement that says,” I want you to distribute the extra space in this way, but never make it smaller than the content that is inside.”

    —Jen Simmons,” Designing Intrinsic Layouts”

    Intrinsic layouts can also make use of a mix of fixed and flexible units, letting the content choose how much space it occupies.

    What distinguishes intrinsic design is that it not only creates designs that can withstand future devices but also helps scale designs without losing flexibility. Components and patterns can be lifted and reused without the prerequisite of having the same breakpoints or the same amount of content as in the previous implementation.

    We can now make designs that work in harmony with the content inside and the content around them. With an intrinsic approach, we can construct responsive components without depending on container queries.

    Another 2010 moment?

    This intrinsic approach should in my view be every bit as groundbreaking as responsive web design was ten years ago. It’s another instance of “everything changed,” in my opinion.

    But it doesn’t seem to be moving quite as fast, I haven’t yet had that same career-changing moment I had with responsive design, despite the widely shared and brilliant talk that brought it to my attention.

    One possible explanation for that is that I now work for a sizable company, which is quite different from the role I held as a design agency in 2010! In my agency days, every new project was a clean slate, a chance to try something new. Modern projects frequently improve existing websites using an existing codebase and use existing tools and frameworks.

    Another could be that I feel more prepared for change now. I was relatively new to design in 2010; the shift was frightening and involved a lot of learning. Also, an intrinsic approach isn’t exactly all-new, it’s about using existing skills and existing CSS knowledge in a different way.

    You can’t framework your way out of a content issue.

    Another reason for the slightly slower adoption of intrinsic design could be the lack of quick-fix framework solutions available to kick-start the change.

    Ten years ago, responsive grid systems were everywhere. With a framework like Bootstrap or Skeleton, you had a responsive design template at your fingertips.

    Because having a selection of units is a benefit when creating layout templates, intrinsic design and frameworks do not go hand in hand quite as well. The beauty of intrinsic design is combining different units and experimenting with techniques to get the best for your content.

    There are also design tools. We probably all, at some point in our careers, used Photoshop templates for desktop, tablet, and mobile devices to drop designs in and show how the site would look at all three stages.

    How do you do that right away, with each component reacting to content and layout flexing as needed? This type of design must happen in the browser, which personally I’m a big fan of.

    Another topic that has persisted for years is the debate over “whether designers should code.” When designing a digital product, we should, at the very least, design for a best- and worst-case scenario when it comes to content. It’s not ideal to do this in a graphics-based software package. In code, we can add longer sentences, more radio buttons, and extra tabs, and watch in real time as the design adapts. Does it continue to function? Is the design too reliant on the current content?

    Personally, I look forward to the day that a design component can truly be flexible and adapt to both its space and content without relying on the device or container dimensions. This is the day intrinsic design is the standard for design.

    Content first

    Content is not a fixed thing. After all, to design for the unknown or unexpected we need to account for content changes like our earlier Subgrid card example that allowed the cards to respond to adjustments to their own content and the content of sibling elements.

    Thankfully, there’s more to CSS than layout, and plenty of properties and values can help us put content first. Subgrid and pseudo-elements like ::first-line and ::first-letter help to separate design from markup so we can create designs that allow for changes.

    Instead of dated markup tricks like this —

    First line of text with different styling...

    —we can target content based on where it appears.

    .element::first-line { font-size: 1.4em;}.element::first-letter { color: red;}

    Much bigger additions to CSS include logical properties, which change the way we construct designs using logical dimensions (start and end) instead of physical ones (left and right), something CSS Grid also does with functions like min(), max(), and clamp().

    This flexibility allows for directional changes according to content, a common requirement when we need to present content in multiple languages. This was frequently accomplished with Sass mixins in the past, but it was frequently limited to a switch from a left-to-right to a right-to-left orientation.

    In the Sass version, directional variables need to be set.

    $direction: rtl;$opposite-direction: ltr;$start-direction: right;$end-direction: left;

    These variables can be used as values.

    body { direction: $direction; text-align: $start-direction;}

    —or as properties.

    margin-#{$end-direction}: 10px;padding-#{$start-direction}: 10px;

    However, with the addition of native logical properties, there is no longer a need to rely on Sass ( or a comparable tool ) and pre-planning that would have necessitated using variables throughout a codebase. These properties also start to break apart the tight coupling between a design and strict physical dimensions, creating more flexibility for changes in language and in direction.

    margin-block-end: 10px;padding-block-start: 10px;

    There are also native start and end values for properties like text-align, which means we can replace text-align: right with text-align: start.

    Like the earlier examples, these properties help to build out designs that aren’t constrained to one language, the design will reflect the content’s needs.

    Fluid and fixed

    We briefly covered the power of combining fixed widths with fluid widths with intrinsic layouts. The min() and max() functions are a similar concept, allowing you to specify a fixed value with a flexible alternative. 

    For min() this means setting a fluid minimum value and a maximum fixed value.

    .element { width: min(50%, 300px);}

    As long as the element’s width doesn’t exceed 300px, the element in the figure above will be 50 % of its container.

    For max() we can set a flexible max value and a minimum fixed value.

    .element { width: max(50%, 300px);}

    As long as the element’s width is at least 300px, it will now cover 50 % of its container. This means we can set limits but allow content to react to the available space.

    The clamp() function builds on this by allowing us to set a preferred value with a third parameter. Now we can allow the element to shrink or grow if it needs to without getting to a point where it becomes unusable.

    .element { width: clamp(300px, 50%, 600px);}

    This time, the element’s width will be 50 % ( the preferred value ) of its container, with no exceptions for 300px and 600px.

    With these techniques, we have a content-first approach to responsive design. We can’t change markup because content can’t be changed, so user modifications won’t have an impact on the design. We can start to future-proof designs by planning for unexpected changes in language or direction. Additionally, we can increase flexibility by specifying desired dimensions alongside adaptable alternatives, which will allow for more or less content to be displayed correctly.

    Situation first

    We can address device flexibility by changing our approach, which focuses on content and space rather than devices, as we’ve discussed so far. But what about that last bit of Jeffrey Zeldman’s quote,”… situations you haven’t imagined”?

    Rather than someone using a mobile phone and moving through a crowded street in glaring sunshine, it’s a very different design to be done for someone using a desktop computer. Situations and environments are hard to plan for or predict because they change as people react to their own unique challenges and tasks.

    Choice is so crucial because of this. One size never fits all, so we need to design for multiple scenarios to create equal experiences for all our users.

    Thankfully, we have many options available to you.

    Responsible design

    ” Mobile data is prohibitively expensive in some places around the world, and broadband infrastructure is sparse or absent.”

    I Used the Web for a Day on a 50 MB Budget

    Chris Ashton

    One of the biggest assumptions we make is that people interacting with our designs have a good wifi connection and a wide screen monitor. However, in the real world, our users may be commuters using smaller mobile devices that may experience drops in connectivity while traveling on trains or other modes of transportation. There is nothing more frustrating than a web page that won’t load, but there are ways we can help users use less data or deal with sporadic connectivity.

    The srcset attribute allows the browser to decide which image to serve. This means we can create smaller ‘cropped’ images to display on mobile devices in turn using less bandwidth and less data.

    Image alt text

    The preload attribute can also help us to think about how and when media is downloaded. It can be used to tell a browser about any critical assets that need to be downloaded with high priority, improving perceived performance and the user experience. 

      

    Additionally, there is native lazy loading, which indicates that only the most crucial files should be downloaded.

    …

    With srcset, preload, and lazy loading, we can start to tailor a user’s experience based on the situation they find themselves in. What none of this does, however, is allow the user themselves to decide what they want downloaded, as the decision is usually the browser’s to make. 

    So how can we put users in control?

    The return of media inquiries

    Media inquiries have always been about much more than device sizes. They allow content to adapt to different situations, with screen size being just one of them.

    We’ve long been able to check for media types like print and speech and features such as hover, resolution, and color. Because of these checks, we can offer options that work for more than one situation. It’s less about one-size-fits-all and more about providing adaptable content.

    As of this writing, the Media Queries Level 5 spec is still under development. It brings up some really intriguing queries that will eventually enable us to design for a number of other unanticipated situations.

    For example, there’s a light-level feature that allows you to modify styles if a user is in sunlight or darkness. These features, which have custom properties, make it simple to create designs or themes for particular environments.

    @media (light-level: normal) { --background-color: #fff; --text-color: #0b0c0c; }@media (light-level: dim) { --background-color: #efd226; --text-color: #0b0c0c;}

    Another key feature of the Level 5 spec is personalization. Instead of creating designs that are the same for everyone, users can choose what works for them. This is achieved by using features like prefers-reduced-data, prefers-color-scheme, and prefers-reduced-motion, the latter two of which already enjoy broad browser support. These features tap into preferences set via the operating system or browser so people don’t have to spend time making each site they visit more usable. 

    Media inquiries like this go beyond choices made by a browser to grant more control to the user.

    Expect the Unexpected

    In the end, the one thing we should always expect is for things to change. With foldable screens already available on the market, devices in particular change more quickly than we can keep up.

    We can’t design the same way we have for this ever-changing landscape, but we can design for content. We can create more robust, flexible designs that increase the longevity of our products by putting content first and allowing that content to adapt to whatever space surrounds it.

    A lot of the CSS discussed here is about moving away from layouts and putting content at the heart of design. There are still many more things we can do to adopt a more intrinsic approach, from responsive to fluid and fixed. Even better, we can test these techniques during the design phase by designing in-browser and watching how our designs adapt in real-time.

    When it comes to unexpected circumstances, we need to make sure our goods are usable when people need them, whenever and wherever that may be. We can move closer to achieving this by involving users in our design decisions, by creating choice via browsers, and by giving control to our users with user-preference-based media queries.

    A good design for the unexpected should allow for change, give choice, and give control to those we serve: our users themselves.

  • Voice Content and Usability

    Voice Content and Usability

    We’ve been conversing for many thousands of years. Whether to present information, perform transactions, or just to check in on one another, people have yammered aside, chattering and gesticulating, through spoken discussion for many generations. Only recently have we begun to write our conversations, and only recently have we outsourced them to the system, a system that exhibits a far greater affection for written communications than for the vernacular rigors of spoken speech.

    Computers have issues because conversation is more important than written language, between spoken and written. To have productive conversations with us, machines may struggle with the messiness of mortal speech: the disfluencies and pauses, the gestures and body language, and the variations in word choice and spoken dialect that is stymie even the most carefully crafted human-computer interaction. Speaking language also has the advantage of face-to-face contact, which allows us to perceive visual social cues in the human-to-human scenario.

    In contrast, written language develops its own fossil record of dated terms and phrases as we report it and keep utilization long after they are no longer needed in spoken communication ( for example, the welcome” To whom it may concern” ). Because it tends to be more consistent, smooth, and proper, written word is necessarily far easier for devices to interpret and know.

    This pleasure is not available in spoken speech. There are also linguistic cues and outspoken behaviors that mimic conversation in subtle ways: how something is said, never what. These are also visual cues that ornament conversations with emphasis and psychological context. Whether rapid-fire, low-pitched, or high-decibel, whether satirical, awkward, or groaning, our spoken speech conveys much more than the written word had ever muster. As designers and content managers, we face significant challenges when it comes to words interfaces, the machines with which we speak.

    Voice-to-text relationships

    We interact with voice interfaces for a variety of reasons, but according to Michael McTear, Zoraida Callejas, and David Griol in The Conversational Interface, those motivations by and large mirror the reasons we initiate conversations with other people, too ( ). We typically strike up a dialogue as a result:

    • we require something ( such as a transaction ),
    • we want to know something ( information of some sort ), or
    • We are sociable creatures, and we need a dialogue partner.

    These three categories, which I refer to as interpersonal, technical, and prosocial, also apply to virtually every voice interaction: a solitary conversation that begins with the voice interface’s initial greeting and ends with the user leaving the interface. Notice here that a discussion in our individual sense—a chat between people that leads to some result and lasts an arbitrary length of time—could encompass many interpersonal, technical, and interpersonal voice interactions in succession. In other words, a voice interaction is a conversation, but it may not always be one voice interaction.

    Most voice interfaces are more gimmicky than captivating in purely prosocial conversations because machines are unable to yet be truly interested in our progress and engage in the kind of glad-handing behavior that people crave. There’s also ongoing debate as to whether users actually prefer the sort of organic human conversation that begins with a prosocial voice interaction and shifts seamlessly into other types. In fact, Michael Cohen, James Giangola, and Jennifer Balogh advise sticking to user expectations by imitating how they interact with other voice interfaces rather than trying too hard to be human, which could lead to alienation of them ( ).

    A voice interface can also have two types of conversations we can have with one another that are both transactional and informational, each learning something new ( “discuss a musical” ).

    Transactional voice interactions

    When you order a Hawaiian pizza with extra pineapple, you’re typically having a conversation and a voice interaction when you’re tapping buttons on a food delivery app. The conversation quickly shifts from a brief smattering of neighborly small talk to ordering a pizza ( generously topped with pineapple, as it should be ) when we walk up to the counter and place an order.

    Alison: Hey, how’s it going?

    Burhan: Hello and welcome to Crust Deluxe! It’s chilly outside. How can I help you?

    Alison: Can I get a pizza from Hawaii with extra pineapple.

    Burhan: Yes, but what size?

    Alison: Large.

    Burhan: Anything else?

    Alison: No thanks, that’s it.

    Burhan: Something to drink?

    Alison, I’ll have a bottle of Coke.

    Burhan: You are aware of it. That’ll be$ 13.55 and about fifteen minutes.

    A service rendered or a product delivered, as each incremental disclosure in this transactional conversation reveals more and more of the desired transactional outcome. Transactional conversations exhibit a few key characteristics: they’re direct, to the point, and economical. They quickly dispense with pleasantries.

    Informational voice interactions

    While some conversations are primarily about obtaining information, some are. Though Alison might visit Crust Deluxe with the sole purpose of placing an order, she might not actually want to walk out with a pizza at all. She might be interested in trying kosher or halal dishes, trying gluten-free dishes, or something else entirely. We’re after much more than just a prosocial mini-conversation at the beginning, even though we do it once more to establish politeness.

    Alison: Hey, how’s it going?

    Burhan: Hello and welcome to Crust Deluxe! It’s chilly outside. How can I help you?

    Alison: Can I ask a few questions?

    Burhan: Of course! Continue straight ahead.

    Alison: Do you have any halal options on the menu?

    Burhan: Absolutely! On request, we can make any pie halal. We also have lots of vegetarian, ovo-lacto, and vegan options. Are you considering any additional dietary restrictions?

    Alison: What about pizzas that are gluten-free?

    Burhan: We can definitely do a gluten-free crust for you, no problem, for both our deep-dish and thin-crust pizzas. Anything else I can say to you to help?

    Alison: That’s it for now. Good to know. Thank you.

    Burhan: Anytime, come back soon!

    This is a very different dialogue. Here, the goal is to obtain a particular set of facts. Informational conversations are research expeditions to gather data, news, or facts, or they are investigative quests for the truth. Voice interactions that are informational might be more long-winded than transactional conversations by necessity. Responses are typically longer, more in-depth, and carefully communicated so that the customer is aware of the important lessons.

    Voice Interfaces

    At their core, voice interfaces employ speech to support users in reaching their goals. However, just because an interface has a voice component doesn’t mean that every user interaction with it is mediated through voice. We’re most concerned with pure voice interfaces, which depend entirely on spoken conversation and lack any visual component, making multimodal voice interfaces much more nuanced and challenging to deal with because they can lean on visual components like screens as crutches.

    Though voice interfaces have long been integral to the imagined future of humanity in science fiction, only recently have those lofty visions become fully realized in genuine voice interfaces.

    IVR ( interactive voice response ) systems

    Written conversational interfaces have been used for computing for many years, but voice interfaces first started to appear in the early 1990s with text-to-speech ( TTS ) dictation programs that recited written text aloud and speech-enabled in-car systems that gave directions to a user-provided address. With the advent of interactive voice response ( IVR ) systems, intended as an alternative to overburdened customer service representatives, we became acquainted with the first true voice interfaces that engaged in authentic conversation.

    IVR systems made it easier for businesses to cut down on call centers, but they soon gained notoriety for their clunkiness. When you call an airline or hotel company, which is a common practice in the corporate world, these systems were primarily intended as metaphorical switchboards to direct customers to a real phone agent (” Say Reservations to book a flight or check an itinerary” ), which are more likely to happen when you call one. Despite their functional issues and users ‘ frustration with their inability to speak to an actual human right away, IVR systems proliferated in the early 1990s across a variety of industries (, PDF).

    IVR systems have a reputation for having less scintillating conversations than we’re used to in real life ( or even in science fiction ), despite being extremely repetitive and monotonous conversations that typically don’t veer from a single format.

    Screen readers are the norm

    Parallel to the evolution of IVR systems was the invention of the screen reader, a tool that transcribes visual content into synthesized speech. For Blind or visually impaired website users, it’s the predominant method of interacting with text, multimedia, or form elements. Screen readers are the norm represent perhaps the closest equivalent we have today to an out-of-the-box implementation of content delivered through voice.

    Among the first screen readers known by that moniker was the Screen Reader for the BBC Micro and NEEC Portable developed by the Research Centre for the Education of the Visually Handicapped (RCEVH) at the University of Birmingham in 1986 ( ). In the same year, Jim Thatcher created the first IBM Screen Reader for text-based computers, which was later reworked for computers with graphical user interfaces ( GUIs ) ( ).

    With the rapid expansion of the web in the 1990s, there was an explosion in the demand for user-friendly tools for websites. Thanks to the introduction of semantic HTML and especially ARIA roles beginning in 2008, screen readers started facilitating speedy interactions with web pages that ostensibly allow disabled users to traverse the page as an aural and temporal space rather than a visual and physical one. Screen readers for the web, in other words, “provide mechanisms that translate visual design constructs—proximity, proportion, etc.. in A List Apart, writes Aaron Gustafson, “into useful information.” ” At least they do when documents are authored thoughtfully” ( ).

    There is a big draw for screen readers: they’re challenging to use and relentlessly verbose, despite being incredibly instructive for voice interface designers. Sometimes awkward pronouncements that name every manipulable HTML element and announce every formatting change are made because the visual structures of websites and web navigation don’t translate well to screen readers. For many screen reader users, working with web-based interfaces exacts a cognitive toll.

    Accessibility advocate and voice engineer Chris Maury examines why the screen reader experience is ill-suited for users who rely on voice in Wired:

    I hated the way Screen Readers operated from the beginning. Why are they designed the way they are? It makes no sense to present information visually before converting it to audio only after that. All the time and effort put into creating the ideal user experience for an app is wasted, or worse, it has a negative effect on blind users ‘ experience. ( ) _ _ _

    Well-designed voice interfaces can often beat lengthy screen reader monologues in terms of speeding up users ‘ movements. After all, users of the visual interface have the advantage of freely scurrying around the viewport to find information without getting too close to it. Blind users, meanwhile, are obligated to listen to every utterance synthesized into speech and therefore prize brevity and efficiency. Users with disabilities who have long had no choice but to use clumsy screen readers might find that voice interfaces, especially more contemporary voice assistants, provide a more streamlined experience.

    Voice-activated devices

    When we think of voice assistants (the subset of voice interfaces now commonplace in living rooms, smart homes, and offices), many of us immediately picture HAL from 2001: A Space Odyssey or hear Majel Barrett’s voice as the omniscient computer in Star Trek. Voice-activated devices are akin to personal concierges that can answer questions, schedule appointments, conduct searches, and perform other common day-to-day tasks. And they’re rapidly gaining more attention from accessibility advocates for their assistive potential.

    Before the earliest IVR systems found success in the enterprise, Apple published a demonstration video in 1987 depicting the Knowledge Navigator, a voice assistant that could transcribe spoken words and recognize human speech to a great degree of accuracy. Then, in 2001, Tim Berners-Lee and others created their vision for a” semantic web agent” that would carry out routine tasks like” checking calendars, making appointments, and finding locations” ( hinter paywall ). Apple’s Siri only became a reality until 2011 when it finally made voice assistants a reality for consumers.

    Thanks to the plethora of voice assistants available today, there is considerable variation in how programmable and customizable certain voice assistants are over others ( Fig 1.1 ). At one extreme, everything but vendor-provided features are locked down. For instance, when they were released, core functionality for Apple’s Siri and Microsoft’s Cortana couldn’t be expanded beyond their already-existing capabilities. There are no other means by which developers can interact with Siri at a low level, aside from predefined categories of tasks like sending messages, hailing rideshares, making restaurant reservations, and other things, which are still unavoidable today.

    At the opposite end of the spectrum, voice assistants like Amazon Alexa and Google Home offer a core foundation on which developers can build custom voice interfaces. For this reason, developers who feel stifled by the limitations of Siri and Cortana are increasingly using programmable voice assistants that are capable of customization and extensibility. Google Home enables arbitrary Google Assistant skills generation, while Amazon offers the Alexa Skills Kit, a developer framework for creating custom voice interfaces for Amazon Alexa. Today, users can choose from among thousands of custom-built skills within both the Amazon Alexa and Google Assistant ecosystems.

    As businesses like Amazon, Apple, Microsoft, and Google continue to dominate their markets, they are also selling and open-sourcing an unmatched range of tools and frameworks for designers and developers, aiming to make creating voice interfaces as simple as possible, even without the use of any code.

    Often by necessity, voice assistants like Amazon Alexa tend to be monochannel—they’re tightly coupled to a device and can’t be accessed on a computer or smartphone instead. In contrast, many development platforms, such as Google’s Dialogflow, have omnichannel capabilities that allow users to create a single conversational interface that then becomes a voice interface, textual chatbot, and IVR system upon deployment. In Chapter 4, we’ll explore some of the possible effects these variables might have on how you build out your design artifacts, but I don’t recommend any particular implementation strategies in this design-focused book.

    Voice Content

    Simply put, voice content is voice-transmitted content. Voice content must be free-flowing and organic, contextless and concise in order to preserve what makes human conversation so compelling in the first place. Everything written content is not.

    Our world is replete with voice content in various forms: screen readers reciting website content, voice assistants rattling off a weather forecast, and automated phone hotline responses governed by IVR systems. We’re most concerned with the audiobook content being delivered as a requirement rather than an option.

    Our initial foray into informational voice interfaces will likely be to provide user content, for many of us. There’s only one problem: any content we already have isn’t in any way ready for this new habitat. How can we make the content on our websites more conversational? And how do we create fresh copy that works with voice movements?

    Lately, we’ve begun slicing and dicing our content in unprecedented ways. Websites are, in many ways, massive vaults of what I call macrocontent: lengthy prose that can last for miles in a browser window while extending like microfilm viewers of newspaper archives. Microcontent was defined as permalinked pieces of content that stay legible regardless of the environment, such as email or text messages back in 2002, well before the present-day ubiquity of voice assistants.

    A day’s weather forcast]sic], the arrival and departure times for an airplane flight, an abstract from a long publication, or a single instant message can all be examples of microcontent. ( ) _ _ _

    I would update Dash’s definition of microcontent to include all instances of bite-sized content that goes beyond written communiqués. After all, today we encounter microcontent in interfaces where a small snippet of copy is displayed alone, unmoored from the browser, like a textbot confirmation of a restaurant reservation. The best way to learn how to stretch your content to the limits of its potential is through microcontent, which will inform both established and new delivery methods.

    Voice content stands out as being unique because it’s an illustration of how content is experienced in space rather than time. We can glance at a digital sign underground for an instant and know when the next train is arriving, but voice interfaces hold our attention captive for periods of time that we can’t easily escape or skip, something screen reader users are all too familiar with.

    We need to make sure that our microcontent truly performs well as voice content because it is essentially composed of isolated blobs without any connection to the channels where they will eventually end up. This means focusing on the two most crucial characteristics of robust voice content: voice content legibility and voice content discoverability.

    Our voice content’s legibility and discoverability in general both depend on how it manifests in terms of perceived space and time.

  • Sustainable Web Design, An Excerpt

    Sustainable Web Design, An Excerpt

    In the 1950s, many in the elite running community had begun to believe it wasn’t possible to run a mile in less than four minutes. Runners had been attempting it since the late 19th century and were beginning to draw the conclusion that the human body simply wasn’t built for the task. 

    But on May 6, 1956, Roger Bannister took everyone by surprise. It was a cold, wet day in Oxford, England—conditions no one expected to lend themselves to record-setting—and yet Bannister did just that, running a mile in 3:59.4 and becoming the first person in the record books to run a mile in under four minutes. 

    This shift in the benchmark had profound effects; the world now knew that the four-minute mile was possible. Bannister’s record lasted only forty-six days, when it was snatched away by Australian runner John Landy. Then a year later, three runners all beat the four-minute barrier together in the same race. Since then, over 1,400 runners have officially run a mile in under four minutes; the current record is 3:43.13, held by Moroccan athlete Hicham El Guerrouj.

    We achieve far more when we believe that something is possible, and we will believe it’s possible only when we see someone else has already done it—and as with human running speed, so it is with what we believe are the hard limits for how a website needs to perform.

    Establishing standards for a sustainable web

    In most major industries, the key metrics of environmental performance are fairly well established, such as miles per gallon for cars or energy per square meter for homes. The tools and methods for calculating those metrics are standardized as well, which keeps everyone on the same page when doing environmental assessments. In the world of websites and apps, however, we aren’t held to any particular environmental standards, and only recently have gained the tools and methods we need to even make an environmental assessment.

    The primary goal in sustainable web design is to reduce carbon emissions. However, it’s almost impossible to actually measure the amount of CO2 produced by a web product. We can’t measure the fumes coming out of the exhaust pipes on our laptops. The emissions of our websites are far away, out of sight and out of mind, coming out of power stations burning coal and gas. We have no way to trace the electrons from a website or app back to the power station where the electricity is being generated and actually know the exact amount of greenhouse gas produced. So what do we do? 

    If we can’t measure the actual carbon emissions, then we need to find what we can measure. The primary factors that could be used as indicators of carbon emissions are:

    1. Data transfer 
    2. Carbon intensity of electricity

    Let’s take a look at how we can use these metrics to quantify the energy consumption, and in turn the carbon footprint, of the websites and web apps we create.

    Data transfer

    Most researchers use kilowatt-hours per gigabyte (kWh/GB) as a metric of energy efficiency when measuring the amount of data transferred over the internet when a website or application is used. This provides a great reference point for energy consumption and carbon emissions. As a rule of thumb, the more data transferred, the more energy used in the data center, telecoms networks, and end user devices.

    For web pages, data transfer for a single visit can be most easily estimated by measuring the page weight, meaning the transfer size of the page in kilobytes the first time someone visits the page. It’s fairly easy to measure using the developer tools in any modern web browser. Often your web hosting account will include statistics for the total data transfer of any web application (Fig 2.1).

    The nice thing about page weight as a metric is that it allows us to compare the efficiency of web pages on a level playing field without confusing the issue with constantly changing traffic volumes. 

    Reducing page weight requires a large scope. By early 2020, the median page weight was 1.97 MB for setups the HTTP Archive classifies as “desktop” and 1.77 MB for “mobile,” with desktop increasing 36 percent since January 2016 and mobile page weights nearly doubling in the same period (Fig 2.2). Roughly half of this data transfer is image files, making images the single biggest source of carbon emissions on the average website. 

    History clearly shows us that our web pages can be smaller, if only we set our minds to it. While most technologies become ever more energy efficient, including the underlying technology of the web such as data centers and transmission networks, websites themselves are a technology that becomes less efficient as time goes on.

    You might be familiar with the concept of performance budgeting as a way of focusing a project team on creating faster user experiences. For example, we might specify that the website must load in a maximum of one second on a broadband connection and three seconds on a 3G connection. Much like speed limits while driving, performance budgets are upper limits rather than vague suggestions, so the goal should always be to come in under budget.

    Designing for fast performance does often lead to reduced data transfer and emissions, but it isn’t always the case. Web performance is often more about the subjective perception of load times than it is about the true efficiency of the underlying system, whereas page weight and transfer size are more objective measures and more reliable benchmarks for sustainable web design. 

    We can set a page weight budget in reference to a benchmark of industry averages, using data from sources like HTTP Archive. We can also benchmark page weight against competitors or the old version of the website we’re replacing. For example, we might set a maximum page weight budget as equal to our most efficient competitor, or we could set the benchmark lower to guarantee we are best in class. 

    If we want to take it to the next level, then we could also start looking at the transfer size of our web pages for repeat visitors. Although page weight for the first time someone visits is the easiest thing to measure, and easy to compare on a like-for-like basis, we can learn even more if we start looking at transfer size in other scenarios too. For example, visitors who load the same page multiple times will likely have a high percentage of the files cached in their browser, meaning they don’t need to transfer all of the files on subsequent visits. Likewise, a visitor who navigates to new pages on the same website will likely not need to load the full page each time, as some global assets from areas like the header and footer may already be cached in their browser. Measuring transfer size at this next level of detail can help us learn even more about how we can optimize efficiency for users who regularly visit our pages, and enable us to set page weight budgets for additional scenarios beyond the first visit.

    Page weight budgets are easy to track throughout a design and development process. Although they don’t actually tell us carbon emission and energy consumption analytics directly, they give us a clear indication of efficiency relative to other websites. And as transfer size is an effective analog for energy consumption, we can actually use it to estimate energy consumption too.

    In summary, reduced data transfer translates to energy efficiency, a key factor to reducing carbon emissions of web products. The more efficient our products, the less electricity they use, and the less fossil fuels need to be burned to produce the electricity to power them. But as we’ll see next, since all web products demand some power, it’s important to consider the source of that electricity, too.

    Carbon intensity of electricity

    Regardless of energy efficiency, the level of pollution caused by digital products depends on the carbon intensity of the energy being used to power them. Carbon intensity is a term used to define the grams of CO2 produced for every kilowatt-hour of electricity (gCO2/kWh). This varies widely, with renewable energy sources and nuclear having an extremely low carbon intensity of less than 10 gCO2/kWh (even when factoring in their construction); whereas fossil fuels have very high carbon intensity of approximately 200–400 gCO2/kWh. 

    Most electricity comes from national or state grids, where energy from a variety of different sources is mixed together with varying levels of carbon intensity. The distributed nature of the internet means that a single user of a website or app might be using energy from multiple different grids simultaneously; a website user in Paris uses electricity from the French national grid to power their home internet and devices, but the website’s data center could be in Dallas, USA, pulling electricity from the Texas grid, while the telecoms networks use energy from everywhere between Dallas and Paris.

    We don’t have control over the full energy supply of web services, but we do have some control over where we host our projects. With a data center using a significant proportion of the energy of any website, locating the data center in an area with low carbon energy will tangibly reduce its carbon emissions. Danish startup Tomorrow reports and maps this user-contributed data, and a glance at their map shows how, for example, choosing a data center in France will have significantly lower carbon emissions than a data center in the Netherlands (Fig 2.3).

    That said, we don’t want to locate our servers too far away from our users; it takes energy to transmit data through the telecom’s networks, and the further the data travels, the more energy is consumed. Just like food miles, we can think of the distance from the data center to the website’s core user base as “megabyte miles”—and we want it to be as small as possible.

    Using the distance itself as a benchmark, we can use website analytics to identify the country, state, or even city where our core user group is located and measure the distance from that location to the data center used by our hosting company. This will be a somewhat fuzzy metric as we don’t know the precise center of mass of our users or the exact location of a data center, but we can at least get a rough idea. 

    For example, if a website is hosted in London but the primary user base is on the West Coast of the USA, then we could look up the distance from London to San Francisco, which is 5,300 miles. That’s a long way! We can see that hosting it somewhere in North America, ideally on the West Coast, would significantly reduce the distance and thus the energy used to transmit the data. In addition, locating our servers closer to our visitors helps reduce latency and delivers better user experience, so it’s a win-win.

    Converting it back to carbon emissions

    If we combine carbon intensity with a calculation for energy consumption, we can calculate the carbon emissions of our websites and apps. A tool my team created does this by measuring the data transfer over the wire when loading a web page, calculating the amount of electricity associated, and then converting that into a figure for CO2 (Fig 2.4). It also factors in whether or not the web hosting is powered by renewable energy.

    If you want to take it to the next level and tailor the data more accurately to the unique aspects of your project, the Energy and Emissions Worksheet accompanying this book shows you how.

    With the ability to calculate carbon emissions for our projects, we could actually take a page weight budget one step further and set carbon budgets as well. CO2 is not a metric commonly used in web projects; we’re more familiar with kilobytes and megabytes, and can fairly easily look at design options and files to assess how big they are. Translating that into carbon adds a layer of abstraction that isn’t as intuitive—but carbon budgets do focus our minds on the primary thing we’re trying to reduce, and support the core objective of sustainable web design: reducing carbon emissions.

    Browser Energy

    Data transfer might be the simplest and most complete analog for energy consumption in our digital projects, but by giving us one number to represent the energy used in the data center, the telecoms networks, and the end user’s devices, it can’t offer us insights into the efficiency in any specific part of the system.

    One part of the system we can look at in more detail is the energy used by end users’ devices. As front-end web technologies become more advanced, the computational load is increasingly moving from the data center to users’ devices, whether they be phones, tablets, laptops, desktops, or even smart TVs. Modern web browsers allow us to implement more complex styling and animation on the fly using CSS and JavaScript. Furthermore, JavaScript libraries such as Angular and React allow us to create applications where the “thinking” work is done partly or entirely in the browser. 

    All of these advances are exciting and open up new possibilities for what the web can do to serve society and create positive experiences. However, more computation in the user’s web browser means more energy used by their devices. This has implications not just environmentally, but also for user experience and inclusivity. Applications that put a heavy processing load on the user’s device can inadvertently exclude users with older, slower devices and cause batteries on phones and laptops to drain faster. Furthermore, if we build web applications that require the user to have up-to-date, powerful devices, people throw away old devices much more frequently. This isn’t just bad for the environment, but it puts a disproportionate financial burden on the poorest in society.

    In part because the tools are limited, and partly because there are so many different models of devices, it’s difficult to measure website energy consumption on end users’ devices. One tool we do currently have is the Energy Impact monitor inside the developer console of the Safari browser (Fig 2.5).

    You know when you load a website and your computer’s cooling fans start spinning so frantically you think it might actually take off? That’s essentially what this tool is measuring. 

    It shows us the percentage of CPU used and the duration of CPU usage when loading the web page, and uses these figures to generate an energy impact rating. It doesn’t give us precise data for the amount of electricity used in kilowatts, but the information it does provide can be used to benchmark how efficiently your websites use energy and set targets for improvement.

  • Design for Safety, An Excerpt

    Design for Safety, An Excerpt

    Antiracist economist Kim Crayton says that “intention without strategy is chaos.” We’ve discussed how our biases, assumptions, and inattention toward marginalized and vulnerable groups lead to dangerous and unethical tech—but what, specifically, do we need to do to fix it? The intention to make our tech safer is not enough; we need a strategy.

    This chapter will equip you with that plan of action. It covers how to integrate safety principles into your design work in order to create tech that’s safe, how to convince your stakeholders that this work is necessary, and how to respond to the critique that what we actually need is more diversity. (Spoiler: we do, but diversity alone is not the antidote to fixing unethical, unsafe tech.)

    The process for inclusive safety

    When you are designing for safety, your goals are to:

    • identify ways your product can be used for abuse,
    • design ways to prevent the abuse, and
    • provide support for vulnerable users to reclaim power and control.

    The Process for Inclusive Safety is a tool to help you reach those goals (Fig 5.1). It’s a methodology I created in 2018 to capture the various techniques I was using when designing products with safety in mind. Whether you are creating an entirely new product or adding to an existing feature, the Process can help you make your product safe and inclusive. The Process includes five general areas of action:

    • Conducting research
    • Creating archetypes
    • Brainstorming problems
    • Designing solutions
    • Testing for safety

    The Process is meant to be flexible—it won’t make sense for teams to implement every step in some situations. Use the parts that are relevant to your unique work and context; this is meant to be something you can insert into your existing design practice.

    And once you use it, if you have an idea for making it better or simply want to provide context of how it helped your team, please get in touch with me. It’s a living document that I hope will continue to be a useful and realistic tool that technologists can use in their day-to-day work.

    If you’re working on a product specifically for a vulnerable group or survivors of some form of trauma, such as an app for survivors of domestic violence, sexual assault, or drug addiction, be sure to read Chapter 7, which covers that situation explicitly and should be handled a bit differently. The guidelines here are for prioritizing safety when designing a more general product that will have a wide user base (which, we already know from statistics, will include certain groups that should be protected from harm). Chapter 7 is focused on products that are specifically for vulnerable groups and people who have experienced trauma.

    Step 1: Conduct research

    Design research should include a broad analysis of how your tech might be weaponized for abuse as well as specific insights into the experiences of survivors and perpetrators of that type of abuse. At this stage, you and your team will investigate issues of interpersonal harm and abuse, and explore any other safety, security, or inclusivity issues that might be a concern for your product or service, like data security, racist algorithms, and harassment.

    Broad research

    Your project should begin with broad, general research into similar products and issues around safety and ethical concerns that have already been reported. For example, a team building a smart home device would do well to understand the multitude of ways that existing smart home devices have been used as tools of abuse. If your product will involve AI, seek to understand the potentials for racism and other issues that have been reported in existing AI products. Nearly all types of technology have some kind of potential or actual harm that’s been reported on in the news or written about by academics. Google Scholar is a useful tool for finding these studies.

    Specific research: Survivors

    When possible and appropriate, include direct research (surveys and interviews) with people who are experts in the forms of harm you have uncovered. Ideally, you’ll want to interview advocates working in the space of your research first so that you have a more solid understanding of the topic and are better equipped to not retraumatize survivors. If you’ve uncovered possible domestic violence issues, for example, the experts you’ll want to speak with are survivors themselves, as well as workers at domestic violence hotlines, shelters, other related nonprofits, and lawyers.

    Especially when interviewing survivors of any kind of trauma, it is important to pay people for their knowledge and lived experiences. Don’t ask survivors to share their trauma for free, as this is exploitative. While some survivors may not want to be paid, you should always make the offer in the initial ask. An alternative to payment is to donate to an organization working against the type of violence that the interviewee experienced. We’ll talk more about how to appropriately interview survivors in Chapter 6.

    Specific research: Abusers

    It’s unlikely that teams aiming to design for safety will be able to interview self-proclaimed abusers or people who have broken laws around things like hacking. Don’t make this a goal; rather, try to get at this angle in your general research. Aim to understand how abusers or bad actors weaponize technology to use against others, how they cover their tracks, and how they explain or rationalize the abuse.

    Step 2: Create archetypes

    Once you’ve finished conducting your research, use your insights to create abuser and survivor archetypes. Archetypes are not personas, as they’re not based on real people that you interviewed and surveyed. Instead, they’re based on your research into likely safety issues, much like when we design for accessibility: we don’t need to have found a group of blind or low-vision users in our interview pool to create a design that’s inclusive of them. Instead, we base those designs on existing research into what this group needs. Personas typically represent real users and include many details, while archetypes are broader and can be more generalized.

    The abuser archetype is someone who will look at the product as a tool to perform harm (Fig 5.2). They may be trying to harm someone they don’t know through surveillance or anonymous harassment, or they may be trying to control, monitor, abuse, or torment someone they know personally.

    The survivor archetype is someone who is being abused with the product. There are various situations to consider in terms of the archetype’s understanding of the abuse and how to put an end to it: Do they need proof of abuse they already suspect is happening, or are they unaware they’ve been targeted in the first place and need to be alerted (Fig 5.3)?

    You may want to make multiple survivor archetypes to capture a range of different experiences. They may know that the abuse is happening but not be able to stop it, like when an abuser locks them out of IoT devices; or they know it’s happening but don’t know how, such as when a stalker keeps figuring out their location (Fig 5.4). Include as many of these scenarios as you need to in your survivor archetype. You’ll use these later on when you design solutions to help your survivor archetypes achieve their goals of preventing and ending abuse.

    It may be useful for you to create persona-like artifacts for your archetypes, such as the three examples shown. Instead of focusing on the demographic information we often see in personas, focus on their goals. The goals of the abuser will be to carry out the specific abuse you’ve identified, while the goals of the survivor will be to prevent abuse, understand that abuse is happening, make ongoing abuse stop, or regain control over the technology that’s being used for abuse. Later, you’ll brainstorm how to prevent the abuser’s goals and assist the survivor’s goals.

    And while the “abuser/survivor” model fits most cases, it doesn’t fit all, so modify it as you need to. For example, if you uncovered an issue with security, such as the ability for someone to hack into a home camera system and talk to children, the malicious hacker would get the abuser archetype and the child’s parents would get survivor archetype.

    Step 3: Brainstorm problems

    After creating archetypes, brainstorm novel abuse cases and safety issues. “Novel” means things not found in your research; you’re trying to identify completely new safety issues that are unique to your product or service. The goal with this step is to exhaust every effort of identifying harms your product could cause. You aren’t worrying about how to prevent the harm yet—that comes in the next step.

    How could your product be used for any kind of abuse, outside of what you’ve already identified in your research? I recommend setting aside at least a few hours with your team for this process.

    If you’re looking for somewhere to start, try doing a Black Mirror brainstorm. This exercise is based on the show Black Mirror, which features stories about the dark possibilities of technology. Try to figure out how your product would be used in an episode of the show—the most wild, awful, out-of-control ways it could be used for harm. When I’ve led Black Mirror brainstorms, participants usually end up having a good deal of fun (which I think is great—it’s okay to have fun when designing for safety!). I recommend time-boxing a Black Mirror brainstorm to half an hour, and then dialing it back and using the rest of the time thinking of more realistic forms of harm.

    After you’ve identified as many opportunities for abuse as possible, you may still not feel confident that you’ve uncovered every potential form of harm. A healthy amount of anxiety is normal when you’re doing this kind of work. It’s common for teams designing for safety to worry, “Have we really identified every possible harm? What if we’ve missed something?” If you’ve spent at least four hours coming up with ways your product could be used for harm and have run out of ideas, go to the next step.

    It’s impossible to guarantee you’ve thought of everything; instead of aiming for 100 percent assurance, recognize that you’ve taken this time and have done the best you can, and commit to continuing to prioritize safety in the future. Once your product is released, your users may identify new issues that you missed; aim to receive that feedback graciously and course-correct quickly.

    Step 4: Design solutions

    At this point, you should have a list of ways your product can be used for harm as well as survivor and abuser archetypes describing opposing user goals. The next step is to identify ways to design against the identified abuser’s goals and to support the survivor’s goals. This step is a good one to insert alongside existing parts of your design process where you’re proposing solutions for the various problems your research uncovered.

    Some questions to ask yourself to help prevent harm and support your archetypes include:

    • Can you design your product in such a way that the identified harm cannot happen in the first place? If not, what roadblocks can you put up to prevent the harm from happening?
    • How can you make the victim aware that abuse is happening through your product?
    • How can you help the victim understand what they need to do to make the problem stop?
    • Can you identify any types of user activity that would indicate some form of harm or abuse? Could your product help the user access support?

    In some products, it’s possible to proactively recognize that harm is happening. For example, a pregnancy app might be modified to allow the user to report that they were the victim of an assault, which could trigger an offer to receive resources for local and national organizations. This sort of proactiveness is not always possible, but it’s worth taking a half hour to discuss if any type of user activity would indicate some form of harm or abuse, and how your product could assist the user in receiving help in a safe manner.

    That said, use caution: you don’t want to do anything that could put a user in harm’s way if their devices are being monitored. If you do offer some kind of proactive help, always make it voluntary, and think through other safety issues, such as the need to keep the user in-app in case an abuser is checking their search history. We’ll walk through a good example of this in the next chapter.

    Step 5: Test for safety

    The final step is to test your prototypes from the point of view of your archetypes: the person who wants to weaponize the product for harm and the victim of the harm who needs to regain control over the technology. Just like any other kind of product testing, at this point you’ll aim to rigorously test out your safety solutions so that you can identify gaps and correct them, validate that your designs will help keep your users safe, and feel more confident releasing your product into the world.

    Ideally, safety testing happens along with usability testing. If you’re at a company that doesn’t do usability testing, you might be able to use safety testing to cleverly perform both; a user who goes through your design attempting to weaponize the product against someone else can also be encouraged to point out interactions or other elements of the design that don’t make sense to them.

    You’ll want to conduct safety testing on either your final prototype or the actual product if it’s already been released. There’s nothing wrong with testing an existing product that wasn’t designed with safety goals in mind from the onset—“retrofitting” it for safety is a good thing to do.

    Remember that testing for safety involves testing from the perspective of both an abuser and a survivor, though it may not make sense for you to do both. Alternatively, if you made multiple survivor archetypes to capture multiple scenarios, you’ll want to test from the perspective of each one.

    As with other sorts of usability testing, you as the designer are most likely too close to the product and its design by this point to be a valuable tester; you know the product too well. Instead of doing it yourself, set up testing as you would with other usability testing: find someone who is not familiar with the product and its design, set the scene, give them a task, encourage them to think out loud, and observe how they attempt to complete it.

    Abuser testing

    The goal of this testing is to understand how easy it is for someone to weaponize your product for harm. Unlike with usability testing, you want to make it impossible, or at least difficult, for them to achieve their goal. Reference the goals in the abuser archetype you created earlier, and use your product in an attempt to achieve them.

    For example, for a fitness app with GPS-enabled location features, we can imagine that the abuser archetype would have the goal of figuring out where his ex-girlfriend now lives. With this goal in mind, you’d try everything possible to figure out the location of another user who has their privacy settings enabled. You might try to see her running routes, view any available information on her profile, view anything available about her location (which she has set to private), and investigate the profiles of any other users somehow connected with her account, such as her followers.

    If by the end of this you’ve managed to uncover some of her location data, despite her having set her profile to private, you know now that your product enables stalking. Your next step is to go back to step 4 and figure out how to prevent this from happening. You may need to repeat the process of designing solutions and testing them more than once.

    Survivor testing

    Survivor testing involves identifying how to give information and power to the survivor. It might not always make sense based on the product or context. Thwarting the attempt of an abuser archetype to stalk someone also satisfies the goal of the survivor archetype to not be stalked, so separate testing wouldn’t be needed from the survivor’s perspective.

    However, there are cases where it makes sense. For example, for a smart thermostat, a survivor archetype’s goals would be to understand who or what is making the temperature change when they aren’t doing it themselves. You could test this by looking for the thermostat’s history log and checking for usernames, actions, and times; if you couldn’t find that information, you would have more work to do in step 4.

    Another goal might be regaining control of the thermostat once the survivor realizes the abuser is remotely changing its settings. Your test would involve attempting to figure out how to do this: are there instructions that explain how to remove another user and change the password, and are they easy to find? This might again reveal that more work is needed to make it clear to the user how they can regain control of the device or account.

    Stress testing

    To make your product more inclusive and compassionate, consider adding stress testing. This concept comes from Design for Real Life by Eric Meyer and Sara Wachter-Boettcher. The authors pointed out that personas typically center people who are having a good day—but real users are often anxious, stressed out, having a bad day, or even experiencing tragedy. These are called “stress cases,” and testing your products for users in stress-case situations can help you identify places where your design lacks compassion. Design for Real Life has more details about what it looks like to incorporate stress cases into your design as well as many other great tactics for compassionate design.

  • A Content Model Is Not a Design System

    A Content Model Is Not a Design System

    Do you remember when having a great website was enough? Now, people are getting answers from Siri, Google search snippets, and mobile apps, not just our websites. Forward-thinking organizations have adopted an omnichannel content strategy, whose mission is to reach audiences across multiple digital channels and platforms.

    But how do you set up a content management system (CMS) to reach your audience now and in the future? I learned the hard way that creating a content model—a definition of content types, attributes, and relationships that let people and systems understand content—with my more familiar design-system thinking would capsize my customer’s omnichannel content strategy. You can avoid that outcome by creating content models that are semantic and that also connect related content. 

    I recently had the opportunity to lead the CMS implementation for a Fortune 500 company. The client was excited by the benefits of an omnichannel content strategy, including content reuse, multichannel marketing, and robot delivery—designing content to be intelligible to bots, Google knowledge panels, snippets, and voice user interfaces. 

    A content model is a critical foundation for an omnichannel content strategy, and for our content to be understood by multiple systems, the model needed semantic types—types named according to their meaning instead of their presentation. Our goal was to let authors create content and reuse it wherever it was relevant. But as the project proceeded, I realized that supporting content reuse at the scale that my customer needed required the whole team to recognize a new pattern.

    Despite our best intentions, we kept drawing from what we were more familiar with: design systems. Unlike web-focused content strategies, an omnichannel content strategy can’t rely on WYSIWYG tools for design and layout. Our tendency to approach the content model with our familiar design-system thinking constantly led us to veer away from one of the primary purposes of a content model: delivering content to audiences on multiple marketing channels.

    Two essential principles for an effective content model

    We needed to help our designers, developers, and stakeholders understand that we were doing something very different from their prior web projects, where it was natural for everyone to think about content as visual building blocks fitting into layouts. The previous approach was not only more familiar but also more intuitive—at least at first—because it made the designs feel more tangible. We discovered two principles that helped the team understand how a content model differs from the design systems that we were used to:

    1. Content models must define semantics instead of layout.
    2. And content models should connect content that belongs together.

    Semantic content models

    A semantic content model uses type and attribute names that reflect the meaning of the content, not how it will be displayed. For example, in a nonsemantic model, teams might create types like teasers, media blocks, and cards. Although these types might make it easy to lay out content, they don’t help delivery channels understand the content’s meaning, which in turn would have opened the door to the content being presented in each marketing channel. In contrast, a semantic content model uses type names like product, service, and testimonial so that each delivery channel can understand the content and use it as it sees fit. 

    When you’re creating a semantic content model, a great place to start is to look over the types and properties defined by Schema.org, a community-driven resource for type definitions that are intelligible to platforms like Google search.

    A semantic content model has several benefits:

    • Even if your team doesn’t care about omnichannel content, a semantic content model decouples content from its presentation so that teams can evolve the website’s design without needing to refactor its content. In this way, content can withstand disruptive website redesigns. 
    • A semantic content model also provides a competitive edge. By adding structured data based on Schema.org’s types and properties, a website can provide hints to help Google understand the content, display it in search snippets or knowledge panels, and use it to answer voice-interface user questions. Potential visitors could discover your content without ever setting foot in your website.
    • Beyond those practical benefits, you’ll also need a semantic content model if you want to deliver omnichannel content. To use the same content in multiple marketing channels, delivery channels need to be able to understand it. For example, if your content model were to provide a list of questions and answers, it could easily be rendered on a frequently asked questions (FAQ) page, but it could also be used in a voice interface or by a bot that answers common questions.

    For example, using a semantic content model for articles, events, people, and locations lets A List Apart provide cleanly structured data for search engines so that users can read the content on the website, in Google knowledge panels, and even with hypothetical voice interfaces in the future.

    Content models that connect

    After struggling to describe what makes a good content model, I’ve come to realize that the best models are those that are semantic and that also connect related content components (such as a FAQ item’s question and answer pair), instead of slicing up related content across disparate content components. A good content model connects content that should remain together so that multiple delivery channels can use it without needing to first put those pieces back together.

    Think about writing an article or essay. An article’s meaning and usefulness depends upon its parts being kept together. Would one of the headings or paragraphs be meaningful on their own without the context of the full article? On our project, our familiar design-system thinking often led us to want to create content models that would slice content into disparate chunks to fit the web-centric layout. This had a similar impact to an article that were to have been separated from its headline. Because we were slicing content into standalone pieces based on layout, content that belonged together became difficult to manage and nearly impossible for multiple delivery channels to understand.

    To illustrate, let’s look at how connecting related content applies in a real-world scenario. The design team for our customer presented a complex layout for a software product page that included multiple tabs and sections. Our instincts were to follow suit with the content model. Shouldn’t we make it as easy and as flexible as possible to add any number of tabs in the future?

    Because our design-system instincts were so familiar, it felt like we had needed a content type called “tab section” so that multiple tab sections could be added to a page. Each tab section would display various types of content. One tab might provide the software’s overview or its specifications. Another tab might provide a list of resources. 

    Our inclination to break down the content model into “tab section” pieces would have led to an unnecessarily complex model and a cumbersome editing experience, and it would have also created content that couldn’t have been understood by additional delivery channels. For example, how would another system have been able to tell which “tab section” referred to a product’s specifications or its resource list—would that other system have to have resorted to counting tab sections and content blocks? This would have prevented the tabs from ever being reordered, and it would have required adding logic in every other delivery channel to interpret the design system’s layout. Furthermore, if the customer were to have no longer wanted to display this content in a tab layout, it would have been tedious to migrate to a new content model to reflect the new page redesign.

    We had a breakthrough when we discovered that our customer had a specific purpose in mind for each tab: it would reveal specific information such as the software product’s overview, specifications, related resources, and pricing. Once implementation began, our inclination to focus on what’s visual and familiar had obscured the intent of the designs. With a little digging, it didn’t take long to realize that the concept of tabs wasn’t relevant to the content model. The meaning of the content that they were planning to display in the tabs was what mattered.

    In fact, the customer could have decided to display this content in a different way—without tabs—somewhere else. This realization prompted us to define content types for the software product based on the meaningful attributes that the customer had wanted to render on the web. There were obvious semantic attributes like name and description as well as rich attributes like screenshots, software requirements, and feature lists. The software’s product information stayed together because it wasn’t sliced across separate components like “tab sections” that were derived from the content’s presentation. Any delivery channel—including future ones—could understand and present this content.

    Conclusion

    In this omnichannel marketing project, we discovered that the best way to keep our content model on track was to ensure that it was semantic (with type and attribute names that reflected the meaning of the content) and that it kept content together that belonged together (instead of fragmenting it). These two concepts curtailed our temptation to shape the content model based on the design. So if you’re working on a content model to support an omnichannel content strategy—or even if you just want to make sure that Google and other interfaces understand your content—remember:

    • A design system isn’t a content model. Team members may be tempted to conflate them and to make your content model mirror your design system, so you should protect the semantic value and contextual structure of the content strategy during the entire implementation process. This will let every delivery channel consume the content without needing a magic decoder ring.
    • If your team is struggling to make this transition, you can still reap some of the benefits by using Schema.org–based structured data in your website. Even if additional delivery channels aren’t on the immediate horizon, the benefit to search engine optimization is a compelling reason on its own.
    • Additionally, remind the team that decoupling the content model from the design will let them update the designs more easily because they won’t be held back by the cost of content migrations. They’ll be able to create new designs without the obstacle of compatibility between the design and the content, and ​they’ll be ready for the next big thing. 

    By rigorously advocating for these principles, you’ll help your team treat content the way that it deserves—as the most critical asset in your user experience and the best way to connect with your audience.

  • How to Sell UX Research with Two Simple Questions

    How to Sell UX Research with Two Simple Questions

    Do you find yourself designing screens with only a vague idea of how the things on the screen relate to the things elsewhere in the system? Do you leave stakeholder meetings with unclear directives that often seem to contradict previous conversations? You know a better understanding of user needs would help the team get clear on what you are actually trying to accomplish, but time and budget for research is tight. When it comes to asking for more direct contact with your users, you might feel like poor Oliver Twist, timidly asking, “Please, sir, I want some more.” 

    Here’s the trick. You need to get stakeholders themselves to identify high-risk assumptions and hidden complexity, so that they become just as motivated as you to get answers from users. Basically, you need to make them think it’s their idea. 

    In this article, I’ll show you how to collaboratively expose misalignment and gaps in the team’s shared understanding by bringing the team together around two simple questions:

    1. What are the objects?
    2. What are the relationships between those objects?

    A gauntlet between research and screen design

    These two questions align to the first two steps of the ORCA process, which might become your new best friend when it comes to reducing guesswork. Wait, what’s ORCA?! Glad you asked.

    ORCA stands for Objects, Relationships, CTAs, and Attributes, and it outlines a process for creating solid object-oriented user experiences. Object-oriented UX is my design philosophy. ORCA is an iterative methodology for synthesizing user research into an elegant structural foundation to support screen and interaction design. OOUX and ORCA have made my work as a UX designer more collaborative, effective, efficient, fun, strategic, and meaningful.

    The ORCA process has four iterative rounds and a whopping fifteen steps. In each round we get more clarity on our Os, Rs, Cs, and As.

    I sometimes say that ORCA is a “garbage in, garbage out” process. To ensure that the testable prototype produced in the final round actually tests well, the process needs to be fed by good research. But if you don’t have a ton of research, the beginning of the ORCA process serves another purpose: it helps you sell the need for research.

    In other words, the ORCA process serves as a gauntlet between research and design. With good research, you can gracefully ride the killer whale from research into design. But without good research, the process effectively spits you back into research and with a cache of specific open questions.

    Getting in the same curiosity-boat

    What gets us into trouble is not what we don’t know. It’s what we know for sure that just ain’t so.

    Mark Twain

    The first two steps of the ORCA process—Object Discovery and Relationship Discovery—shine a spotlight on the dark, dusty corners of your team’s misalignments and any inherent complexity that’s been swept under the rug. It begins to expose what this classic comic so beautifully illustrates:

    This is one reason why so many UX designers are frustrated in their job and why many projects fail. And this is also why we often can’t sell research: every decision-maker is confident in their own mental picture. 

    Once we expose hidden fuzzy patches in each picture and the differences between them all, the case for user research makes itself.

    But how we do this is important. However much we might want to, we can’t just tell everyone, “YOU ARE WRONG!” Instead, we need to facilitate and guide our team members to self-identify holes in their picture. When stakeholders take ownership of assumptions and gaps in understanding, BAM! Suddenly, UX research is not such a hard sell, and everyone is aboard the same curiosity-boat.

    Say your users are doctors. And you have no idea how doctors use the system you are tasked with redesigning.

    You might try to sell research by honestly saying: “We need to understand doctors better! What are their pain points? How do they use the current app?” But here’s the problem with that. Those questions are vague, and the answers to them don’t feel acutely actionable.

    Instead, you want your stakeholders themselves to ask super-specific questions. This is more like the kind of conversation you need to facilitate. Let’s listen in:

    “Wait a sec, how often do doctors share patients? Does a patient in this system have primary and secondary doctors?”

    “Can a patient even have more than one primary doctor?”

    “Is it a ‘primary doctor’ or just a ‘primary caregiver’… Can’t that role be a nurse practitioner?”

    “No, caregivers are something else… That’s the patient’s family contacts, right?”

    “So are caregivers in scope for this redesign?”

    “Yeah, because if a caregiver is present at an appointment, the doctor needs to note that. Like, tag the caregiver on the note… Or on the appointment?”

    Now we are getting somewhere. Do you see how powerful it can be getting stakeholders to debate these questions themselves? The diabolical goal here is to shake their confidence—gently and diplomatically.

    When these kinds of questions bubble up collaboratively and come directly from the mouths of your stakeholders and decision-makers, suddenly, designing screens without knowing the answers to these questions seems incredibly risky, even silly.

    If we create software without understanding the real-world information environment of our users, we will likely create software that does not align to the real-world information environment of our users. And this will, hands down, result in a more confusing, more complex, and less intuitive software product.

    The two questions

    But how do we get to these kinds of meaty questions diplomatically, efficiently, collaboratively, and reliably

    We can do this by starting with those two big questions that align to the first two steps of the ORCA process:

    1. What are the objects?
    2. What are the relationships between those objects?

    In practice, getting to these answers is easier said than done. I’m going to show you how these two simple questions can provide the outline for an Object Definition Workshop. During this workshop, these “seed” questions will blossom into dozens of specific questions and shine a spotlight on the need for more user research.

    Prep work: Noun foraging

    In the next section, I’ll show you how to run an Object Definition Workshop with your stakeholders (and entire cross-functional team, hopefully). But first, you need to do some prep work.

    Basically, look for nouns that are particular to the business or industry of your project, and do it across at least a few sources. I call this noun foraging.

    Here are just a few great noun foraging sources:

    • the product’s marketing site
    • the product’s competitors’ marketing sites (competitive analysis, anyone?)
    • the existing product (look at labels!)
    • user interview transcripts
    • notes from stakeholder interviews or vision docs from stakeholders

    Put your detective hat on, my dear Watson. Get resourceful and leverage what you have. If all you have is a marketing website, some screenshots of the existing legacy system, and access to customer service chat logs, then use those.

    As you peruse these sources, watch for the nouns that are used over and over again, and start listing them (preferably on blue sticky notes if you’ll be creating an object map later!).

    You’ll want to focus on nouns that might represent objects in your system. If you are having trouble determining if a noun might be object-worthy, remember the acronym SIP and test for:

    1. Structure
    2. Instances
    3. Purpose

    Think of a library app, for example. Is “book” an object?

    Structure: can you think of a few attributes for this potential object? Title, author, publish date… Yep, it has structure. Check!

    Instance: what are some examples of this potential “book” object? Can you name a few? The Alchemist, Ready Player One, Everybody Poops… OK, check!

    Purpose: why is this object important to the users and business? Well, “book” is what our library client is providing to people and books are why people come to the library… Check, check, check!

    As you are noun foraging, focus on capturing the nouns that have SIP. Avoid capturing components like dropdowns, checkboxes, and calendar pickers—your UX system is not your design system! Components are just the packaging for objects—they are a means to an end. No one is coming to your digital place to play with your dropdown! They are coming for the VALUABLE THINGS and what they can do with them. Those things, or objects, are what we are trying to identify.

    Let’s say we work for a startup disrupting the email experience. This is how I’d start my noun foraging.

    First I’d look at my own email client, which happens to be Gmail. I’d then look at Outlook and the new HEY email. I’d look at Yahoo, Hotmail…I’d even look at Slack and Basecamp and other so-called “email replacers.” I’d read some articles, reviews, and forum threads where people are complaining about email. While doing all this, I would look for and write down the nouns.

    (Before moving on, feel free to go noun foraging for this hypothetical product, too, and then scroll down to see how much our lists match up. Just don’t get lost in your own emails! Come back to me!)

    Drumroll, please…

    Here are a few nouns I came up with during my noun foraging:

    • email message
    • thread
    • contact
    • client
    • rule/automation
    • email address that is not a contact?
    • contact groups
    • attachment
    • Google doc file / other integrated file
    • newsletter? (HEY treats this differently)
    • saved responses and templates

    Scan your list of nouns and pick out words that you are completely clueless about. In our email example, it might be client or automation. Do as much homework as you can before your session with stakeholders: google what’s googleable. But other terms might be so specific to the product or domain that you need to have a conversation about them.

    Aside: here are some real nouns foraged during my own past project work that I needed my stakeholders to help me understand:

    • Record Locator
    • Incentive Home
    • Augmented Line Item
    • Curriculum-Based Measurement Probe

    This is really all you need to prepare for the workshop session: a list of nouns that represent potential objects and a short list of nouns that need to be defined further.

    Facilitate an Object Definition Workshop

    You could actually start your workshop with noun foraging—this activity can be done collaboratively. If you have five people in the room, pick five sources, assign one to every person, and give everyone ten minutes to find the objects within their source. When the time’s up, come together and find the overlap. Affinity mapping is your friend here!

    If your team is short on time and might be reluctant to do this kind of grunt work (which is usually the case) do your own noun foraging beforehand, but be prepared to show your work. I love presenting screenshots of documents and screens with all the nouns already highlighted. Bring the artifacts of your process, and start the workshop with a five-minute overview of your noun foraging journey.

    HOT TIP: before jumping into the workshop, frame the conversation as a requirements-gathering session to help you better understand the scope and details of the system. You don’t need to let them know that you’re looking for gaps in the team’s understanding so that you can prove the need for more user research—that will be our little secret. Instead, go into the session optimistically, as if your knowledgeable stakeholders and PMs and biz folks already have all the answers. 

    Then, let the question whack-a-mole commence.

    1. What is this thing?

    Want to have some real fun? At the beginning of your session, ask stakeholders to privately write definitions for the handful of obscure nouns you might be uncertain about. Then, have everyone show their cards at the same time and see if you get different definitions (you will). This is gold for exposing misalignment and starting great conversations.

    As your discussion unfolds, capture any agreed-upon definitions. And when uncertainty emerges, quietly (but visibly) start an “open questions” parking lot. 😉

    After definitions solidify, here’s a great follow-up:

    2. Do our users know what these things are? What do users call this thing?

    Stakeholder 1: They probably call email clients “apps.” But I’m not sure.

    Stakeholder 2: Automations are often called “workflows,” I think. Or, maybe users think workflows are something different.

    If a more user-friendly term emerges, ask the group if they can agree to use only that term moving forward. This way, the team can better align to the users’ language and mindset.

    OK, moving on. 

    If you have two or more objects that seem to overlap in purpose, ask one of these questions:

    3. Are these the same thing? Or are these different? If they are not the same, how are they different?

    You: Is a saved response the same as a template?

    Stakeholder 1: Yes! Definitely.

    Stakeholder 2: I don’t think so… A saved response is text with links and variables, but a template is more about the look and feel, like default fonts, colors, and placeholder images. 

    Continue to build out your growing glossary of objects. And continue to capture areas of uncertainty in your “open questions” parking lot.

    If you successfully determine that two similar things are, in fact, different, here’s your next follow-up question:

    4. What’s the relationship between these objects?

    You: Are saved responses and templates related in any way?

    Stakeholder 3:  Yeah, a template can be applied to a saved response.

    You, always with the follow-ups: When is the template applied to a saved response? Does that happen when the user is constructing the saved response? Or when they apply the saved response to an email? How does that actually work?

    Listen. Capture uncertainty. Once the list of “open questions” grows to a critical mass, pause to start assigning questions to groups or individuals. Some questions might be for the dev team (hopefully at least one developer is in the room with you). One question might be specifically for someone who couldn’t make it to the workshop. And many questions will need to be labeled “user.” 

    Do you see how we are building up to our UXR sales pitch?

    5. Is this object in scope?

    Your next question narrows the team’s focus toward what’s most important to your users. You can simply ask, “Are saved responses in scope for our first release?,” but I’ve got a better, more devious strategy.

    By now, you should have a list of clearly defined objects. Ask participants to sort these objects from most to least important, either in small breakout groups or individually. Then, like you did with the definitions, have everyone reveal their sort order at once. Surprisingly—or not so surprisingly—it’s not unusual for the VP to rank something like “saved responses” as #2 while everyone else puts it at the bottom of the list. Try not to look too smug as you inevitably expose more misalignment.

    I did this for a startup a few years ago. We posted the three groups’ wildly different sort orders on the whiteboard.

    The CEO stood back, looked at it, and said, “This is why we haven’t been able to move forward in two years.”

    Admittedly, it’s tragic to hear that, but as a professional, it feels pretty awesome to be the one who facilitated a watershed realization.

    Once you have a good idea of in-scope, clearly defined things, this is when you move on to doing more relationship mapping.

    6. Create a visual representation of the objects’ relationships

    We’ve already done a bit of this while trying to determine if two things are different, but this time, ask the team about every potential relationship. For each object, ask how it relates to all the other objects. In what ways are the objects connected? To visualize all the connections, pull out your trusty boxes-and-arrows technique. Here, we are connecting our objects with verbs. I like to keep my verbs to simple “has a” and “has many” statements.

    This system modeling activity brings up all sorts of new questions:

    • Can a saved response have attachments?
    • Can a saved response use a template? If so, if an email uses a saved response with a template, can the user override that template?
    • Do users want to see all the emails they sent that included a particular attachment? For example, “show me all the emails I sent with ProfessionalImage.jpg attached. I’ve changed my professional photo and I want to alert everyone to update it.” 

    Solid answers might emerge directly from the workshop participants. Great! Capture that new shared understanding. But when uncertainty surfaces, continue to add questions to your growing parking lot.

    Light the fuse

    You’ve positioned the explosives all along the floodgates. Now you simply have to light the fuse and BOOM. Watch the buy-in for user research flooooow.

    Before your workshop wraps up, have the group reflect on the list of open questions. Make plans for getting answers internally, then focus on the questions that need to be brought before users.

    Here’s your final step. Take those questions you’ve compiled for user research and discuss the level of risk associated with NOT answering them. Ask, “if we design without an answer to this question, if we make up our own answer and we are wrong, how bad might that turn out?” 

    With this methodology, we are cornering our decision-makers into advocating for user research as they themselves label questions as high-risk. Sorry, not sorry. 

    Now is your moment of truth. With everyone in the room, ask for a reasonable budget of time and money to conduct 6–8 user interviews focused specifically on these questions. 

    HOT TIP: if you are new to UX research, please note that you’ll likely need to rephrase the questions that came up during the workshop before you present them to users. Make sure your questions are open-ended and don’t lead the user into any default answers.

    Final words: Hold the screen design!

    Seriously, if at all possible, do not ever design screens again without first answering these fundamental questions: what are the objects and how do they relate?

    I promise you this: if you can secure a shared understanding between the business, design, and development teams before you start designing screens, you will have less heartache and save more time and money, and (it almost feels like a bonus at this point!) users will be more receptive to what you put out into the world. 

    I sincerely hope this helps you win time and budget to go talk to your users and gain clarity on what you are designing before you start building screens. If you find success using noun foraging and the Object Definition Workshop, there’s more where that came from in the rest of the ORCA process, which will help prevent even more late-in-the-game scope tugs-of-war and strategy pivots. 

    All the best of luck! Now go sell research!

  • Breaking Out of the Box

    Breaking Out of the Box

    Containers are used to style CSS. In fact, the whole website is made of containers, from the computer viewport to components on a webpage. However, every now and then a new element emerges that prompts us to reevaluate our style philosophy.

    Square features, for instance, make it fun to play with round picture areas. Mobile screen notches and electronic keyboards present difficulties in how to best manage content that stays out of sight. And two display or portable devices make us reassess how to best utilize available space in a number of various device postures.

    These new evolutions of the internet system made it both more demanding and more exciting to design products. They give us a fantastic opportunity to leave our triangular containers.

    I’d like to talk about a new feature similar to the above: the Window Controls Overlay for Progressive Web Apps ( PWAs ).

    Liberal Web Apps are bridging the gap between websites and apps. They combine the best of both worlds. On the one hand, they are flexible, shareable, and stable, just like websites. On the other hand, they provide more effective features, work online, and read documents just like local apps.

    PWAs are really exciting as a style area because they challenge us to consider how to combine online and native user interface. On desktop devices in particular, we have more than 40 years of history telling us what applications should look like, and it can be hard to break out of this mental model.

    PWAs on desktop are ultimately limited to the window they appear in, which is a rectangle with a title bar at the top.

    Here’s what a typical desktop PWA app looks like:

    Sure, as the author of a PWA, you get to choose the color of the title bar (using the Web Application Manifest theme_color property ), but that’s about it.

    What if we could look beyond this box and reclaim the entire window of the app? Doing so would give us a chance to make our apps more beautiful and feel more integrated in the operating system.

    The Window Controls Overlay offers exactly this. This new PWA functionality makes it possible to take advantage of the full surface area of the app, including where the title bar normally appears.

    About the window and title bar controls

    Let’s start with an explanation of what the title bar and window controls are.

    The title bar is the window at the top of an app that typically contains the app’s name. Window controls are the affordances, or buttons, that make it possible to minimize, maximize, or close the app’s window, and are also displayed at the top.

    Window Controls Overlay removes the physical constraint of the title bar and window controls areas. The title bar and window control buttons can be overlayed on top of the application’s web content, allowing it to free up the entire height of the app window.

    If you are reading this article on a desktop computer, take a quick look at other apps. They’re probably already carrying out similar tasks. In fact, the very web browser you are using to read this uses the top area to display tabs.

    Spotify displays album artwork all the way to the top edge of the application window.

    Microsoft Word uses the available title bar space to display the auto-save and search functionalities, and more.

    This feature’s main goal is to give you the ability to use this space with your own content while also providing a way to account for the window control buttons. And it enables you to offer this modified experience on a range of platforms while not adversely affecting the experience on browsers or devices that don’t support Window Controls Overlay. PWAs are all about progressive enhancement, so this feature is a chance to improve your app so that you can use this extra space when it’s available.

    Let’s use the feature

    We’ll be developing a demo app for the remainder of this article to learn more about how to use the feature.

    The demo app is called 1DIV. Users can create designs using only CSS and a single HTML element in this straightforward CSS playground.

    The app has two pages. The first lists the CSS designs you’ve already created:

    You can edit and create CSS designs on the second page:

    Since I’ve added a simple web manifest and service worker, we can install the app as a PWA on desktop. What it appears to be on macOS is shown below:

    And on Windows:

    Our app looks good, but the first page’s white title bar is a waste of space. In the second page, it would be really nice if the design area went all the way to the top of the app window.

    Let’s use the Window Controls Overlay feature to make this better.

    Enabling Window Controls Overlay

    The film is still in its experimental phase. To try it, you need to enable it in one of the supported browsers.

    It has currently been implemented in Chromium as a result of a collaboration between Microsoft and Google. We can therefore use it in Chrome or Edge by going to the internal about: //flags page, and enabling the Desktop PWA Window Controls Overlay flag.

    Using Window Controls Overlay

    To use the feature, we need to add the following display_override member to our web app’s manifest file:

    { "name": "1DIV", "description": "1DIV is a mini CSS playground", "lang": "en-US", "start_url": "/", "theme_color": "#ffffff", "background_color": "#ffffff", "display_override": [ "window-controls-overlay" ], "icons": [ ... ]}

    The feature appears to be very simple to use. This manifest change is the only thing we need to make the title bar disappear and turn the window controls into an overlay.

    We’ll need a little bit of CSS and JavaScript code to make the most of the title bar area in our design and provide a great experience for all users regardless of device or browser they use.

    Here is what the app looks like now:

    Our logo, search field, and NEW button are now partially obscured by the window controls because our layout now begins at the top of the window, which is what we wanted.

    It’s similar on Windows, with the difference that the close, maximize, and minimize buttons appear on the right side, grouped together with the PWA control buttons:

    Screenshot of the Windows operating system’s Window Controls Overlay-enabled 1DIV app thumbnail display. The separate top bar area is gone, but the window controls are now blocking some of the app’s content.

    CSS to avoid the window controls

    Along with the feature, new CSS environment variables have been introduced:

    • titlebar-area-x
    • titlebar-area-y
    • titlebar-area-width
    • titlebar-area-height

    You can position your content where the title bar would have been by using these variables with the CSS env function to prevent it from overlapping with the window controls. In our case, we’ll use two of the variables to position our header, which contains the logo, search bar, and NEW button.

    header { position: absolute; left: env(titlebar-area-x, 0); width: env(titlebar-area-width, 100%); height: var(--toolbar-height);}

    The titlebar-area-x variable gives us the distance from the left of the viewport to where the title bar would appear, and titlebar-area-width is its width. (Remember, this is not equivalent to the width of the entire viewport, just the title bar portion, which as noted earlier, doesn’t include the window controls.)

    By doing this, we make sure our content remains fully visible. We’re also defining fallback values (the second parameter in the env() function) for when the variables are not defined (such as on non-supporting browsers, or when the Windows Control Overlay feature is disabled).

    Our header now adapts to its surroundings, and it doesn’t seem like the window control buttons were left out. The app looks a lot more like a native app.

    changing the window’s background color allows it to blend in.

    Now let’s take a closer look at our second page: the CSS playground editor.

    Not very good. Our CSS demo area does go all the way to the top, which is what we wanted, but the way the window controls appear as white rectangles on top of it is quite jarring.

    We can change the theme color of the app to fix this. There are a couple of ways to define it:

      The theme_color manifest member in the web app manifest file can be used by PWAs to define a theme color. This color is then used by the OS in different ways. It is used to give the title bar and window controls a background color on desktop computers.
    • Websites can use the theme-color meta tag as well. It’s used by browsers to customize the color of the UI around the web page. For PWAs, this color can override the manifest theme_color.

    In our case, we can set the manifest theme_color to white to provide the right default color for our app. The OS will read this color value when the app is installed and use it to make the window controls background color white. This color works great for our main page with the list of demos.

    The theme-color meta tag can be changed at runtime, using JavaScript. So we can do that to override the white with the right demo background color when one is opened.

    Here is the function we’ll use:

    function themeWindow(bgColor) { document.querySelector("meta[name=theme-color]").setAttribute('content', bgColor);}

    With this in place, we can envision how using CSS and color transitions to smoothly transition between the list page and the demo page and make the window control buttons blend in with the rest of the app’s interface.

    Dragging the window

    Now, getting rid of the title bar entirely does have an important accessibility consequence: it’s much more difficult to move the application window around.

    Users can use the Window Controls Overlay feature to move the window, but this area becomes limited to where the control buttons are, and they must very precisely aim between these buttons to move the window. However, the title bar offers a sizable area for users to click and drag.

    Fortunately, this can be fixed using CSS with the app-region property. This property is, for now, only supported in Chromium-based browsers and needs the -webkit- vendor prefix. 

    To make any element of the app become a dragging target for the window, we can use the following:

    -webkit-app-region: drag;

    Additionally, it is possible to specify explicitly that an element be non-draggable:

    -webkit-app-region: no-drag; 

    These options can be useful for us. We can make the entire header a dragging target while also making the NEW button and search field non-draggable so they can still be used as normal.

    However, because the editor page doesn’t display the header, users wouldn’t be able to drag the window while editing code. Let’s take a different strategy, then. We’ll create another element before our header, also absolutely positioned, and dedicated to dragging the window.

    ...
    .drag { position: absolute; top: 0; width: 100%; height: env(titlebar-area-height, 0); -webkit-app-region: drag;}

    With the above code, we’re making the draggable area span the entire viewport width, and using the titlebar-area-height variable to make it as tall as what the title bar would have been. This way, our draggable area is aligned with the window control buttons as shown below.

    And now, to make sure our search field and button are usable:

    header .search,header .new { -webkit-app-region: no-drag;}

    With the above code, users can click and drag where the title bar used to be. Users are expecting to be able to move windows on their desktops, and we are not breaking this expectation, which is good.

    adapting to window resizing

    It may be useful for an app to know both whether the window controls overlay is visible and when its size changes. In our situation, there won’t be enough room for the search field, logo, and button to fit because the user made the window very narrow. We would need to lower them a little.

    The Window Controls Overlay feature comes with a JavaScript API we can use to do this: navigator.windowControlsOverlay.

    The API offers three intriguing features:

    • navigator.windowControlsOverlay.visiblelets us know whether the overlay is visible.
    • navigator.windowControlsOverlay.getBoundingClientRect()lets us know where the title bar area is located and how big it is.
    • navigator.windowControlsOverlay.ongeometrychangelets us know when the size or visibility changes.

    Use this to check the size of the title bar area and lower the header if it’s too small.

    if (navigator.windowControlsOverlay) { navigator.windowControlsOverlay.addEventListener('geometrychange', () => { const { width } = navigator.windowControlsOverlay.getBoundingClientRect(); document.body.classList.toggle('narrow', width < 250); });}

    In the example above, we set the narrow class on the body of the app if the title bar area is narrower than 250px. We could do something similar with a media query, but using the windowControlsOverlay API has two advantages for our use case:

    • It’s only fired when the feature is supported and used, we don’t want to adapt the design otherwise.
    • We can see the title bar area on different operating systems, which is great because Mac and Windows have different title bar sizes. Using a media query wouldn’t make it possible for us to know exactly how much space remains.
    .narrow header { top: env(titlebar-area-height, 0); left: 0; width: 100%;}

    When the window is too small, we can use the above CSS code to move our header down and the thumbnails down in accordance with this.

    Thirty pixel of creative pixie dust


    Using the Window Controls Overlay feature, we were able to take our simple demo app and turn it into something that feels so much more integrated on desktop devices. Something that transcends the traditional window restrictions and offers its users a personalized experience.

    In reality, this feature only gives us about 30 pixels of extra room and comes with challenges on how to deal with the window controls. However, these additional space and those difficulties can be used as creative design opportunities.

    More devices of all shapes and forms get invented all the time, and the web keeps on evolving to adapt to them. New features are added to the web platform to make it easier for web authors to integrate more and more fully with those devices. From watches or foldable devices to desktop computers, we need to evolve our design approach for the web. We can now think beyond the rectangular box when building for the web.

    So let’s embrace this. Use the common technologies at our disposal and experiment with new concepts to create personalized experiences for all devices using just one codebase!


    If you get a chance to try the Window Controls Overlay feature and have feedback about it, you can open issues on the spec’s repository. You can help improve this feature’s development, which is still in its early stages. Or, you can take a look at the feature’s existing documentation, or this demo app and its source code.