{"version":"https://jsonfeed.org/version/1","title":"Aaron Gustafson: Content tagged presentations","description":"The latest 20 posts and links tagged presentations.","home_page_url":"https://www.aaron-gustafson.com","feed_url":"https://www.aaron-gustafson.com/feeds/presentations.json","author":{"name":"Aaron Gustafson","url":"https://www.aaron-gustafson.com"},"icon":"https://www.aaron-gustafson.com/i/og-logo.png","favicon":"https://www.aaron-gustafson.com/favicon.png","expired":false,"items":[{"id":"https://www.aaron-gustafson.com/notebook/accessibility-beyond-code-compliance/","title":"✍🏻 Accessibility Beyond Code Compliance","summary":"<p><em>I had the great pleasure of delivering a talk about career opportunities for accessibility devs at <a href=\"https://www.deque.com/axe-con\">axe-con</a> earlier today. You can <a href=\"https://presentations.aaron-gustafson.com/SE8HHb/accessibility-beyond-code-compliance\">view the slides</a> or <a href=\"https://www.deque.com/axe-con/sessions/accessibility-beyond-code-compliance/\">watch the recording</a> of this talk, but what follows is an approximation my talk’s content, taken from my notes and slides.</em></p>","content_html":"<p><em>I had the great pleasure of delivering a talk about career opportunities for accessibility devs at <a href=\"https://www.deque.com/axe-con\">axe-con</a> earlier today. You can <a href=\"https://presentations.aaron-gustafson.com/SE8HHb/accessibility-beyond-code-compliance\">view the slides</a> or <a href=\"https://www.deque.com/axe-con/sessions/accessibility-beyond-code-compliance/\">watch the recording</a> of this talk, but what follows is an approximation my talk’s content, taken from my notes and slides.</em></p>\n<p>Good morning, good afternoon, and good evening to you, wherever you are in the world. My name is Aaron Gustafson. My pronouns he, him, and his. I am a middle-aged white man with long, wavy hair, glasses, and a red and grey beard my wife refers to as “salt &amp; paprika.” I am speaking to you from Seattle, WA on the unceded lands of the Coast Salish peoples, most notably the Duwamish, whose longhouse is not too far from my home.</p>\n<p>Some of you may be familiar with my work. I’ve been a web designer and developer since the mid ’90s. In that time I’ve <a href=\"/publications/\">authored dozens of articles and a few books</a> and <a href=\"/speaking-engagements/\">given over a hundred talks on web development</a>. In fact, if my math is correct, I believe this is my 150th talk.</p>\n<p>Over the years I’ve been best known for my work in <a href=\"/tags/progressive-enhancement/\">progressive enhancement</a> and <a href=\"/tags/accessibility/\">accessibility</a>, but I also led the <a href=\"https://webstandards.org\">Web Standards Project</a> back in the day and am the Editor in Chief of <a href=\"https://alistapart.com\"><cite>A List Apart</cite></a>.</p>\n<p>I have deep roots in the web dev community, particularly in the accessibility space, but that’s not why I’m here today. I’m here today because about 9 months ago I decided to change things up and use my accessibility skills in other ways.</p>\n<p>In my case, I joined the Microsoft Accessibility Innovation team to lead our investments through the <a href=\"https://www.microsoft.com/en-us/ai/ai-for-accessibility\">AI for Accessibility grant program</a>.\nBut I’m not here to talk about AI, I’m here to talk about how <em>you</em> can put your accessibility skills to work, beyond finding and remediating accessibility bugs.</p>\n<h2 id=\"cruel-irony%3A-accessibility-devs-face-barriers-too\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#cruel-irony%3A-accessibility-devs-face-barriers-too\" aria-hidden=\"true\">#</a> Cruel irony: accessibility devs face barriers too</h2>\n<p>In my career, I’ve found it’s really easy to get typecast or pigeon-holed when you’re a developer whose focus is accessibility. This is a bit of a cruel irony as many of us are driven by a desire to tear down the barriers to access for others.</p>\n<p>Our companies, organizations, and sometimes even our colleagues put us in a box. They don’t seem to realize that knowledge of how to make products accessible has huge value beyond compliance (and avoiding lawsuits). In our careers, we might be able to level up from a junior to senior role or even make it to principal, based on our performance, but growth beyond that is often limited to moving into people management, which is a wholly different skill set. And maybe that’s your aspiration… that’s totally cool if it is, but what if you want to grow as an independent contributor?</p>\n<p>When our organizations put us in a box, they make it really difficult to grow our scope and increase the impact we can have for both the organization and the people we serve.</p>\n<p>Don’t get me wrong, I love compliance work. I’m not here to disparage it in any way; it’s critically important and means so much to our customers. But after years in this industry, I also see the downsides of life in the “accessibility dev” box. Perhaps you relate to a few of these:</p>\n<ul>\n<li>Colleagues don’t understand (or value) what I do.</li>\n<li>I need like three (or more) of me to handle the workload.</li>\n<li>Teams are resistant to changing the way they do things.</li>\n<li>Progress feels glacially slow and some days I feel I’m going backwards.</li>\n<li>I feel isolated on the team or the company</li>\n</ul>\n<p>Again, I am not trying to cast code compliance work in a bad light, and I’m not trying to get you down on it. What I want to do is build you up.</p>\n<h2 id=\"you%E2%80%99ve-got-so-much-more-to-offer\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#you%E2%80%99ve-got-so-much-more-to-offer\" aria-hidden=\"true\">#</a> You’ve got so much more to offer</h2>\n<p>I believe you, as a developer interested in accessibility, have so much to offer your organizations, your customers, and this industry. That’s what I am here to talk to you about today.</p>\n<p>I’m here to talk to you about opportunity!</p>\n<p>When I was doing this work on the regular, I struggled to see how I could grow my impact. In the intervening years, however, I’ve discovered a bunch of ways we can bring our knowledge and passion for accessibility to other areas of both web development and the tech industry overall.</p>\n<p>As I mentioned, I’ve been in this industry and held a lot of different roles since the mid ’90s. I’ve held just about every web-related role you could name. I’ve been an educator, publisher, spec editor at the W3C. I’ve worked in Developer Relations and strategic roles. I’ve worn an awful lot of hats (which is totally fine with me as my hair is thinning in the back).</p>\n<p>All of this is to say that I’ve seen and experienced a lot of ways you can be valuable to your current employer or, perhaps, a future one.\nI am going to share 5 of them with you today:</p>\n<ol>\n<li>Design Systems</li>\n<li>Product Design</li>\n<li>Data Science</li>\n<li>AI Research &amp; Ethics</li>\n<li>Diversity &amp; Inclusion</li>\n</ol>\n<p>These are by no means your only options and, as I mentioned, if you’re happy with what you’re doing, please don’t consider this talk a nudge to get you to change things up. I just want to make you aware of the value you can bring to other kinds of roles, some of which you may not have considered before.</p>\n<p>Also: I want to make it clear that I am not advocating that you take on any of these responsibilities in addition to your current work. Far too often, organizations ask those of us with accessibility skills to do things beyond our job description without any additional compensation for that work. Please don’t fall into that trap as it will lead to burnout.</p>\n<h2 id=\"design-systems-%26-strategies%3A-codify-coding-best-practices\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#design-systems-%26-strategies%3A-codify-coding-best-practices\" aria-hidden=\"true\">#</a> Design Systems &amp; Strategies: Codify coding best practices</h2>\n<p>If you’re really interested in software development, an area that keeps you in that area is working on design systems.</p>\n<p>I’m not going to go deep on design systems—there are a bunch of talks and <a href=\"https://clarityconf.com\">even whole conferences</a> focused on that topic—but I will give you the Cliffs Notes if you’re unfamiliar: Design systems (and pattern libraries within them) codify your organization’s design and coding guidelines in such a way that the software you produce is consistent and the teams working on delivering that software are able to be more efficient because they aren’t having to design and build every interface from scratch.\nHaving a design system that is accessible enables teams to avoid introducing new accessibility bugs in the process of creating bespoke interfaces. It also means finding and fixing an accessibility bug in the design system should fix it in all of the products using that design system. (That last part isn’t always perfect, but I don’t have time to get into that today.)</p>\n<p>If you work in a small organization, it’s possible that you aren’t working with a design system yet. Knowing what you do about their accessibility benefits, you could advocate for the creation of one and for its creating, care &amp; maintenance to be your job.</p>\n<p>In this role, you can:</p>\n<ul>\n<li>Work directly with other engineers to create system components.</li>\n<li>Audit the system regularly for compliance issues (paying special attention to how combinations of components can create issues).</li>\n<li>Provide in-house accessibility training to the design &amp; engineering folks to help them level-up their own skills.</li>\n<li>Provide design system training and implementation guidance to the folks implementing the design system and new hires as they come in.</li>\n<li>Celebrate the successes of teams using the design system, particularly when it comes to their accessibility wins; you could do this in-person, in online meetings, or via email depending on the size and distribution of your team.</li>\n</ul>\n<p>If you’re in a larger organization that already has a design system, you could be a bit more strategic in your approach:</p>\n<ul>\n<li>Being the accessibility advocate within the design system as well as in the context of all software development practices within your organization.</li>\n<li>Be the conduit to your organization’s senior management as well as individual product owners to ensure accessibility is top of mind for them and baked into their roadmaps. Part of that is also advocating for the necessary funding to achieve your accessibility goals (and alleviating the issue we often face on not being appropriately-resourced).</li>\n<li>Provide guidance and create structure within your organization to ensure your accessibility goals are met.</li>\n<li>Educate and mentor folks from across your organization on accessibility.</li>\n<li>And again, celebrate the heck out of any and all accessibility wins, no matter how small. We’ve already discussed some of the challenges we face ad accessibility devs, and getting publicly recognized for our accomplishments can really boost morale.</li>\n</ul>\n<p>As an accessibility dev, your unique perspective and skills will help build greater alignment on accessibility among teams and improve morale by speeding up development &amp; reducing bugs!</p>\n<h2 id=\"product-design%3A-shape-what-you-build\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#product-design%3A-shape-what-you-build\" aria-hidden=\"true\">#</a> Product Design: Shape what you build</h2>\n<p>As I mentioned, the role in larger orgs can be more strategic. Another strategic role is shaping the products that we build, as a product designer, product owner, product manager, or similar. (Different companies have different titles for this kind of work.)</p>\n<p>In this kind of a role, we can put the “shift left” credo we advocate for regularly into practice. It involves</p>\n<ul>\n<li>Embedding yourself with feature teams to understand what motivates them. Understanding their vision in goals will help you frame your recommendations in a way that they will be welcomed and embraced. Being embedded with a team also means you can discover potential hazards early and eliminate them; you can educate them as to the issue and how to avoid it which makes it less likely they will run into it again.</li>\n<li>Asking questions and offering to up-skill the team, helping them learn to build products that will reach and be usable by more customers.</li>\n<li>Making sure people with disabilities are included (and paid for their contributions) in all research, co-creation, and testing so the team has a better understanding of their needs.</li>\n</ul>\n<p>All of this work has huge business value for your organization:</p>\n<ol>\n<li>It saves your engineering and quality assurance teams a ton of time, and time is money.</li>\n<li>You reduce the legal risk to your company for lack of compliance, which also saves money in legal fees (not to mention settlements).</li>\n<li>You will build products that work better for more people, leading to better overall customer satisfaction and reduced churn.</li>\n<li>You’ll also create new revenue opportunities by increasing the number of folks you can serve.</li>\n</ol>\n<p>On that last point, I often point to WhatsApp as a perfect example of this. When they launched, there were nearly 8,000 chat apps in the iOS App Store. If they’d only offered their app to that audience, they would not have found the level of success they did because the competition was so high. They expanded their potential customer base by supporting OSes others were ignoring: older Android versions, Blackberry, Symbian, Nokia Series 40, Windows Phone. Some of those weren’t even smartphone OSes! When WhatsApp sold to Facebook for $19B, they had over 600M users worldwide because they made their product accessible—in a broader sense—to more people.</p>\n<p>By considering accessibility in the same way as WhatsApp considered OS support, we can grow—or to think about it another way, stop artificially suppressing—our customer base and succeed where our competition fails.</p>\n<p>As an accessibility dev, your unique perspective and skills will ensure your company ships higher quality products, with fewer bugs, for less money!</p>\n<h2 id=\"data-science%3A-measure-the-right-things\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#data-science%3A-measure-the-right-things\" aria-hidden=\"true\">#</a> Data Science: Measure the right things</h2>\n<p>Moving a bit further afield, I want to talk about how much we need your skills in the world of data science. As part of a data science team, you could bring attention to accessibility in our product metrics by</p>\n<ul>\n<li>Ensuring key business metrics include data from people with disabilities.</li>\n<li>Adding new product metrics that reflect the experience of different disability communities.</li>\n<li>Measuring the time necessary to complete key tasks when using different AT and track improvements &amp; regressions for them over time.</li>\n</ul>\n<p>Apart from products, you could also have a profound impact on your organizations’ internal processes, especially around how compliance work is done and tracked:</p>\n<ul>\n<li>Capture automated testing passes and track compliance over time.</li>\n<li>Highlight accessibility bug activity\n<ul>\n<li>How many new?</li>\n<li>How many remediated?</li>\n<li>How many outstanding?</li>\n<li>How many marked “won’t fix”?</li>\n<li>Average age of outstanding bugs</li>\n</ul>\n</li>\n<li>Include this data in top-level product reports</li>\n</ul>\n<p>And if you wanted to keep working in the UI space, you could put your skills to work improving the quality of the dashboards and tools used by your company:</p>\n<ul>\n<li>Ensure all analysis tools are accessible.</li>\n<li>Ensure charts are accessible.</li>\n<li>Provide access to raw data tables.</li>\n<li>Enable API access to data to enable colleagues to create additional tooling that works better for them.</li>\n</ul>\n<p>This is incredibly necessary work as we often neglect the accessibility of our own internal tools.</p>\n<p>As an accessibility dev, your unique perspective and skills can help your company make decisions that result in more inclusive and accessible products that provide a better user experience (and may even increase revenue).</p>\n<h2 id=\"ai-research-%26-ethics%3A-protect-us-from-%E2%80%9Cthe-machines%E2%80%9D\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#ai-research-%26-ethics%3A-protect-us-from-%E2%80%9Cthe-machines%E2%80%9D\" aria-hidden=\"true\">#</a> AI Research &amp; Ethics: Protect us from “the machines”</h2>\n<p>The fourth area desperately in need of your skills and perspective is AI research and ethics. AI is a hot topic right now, for sure, and it absolutely has the potential to meaningfully improve people’s lives, including those of people with disabilities, but to get there, organizations need your help!</p>\n<p>You have the knowledge and connections in this space to harness the power of AI in service of people with disabilities.</p>\n<p>As part of an AI research team you can…</p>\n<ul>\n<li>Observe how people with disabilities interact with the world today and consider how AI can\n<ul>\n<li>increase their independence;</li>\n<li>make certain actions easier, more intuitive, or efficient; and</li>\n<li>increase the richness of experiences for them.</li>\n</ul>\n</li>\n<li>Co-design with folks from a range of disability communities; but remember not to assume everyone from a given community wants the same thing.</li>\n</ul>\n<p>This is the space I’m very grateful to be in right now. As part of the Accessibility Innovation team at Microsoft, I get to identify and fund projects that are using AI to improve the lives of people with disabilities.</p>\n<p>For example: the ORBIT project. There’s been lots of work in the object detection space, but there is a lot of focus on labelling “high-quality” images. This doesn’t really help folks in the real world. A blind person, for instance, is likely to have a hard time providing the image recognizer a with a perfectly-framed, perfectly focused capture of an object they need identified.</p>\n<p>The Orbit project, from the City University of London, worked to enable “few-shot learning” of novel objects by training the model on brief videos taken by blind &amp; low vision collectors. These videos are “imperfect” in that they are likely to be poorly framed, blurry, and so on.\nThis increases the noise-to-signal ratio, which is actually a good thing in training a machine learning model. Enabling AI systems to recognize objects captured in imprecise ways makes for a more robust recognizer that is capable of identifying objects in less than ideal contexts.\nThat, in turn, improves the overall quality of these systems for everyone.</p>\n<p>Another example is Mentra, who has been using AI to help pair neurodivergent folks with employers who recognize the profound contributions they can make in their companies. Mentra’s platform collects holistic data on job seekers:</p>\n<ul>\n<li>cognitive strengths,</li>\n<li>aptitudes,</li>\n<li>environmental sensitivities,</li>\n<li>and necessary accommodations.</li>\n</ul>\n<p>It takes these into account when matching individuals to available positions (which also include comparable information).</p>\n<p>Mentra takes care not to “screen out” individuals with non-traditional backgrounds. It also works in a “reverse job fair” model, where applicants only fill in one profile, letting Mentra’s AI recommend them for jobs that are a good fit. Employers indicate their interest and invite job seekers to interview, lessening the stress level on the job seeker.</p>\n<p>Mentra’s straightforward approach also reduces the need for job seekers to “cover” in a new role as they’ve made it clear what accommodations they need in order to be successful.</p>\n<p>The third project I’ll share with you is iWill, who are working in the mental health space.</p>\n<p>There are tons of cognitive behavioral therapy (CBT) chatbots out there, but we were really intrigued by work being undertaken by iWill in India. First of all, there is a profound scarcity of mental health professionals in India. Training and deploying enough professionals to meet the mental health needs of the population is not feasible in the near term, which is why chat bots are a compelling stop-gap.</p>\n<p>Most CBT chatbots are trained in English. We are funding them to train a CBT model end-to-end in Hindi as we believe it’s the only way to avoid potential problems inherent in translation (Hindi to English for the ML then back again) and biases that would be inherent from the involvement of English.</p>\n<p>I could spend hours talking about all of the good AI can do in the world, but I also recognize that AI can also perpetuate or exacerbate exclusion.</p>\n<p>AI teams need your skills to help them address bias toward and exclusion of people with disabilities. They also need you to be there protecting the privacy of people with disabilities.</p>\n<p>You would bring a lot to an AI team in this regard:</p>\n<ul>\n<li>Identify bias (or potential bias) in datasets.</li>\n<li>Promote representation of people with disabilities in datasets.</li>\n<li>Ensure people with disabilities are not exploited by datasets.</li>\n<li>Ensure all interfaces to the AI tools are accessible.</li>\n<li>Ensure the products created by AI are accessible.</li>\n<li>Validate that the products of AI are not directly biased or exclusionary and they they cannot be used to perpetuate bias or exclusion.</li>\n</ul>\n<p>As an accessibility dev, your unique perspective and skills can help can ensure advancements in AI/ML are beneficial (and not harmful) to people with disabilities!</p>\n<h2 id=\"diversity-%26-inclusion%3A-build-%26-grow-inclusive-teams\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#diversity-%26-inclusion%3A-build-%26-grow-inclusive-teams\" aria-hidden=\"true\">#</a> Diversity &amp; Inclusion: Build &amp; grow inclusive teams</h2>\n<p>The last role I’ll talk about is probably the furthest afield from development, but it also has the most profound impact on the teams that do the work and that’s D&amp;I. I don’t imagine I need to spend a ton of time making a case to this audience for why diversity matters, but here’s a quick run-down just in case:</p>\n<ul>\n<li>Diverse teams bring with them diverse perspectives &amp; lived experiences.</li>\n<li>If valued, that knowledge can make it easier to identify potential barriers (and opportunities) earlier in a project.</li>\n<li>Diverse teams are more likely to exhibit empathy toward all users, including those with disabilities.</li>\n<li>Diverse teams are more innovative.</li>\n<li>Diverse teams make better decisions</li>\n</ul>\n<p>For more on those last two points, you should <a href=\"https://hbr.org/2016/11/why-diverse-teams-are-smarter\">read this piece in the Harvard Business Review</a>.</p>\n<p>As someone who is keenly aware of the importance of having diverse teams to build inclusive products, you can do a lot to ensure your organization embraces diversity in its recruiting efforts. Fixing leaks in “the pipeline,” if you will.</p>\n<p>A lot of it starts with asking important questions:</p>\n<ul>\n<li>Do we have a disability hiring policy?</li>\n<li>Are our recruiters “screening in” people with disabilities?</li>\n<li>Where are we posting jobs? Are they\nreaching people with disabilities?</li>\n<li>Is the language of our job postings exclusionary?</li>\n<li>Is our interview process inclusive and accommodating of people’s disabilities?</li>\n</ul>\n<p>It’s also important to actively solicit disabled talent for roles in your company.</p>\n<p>Some of this is actually work you could do without being part of any official D&amp;I team, if you wanted, but if it is something you want to focus on, you might consider a job in recruiting.</p>\n<p>A lot of folks focus on the pipeline, but in my experience that’s not where the bulk of the problems lie. If we want diverse teams, we need to ensure we have an environment and culture that values and supports them. Diverse talent will flee an unwelcoming environment and employee churn is expensive.</p>\n<p>In order to retain diverse talent, we need to make sure the teams they join recognize the value they bring to an organization. This is where D&amp;I training and coaching comes in.</p>\n<p>You can influence team culture to improve retention by framing diversity in the context of your business goals and organizational success:</p>\n<ul>\n<li>Lack of diversity creates knowledge gaps.</li>\n<li>Diverse hiring helps to fill those gaps.</li>\n<li>Diverse colleagues’ knowledge &amp; lived\nexperiences have value.</li>\n</ul>\n<p>Once the framing has been established, be sure to “call in” non-inclusive/biased behaviors. Leading with curiosity can help you understand where someone is coming from so you can help them grapple with concepts like privilege and bias. Don’t burn yourself out trying to change the mind of folks who are openly antagonistic to this message, but you’ll often be surprised at how a non-confrontational, nonjudgmental conversation can both diffuse a tense situation and help to shift someone’s perspectives.</p>\n<p>Another step you can take to improve retention include examining the inclusiveness (or lack thereof) of your team’s processes, built environments, and such. Are your hybrid meetings being monopolized by folks in the physical meeting space, alienating people on the call? Are your team morale events all scheduled in the evenings, making it hard for parents or caregivers on the team? Are they being held in bars, which makes it uncomfortable for folks who don’t drink alcohol, or in inaccessible venues?</p>\n<p>Finally, it can be really beneficial to normalize disability in everyday interactions, especially if you are someone with privilege in your workplace as you can create space for others to acknowledge their own disabilities.</p>\n<p>I was thankful that my last role enabled me to make this kind of D&amp;I work a formal third of my core responsibilities. With my management’s backing, I was able to lead D&amp;I trainings and events across the company while still being able to do the other work I love.</p>\n<p>Many companies have formal D&amp;I teams (some in HR, some not) for whom this is their whole job, so there are certainly opportunities there. That said, those teams often rely on advocacy from elsewhere in the company for their efforts to be successful, so you might also be able to formally support their efforts from outside that organization, as I did.</p>\n<hr>\n<p>If there is no room for diverse talent to grow in their careers, many will leave. As I mentioned, churn is expensive. And just as not feeling respected &amp; valued will likely result in a diverse employee leaving, the same goes for not having the same career advancement opportunities enjoyed by people from more privileged groups. Depending on where you are in your organization, you can help address this problem in different ways:</p>\n<ol>\n<li>Write recommendations for colleagues, prioritizing them for colleagues whose diversity needs to be seen as an asset.</li>\n<li>Observe promotions and ask questions of management if you don’t see diverse representation.</li>\n<li>Mentor and reverse-mentor colleagues with a goal of growing the careers of people with disabilities.</li>\n</ol>\n<p>This work is especially important to undertake if you are from a privileged group in your organization as your advocacy carries more weight. Treat your privilege as a currency and spend it on your colleagues.</p>\n<p>Finally, and in perhaps the most formal way, working full-time in D&amp;I you can shape company policies &amp; trainings:</p>\n<ul>\n<li>Suggest edits to existing company policies.</li>\n<li>Draft new policies.</li>\n<li>Suggest freely-available accessibility and D&amp;I trainings to colleagues.</li>\n<li>Create (or co-create) workshops &amp; trainings for your company or team.</li>\n<li>Push for your company to mandate accessibility and D&amp;I training; be sure to include additional training specifically for people managers as they have more to consider in this regard.</li>\n<li>Advocate for diverse representation and the modeling of inclusive behavior in all in-house trainings.</li>\n</ul>\n<p>As an accessibility dev, your unique perspective and skills can help increase the inclusiveness of your company for fellow employees, which will lead to the creation of more inclusive products and services!</p>\n<h2 id=\"these-are-just-five-areas-that-need-you\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#these-are-just-five-areas-that-need-you\" aria-hidden=\"true\">#</a> These are just five areas that need you</h2>\n<p>In this talk, I introduced five areas desperately in need of your skills and perspectives: Design Systems, Product Design, Data Science, AI Research &amp; Ethics, and Diversity &amp; Inclusion.</p>\n<p>There are way more (I only have so much time).</p>\n<p>If you’re feeling stuck, hopefully this gives you some idea of the kinds of opportunities that are out there for you. And if you only come away from this session with one thing, let it be this:</p>\n<p><strong>You are more valuable than you realize.</strong></p>\n<p><strong>You are change maker.</strong></p>\n<p>Thank you!</p>\n","social_text":"I cobbled together a rough transcript of my #AxeCon talk.","url":"https://www.aaron-gustafson.com/notebook/accessibility-beyond-code-compliance/","tags":["presentations","accessibility","AI/ML","inclusion","industry"],"image":"https://www.aaron-gustafson.com/i/posts/2023-03-16/hero.png","date_published":"2023-03-16T17:50:39Z"},{"id":"https://www.aaron-gustafson.com/notebook/performance-as-user-experience/","title":"✍🏻 Performance as User Experience","summary":"<p>Last Tuesday, I gave a relatively new talk on web performance and optimization at An Event Apart in Seattle. The response to this talk has been tremendous both times I gave it, so I wanted to share the deck and relevant links here.</p>","content_html":"<p>Last Tuesday, I gave a relatively new talk on web performance and optimization at An Event Apart in Seattle. The response to this talk has been tremendous both times I gave it, so I wanted to share the deck and relevant links here.</p>\n<h2 id=\"slides\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#slides\" aria-hidden=\"true\">#</a> Slides</h2>\n<figure class=\"video-embed video-embed--16x9\" id=\"figure-2015-05-05-01\">  \n<iframe class=\"video-embed__video\" src=\"https://www.slideshare.net/slideshow/embed_code/key/7AYV7gZuYKa4G5\" frameborder=\"0\"></iframe>  \n</figure>\n<p><a href=\"https://github.com/aarongustafson/talks-and-workshops/blob/main/2018/aea-sea/performance-as-user-experience.pdf\">Download (PDF, 16.6MB)</a></p>\n<h2 id=\"liveblogs%2Fnotes\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#liveblogs%2Fnotes\" aria-hidden=\"true\">#</a> Liveblogs/Notes</h2>\n<ul>\n<li><a href=\"https://www.lukew.com/ff/entry.asp?1991\">LukeW</a></li>\n<li><a href=\"https://hookedoncode.com/2018/04/performance-as-user-experience-aaron-gustafson/\">Torre Capistran</a></li>\n</ul>\n<h2 id=\"resources\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#resources\" aria-hidden=\"true\">#</a> Resources</h2>\n<ul>\n<li><a href=\"https://a-k-apart.com/\">10k Apart</a></li>\n<li><a href=\"https://medium.com/@luisvieira_gmr/html5-prefetch-1e54f6dda15d\">Resource Hints</a></li>\n<li><a href=\"https://medium.com/reloading/preload-prefetch-and-priorities-in-chrome-776165961bbf\">Preload, Prefetch And Priorities in Chrome</a></li>\n<li><a href=\"https://www.bramstein.com/writing/web-font-anti-patterns-subsetting.html\">Web Font Anti-Pattern: Aggressive subsetting</a></li>\n<li><a href=\"https://www.emarketer.com/Article/Easy-Navigation-Speed-Leading-Website-Performance-Attributes/1013293\">Easy Navigation, Speed Are Leading Website Performance Attributes</a></li>\n<li><a href=\"https://blog.kissmetrics.com/loading-time/\">How Loading Time Affects Your Bottom Line</a></li>\n<li><a href=\"https://blog.hubspot.com/marketing/page-load-time-conversion-rates\">How Page Load Time Affects Conversion Rates: 12 Case Studies</a></li>\n<li><a href=\"https://www.filamentgroup.com/lab/mv-initial-load-times.html\">Research: Performance Impact of Popular JavaScript MVC Frameworks</a></li>\n<li><a href=\"http://vanilla-js.com/\">Vanilla JS</a></li>\n<li><a href=\"https://alistapart.com/article/the-best-request-is-no-request-revisited\">The Best Request Is No Request, Revisited</a></li>\n<li><a href=\"https://http2.akamai.com/demo\">HTTP/2 is the future of the Web, and it is here!</a></li>\n<li><a href=\"https://www.keycdn.com/support/the-growth-of-web-page-size/\">The Growth of Web Page Size</a></li>\n<li><a href=\"https://theoutline.com/post/2485/not-every-article-needs-a-picture\">Not Every Article Needs a Picture</a></li>\n</ul>\n","url":"https://www.aaron-gustafson.com/notebook/performance-as-user-experience/","tags":["performance","user experience","HTML","presentations"],"date_published":"2018-04-09T18:09:21Z"},{"id":"https://www.aaron-gustafson.com/notebook/progressive-web-apps-and-the-windows-ecosystem/","title":"✍🏻 Progressive Web Apps and the Windows Ecosystem","summary":"<p><em>I had the great pleasure of delivering a talk about Microsoft’s strategy towards Progressive Web Apps at <a href=\"https://build.microsoft.com\">Build</a>. You can <a href=\"#slides\">view the slides</a> or <a href=\"#video\">watch the recording</a> of this talk, but what follows is a distillation of my talk, taken from my notes and slides.</em></p>","content_html":"<p><em>I had the great pleasure of delivering a talk about Microsoft’s strategy towards Progressive Web Apps at <a href=\"https://build.microsoft.com\">Build</a>. You can <a href=\"#slides\">view the slides</a> or <a href=\"#video\">watch the recording</a> of this talk, but what follows is a distillation of my talk, taken from my notes and slides.</em></p>\n<p>I’m here to talk to you about Progressive Web Apps, but before we really tuck into that, I wanna give a shout out to an app that’s really impressed me. This is Expense Manager by the folks at <a href=\"https://vaadin.com\">Vaadin</a>:</p>\n<figure class=\"video-embed video-embed--16x9\" id=\"figure-2017-05-24-01\">  \n<video class=\"video-embed__video\" src=\"/i/posts/2017-05-24/01.mp4\" controls loop muted></video>\n</figure>\n<p>I do a lot of traveling and it’s helpful when I can easily track my expenses. Their app is simple but refined in this regard. It’s snappy and provides a great overall UX; it’s also cross platform, which is nice since I often jump between different OSes across mobile and desktop.</p>\n<figure class=\"video-embed video-embed--16x9\" id=\"figure-2017-05-24-02\">  \n<video class=\"video-embed__video\" src=\"/i/posts/2017-05-24/02.mp4\" controls loop muted></video>\n</figure>\n<p>The experience on the desktop version of their app is obviously a little better because I’ve got more real estate for viewing my expenses, but the same attention to detail has clearly been paid to the experience in both form factors, which is nice to see.</p>\n<figure class=\"video-embed video-embed--16x9\" id=\"figure-2017-05-24-03\">  \n<video class=\"video-embed__video\" src=\"/i/posts/2017-05-24/03.mp4\" controls loop muted></video>\n</figure>\n<p>Oh, and a little secret here… it’s a web app. In fact it’s a Progressive Web App. You should really <a href=\"https://demo.vaadin.com/expense-manager\">play around with it yourself</a> and kick the tires a bit to see how it’s made.</p>\n<h2 id=\"what-is-a-progressive-web-app%3F\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#what-is-a-progressive-web-app%3F\" aria-hidden=\"true\">#</a> What is a Progressive Web App?</h2>\n<p>Now that we’ve seen one in action, I want to start by clarifying what a Progressive Web App is, just so I’m sure we’re all on the same page before we go down this rabbit hole. As a point of clarification, you’ll hear me use the terms Progressive Web App and PWA interchangeably.</p>\n<p>So what is a Progressive Web App? Let’s ignore the first part of this term for a moment—<em>progressive</em>—I promise I’ll circle back to it shortly. Now the term “web app” may sound like something you can put your finger on, right? It’s software, on the Web, you use to complete a task. Like an expense manager, but it can be any website or property, really.</p>\n<p>And so it is with Progressive Web Apps too.</p>\n<figure id=\"fig-2017-05-24-04\" class=\"media-container\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2017-05-24/04.png\" alt=\"\"></p>\n</figure>\n<p>“Web apps” in this context can be any website type—a newspapers, games, books, shopping sites—it really doesn’t matter what the content or purpose of the website is, the “web app” moniker is applicable to all of them. <span data-quotable>The term could just have easily been progressive web <em>site</em> and it may be helpful to think of it as such</span>. It doesn’t need to be a single page app. You don’t need to be running everything client side. There are no particular requirements for the type of PWA you are developing.</p>\n<p>Essentially, a PWA is a website that is capable of being promoted to being an installed app. It gets many of the benefits of being an app (some of which I will cover shortly), but also has all of the benefits of being a website too. If you’ve looked at or developed a <a href=\"https://web.archive.org/web/20170616215532/https://developer.microsoft.com/en-us/windows/bridges/hosted-web-apps\">Hosted Web App</a>(HWA), which Microsoft introduced with Windows 10, PWAs are very\nsimilar. In fact, if you’ve built an HWA, it shouldn’t be too difficult for you to convert it into a PWA and, in doing so, you’ll get a ton of extra goodies for free… but I’m getting ahead of myself.</p>\n<p><a href=\"#figure-2017-05-24-05\">Here’s a quick comparison</a> of the Twitter app and <a href=\"https://lite.twitter.com/\">Twitter Lite</a>, as seen on an Android device:</p>\n<figure class=\"video-embed video-embed--16x9\" id=\"figure-2017-05-24-05\">  \n<video class=\"video-embed__video\" src=\"/i/posts/2017-05-24/05.mp4\" controls loop muted></video>\n<figcaption>A video showing the Twitter Android app and Twitter Lite, side-by-side to demonstrate how similar they are.</figcaption>\n</figure>\n<p>You’ll notice that from a quality, polish, and user experience perspective, they are nearly indistinguishable. And this is just the first iteration of Twitter Lite. It launched last month. The only real difference is that one was built using Web technologies and lives at a URL.</p>\n<p>Though <a href=\"https://infrequently.org/2015/06/progressive-apps-escaping-tabs-without-losing-our-soul/\">the “progressive web apps” moniker was coined by Frances Berriman in 2015</a> and has quickly become a buzzword in our industry, it’s important to recognize that this idea of the Web as app is not new.</p>\n<p>Back in 2007, <a href=\"https://web.archive.org/web/20070322155954/http://www.adobe.com/aboutadobe/pressroom/pressreleases/200703/031907ApolloLabs.html\">Adobe introduced Apollo</a>, later renamed the Adobe Integrated Runtime (<abbr aria-title=\"also known as\">a.k.a.</abbr> <a href=\"http://www.adobe.com/products/air.html\">Adobe AIR</a>). This technology enabled designers and developers to build apps in Flash or using Web technologies—HTML, CSS and JavaScript. It was pretty revolutionary for the time, supporting drag &amp; drop, menu bar integration, file management, and more.</p>\n<p>In 2009, Palm debuted <a href=\"https://en.wikipedia.org/wiki/WebOS\">webOS</a> <a href=\"http://www.palminfocenter.com/news/9668/palm-announces-the-palm-pre-smartphone/\">with the Palm Pre</a>. All software for webOS was built using web technologies. Sadly, as an operating system in the handset space, it failed to catch on, but <a href=\"https://www.lgwebos.com/\">LG has licensed webOS</a> for use in smart TVs and is experimenting with it for <abbr aria-title=\"Internet of Things\">IoT</abbr> devices and smartwatches.</p>\n<p>Since that time, more OSes have begun embracing Web technologies as a means of building applications. Windows 8 allowed Windows Store apps to be written in HTML, CSS, and JavaScript. And <a href=\"https://en.wikipedia.org/wiki/Firefox_OS\">Firefox OS</a> and <a href=\"https://www.chromium.org/chromium-os\">Chromium/Chrome OS</a> are fundamentally tied to to the Web stack.</p>\n<p>Countless tools have followed Adobe’s lead as well, enabling designers and developers to use their Web skills to build applications for the vast majority of operating systems out there. <a href=\"https://facebook.github.io/react-native/\">React Native</a>, <a href=\"http://ionicframework.com/\">Ionic</a>, <a href=\"https://electron.atom.io/\">Electron</a>, <a href=\"http://phonegap.com/\">PhoneGap</a>, <a href=\"http://www.appcelerator.com/\">Appcelerator</a>… the list goes on and on. Obviously there’s something to the idea of building software using Web technologies. Progressive Web Apps are a brilliant way of accomplishing this in a standardized, consistent, way.</p>\n<h2 id=\"what-makes-a-pwa-a-pwa%3F\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#what-makes-a-pwa-a-pwa%3F\" aria-hidden=\"true\">#</a> What makes a PWA a PWA?</h2>\n<p>Google’s <a href=\"https://infrequently.org/\">Alex Russell</a> defined 10 characteristics he believes define this new breed of Web application:</p>\n<ol>\n<li><strong>Progressive:</strong> It works for every user, regardless of browser choice because it’s built with progressive enhancement as a core tenet.</li>\n<li><strong>Responsive:</strong> The UI adapts to fit any form factor.</li>\n<li><strong>Network independent:</strong> It works offline and on low-quality networks (which is something <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker\">Service Worker</a> helps with).</li>\n<li><strong>App-like:</strong> It feels like an app in terms of responsiveness and UX.</li>\n<li><strong>Fresh:</strong> The experience is always up to date (another area where Service Worker shines).</li>\n<li><strong>Safe:</strong> It is served via HTTPS to prevent snooping and to ensure content hasn’t been tampered with.</li>\n<li><strong>Discoverable:</strong> Search spiders can identify it as an app because it uses a <a href=\"https://developer.mozilla.org/en-US/docs/Web/Manifest\">Web Application Manifest</a> (and a Service Worker).</li>\n<li><strong>Re-engageable:</strong> It can re-engage users through features like <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/Push_API\">push notifications</a>.</li>\n<li><strong>Installable:</strong> It can be installed by users if they find it useful. This could be done independently of—but is not necessarily exclusive of—app stores.</li>\n<li><strong>Linkable:</strong> It is easily accessed (and shared) via a URL.</li>\n</ol>\n<p>Let’s tuck into the installable piece first since this is the bit that really sets a PWA apart from a standard website. Now many might view this as a continuation of the competition between Web and traditional app development. I don’t think of the two as being competitive, so much as being choices. We should choose our development approach based on the needs of our project, team, budget, etc. It’s good to have options and both approaches have their strengths.</p>\n<blockquote>\n<p><del>Web vs. Platform-specific</del><br>\n<ins>Web *or* Platform-specific?<br>\nIt depends.</ins></p>\n</blockquote>\n<p>Often Web tech gets dismissed for not having the capabilities of apps. That’s changing rather rapidly. A visit to <a href=\"https://whatwebcando.today/\">whatwebcando.today</a> will give you a run-down of what your browser supports; you might be surprised with what you’ll learn about your browser’s capabilities. And if the end user experience is really good, does it matter what the underlying technology is?</p>\n<p>Well, it might…</p>\n<p>In the Web vs. apps discussion, time to market is an aspect that isn’t often discussed. With a traditional web and app approach, each platform is typically built atop a core API. The apps are designed and developed independently, using different toolsets and languages and requiring different skills from the development team. And even in instances where they are all created using a single tool, the timeline needs to be padded in order to account for submission to each app store. That can cause delays in getting your product in front of users. It can also delay your delivery of critical updates.</p>\n<figure id=\"fig-2017-05-24-06\" class=\"media-container\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2017-05-24/06.png\" alt=\"\"></p>\n</figure>\n<p>Contrast that with building your software as a web-based product with the characteristics of a PWA. Using this approach, you can build it once and deploy it everywhere… <em><a href=\"https://cloudfour.com/thinks/progressive-web-apps-simply-make-sense/\">even to platforms that don’t support PWAs</a>!</em> And if you opt to submit your app to the various app stores, you could likely get away with a a one-time submission because updates will be seamless from there on out—it is the Web after all.</p>\n<figure id=\"fig-2017-05-24-07\" class=\"media-container\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2017-05-24/07.png\" alt=\"\"></p>\n</figure>\n<p>Now that we’ve talked about install ability—the “app” bit, if you will—let’s circle back to that first principle of Progressive Web Apps: <em>progressive</em>. It must be important, after all it is literally the first word in this approach. “Progressive” in this context refers to <em>progressive enhancement</em>. In case you’re unfamiliar with the idea, I’ll provide a quick analogy; I’m a huge music and movie fan, so we’ll focus on sound for this analogy.</p>\n<p>Back in the early days of recording, we only had a single speaker (or horn, back in the Victrola days) to relay the sound to our ears. Round about the 1930s, modern two-channel stereophonic sound was invented to solve a cinematic problem: in early “talkies” a single channel of sound was delivered through multiple speakers, which sometimes led to a weird situation where a performer would be on one side of the screen, but their voice would be coming from the other side (the speaker near you). Stereo sound allowed the actor’s voice to follow them in a much more natural way. Even with this advancement, though, stereo recordings could still be listened to on a single speaker by combining the channels.</p>\n<p>Over time, stereophonic sound gave way to quadrophonic (or “surround”) sound and we kept adding more channels… and more channels, creating more and more immersive experiences. But even though a recording might sound best in 16.2 or 22.2<sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">1</a></sup> channels of sound, movies, television, and music mastered for complete immersion can still be appreciated on a single, mono bluetooth speaker or on your mobile device (which is basically in mono when you’re viewing it in landscape mode). That is progressive enhancement.</p>\n<figure class=\"video-embed video-embed--16x9\" id=\"figure-2017-05-24-08\">  \n<video class=\"video-embed__video\" src=\"/i/posts/2017-05-24/08.mp4\" controls loop muted></video>\n<figcaption>An animated explanation of progressive enhancement using sound channels.</figcaption>\n</figure>\n<p>Progressive enhancement is concerned with honoring the core purpose of an experience—in software’s case the core purpose of a project and the core tasks a user will want to accomplish using it. The core experience should always be available, regardless of device or browser being used or the capabilities or limitations of that device… or of the user. It doesn’t mean you can’t create a better experience for folks who can benefit from that, but you never do that to the exclusion of your users.</p>\n<p>And yes, that means having an experience that works when JavaScript doesn’t. But that’s a whole other talk…</p>\n<p>With progressive enhancement, we build the baseline experience and then enhance it as we are able to. In practical terms, progressive enhancement ensures people can use your product, regardless of</p>\n<ul>\n<li>Unsupported browser and/or device features Network issues that block or delay important assets,</li>\n<li>Browser plug-ins that interfere with JavaScript execution,</li>\n<li>3rd party code that interferes with JavaScript execution.</li>\n<li>Proxy browsers that optimize/adjust your code,</li>\n<li>Your users requiring alternate input methods or assistive tech,</li>\n<li>etc.</li>\n</ul>\n<figure id=\"fig-2017-05-24-09\" class=\"media-container\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2017-05-24/09.png\" alt=\"\"></p>\n<figcaption>A chart plotting capabilities against experience, showing a steady improvement in experience as the number of capabilities increase.</figcaption>\n</figure>\n<p>Let me walk you through a very basic example of progressive enhancement in practice as I think it will illustrate this point.</p>\n<p>Here we have an email input field:</p>\n<pre class=\"language-html\" tabindex=\"0\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>input</span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>email<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">name</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>email<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>email<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">required</span> <span class=\"token attr-name\">aria-required</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>true<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span></code></pre>\n<p>The “email” field type was introduced in HTML5, so older browsers may not support it. Those that don’t will provide the default <code>input</code> type—a text field—to users. That’s totally fine—it’s all we had for more than a dozen years before HTML5 came along! But even if a user’s device does support email fields, it’s implementation may vary. Based on how a browser answers the following questions, users will end up with different experiences:</p>\n<ul>\n<li>Do you support for email input type?</li>\n<li>Do you support the HTML5 form validation algorithm including the email format?</li>\n<li>Do you offer a virtual keyboard?</li>\n</ul>\n<p>Moving on to the <code>required</code> attribute—another HTML5 introduction—some browsers will use it for input validation, some won’t know what to do with it. Those that implement this feature may block form submission if the field is left empty, but some won’t do anything with that info <em>even if they know the field is empty</em>!</p>\n<p>Finally, there’s the <code>aria-required</code> attribute. This is a part of the ARIA (Accessible Rich Internet Applications) spec and is used to inform assistive technology if the field is required. But it’s possible the browser may not support the attribute or that the assistive tech being used may not do anything with that information even if the browser does expose it.</p>\n<p>In terms of experience of this field, it improves incrementally along a path like this:</p>\n<ol>\n<li>Input…</li>\n<li>with required notification to assistive tech…</li>\n<li>with required enforcement…</li>\n<li>with email type validation…</li>\n<li>with speedier entry via virtual keyboard.</li>\n</ol>\n<figure id=\"fig-2017-05-24-10\" class=\"media-container\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2017-05-24/10.png\" alt=\"\"></p>\n</figure>\n<p>Now think about that for a second—this incredible variety of experience is created by one HTML element when you add three specific attributes to it. And the experienced is enhanced—<em>progressively</em>—as the browser’s and operating system’s capabilities increase. Amazing!</p>\n<p>As I mentioned, <span data-quotable>progressive enhancement ensures people can use your product, no matter what</span>. You could just as easily swap in “PWA” for “progressive enhancement” in that statement. After all, PWAs give you network awareness and independence, they can be used to lower the overall cost of using your product for your for users through smart caching, they enable access to platform APIs on certain platforms, and they provide more ways for your product to get discovered (e.g., search, store, links). Those are some impressive progressive enhancement bona fides.</p>\n<p>Additionally, the two technical lynchpins of PWA—Web App Manifest and Service Worker—are ignored if they aren’t supported. Products you build using them <a href=\"https://cloudfour.com/thinks/why-does-the-washington-posts-progressive-web-app-increase-engagement-on-ios/\">will continue to work really well, even in their absence</a>. They are, by definition, progressive enhancements too.</p>\n<p>Now I’ve mentioned Service Worker a few times, so it probably makes sense to do a little sidebar here to explain what Service Workers are. A Service Worker is a proxy spawned by JavaScript that can handle a variety of tasks involving the network. They can</p>\n<ul>\n<li>Manage offline experiences,</li>\n<li>Intercept and respond to or modify network requests,</li>\n<li>Manage caching,</li>\n<li>Receive and handle push notifications, and</li>\n<li>Handle background sync requests.</li>\n</ul>\n<p><em>Note: At this point in the presentation, I passed the mic to my colleague <a href=\"https://twitter.com/boyofgreen\">Jeff Burtoft</a> to give a quick demo of Service Worker in practice.</em></p>\n<h2 id=\"what%E2%80%99s-the-timeline-for-progressive-web-apps-in-windows%3F\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#what%E2%80%99s-the-timeline-for-progressive-web-apps-in-windows%3F\" aria-hidden=\"true\">#</a> What’s the timeline for Progressive Web Apps in Windows?</h2>\n<p>Now that we’ve covered the groundwork of PWAs, I want to discuss where they fit in the Windows ecosystem. As I mentioned earlier, Windows has a history of supporting Web tech, but it even predates Windows 8. Back in Windows 7 we began supporting <a href=\"https://msdn.microsoft.com/en-us/library/gg491738(v=vs.85).aspx\">pinned sites</a>. They enabled developers to customize a sticky tab in the taskbar that provided quick access to key tasks, a customizable browser UI, and more. Then, in Windows 8, packaged apps could be completely written in HTML, CSS, and JavaScript. In Windows 10 we introduced Hosted Web Apps, which enabled your wholly web-based product to be distributed and installed via the Windows Store. And now we are in the process of taking our support of the Web to the next level with Progressive Web Apps.</p>\n<p>In terms of the work necessary to make this happen, the Edge team has already landed <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API\">Fetch API</a> support. Fetch is the powerful successor to <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest\">XMLHttpRequest</a> that is a critical underpinning of Service Worker. As I mentioned, Hosted Web Apps arrived with Windows 10 and they provide a secure, discrete container for Web apps within Windows that will also be used with PWAs. Additionally, <a href=\"https://learn.microsoft.com/en-us/microsoft-edge/webview2/how-to/winrt-from-js\">WinRT</a> provides programmatic access to OS internals like the calendar, contacts, Cortana, and more via JavaScript.</p>\n<p>Our engineering effort around Service Worker kicked off about a year ago and we’re making great progress in bringing PWAs to Edge and Windows. Support for PWAs will become available to Windows Insiders early this summer. Initially, Service Worker, the <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/Cache\">Cache API</a>, and the <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/Push_API\">Push API</a> will be behind a <a href=\"http://www.windowscentral.com/understanding-aboutflags-microsoft-edge\">feature flag</a>.</p>\n<p>Once PWAs are fully supported, they will use the same container technology currently in use for Hosted Web Apps. As I mentioned, it’s an established container with excellent performance and a ton of benefits:</p>\n<ul>\n<li>Standalone Window</li>\n<li>Independent from browser process\n<ul>\n<li>Less overhead</li>\n<li>Isolated cache</li>\n<li>Nearly unlimited storage (indexed DB, localStorage, etc.)</li>\n</ul>\n</li>\n<li>Offline &amp; background processes</li>\n<li>Access to Windows Runtime (WinRT) APIs via JavaScript\n<ul>\n<li>Calendar</li>\n<li>Cortana</li>\n<li>Address Book</li>\n</ul>\n</li>\n</ul>\n<p>On Windows, Progressive Web Apps are essentially Hosted Web Apps, evolved. In fact, you could build your PWA and ship it as an HWA today and when the remainder of the PWA stack lands, it will automatically transform into a full-fledged PWA (another benefit of the Web for distribution).</p>\n<h2 id=\"how-does-a-user-discover-a-progressive-web-app%3F\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#how-does-a-user-discover-a-progressive-web-app%3F\" aria-hidden=\"true\">#</a> How does a user discover a Progressive Web App?</h2>\n<p>Now that we’ve seen how PWAs operate within Windows, I want to take a few minutes to talk about how users will find your PWAs. As part of our initial move to support Progressive Web Apps, we will be enabling users to discover and install them from within the store and in Bing search results.</p>\n<figure id=\"fig-2017-05-24-11\" class=\"media-container\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2017-05-24/11.jpg\" alt=\"\"></p>\n<figcaption>Screenshots of Bing search results and the Windows Store, highlighting how an app might appear in both contexts.</figcaption>\n</figure>\n<p>Now you may be wondering, with all of the awesomeness the Web has to offer, why does it make sense for PWAs to reside in app stores? There are numerous reasons:</p>\n<ol>\n<li>It puts PWAs on equal footing with traditional apps.</li>\n<li>Stores provide an alternate means of discovery for PWAs.</li>\n<li>Users are generally more comfortable trusting software that has been reviewed for quality and safety.</li>\n<li>Developers can get more insight into their users through reviews and ratings as well as analytics concerning installs, uninstalls, shares, and performance.</li>\n<li>Having a store where users download software also reduces the cognitive overhead of tracking multiple sources for installing apps.</li>\n</ol>\n<p>PWAs can get into the Windows Store in one of two ways. The first is through active submission. Using a tool like the open source utility <a href=\"http://www.pwabuilder.com/\">PWA Builder</a>, you can generate the necessary app wrappers used by the various app stores and manually submit your PWA.</p>\n<p><em>Note: I invited Jeff back up on stage to walk through building a PWA and submitting it to the Windows Store using PWA Builder.</em></p>\n<p>Obviously we want Windows users to have access to as many quality PWAs as possible, but we recognize that not all development teams have the time to submit and maintain their apps in the Store. To address this, we’ve developed an approach to enable their apps to be easily discovered in the Store too. For lack of a better term, we’re currently calling this process “passive ingestion”.</p>\n<figure id=\"fig-2017-05-24-12\" class=\"media-container\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2017-05-24/12.png\" alt=\"\"></p>\n</figure>\n<p>We are already using the Bing Crawler to identify PWAs on the Web for our PWA research. The Web App Manifest is a proactive signal from developers that a given website should be considered an app; we’re listening to that signal and evaluating those sites as candidates for the Store. Once we identify quality PWAs, we’ll automatically generate the APPX wrapper format used by the Windows Store and assemble a Store entry based on metadata about the app provided in the Web App Manifest.</p>\n<p>We completely understand that some of you may not want your products automatically added to the Store and we respect that.\nBy adding these 2 lines to your site’s <a href=\"http://www.robotstxt.org/robotstxt.html\"><code>robots.txt</code> file</a>, the Bing Crawler will ignore your Web App Manifest, opting your site out of this process:</p>\n<pre class=\"language-txt\" tabindex=\"0\"><code class=\"language-txt\">User-agent: bingbot\nDisallow: /manifest.json</code></pre>\n<p>We are working on a set of criteria that will help us separate quality PWAs from sites that simply appear PWA-like. It’s still early days, but our consideration of what constitutes a “quality” PWA hinges on the following:</p>\n<ul>\n<li><strong>Does this site have a Web App Manifest?</strong> In our initial crawl of sites looking for PWAs, we discovered over 1.5 million manifests across 800k domains. Looking at a selection of these sites, we discovered that not all are good candidates for ingestion. Some aren’t PWAs at all, others have a boilerplate manifest generated by tools like favicon generators.</li>\n<li><strong>Does the Web App Manifest suggest quality?</strong> We will be looking for non-boilerplate manifests that include a name, description, and at least one icon that is larger than 192px square.</li>\n<li><strong>Is the site secure?</strong> At this point, we are only looking for HTTPS, we aren’t evaluating <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP\">CSP</a> or other protections.</li>\n<li><strong>Does the site have a valid Service Worker?</strong> <a href=\"https://serviceworke.rs/\">Mozilla has a bunch of recipes</a> if you are looking for somewhere to start.</li>\n<li><strong>Is the site popular?</strong> We will prioritize sites that rank highly on <a href=\"http://www.alexa.com/topsites\">Alexa</a>, <a href=\"https://www.quantcast.com/top-sites\">Quantcast</a>, and other “top sites” lists.</li>\n<li><strong>Does the site pass automated testing for quality?</strong> There are a number of tools out there for this, including our <a href=\"https://developer.microsoft.com/en-us/microsoft-edge/tools/staticscan/\">Site Scanner</a>, <a href=\"https://developers.google.com/web/tools/lighthouse/\">Lighthouse</a>, <a href=\"https://www.deque.com/products/axe/\">aXe</a>, and more.</li>\n<li><strong>Is the app content free?</strong> There are certainly ways to charge for apps and content in the Windows Store, but we won’t passively ingest any sites that require a licensing fee or subscription. You’ll be able to submit those manually though.</li>\n<li><strong>Does the app pass manual review?</strong> PWAs will need to meet the standards of the Windows Store, just like any other app. We will not ingest apps that violate laws or Store policies.</li>\n</ul>\n<p>Once in the Store, we’ll notify developers of their draft Store entry and they will be able to claim their apps to take complete control of their Store presence. Regardless, whether they got their by passive ingestion or my manual submission, the Web App Manifest will provide the basic set of information used for the app in the Store: name, description, icons, and screenshots. We’re also actively working with others in the W3C to introduce support for <a href=\"https://github.com/w3c/manifest/issues/569\">app categories</a> and <a href=\"https://github.com/w3c/manifest/issues/523\">IARC ratings</a>.</p>\n<p>PWAs will appear alongside other apps in the Store, with no differentiation. From a users’ perspective, a PWA will just be another app. They will install just like any other app. They will have settings just like any other app. They will uninstall just like any other app. They will also be shareable via URL or the Store. PWAs will be first-class apps on Windows.</p>\n<hr>\n<p>Phew… that was a lot to take in. At this point, you might have some questions. Here are a few I imagine you’re wrestling with.</p>\n<p><strong>Should I forget everything I know and start building a Progressive Web App?</strong></p>\n<p><em>No.</em> Progressive Web Apps are just one more way you can build a high-quality app experience.</p>\n<p><strong>Will Microsoft drop support for my favorite programming language in favor of Progressive Web Apps?</strong></p>\n<p><em>No.</em> We are committed to supporting a breadth of language options when it comes to developing apps.</p>\n<p><strong>Are Progressive Web Apps the right choice for my project?</strong></p>\n<p><em>Maybe.</em> When evaluating app development in relation to Progressive Web Apps, here are some of the questions I recommend asking…</p>\n<ul>\n<li>Are there features the Web can’t offer that are critical to the success of this product?</li>\n<li>What is the total cost (time and money) of building and maintaining each platform-specific app?</li>\n<li>What are the strengths of my dev team? <em>or</em> How easy will it be to assemble a new team with the necessary skills to build each app as opposed to a PWA?</li>\n<li>How critical will immediate app updates (e.g., adding new security features) be?</li>\n</ul>\n<p>In other words, the choice between PWA and a platform-specific app should be evaluated on a case-by-case basis. For example…</p>\n<ul>\n<li>If you are looking to craft an experience that takes full advantage of each platform you release it on and you want to agonize over every UX detail in order to differentiate your product… an app <em>might</em> be the best choice for you.</li>\n<li>If you are maintaining a product on multiple platforms in addition to the Web and they are all largely the same in terms of look &amp; feel and capabilities, it may make more sense to focus all of your efforts on the Web version and go PWA.</li>\n<li>If you are planning a brand new product and the Web provides all of the features you need (especially when you also consider the additional APIs provided via the host OS), building a PWA is probably going to be a faster, more cost-effective option.</li>\n</ul>\n<p><strong>Should I consider Progressive Web Apps as a solid option when developing software for Windows?</strong></p>\n<p><em>Definitely.</em></p>\n<p>You probably have more questions. I’ll do my best to answer them in the comments.</p>\n<h2 id=\"slides\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#slides\" aria-hidden=\"true\">#</a> Slides</h2>\n<p><a href=\"https://www.slideshare.net/AaronGustafson/progressive-web-apps-and-the-windows-ecosystem-build-2017\">Slides from this talk</a> are available on <a href=\"https://www.slideshare.net\">Slideshare</a>.</p>\n<figure class=\"video-embed video-embed--16x9\" id=\"figure-2017-05-24-13\">  \n<iframe class=\"video-embed__video\" src=\"https://www.slideshare.net/slideshow/embed_code/key/InI5w0bH4JxCwW\" frameborder=\"0\"></iframe>\n</figure>\n<h2 id=\"video\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#video\" aria-hidden=\"true\">#</a> Video</h2>\n<p><a href=\"https://channel9.msdn.com/Events/Build/2017/B8075\">A video recording of this presentation</a> (including Jeff’s demos) is available on <a href=\"https://channel9.msdn.com\">Channel 9</a>.</p>\n<figure class=\"video-embed video-embed--16x9\" id=\"figure-2017-05-24-14\">  \n<iframe src=\"https://channel9.msdn.com/Events/Build/2017/B8075/player\" width=\"900\" height=\"540\" allowFullScreen frameBorder=\"0\"></iframe>\n</figure>\n<p><em>Note: I no longer use “native” in the context of apps and platforms, but it remains in quoted material.</em></p>\n<hr class=\"footnotes-sep\">\n<section class=\"footnotes\">\n<h4 class=\"hidden\">Footnotes</h4>\n<ol class=\"footnotes-list\">\n<li id=\"fn1\" class=\"footnote-item\"><p>Crazy as it sounds, 22.2 is actually the standard used by Ultra-High Definition (UHD) television. <a href=\"#fnref1\" class=\"footnote-backref\">↩︎</a></p>\n</li>\n</ol>\n</section>\n","url":"https://www.aaron-gustafson.com/notebook/progressive-web-apps-and-the-windows-ecosystem/","tags":["progressive web apps","progressive enhancement","Windows","Microsoft","presentations"],"date_published":"2017-05-24T15:13:24Z"},{"id":"https://www.aaron-gustafson.com/notebook/learn-from-the-past-enhance-for-the-future/","title":"✍🏻 Learn from the Past, Enhance for the Future","summary":"<p><em>I had the great pleasure of delivering the closing keynote for the first EnhanceConf. I wanted to talk about voice and the future of “headless” user interfaces. Here’s what I had to say.</em></p>","content_html":"<p><em>I had the great pleasure of delivering the closing keynote for the first EnhanceConf. I wanted to talk about voice and the future of “headless” user interfaces. Here’s what I had to say.</em></p>\n<hr>\n<p>Early last year, <a href=\"/notebook/how-to-apply-progressive-enhancement-when-javascript-seems-like-a-requirement/\">a cry for help on Stack Overflow drew my attention</a>:</p>\n<blockquote>\n<p>I’ve been trying to make my site … work fully without JavaScript, however, I’ve found myself in situations where I can’t honestly think how I would do some features without it.</p>\n</blockquote>\n<p>The submitter, JamHam, is certainly not alone in feeling this way. The ways we build websites change all the time. When I started out, it was pretty simple: you had HTML. Lots and lots of HTML. We also had Java applets, then Shockwave and Flash. Then we got some very basic stylesheet support. Then JavaScript.</p>\n<p>As the years pressed on, the three major technologies underpinning the Web—HTML, CSS, and JavaScript—evolved and became even more powerful.</p>\n<p>Things coalesced for a while in the early oughts before Jesse James Garrett re-christened a relatively obscure Microsoft creation, <code>XMLHttpRequest</code>, “AJAX” and set countless designers hearts aflutter with the promise of banishing the page refresh. At the heart of this revolution was JavaScript, and companies began betting their entire Web presence on its availability. Most learned that wasn’t such a good idea and began using it as an enhancement to the experience rather than a requirement.</p>\n<p>After Ajax, there was HTML5, CSS3, and a host of new JavaScript APIs… the JavaScript frameworks—Angular, Knockout, Backbone, Ember, React… The ways we can create Web products just keep changing; sometimes slowly, but more often than not at such a speedy clip it leaves my head spinning.</p>\n<p>The one thing I’ve learned however, being an “old man” in Web terms, is that web design is cyclical, just like everything else. <strong>The challenges we face building web products today are not new challenges.</strong> Moreover, the lessons we learned building similar products in the “Web 1.0” days pay dividends today and will continue to do so in the future.</p>\n<p>When I started out on the Web, I had a 28.8 <abbr aria-label=\"kilobits per second\">kbit/s</abbr> modem, but still had to support users on 14.4 <abbr aria-label=\"kilobits per second\">kbit/s</abbr> connections. That’s half the speed I was used to running at. That may have been 20 years ago, but the lessons I learned about streamlining my HTML, optimizing images, and minimizing downloads has helped me immeasurably when dealing with high-latency mobile networks and excruciatingly slow “broadband” connections.</p>\n<p>(I’m looking at you, every hotel ever.)</p>\n<p>When I started out on the Web, I had an 800x600 monitor, but still had to support 640x480 screen resolutions. I learned the importance of prioritizing content long before media queries and flexbox enabled us to adapt our layouts on the fly. And while our computer screens keep getting bigger, mobile devices and wearables present the very same challenges I was tackling with 640x480, but in even tighter confines.</p>\n<figure id=\"figure-2016-03-04-01\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2016-03-04/01.gif\" alt=\"Screen sizes changing over time.\"></p>\n</figure>\n<p>When I started out on the Web, there was no JavaScript. All calculations, data processing, and dynamic functionality had to be handled by the server. I learned how to process web forms in Perl, later trading in my CGI scripts for PHP, Ruby, and Python. And while the vast majority of our users today have JavaScript baked into their browsers, I still rely on server-side fallbacks because I recognize that we don’t control the execution environment on the open Web.</p>\n<blockquote>\n<p>The Web is the most hostile software engineering environment imaginable.<br>— Douglas Crockford</p>\n</blockquote>\n<p>You’re a savvy bunch, so I’m sure none of this is news to you, but I wanted to set the stage for what I’m really here to talk about. There’s a new cycle about to hit us and chances are you might not be thinking about it yet: Voice.</p>\n<h2 id=\"i%3A-the-headless-ui\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#i%3A-the-headless-ui\" aria-hidden=\"true\">#</a> I: The Headless UI</h2>\n<p>Science fiction has often been a strong predictor of our technological future. HAL 9000 from <em>2001: A Space Odyssey</em> is probably the most (in)famous example of a computer that interacts with its users largely via voice. As a concept, the “talking computer” has appeared time and time again in space-age fiction—everything from <em>Red Dwarf</em> to <em>Interstellar</em>.</p>\n<p>To function in the real world like they do on TV and in the movies, computers need two capabilities: Natural language processing (to understand what we say) and speech synthesis (to communicate, aurally, back to us).</p>\n<figure id=\"figure-2016-03-04-02\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2016-03-04/02.gif\" alt=\"Visual of a human and a computer conversing.\"></p>\n</figure>\n<p>Natural language processing has its roots in the 1950s, but many of these early speech models were limited because they were built around a series of hard-coded rules that the computers followed. In the 1980s, however, machine learning and real-time statistical analysis became possible.</p>\n<p>As hardware capabilities continued to improve and computers became more powerful, they got better at recognizing the words we were saying to them. Eventually, and with enough processing power, they also began to assign meaning to words and could react accordingly.</p>\n<p>As the years marched on, the overhead required to enable our projects to listen to our users has dropped significantly.</p>\n<p>Listening is great, but true communication is bidirectional. Humans have been experimenting with speech synthesis since the late 1700s, but it wasn’t until the 1980s that we got a decent result though. By the 1990s, reasonably intelligible text-to-speech software was being rolled out alongside most operating systems as a core component of their assistive technology offerings: The “screen reader”. At present, screen readers are probably the best indicator of what the future of voice interaction will sound like.</p>\n<p>When combined, the ability of a computer to listen and respond gave rise to virtual personal assistants like Siri, Cortana, Alexa, and more.</p>\n<p>Over time, our customers will become more accustomed to and reliant on voice-based interactions with their computers and the Web. Enabling them to complete critical tasks without a visual user interface will be crucial for the long-term success of our Web-based products.</p>\n<p>So how do you design a “headless” UI? That’s easy: You design the conversation.</p>\n<h2 id=\"ii%3A-interface-is-conversation\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#ii%3A-interface-is-conversation\" aria-hidden=\"true\">#</a> II: Interface is Conversation</h2>\n<p>Let’s take a trip back in time to one of the earliest computer games: Zork. Zork was written between 1977 and 1979. It’s a text-based adventure game that operates a lot like a game of <em>Dungeons &amp; Dragons</em>—with the program serving the role of gamemaster.</p>\n<blockquote>\n<p>West of House<br> You are standing in an open field west of a white house, with a boarded front door.<br> There is a small mailbox here.<br><br>&gt; <strong>open mailbox</strong></p>\n</blockquote>\n<p>As you move from location to location throughout the game, the program describes the environment and notes objects and people you can interact with. You type what you want to do and the program tells you the results of your actions.</p>\n<p>As this was the early days of computer gaming, you might think Zork’s interactions would be simple noun-verb combinations—“kill troll”—but Zork was more sophisticated than that. Its parser was could understand far more complex commands like “hit the troll with the Elvish sword”. This made the experience far more natural, as if you were playing a table top game with friends.</p>\n<p>Whether Zork or a webpage, <strong>every interface is a conversation</strong>—we engage our users directly in an effort to inform them, entertain them, or persuade them to act in a particular way. How this conversation goes directly affects the experience our users have.</p>\n<p>Let’s look at a few web page and interface component types to identify the kinds of conversations we trying to have with our users in each:</p>\n<ul>\n<li><strong>Homepage</strong><br> We’ve just met and I’m explaining what you can do on my site (and, in some cases, why it matters).</li>\n<li><strong>Contact Form</strong><br> You’re asking or telling me something. I want to help you. It’s common courtesy for me to let you know how long it may take me to get back to you with a response; and for me to abide by that.</li>\n<li><strong>Product Page</strong><br> I’m explaining what a particular object or service is, what it does, and how it will benefit you. I should “show” you why something is great rather than “tell”-ing you that it is because you’re immune to salesy <abbr aria-label=\"bullshit\">BS</abbr>.</li>\n<li><strong>Status Update</strong><br> I may prompt you with a question, but I’m here to listen. The floor is yours. (But I’m probably mining what you say for data so I can market to you later.)</li>\n</ul>\n<p>When we approach interfaces as conversations, we humanize our products and improve our users’ experiences. When we don’t, things can fall apart quickly…</p>\n<p>Over the 2011 holidays, Facebook users were uploading photos like crazy. In the span of a few days, Facebook processed more photo uploads than are contained in the entirety of Flickr. Seriously, that’s a lot of photos.</p>\n<p>One unintended consequence of this deluge of photo uploads was a significant uptick in people asking Facebook to remove specific ones. Facebook received millions of these “photo reports”, but they made no sense: Moms holding babies reported for harassment, pictures of puppies reported for hate speech, and so on. Roughly 97% of these photo reports were dramatically mis-categorized.</p>\n<p>Facebook’s engineers reached out to some of the users who had reported these photos to get a bit more background regarding their submissions. At the time Facebook’s photo reporting interface provided a list of reasons users could choose from if they wanted a photo removed, but, as Facebook soon discovered, many of the reports were made because users didn’t want the photo posted for reasons other than those provided. In some cases, it was because they didn’t like how they looked in the photo. In others, it was because the photo was of an ex-partner or even a beloved pet they’d shared with an ex-boyfriend or ex-girlfriend.</p>\n<p>The existing photo reporting tool had not done a good job of accounting for these more personal reasons for wanting a photo removed, so the Facebook engineers went to work. They added a step that asked <em>How does this photo make you feel?</em> The options were simple:</p>\n<ul>\n<li>Embarrassing</li>\n<li>Upsetting</li>\n<li>Saddening</li>\n<li>Bad Photo</li>\n<li>Other</li>\n</ul>\n<p>The “other” option also provided a free-response text field to fill in.</p>\n<p>With this system in place, they found that 50% of reporters who answered the new question chose one of the provided options. That was pretty helpful, but there was still a problem: 34% of the “other” respondents were writing “It’s embarrassing” in the blank rather than choosing the “embarrassing” option already provided.</p>\n<p>What the Facebook team realized was that people were not identifying with the “embarrassing” text (or may have even thought it was referring to them, rather than assuming an implied “It’s”). A subtle shift in language was needed, so they changed the label to <em>Please describe the photo</em> and they updated the options to mirror how people actually talk:</p>\n<ul>\n<li>It’s embarrassing</li>\n<li>It’s a bad photo of me</li>\n<li>It makes me sad</li>\n</ul>\n<p>With this subtle change, they were able to increase the percentage of photo reporters who chose one of the options provided to a whopping 78%.</p>\n<p>Words matter. Even in something as simple and banal as a form, the words we choose set the tone for our users’ experiences and often have an affect on what they do… or fail to do.</p>\n<p>The text of our interfaces—especially form labels and responses—is just one small part of the content picture, but it’s a perfect example of how easy it can be to overlook conversation in our interfaces. There are many other types of content like product descriptions, marketing copy, legal statements, visualizations, video, audio, and more. Content is where experience begins. It’s the core that we seek to progressively enhance. It’s also the foundation upon which the voice-based experiences of the future will be based.</p>\n<p>The more time and consideration we put into how our interfaces read, the better-positioned we will be to succeed in the future of headless UIs. Once stripped of its beautifully-crafted, responsive layout, engaging animations, and artful illustrations, does your site hold up?</p>\n<hr>\n<p>Back in 2006, <a href=\"https://css-naked-day.github.io/\">Dustin Diaz proposed CSS Naked Day</a>—a day when sites could be stripped of their visual design to showcase their content, semantics, and organization.</p>\n<blockquote>\n<p>It will be a test case to see how usable your website is to others without a “design”.<br> —Dustin Diaz</p>\n</blockquote>\n<p>“Design”, as Dustin was refering to it, is the visual design of a site, but design is not solely concerned with visual representations. Diving into etymology for a moment here, <em>design</em> comes from the Latin <i lang=\"la\">designare</i> meaning “to mark out or indicate”. The purpose of design is not to make something pretty, it’s to clarify.</p>\n<p>If the words we use form the basis of the conversations we have with our users, the semantics we employ clarify that meaning. Choosing elements with semantic value enriches our content, illuminating the meaning and intent of our words in order to overcome the limitations of text and bring it up to par with spoken language. After all, they may look the same visually, but there’s a big difference between these two statements:</p>\n<pre class=\"language-html\" tabindex=\"0\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>p</span><span class=\"token punctuation\">></span></span>I <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>em</span><span class=\"token punctuation\">></span></span>really<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>em</span><span class=\"token punctuation\">></span></span> want to be your friend.<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>p</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>p</span><span class=\"token punctuation\">></span></span>I <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>i</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>sarcasm<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>really<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>i</span><span class=\"token punctuation\">></span></span> want to be your friend.<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>p</span><span class=\"token punctuation\">></span></span></code></pre>\n<p>Beyond using markup to clarify the intent of the words we write, we can use it to spell out relationships that are often represented visually. Dustin described one way we do this as part of the impetus for CSS Naked Day (emphasis mine):</p>\n<blockquote>\n<p>In the spirit of promoting Web Standards along with good semantic markup and <em>proper hierarchy structures</em></p>\n</blockquote>\n<p>By “proper hierarchy”, Dustin is talking about the document outline. A document outline is created through use of heading elements (<code>h1</code>–<code>h6</code>). It provides a easy way to review the organization of our web pages and validate our source order decisions. It also helps us ensure the flow works, which is incredibly important in any conversation. It helps us get to the point, streamline our content, and remove distractions… all of which are a sign of respect to our users.</p>\n<p>None of this is news, of course, content strategists have been recommending that we streamline our content since the dawn of the Web. Sadly, many folks didn’t heed that advice until they were forced to confront the often infuriating world of mobile. Smaller screens required focused content.</p>\n<p>When Luke Wroblewski coined “mobile first”, he told us to focus on the core purpose each and every page. He was, in essence, telling us to focus on the conversation we are having with our users. This approach pays huge dividends on small screens, but when it comes to voice-based interactions, “the page” doesn’t really exist. Experience is the sum of each individual interaction. As part of their <a href=\"https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit\">Alexa Skills Kit</a>, <a href=\"https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/alexa-skills-kit-voice-design-best-practices\">Amazon offers a ton of recommendations for designing for voice</a>, many of which happen to be equally useful for sighted users.</p>\n<h3 id=\"write-for-people\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#write-for-people\" aria-hidden=\"true\">#</a> Write for People</h3>\n<p>We don’t author content for ourselves. We write for others. If what we write frustrated or alienates our users, we’ve failed at our job. In their profoundly helpful book <a href=\"http://www.amazon.com/gp/product/0321988191/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0321988191&amp;linkCode=as2&amp;tag=easydesign-20&amp;linkId=5INOUNG72ODCWZQV\"><cite>Nicely Said</cite></a>, Nicole Fenton and Kate Kiefer Lee offer numerous suggestions for how to write with the reader in mind:</p>\n<blockquote>\n<ul>\n<li>Be clear.</li>\n</ul>\n</blockquote>\n<ul>\n<li>Be concise.</li>\n<li>Be honest.</li>\n<li>Be considerate.</li>\n<li>Write how you speak.</li>\n</ul>\n<p>They also make the recommendation that you read your work aloud. As we head into the world of voice-based interactions, that’s beta testing!</p>\n<h3 id=\"avoid-technical-and-legal-jargon\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#avoid-technical-and-legal-jargon\" aria-hidden=\"true\">#</a> Avoid Technical and Legal Jargon</h3>\n<p>When we are writing for our readers, we need to be familiar with their level of domain knowledge so we don’t frustrate or alienate them. For example, if you track error codes for issues on your site, send them to <em>your developers</em>, but never present them to a user.</p>\n<figure id=\"figure-2016-03-04-03\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2016-03-04/03.png\" alt=\"\"></p>\n</figure>\n<p>Similarly, we should avoid legalese and write in plain language. Medium has done a great job of this with <a href=\"https://medium.com/policy/medium-terms-of-service-9db0094a1e0f#.mgexdk816\">their Terms of Service</a>.</p>\n<figure id=\"figure-2016-03-04-04\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2016-03-04/04.png\" alt=\"\"></p>\n</figure>\n<h3 id=\"when-requesting-feedback%2C-make-it-clear-that-the-user-needs-to-respond\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#when-requesting-feedback%2C-make-it-clear-that-the-user-needs-to-respond\" aria-hidden=\"true\">#</a> <strong>When Requesting Feedback, Make It Clear that the User Needs to Respond</strong></h3>\n<p>In perhaps the most common form example, consider the label “First Name”. It’s not terribly conversational and doesn’t beg for a response. Labels like “What is your first name?” make it clear the user should respond.</p>\n<pre class=\"language-html\" tabindex=\"0\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>label</span> <span class=\"token attr-name\">for</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>first_name<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>What’s your first name?<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>label</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>input</span> <span class=\"token attr-name\">name</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>first_name<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>first_name<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span></code></pre>\n<figure id=\"figure-2016-03-04-05\">\n<audio controls>\n<source src=\"/i/posts/2016-03-04/05.ogg\" type='audio/ogg; codecs=\"vorbis\"'>\n<source src=\"/i/posts/2016-03-04/05.mp3\" type=\"audio/mpeg;\">\n<p>Listen to this <a download href=\"/i/posts/2016-03-04/05.mp3\">as an MP3</a> or <a download href=\"/i/posts/2016-03-04/05.ogg\">as an OGG</a> audio file.</p>\n</audio>\n</figure>\n<p>Similarly, when there’s an error, notify them of the error and, if possible, give them some clues on how to fix it.</p>\n<pre class=\"language-html\" tabindex=\"0\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>label</span> <span class=\"token attr-name\">for</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>first_name<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>What’s your first name?<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>label</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>input</span> <span class=\"token attr-name\">name</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>first_name<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>first_name<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">aria-describedby</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>first_name-error<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>em</span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>first_name-error<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n  Without your first name, I won’t know how to address you. Could you please\n  provide it?\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>em</span><span class=\"token punctuation\">></span></span></code></pre>\n<figure id=\"figure-2016-03-04-06\">\n<audio controls>\n<source src=\"/i/posts/2016-03-04/06.ogg\" type='audio/ogg; codecs=\"vorbis\"'>\n<source src=\"/i/posts/2016-03-04/06.mp3\" type='audio/mpeg; codecs=\"mp3\"'>\n<p>Listen to this <a download href=\"/i/posts/2016-03-04/06.mp3\">as an MP3</a> or <a download href=\"/i/posts/2016-03-04/06.ogg\">as an OGG</a> audio file.</p>\n</audio>\n</figure>\n<h3 id=\"when-asking-a-user-to-choose%2C-clearly-present-the-options\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#when-asking-a-user-to-choose%2C-clearly-present-the-options\" aria-hidden=\"true\">#</a> <strong>When Asking a User to Choose, Clearly Present the Options</strong></h3>\n<p>This comes into play often when dealing with forms. Ensuring radio and checkbox controls are properly associated with their labels is critical.</p>\n<pre class=\"language-html\" tabindex=\"0\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>input</span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>radio<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">name</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>agree<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>agree_yes<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">value</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>yes<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>label</span> <span class=\"token attr-name\">for</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>agree_yes<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>Yes<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>label</span><span class=\"token punctuation\">></span></span></code></pre>\n<p>You can also use the <code>fieldset</code> and <code>legend</code> elements to group the related controls, but be sure to make the <code>legend</code> focusable or associate it with the first focusable form control in order to ensure the question is read out.</p>\n<pre class=\"language-html\" tabindex=\"0\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>fieldset</span><span class=\"token punctuation\">></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>legend</span> <span class=\"token attr-name\">tabindex</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>0<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n    Do you agree to the terms of service for this site?\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>legend</span><span class=\"token punctuation\">></span></span>\n\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>input</span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>radio<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">name</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>agree<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>agree_yes<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">value</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>yes<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>label</span> <span class=\"token attr-name\">for</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>agree_yes<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>Yes<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>label</span><span class=\"token punctuation\">></span></span>\n\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>input</span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>radio<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">name</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>agree<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>agree_no<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">value</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>no<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>label</span> <span class=\"token attr-name\">for</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>agree_no<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>No<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>label</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>fieldset</span><span class=\"token punctuation\">></span></span></code></pre>\n<figure id=\"figure-2016-03-04-07\">\n<audio controls>\n<source src=\"/i/posts/2016-03-04/07.ogg\" type='audio/ogg; codecs=\"vorbis\"'>\n<source src=\"/i/posts/2016-03-04/07.mp3\" type='audio/mpeg; codecs=\"mp3\"'>\n<p>Listen to this <a download href=\"/i/posts/2016-03-04/07.mp3\">as an MP3</a> or <a download href=\"/i/posts/2016-03-04/07.ogg\">as an OGG</a> audio file.</p>\n</audio>\n</figure>\n<p>We should strive for the same sort of clarity when presenting navigation options. The HTML5 <code>nav</code> element enables us to semantically identify an area of the page being used for navigation. It does not, however, identify the <code>nav</code> element as being for navigation when encountered naturally in the flow of the document. For that reason, it can be useful to provide an textual introduction to the section, even if you choose to visibly hide it. You might even consider expanding the text of your navigation items to provide additional context.</p>\n<pre class=\"language-html\" tabindex=\"0\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>nav</span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>nav<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">tabindex</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>0<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">aria-labelledby</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>nav-title<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>h1</span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>nav-title<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>hidden<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>Here’s what you can find on this site:<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>h1</span><span class=\"token punctuation\">></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>ul</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>li</span><span class=\"token punctuation\">></span></span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>a</span> <span class=\"token attr-name\">href</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>/about/<span class=\"token punctuation\">\"</span></span>\n        <span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>b</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>hidden<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>A Bit <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>b</span><span class=\"token punctuation\">></span></span>About<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>b</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>hidden<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span> Me<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>b</span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>a</span>\n      <span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>li</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>li</span><span class=\"token punctuation\">></span></span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>a</span> <span class=\"token attr-name\">href</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>/notebook/<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>b</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>hidden<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>Entries in My <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>b</span><span class=\"token punctuation\">></span></span>Notebook<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>a</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>li</span><span class=\"token punctuation\">></span></span>\n    …\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>ul</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>nav</span><span class=\"token punctuation\">></span></span></code></pre>\n<figure id=\"figure-2016-03-04-08\">\n<audio controls>\n<source src=\"/i/posts/2016-03-04/08.ogg\" type='audio/ogg; codecs=\"vorbis\"'>\n<source src=\"/i/posts/2016-03-04/08.mp3\" type='audio/mpeg; codecs=\"mp3\"'>\n<p>Listen to this <a download href=\"/i/posts/2016-03-04/08.mp3\">as an MP3</a> or <a download href=\"/i/posts/2016-03-04/08.ogg\">as an OGG</a> audio file.</p>\n</audio>\n</figure>\n<h3 id=\"prompts-should-be-short%2C-while-still-being-clear.\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#prompts-should-be-short%2C-while-still-being-clear.\" aria-hidden=\"true\">#</a> Prompts Should be Short, While Still Being Clear.</h3>\n<p>In <a href=\"https://www.stmarys-ca.edu/sites/default/files/attachments/files/On_The_Method_of_Theoretical_Physics.pdf\">a 1933 lecture at Oxford</a>, Albert Einstein famously said</p>\n<blockquote>\n<p>It can scarcely be denied that the supreme goal of all theory is to make the irreducible basic elements as simple and as few as possible without having to surrender the adequate representation of a single datum of experience.</p>\n</blockquote>\n<p>Or, as <a href=\"https://books.google.com/books?id=prDfAFjet9cC&amp;lpg=PR7&amp;ots=PA9rRog4cr&amp;dq=How%20a%20%E2%80%98Difficult%E2%80%99%20Composer%20Gets%20That%20Way&amp;pg=PA230#v=onepage&amp;q&amp;f=false\">Roger Sessions paraphrased it</a></p>\n<blockquote>\n<p>Everything should be as simple as it can be but not simpler.</p>\n</blockquote>\n<p>Clear and concise writing is the hallmark of great content. We need to resist the urge to write for writing’s sake. We write in the service our audience, not for ourselves.</p>\n<p>Government websites are some of the worst offenders in this area. Consider this lovely passage:</p>\n<blockquote>\n<p>Heavy rains throughout most of the State have given an optimistic outlook for lessened fire danger for the rest of the season. However, an abundance of lightning maintains a certain amount of hazard in isolated areas that have not received an excessive amount of rain.</p>\n</blockquote>\n<p>It could be written far more clearly as</p>\n<blockquote>\n<p>Heavy rains throughout most of the State have lessened fire danger for the rest of the season. However, lightning threatens isolated dry areas.</p>\n</blockquote>\n<p>Here in the UK, the Government Digital Service has made great strides overhauling excruciatingly painful content and making it easier to read and understand. One such example is <a href=\"https://gds.blog.gov.uk/2014/07/28/doing-the-hard-work-to-make-things-simple/\">their overhaul of the Accelerated Possession process</a> that allows landlords to evict a tenant.</p>\n<p>The original paper form asked for the address like this</p>\n<blockquote>\n<p>The claimant seeks an order that the defendant(s) give possession of:<br> (If the premises of which you seek possession are part of a building identify the part eg. Flat 3, Rooms 6 and 7)</p>\n</blockquote>\n<p>Before requesting the type of property concerned</p>\n<blockquote>\n<p>(‘the premises’) which is<br> ☐ a dwelling house<br> ☐ part of a dwellinghouse</p>\n</blockquote>\n<figure id=\"figure-2016-03-04-09\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2016-03-04/09.png\" alt=\"\"></p>\n</figure>\n<p>Clear and to the point, right?</p>\n<p>The GDS went to work and streamlined the process in plain language:</p>\n<blockquote>\n<p>What kind of property do you want to take back?<br> ◎ A self-contained house, flat or bedsit<br> ◎ Room or rooms in a property.<br> Tenants may share kitchen or bathroom</p>\n</blockquote>\n<p>Then they allow you to lookup the property or manually enter the address.</p>\n<figure id=\"figure-2016-03-04-10\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2016-03-04/10.png\" alt=\"\"></p>\n</figure>\n<p>While not specifically designed for the future of headless UIs, this form is prepared for their eventuality.</p>\n<h3 id=\"ask-only-necessary-questions\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#ask-only-necessary-questions\" aria-hidden=\"true\">#</a> Ask Only Necessary Questions</h3>\n<p>We show our users respect by respecting their time. Obviously straightforward, brief writing is one way we do that, but another is to reduce the time it takes to complete a task. Many forms are brimming with fields to be filled in. In some cases, the vast majority are purely optional. And while it may be easy to spot the required fields visually, bypassing them in an aural interface can be incredibly difficult.</p>\n<figure id=\"figure-2016-03-04-11\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2016-03-04/11.jpg\" alt=\"\"></p>\n</figure>\n<p>User experience designers have been pushing for simplified forms since… well, as long as I can remember. Users appreciate them, they tend to result in better data, and they also tend to convert better than long forms. And when it comes to voice-based interactions, they will become a necessity. No one is going to want to spend 15 minutes working their way through a 15 question registration form when all that’s required is their email address and for them to choose a password.</p>\n<figure id=\"figure-2016-03-04-12\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2016-03-04/12.jpg\" alt=\"\"></p>\n</figure>\n<p>On a similar note, we should avoid slicing fields into multiple parts if at all possible. For instance, you still see fields like this one, asking for a US phone number, quite often:</p>\n<figure id=\"figure-2016-03-04-13\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2016-03-04/13.png\" alt=\"\"></p>\n</figure>\n<p>When interacting with this construct via voice, a user will be required to supply three separate values. In order to do so, each field would require a label. Even in the States, most developers would only know how to label the first of those three boxes. (They are area code, exchange or central office code, and line number, if you’re interested.)</p>\n<p>HTML5 introduced a host of new field types that consolidate phone numbers, dates, times, and other complex data types into single fields. Use them! As an added bonus, most enforce content validation and formatting rules for you automatically.</p>\n<h3 id=\"present-information-in-consumable-pieces\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#present-information-in-consumable-pieces\" aria-hidden=\"true\">#</a> Present Information in Consumable Pieces</h3>\n<p>Like computers, we humans have a finite amount of “working memory”. The amount of mental resources required to operate an interface is called its “cognitive load”. When the amount of information we need to process exceeds our capacity to handle it, we can miss important details, have trouble concentrating, and become frustrated.</p>\n<p>We deal with cognitive load in GUI design all the time, but in voice-based interactions, there are no visuals to act as signposts and provide reminders about where we are and what we’re doing. This is why it is critical to break complicated tasks down into simpler ones and eliminate excess noise (like non-required fields). We can also reduce cognitive load by chunking search results and other list-type content into small groups, asking the user if they want more before loading and presenting them.</p>\n<blockquote>\n<p>The top seller in the garden department is Repel Lemon Eucalyptus Natural Insect Repellent, 4-Ounce Pump Spray</p>\n<p>Would you like to hear the rest?</p>\n</blockquote>\n<h2 id=\"iii%3A-future-enhancements\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#iii%3A-future-enhancements\" aria-hidden=\"true\">#</a> III: Future Enhancements</h2>\n<p>Paying attention to how our interfaces read is critical to success in the future of voice-based interactions. Thankfully, we already view content as the centerpiece of every progressively enhanced experience. But we can go further.</p>\n<p>Both Microsoft and Amazon have given us the tools to voice-enable our websites beyond the HTML we present. Amazon has chosen to do this via a dedicated JSON API, through which we can “teach” Alexa “skills”. Using this API, you can enable your users to access core site functionality through the Echo, FireTV, or any other device that has integrated the Alexa Voice Service.</p>\n<p>Microsoft has taken a slightly different approach. Using a relatively simple XML format, they have enabled us to teach Cortana new commands that tie directly into our website.</p>\n<pre class=\"language-html\" tabindex=\"0\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>meta</span> <span class=\"token attr-name\">name</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>msapplication-cortanavcd<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">content</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>http://myapp.io/vcd.xml<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span></code></pre>\n<p>All we need to do is include a <code>meta</code> tag pointing to an XML file that details the commands (and variations) and, when a user installs the site as a hosted app, Cortana picks up the new commands automatically. Those commands, when issued, can open a specific page or even kick off JavaScript methods in the target page.</p>\n<pre class=\"language-xml\" tabindex=\"0\"><code class=\"language-xml\"><span class=\"token prolog\">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>VoiceCommands</span> <span class=\"token attr-name\">xmlns</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>http://schemas.microsoft.com/voicecommands/1.2<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>CommandSet</span> <span class=\"token attr-name\"><span class=\"token namespace\">xml:</span>lang</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>en-us<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">Name</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>groupPost<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>CommandPrefix</span><span class=\"token punctuation\">></span></span>Group Post<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>CommandPrefix</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>Example</span><span class=\"token punctuation\">></span></span>Group Post add note<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>Example</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>Command</span> <span class=\"token attr-name\">Name</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>addNote<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>Example</span><span class=\"token punctuation\">></span></span>add a note {message} using group post<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>Example</span><span class=\"token punctuation\">></span></span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>ListenFor</span> <span class=\"token attr-name\">RequireAppName</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>BeforeOrAfterPhrase<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>[please]\n        add a note [that] {noteSubject}<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>ListenFor</span><span class=\"token punctuation\">></span></span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>Feedback</span><span class=\"token punctuation\">></span></span>adding {noteSubject} to Group Post<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>Feedback</span><span class=\"token punctuation\">></span></span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>Navigate</span> <span class=\"token attr-name\">Target</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>/addNote.htm<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">/></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>Command</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>PhraseTopic</span> <span class=\"token attr-name\">Label</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>noteSubject<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">Scenario</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>Dictation<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>PhraseTopic</span><span class=\"token punctuation\">></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>CommandSet</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>VoiceCommands</span><span class=\"token punctuation\">></span></span></code></pre>\n<hr>\n<p>We are just starting to scratch the surface of what’s possible in voice-enabling the Web, but it’s exciting to see how some companies are addressing this opportunity. It’s always interesting when things come full circle and we see how lessons we learned early on in the Web remain applicable, not matter how much or quickly things seem to change. Seeing this pattern repeat time and time again is why I’m so drawn to the philosophy of progressive enhancement; it’s not only concerned with supporting the past… it’s setting us up for success in the future.</p>\n","social_text":"In case you missed it, here’s a written version of my #EnhanceConf talk:","url":"https://www.aaron-gustafson.com/notebook/learn-from-the-past-enhance-for-the-future/","tags":["the future","presentations","accessibility","voice UX"],"date_published":"2016-03-04T22:33:57Z"},{"id":"https://www.aaron-gustafson.com/notebook/future-of-web-design-and-oredev/","title":"✍🏻 Future of Web Design &amp;amp; Øredev","summary":"<p>Between <a href=\"https://web.archive.org/web/20150821084438/https://futureofwebdesign.com/nyc-2015/\">Future of Web Design</a> in New York City and <a href=\"https://web.archive.org/web/http://lanyrd.com/2015/oredev/\">Øredev</a> in Malmö, Sweden, I was a busy boy last week. I delivered three talks and a workshop in total and am a bit exhausted.</p>","content_html":"<p>Between <a href=\"https://web.archive.org/web/20150821084438/https://futureofwebdesign.com/nyc-2015/\">Future of Web Design</a> in New York City and <a href=\"https://web.archive.org/web/http://lanyrd.com/2015/oredev/\">Øredev</a> in Malmö, Sweden, I was a busy boy last week. I delivered three talks and a workshop in total and am a bit exhausted.</p>\n<p>Øredev has already posted videos of my talks to their Vimeo account, so I’ve included links to them here along with links to the slide decks, so you can download them if you’d like:</p>\n<h2 id=\"falling-in-love-with-forms\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#falling-in-love-with-forms\" aria-hidden=\"true\">#</a> Falling in Love with Forms</h2>\n<p><a href=\"https://vimeo.com/144870932\">https://vimeo.com/144870932</a></p>\n<p>This one’s a survey of current forms best practices. This one’s a bit abbreviated from my previous iterations as the talks were only 40 minutes at FoWD and Øredev, but I distilled out the most important bits.</p>\n<ul>\n<li><strong>Slides</strong>: <a href=\"http://www.slideshare.net/AaronGustafson/falling-in-love-with-forms-redev-2015\">http://www.slideshare.net/AaronGustafson/falling-in-love-with-forms-redev-2015</a></li>\n<li><strong>Video</strong>: <a href=\"https://vimeo.com/144870932\">https://vimeo.com/144870932</a></li>\n</ul>\n<h2 id=\"there-are-no-%E2%80%9Cbuts%E2%80%9D-in-progressive-enhancement\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#there-are-no-%E2%80%9Cbuts%E2%80%9D-in-progressive-enhancement\" aria-hidden=\"true\">#</a> There Are No “Buts” in Progressive Enhancement</h2>\n<p><a href=\"https://vimeo.com/144979022\">https://vimeo.com/144979022</a></p>\n<p>Wherein I dispel the myth that progressive enhancement has no place in news, healthcare, education, financial, commerce, and single-page app websites. Lots of goodies in here.</p>\n<p>This version is an updated 40-minute distillation of the hour and a half talk <a href=\"https://www.linkedin.com/in/jennlukas/\">Jenn Lukas</a> and I gave at <a href=\"https://uxim15.uie.com/\">UX Immersion Mobile</a> back in April. The video of that one is available from <a href=\"https://aycl.uie.com/\">UIE’s All You Can Learn</a>. Jenn designed the slides and <a href=\"http://cargocollective.com/mattsutter\">Matt Sutter</a> did the wonderful illustrations.</p>\n<ul>\n<li><strong>Slides</strong>: <a href=\"http://www.slideshare.net/AaronGustafson/there-are-no-buts-in-progressive-enhancement-redev-2015\">http://www.slideshare.net/AaronGustafson/there-are-no-buts-in-progressive-enhancement-redev-2015</a></li>\n<li><strong>Video</strong>: <a href=\"https://vimeo.com/144979022\">https://vimeo.com/144979022</a></li>\n</ul>\n","url":"https://www.aaron-gustafson.com/notebook/future-of-web-design-and-oredev/","tags":["forms","progressive enhancement","presentations","web design"],"date_published":"2015-11-09T20:17:15Z"},{"id":"https://www.aaron-gustafson.com/notebook/my-trip-to-18f/","title":"✍🏻 My trip to 18F","summary":"<p>The fine folks at 18F just posted <a href=\"https://18f.gsa.gov/2015/08/26/aaron-gustafson-beyond-responsive-design/\">a beautiful write-up of the talk on progressive enhancement that I delivered</a> as part of the <a href=\"https://18f.gsa.gov/tags/speaker-series/\">18F Design Speaker Series</a>. I thoroughly enjoyed talking to the folks that came. They presented some interesting challenges and asked pressing questions—exactly the kind of engagement I love.</p>","content_html":"<p>The fine folks at 18F just posted <a href=\"https://18f.gsa.gov/2015/08/26/aaron-gustafson-beyond-responsive-design/\">a beautiful write-up of the talk on progressive enhancement that I delivered</a> as part of the <a href=\"https://18f.gsa.gov/tags/speaker-series/\">18F Design Speaker Series</a>. I thoroughly enjoyed talking to the folks that came. They presented some interesting challenges and asked pressing questions—exactly the kind of engagement I love.</p>\n<p>They live-streamed the event and immediately <a href=\"https://youtu.be/Fu1L34TLUHM\">posted the video on YouTube</a>. I also <a href=\"http://www.slideshare.net/AaronGustafson/beyond-responsive-18f-2015\">posted the deck to SlideShare</a> so you can follow along a little easier. I’ve embedded each below if you want to tuck in right away:</p>\n  <lite-youtube videoid=\"Fu1L34TLUHM\" style=\"background-image: url('https://i.ytimg.com/vi/Fu1L34TLUHM/hqdefault.jpg');\" params=\"\">\n    <a href=\"https://www.youtube.com/watch?v=Fu1L34TLUHM\" class=\"lty-playbtn\" title=\"Play Video\">\n      <span class=\"lyt-visually-hidden\">Play Video</span>\n    </a>\n  </lite-youtube>\n<figure class=\"video-embed video-embed--16x9\" id=\"figure-2015-08-26-01\"><iframe class=\"video-embed__video\" src=\"https://www.slideshare.net/slideshow/embed_code/key/7jsUtSzGEqFyKj\" frameborder=\"0\"></iframe></figure>\n<p>For a little more coverage, you can also check out <a href=\"http://www.digitalgov.gov/2015/08/25/trends-on-tuesday-web-standards-advocate-advises-adaptive-web-design-for-government-sites/\">Will Sullivan’s takeaways from the talk</a>.</p>\n","url":"https://www.aaron-gustafson.com/notebook/my-trip-to-18f/","tags":["progressive enhancement","web design","presentations"],"date_published":"2015-08-26T19:51:14Z"},{"id":"https://www.aaron-gustafson.com/notebook/slides-from-my-talk-at-number-msedgesummit/","title":"✍🏻 Slides from my talk at #msEdgeSummit","summary":"<p>I just came off stage from my talk at the <a href=\"https://web.archive.org/web/20150906080858/https://channel9.msdn.com/Events/WebPlatformSummit/2015\">Microsoft Edge Web Summit</a> and I wanted to share <a href=\"/notebook/slides-from-my-talk-at-number-msedgesummit/#figure-2015-05-05-01\">the deck</a> with you. The talk was live-streamed, but I will post a video link as soon as it is up.</p><p><strong>Update:</strong> <a href=\"https://web.archive.org/web/20150613053312/http://channel9.msdn.com/Events/WebPlatformSummit/2015/Falling-in-love-with-forms\">The video is now online</a>. You can also <a href=\"/notebook/slides-from-my-talk-at-number-msedgesummit/#figure-2015-05-05-02\">view it below</a>.</p>","content_html":"<p>I just came off stage from my talk at the <a href=\"https://web.archive.org/web/20150906080858/https://channel9.msdn.com/Events/WebPlatformSummit/2015\">Microsoft Edge Web Summit</a> and I wanted to share <a href=\"/notebook/slides-from-my-talk-at-number-msedgesummit/#figure-2015-05-05-01\">the deck</a> with you. The talk was live-streamed, but I will post a video link as soon as it is up.</p>\n<p><strong>Update:</strong> <a href=\"https://web.archive.org/web/20150613053312/http://channel9.msdn.com/Events/WebPlatformSummit/2015/Falling-in-love-with-forms\">The video is now online</a>. You can also <a href=\"/notebook/slides-from-my-talk-at-number-msedgesummit/#figure-2015-05-05-02\">view it below</a>.</p>\n<h2 id=\"slides\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#slides\" aria-hidden=\"true\">#</a> Slides</h2>\n<figure class=\"video-embed video-embed--16x9\" id=\"figure-2015-05-05-01\">  \n<iframe class=\"video-embed__video\" src=\"https://www.slideshare.net/slideshow/embed_code/key/H1xKkpN0KIoXq3\" frameborder=\"0\"></iframe>  \n</figure>\n<h2 id=\"video\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#video\" aria-hidden=\"true\">#</a> Video</h2>\n<figure class=\"video-embed video-embed--16x9\" id=\"figure-2015-05-05-02\">  \n<video class=\"video-embed__video\" poster=\"https://web.archive.org/web/20170310211126/https://sec.ch9.ms/sessions/websummit/2015/GA05-LG.jpg\" controls=\"\">\n<source src=\"https://web.archive.org/web/20150613053312/http://video.ch9.ms/sessions/websummit/2015/GA05.mp4\">\n<p>Download it: <a href=\"https://web.archive.org/web/20150613053312/http://video.ch9.ms/sessions/websummit/2015/GA05.mp4\" download>High Quality MP4</a> or <a href=\"https://web.archive.org/web/20150613053312/http://video.ch9.ms/sessions/websummit/2015/GA05-mobile.mp4\" download>Low Quality MP4</a></p>\n</video>\n</figure>\n","url":"https://www.aaron-gustafson.com/notebook/slides-from-my-talk-at-number-msedgesummit/","tags":["forms","HTML","presentations"],"date_published":"2015-05-06T00:14:00Z"},{"id":"https://www.aaron-gustafson.com/notebook/the-web-is-for-everyone/","title":"✍🏻 The Web is for Everyone","summary":"<p><em>I gave this speech as the closing keynote at <a href=\"https://a11yqc.org/\">A11yQC</a>, a conference on Web accessibility, on 14 October 2014 in Québec City, Canada. I have published my script here as the slides can’t really convey its message on their own.</em></p><p>We, as an industry, tend to have a pretty myopic view of experience. Those of us who work day-to-day in accessibility probably have a broader perspective than most, but I would argue that even we all fall short now and again when it comes to seeing the Web as others do.</p>","content_html":"<p><em>I gave this speech as the closing keynote at <a href=\"https://a11yqc.org/\">A11yQC</a>, a conference on Web accessibility, on 14 October 2014 in Québec City, Canada. I have published my script here as the slides can’t really convey its message on their own.</em></p>\n<p>We, as an industry, tend to have a pretty myopic view of experience. Those of us who work day-to-day in accessibility probably have a broader perspective than most, but I would argue that even we all fall short now and again when it comes to seeing the Web as others do.</p>\n<h2 id=\"i%3A-we-are-surrounded-by-technology\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#i%3A-we-are-surrounded-by-technology\" aria-hidden=\"true\">#</a> I: We are surrounded by technology</h2>\n<p>We live in a bubble. We are surrounded by technology. Most of us grew up on desktops and laptops. Most of us carry at least one device on us at all times. For some of us, it’s a smartphone of some sort. For others it might be some sort of wearable—a fitness tracker or smart watch. And I’m willing to bet that a large number of us here in this auditorium may even have three or more devices on us at this very moment. I know I do.</p>\n<p>And our technology is some of the newest, fastest, and most fully-featured in the world. Our devices are incredibly powerful and make us even more powerful, enabling us to tackle a wide range of tasks with ease. Most of the smartphones we carry come standard with pretty impressive assistive technology built in too, from adjustable text sizes to voice assist and screen reading tools to haptic, and other forms of feedback.</p>\n<p>And they are brimming with sensors that extend our natural abilities: GPS, cameras, accelerometers. If you’re blind, your smartphone can help you pick out a matching outfit by identifying complementary colors. It can tell you who is standing in front of you by running facial recognition software. It can help you take a photograph of a document and then read it to you.</p>\n<p>This is amazing stuff.</p>\n<p>And, if headlines are to be believed, the smartphone revolution is spreading like wildfire. It seems nearly every other week there is some new report about how smartphone sales are continuing to soar. Heck, no one even seems to mention the humble feature phone anymore. And if you keep up with the tech press, CPUs, GPUs, operating systems and browsers keep getting faster and faster and JavaScript is the savior of us all.</p>\n<p>The sky is the limit!</p>\n<p>Beyond the devices we carry with us everywhere, more and more of our homes are being assimilated into the Borg of the Internet through smart appliances and fixtures like Nest. Tools like these make it easier to control our homes (and our budgets). They empower previously dependent people to live more independent lives.</p>\n<p>And of course there’s the coolness factor of being able to turn on your heat while on your way home from work. These advancements are incredible!</p>\n<figure id=\"fig-2014-11-06-01\" class=\"media-container\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2014-11-06/01-lg.jpg\" alt=\"Two pie charts comparing Internet usage in the U.S. and Canada.\"></p>\n</figure>\n<p>Of course, what enables all of these things to be as amazing as they are is our ubiquitous connectivity. According to <a href=\"https://www.InternetLiveStats.com\">Internet Live Stats</a>, roughly 86% of Americans use the Internet. You Canadians are a wee bit more “online” at 93%.</p>\n<figure id=\"fig-2014-11-06-02\" class=\"media-container\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2014-11-06/02-lg.jpg\" alt=\"Two pie charts comparing the number of mobile data connections in the U.S. and Canada.\"></p>\n</figure>\n<p>America does have you beat when it comes to mobile connectivity: there are over 100 mobile data subscriptions per 100 individuals in the U.S. (probably because of the whole multi-device thing). Mobile connections in Canada are around 53 per 100 people. <small><a href=\"https://web.archive.org/web/20130303014538/https://www.oecd.org/sti/broadband/oecdbroadbandportal.htm\">(source)</a></small></p>\n<figure id=\"fig-2014-11-06-03\" class=\"media-container\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2014-11-06/03-lg.jpg\" alt=\"Two pie charts comparing wired Internet connections in the U.S. and Canada.\"></p>\n</figure>\n<p>Wired connectivity is a bit lower: 30 for every 100 in the U.S. and 33 for every 100 in Canada. <small><a href=\"https://web.archive.org/web/20130303014538/https://www.oecd.org/sti/broadband/oecdbroadbandportal.htm\">(source)</a></small></p>\n<figure id=\"fig-2014-11-06-04\" class=\"media-container\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2014-11-06/04-lg.jpg\" alt=\"A bar chart depicting the cost range, per megabit per month, in the U.S. and Canada.\"></p>\n</figure>\n<p>Connectivity is relatively cheap for you Canadians as well. You pay somewhere in the neighborhood of 39¢-$9.86 per megabyte per month. In the U.S., fees range widely from 53¢ to a whopping $41.70 per megabyte per month. <small><a href=\"https://web.archive.org/web/20130303014538/https://www.oecd.org/sti/broadband/oecdbroadbandportal.htm\">(source)</a></small></p>\n<p>Comcast and Rogers may be equally hated on our respective sides of the 49th parallel, but Comcast clearly sucks just a little bit more. (America!)</p>\n<p>This technology and access makes it possible for us to live richer lives and post photos of our cats and kids on Instagram, but it has insulated us. We live in a fantasy world of speed, high definition, and Beats by Dre. Sadly, our experience is far from the reality most of the world lives in.</p>\n<figure id=\"fig-2014-11-06-05\" class=\"media-container\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2014-11-06/05-lg.jpg\" alt=\"A bar chart comparing the average monthly incomes of people living in the U.S., Canada, China, and India.\"></p>\n</figure>\n<p>The average American takes home $3,263 a month. For the average Canadian, that figure is $2,724. By comparison, the average worker in China makes $656 a month. But that is a fortune compared to folks in India, who only take home $295 for a month of hard work. <small><a href=\"https://en.wikipedia.org/wiki/List_of_countries_by_average_wage\">(source)</a></small></p>\n<p>How much is an unlocked iPhone 6 again? It starts around $649. That’s more than two months salary for the average Indian. The Galaxy S5? $799 or nearly three months of hard work. In places like India, feature phones are still quite prevalent. And even when a smartphone is introduced for their market, it pales in comparison to the sort of tech we are used to seeing.</p>\n<figure id=\"fig-2014-11-06-06\" class=\"media-container\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2014-11-06/06-lg.jpg\" alt=\"The Samsung Galaxy S5 smartphone with a specification summary (relevant details follow).\"></p>\n</figure>\n<p>Here we have <a href=\"https://www.samsung.com/gr/microsite/galaxys5/\">Samsung’s flagship Galaxy S5</a> with an amazing set of specs. A 16GB camera?! A quad-core processor?! This is the stuff of dreams for anyone who has been working with computers for more than 10 years. My first desktop was a 5150.</p>\n<p>No not <a href=\"https://en.wikipedia.org/wiki/5150_(album)\">that awesome Van Halen record</a>, <a href=\"https://www.ibm.com/ibm/history/exhibits/pc25/pc25_intro.html\">this beast from IBM</a>:</p>\n<figure id=\"fig-2014-11-06-08\" class=\"media-container\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2014-11-06/08-lg.jpg\" alt=\"The IBM 5150 personal computer.\"></p>\n</figure>\n<p>It weighted over 20 lbs, 28 lbs with two floppy drives. The screen weighed another 13 lbs and the keyboard was 6 lbs. It maxed out at 256K of memory and offered 40K of read only memory. I couldn‘t even find a spec detailing how slow the processor was, but let’s just say that the computer I began my Web career with nearly 15 years later was only a Pentium 90 with something like 16 MB of RAM.</p>\n<p>And here, this pocket-sized computer just blows all of that out of the water.</p>\n<figure id=\"fig-2014-11-06-09\" class=\"media-container\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2014-11-06/09-lg.jpg\" alt=\"The Intex Cloud FX smartphone with specification summary (relevant details follow).\"></p>\n</figure>\n<p>By contrast, here we have <a href=\"https://arstechnica.com/gadgets/2014/09/weve-got-a-35-firefox-os-phone-what-do-you-want-to-know/\">Intex’s Cloud FX</a>, a new phone with specs that read like the state of the art in 2007. A crappy camera, no front camera, a slow 1 GHz processor, a paltry 128 MB of RAM and barely double that in internal storage. It’s a crappy phone by our standards.</p>\n<p>But that’s a Firefox OS phone aimed at the Indian market vs. an Android one aimed at the “developed” world. Perhaps you’d like to look at a more apples-to-apples comparison:</p>\n<figure id=\"fig-2014-11-06-10\" class=\"media-container\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2014-11-06/10-lg.jpg\" alt=\"The BLU Dash Jr K smartphone with specification summary (relevant details follow).\"></p>\n</figure>\n<p>Here we have the <a href=\"https://www.gsmarena.com/blu_dash_jr-5662.php\">BLU Dash Jr K</a>.</p>\n<p>Both it and the Galaxy S5 run Android 4.4 (Kitkat), but that’s where their similarities end. Look at the resolution of the Dash Jr K: 320×480 versus the 1920×1080 of the S5. Look at the processor speed. Look at the RAM.</p>\n<p>Now, honestly, how many of you would willingly carry the Dash Jr K or the Cloud FX as your primary phone? Maybe as a laugh, maybe ironically, but I highly doubt many in our profession would subject themselves to that. Why? Because we don’t have to.</p>\n<p>Now I don’t know your salary, but I’m willing to bet you make more money and have far more disposable income available to spend on cutting edge gadgets than most people in the world. Surely that’s the case when you compare us to China and India, but it’s equally true here in North America.</p>\n<p>In the U.S., we see stats like “Smartphone sales accounted for nearly 85% of all mobile phone sales” and “Smartphones have reached 50% penetration” with relative frequency. But those headlines often lead us to draw incorrect conclusions about what devices people actually use to access the Web.</p>\n<p>The dirty little secret behind that 50% penetration number is that the penetration in question was concentrated in a scant 30% of U.S. households. Kinda burying the lead if you ask me. <small><a href=\"https://web.archive.org/web/20160416014757/https://www.chetansharma.com/usmarketupdateq12013.htm\">(source)</a></small></p>\n<figure id=\"fig-2014-11-06-12\" class=\"media-container\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2014-11-06/12-lg.jpg\" alt=\"A pie chart breakdown of the findings by the Pew Research Center on smartphone penetration by household income (relevant details follow).\"></p>\n</figure>\n<p>The Pew Research Center released a study earlier this year that showed smartphone penetration in the US, broken down by income bracket. As expected, the higher the household income, the more likely you were to find someone with a smartphone.</p>\n<p>In the &lt; $30,000 income bracket, smartphones were found in 47% of households. But it starts to get really interesting when you cross-reference that data with how many people fall into those income brackets. <small><a href=\"https://www.pewinternet.org/2014/02/27/part-1-how-the-internet-has-woven-itself-into-american-life/\">(source)</a></small></p>\n<figure id=\"fig-2014-11-06-13\" class=\"media-container\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2014-11-06/13-lg.jpg\" alt=\"The Pew Research Center’s findings when compared to U.S. Census Data (relevant details follow).\"></p>\n</figure>\n<p>$30,000 was the average income in the U.S. in 2013. And, according to the 2010 census, the overwhelming majority of American households earn less than that. <small><a href=\"https://web.archive.org/web/20130928173531/http://www.census.gov/2010census/data/\">(source)</a></small></p>\n<p>Now both the Samsung Galaxy S5 and the BLU Dash are technically smartphones, but one costs $43 and the other costs $799. On a limited budget, which do you think you’d be more likely to get?</p>\n<p>Sure, in the US, carriers subsidize phone prices, but even the subsidized $199 AT&amp;T offers the S5 for (with a 2-year agreement) ends up costing $1319 once you factor in the $40 activation and the minimum of $45 a month for a data plan.</p>\n<p>So again I’ll ask: On a limited budget, which do you think you’d be more likely to get?</p>\n<p>So even if a household has a smartphone, there’s probably decent odds on it being something a little lackluster compared to what we are used to carrying.</p>\n<p>While it may not be a big deal for us to pay $60, $100, or more a month for mobile data access with fast speeds and high bandwidth limits, that would be a burden for most people. It’s worth noting that the cheaper pay-as-you-go plans typically have substantially lower data caps, frequently cost more per megabit, and often run at far slower speeds. Accordingly, while the Galaxy S5 supports blazingly fast 4G LTE speeds, both the Cloud FX and the Dash Jr K run on 2G technology.</p>\n<figure id=\"fig-2014-11-06-14\" class=\"media-container\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2014-11-06/14-lg.jpg\" alt=\"A photo of a Blackberry device experiencing an error loading a webpage because the page was too large. Photo Credit: Brad Frost.\"></p>\n</figure>\n<p>All of this is to say that we must be hyper-aware of how big our Web pages are. Large pages with tons of high-resolution images cost our users real money and, frankly, waste their time. Some might not even load. Big Web pages are a barrier to access.</p>\n<p>Beyond page size, we should also be concerned with how much work we we are requiring of the browser. JavaScript-intensive sites and applications can run really poorly on devices with slow processors and minimal RAM, like the BLU Dash Jr K or the Intex Cloud FX.</p>\n<p>These are just a few of the concerns we’re having to deal with today, and only about a third of our planet is online. There are 4.8 billion people with no Internet access. But it’s coming. And when it happens, we will likely have even more to deal with. Like language barriers.</p>\n<figure id=\"fig-2014-11-06-15\" class=\"media-container\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2014-11-06/15-lg.jpg\" alt=\"A pie chart comparison of the global population that speaks English versus the percentage of the Web that is in English.\"></p>\n</figure>\n<p>Consider this: <a href=\"https://en.wikipedia.org/wiki/List_of_languages_by_total_number_of_speakers\">About 11.7% of the world speaks English as its first or second language</a> yet <a href=\"https://en.wikipedia.org/wiki/Languages_used_on_the_Internet\">55.7% of the Web is in English</a>. (French is spoken by roughly 1.4% of the world and 4% of the Web is in French.)</p>\n<figure id=\"fig-2014-11-06-16\" class=\"media-container\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2014-11-06/16-lg.jpg\" alt=\"Pie charts detailing the percentage of people in India and China who speak English.\"></p>\n</figure>\n<p>This presents some significant challenges as the Web expands into places like India and China. Only 18.61% of India’s 1.2 billion people speak English as a first, second, or even third language. In China, only about 0.73% of their 1.2 billion people speak English. Network availability is only the first of many hurdles to accessing the Web for much of the planet. <small><a href=\"https://en.wikipedia.org/wiki/List_of_countries_by_English-speaking_population\">(source)</a></small></p>\n<p>We need to look beyond our technological and cultural bubble and consider how others experience the Web. As an industry, we must figure out how we can make their experiences better.</p>\n<h2 id=\"ii%3A-we-are-ux-professionals\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#ii%3A-we-are-ux-professionals\" aria-hidden=\"true\">#</a> II: We are UX professionals</h2>\n<p>We are technologists who focus on accessibility, the capacity to tackle these challenges should come naturally to us. We were drawn to this field because we empathize with the struggles of others and want to help empower them to live independently.</p>\n<p>We are user experience professionals and yet we’re often pigeon-holed outside of that practice. Our knowledge and contributions are often seen as only being applicable for people with “disabilities.” But our purview goes way beyond helping people with less than perfect vision, hearing, or mobility. Our purview is improving Web experiences for all people, regardless of physical or mental abilities, gender, race, or language.</p>\n<p>Our purview is user experience and we need to assert ourselves and our role in that capacity.</p>\n<p>More than most, we understand the importance of experience, of access, of independence because we work with people for whom “little things” like the ability to press a button can be a big problem. And beyond that, we also understand that experience is not a binary thing. <strong>It is a continuum.</strong></p>\n<p>This is a crucial fact that the Web industry is only just beginning to come to terms with. <strong>We can help ease that transition.</strong></p>\n<p>We are the champions of the egalitarian dream: equality of opportunity with the understanding that it does not guarantee equality of outcome or experience. We are pragmatic idealists who want to enable everyone access to amazing products and services.</p>\n<p>We provide <em>tremendous</em> business value.</p>\n<p>But we have a lot of work to do.</p>\n<p>Sadly, many people still don’t value accessibility. They don’t get why it is important. They see it as expensive. They see it as a “nice to have”. They see it as an add-on.</p>\n<p>I have gotten this reaction from designers. I have gotten it from developers. I have gotten it from other user experience professionals. And I have most often gotten it from managers and business owners. I’m sure you have as well.</p>\n<p>I once had someone tell me he didn’t need to make his website accessible because he sold televisions and “blind people don’t watch TV.” I was floored. I mean holy crap!? This guy had no idea.</p>\n<p>I had to educate him, but I needed to do it softly. I need to explain to him that his view of “special needs” was wrong. I had to be gentle because people don’t often react well to being told their world-view is fundamentally flawed. I’m sure I’m not the only one in this room who has been in a situation like this either.</p>\n<p>If our primary job is to empower people to live independently, our second job is surely to educate the world, not just on how to make the Web more accessible, but why it matters. <strong>We need to bring everyone into the fold.</strong></p>\n<figure id=\"fig-2014-11-06-17\" class=\"media-container\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2014-11-06/17-lg.jpg\" alt=\"A photo of the philosopher John Rawls.\"></p>\n</figure>\n<p>I love exercises that create opportunities for revelation. One of my favorites originates from John Rawls. Rawls was a philosopher who used to run a social experiment with students, church groups, and the like.</p>\n<p>In the experiment, individuals were allowed to create their ideal society. It could follow any philosophy. It could be a monarchy or democracy or anarchy. It could be capitalist or socialist. The people in this experiment had free rein to control absolutely every facet of the society… but then he’d add the twist: They could not control what position they occupied in that society.</p>\n<p>This twist is what John Harsanyi—an early game theorist—refers to as the <a href=\"https://en.wikipedia.org/wiki/Veil_of_ignorance\">“Veil of Ignorance”</a> and what Rawls found, time and time again, was that individuals participating in the experiment would gravitate toward creating the most egalitarian societies.</p>\n<p>It makes sense: what rational, self-interested human being would treat the elderly, the sick, people of a particular gender or race or creed or color, poorly if they could find themselves in that position?</p>\n<p>We’re often put in a box and told to only concern ourselves with folks with “special needs.” Well news flash: <strong>we all have special needs</strong>. Some we’re born with. Some we develop. Some are temporary. Some have nothing to do with us personally, but are situational or purely dependent on the hardware we are using, the interaction methods we have available to us, or even the speed at which we can access the Internet or process data.</p>\n<p>We need to look beyond the world of assistive Web technology and explain the value and insight we bring to approaches like Responsive Web Design. After all, what is RWD about if not access? Yes, its fundamental tenets are concerned with visual design, but in terms of the big picture, they’re all about providing the best possible reading experience. Responsive web design is also a perfect example of the continuum of experience we are so intimately familiar with.</p>\n<p>We understand special needs. We understand fallbacks. And we understand how to design robust experiences that work under a wide variety of conditions. That knowledge is invaluable.</p>\n<p><strong>We are invaluable.</strong></p>\n<h2 id=\"iii%3A-we-are-the-future\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#iii%3A-we-are-the-future\" aria-hidden=\"true\">#</a> III: We are the future</h2>\n<p>This is an incredibly exciting time to be working in accessibility. User experience is becoming central to how organizations work and how they design their products and accessibility should be at the core of that.</p>\n<p><strong>This is our time!</strong></p>\n<p>The more influence we have on the products and services our companies and clients create, the more places they can go and the more successful they will be.</p>\n<p>Take WhatsApp for instance. Fundamentally, it is a chat application. That’s not terribly groundbreaking. But it developed into a way to avoid costly SMS messages. Still, even that’s not all that special: the App Store lists over 7,900 messaging apps for the iPhone.</p>\n<p>What made WhatsApp matter was the shrewd business decision to move beyond the bubble. They chose to embrace access and embrace diversity. They made their messaging application available on a ton of platforms, especially low cost ones. So sure, they support iOS and Android, but unlike a lot of app developers, they officially support Android 2.1+, iOS 4.3+, Blackberry 4.7+, Symbian, Nokia Series 40, Windows Phone. Some of those aren’t even smartphone OSes!</p>\n<p>While many may not consider this an “accessibility” win, it absolutely is. WhatsApp made a decision to open up access to their messaging application to people who were traditionally ignored by mobile app developers. And they were rewarded handsomely for this: as of last count, they had somewhere around 600 million users globally. And then there’s that little thing about them selling to Facebook for $19 billion.</p>\n<p>And WhatsApp isn’t a fluke in benefiting from making itself more accessible: China’s WeChat boasts a user base of 600 million and Japan’s LINE has over 400 million users. All of these messaging platforms have benefitted greatly from embracing devices and technologies available to people outside of our bubble.</p>\n<p>We can and should be advising our companies and clients on why and how to be more accessible. We need to look at the big picture and we should not be afraid to be bold in asserting that <strong>accessibility creates opportunity</strong>.</p>\n<p>We already know that strong content guidelines pay dividends by creating opportunities for our content to work harder for us. Not only do they improve the readability of content on the sites we build, but they facilitate social sharing through more engaging summaries and headlines.</p>\n<p>The clear, well-written, jargon-free content we advocate for is easier to translate into other languages. It also makes the content easier to follow via screen readers and other vocalization tools like <a href=\"https://www.readspeaker.com/\">Readspeaker</a>, which in turn makes it possible to offer novel ways of accessing our content, like automated podcasts.</p>\n<p>Our focus on semantic, meaningful, markup allows our content to be pulled into other contexts including focused reading apps like Pocket, Readability, and Instapaper.</p>\n<p>And while we can certainly do a lot to make rich, JavaScript-based interactions far more accessible to assistive technology, our advocacy for progressive enhancement ensures that our content and tools work no matter what.</p>\n<figure id=\"fig-2014-11-06-18\" class=\"media-container\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2014-11-06/18-lg.jpg\" alt=\"Headline: “Sky’s internet service mistakenly blocks web-critical plugin” (Source: The Guardian)\"></p>\n</figure>\n<p>Let’s say an ISP blocks jQuery as malware. No problem.</p>\n<figure id=\"fig-2014-11-06-19\" class=\"media-container\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2014-11-06/19-lg.jpg\" alt=\"Headline: “FCC to Marriott: No, you can’t force your customers onto terrible hotel WiFi” (Source: The Washington Post)\"></p>\n</figure>\n<p>Let’s say the page is taking a long time to download on a high-latency mobile network (or hotel Wi-Fi). No big deal.</p>\n<p>The products we build just work because we know that we don’t control how they are delivered.</p>\n<p>It’s our job to educate others on this reality and to demonstrate why these are central to user experience.</p>\n<h2 id=\"iv%3A-we-are-agents-of-change\" tabindex=\"-1\"><a class=\"header-anchor\" href=\"#iv%3A-we-are-agents-of-change\" aria-hidden=\"true\">#</a> IV: We are Agents of Change</h2>\n<p>The shift to handheld computers has been huge for accessibility. After all, the computers in our pockets are assistive technology. This is our world!</p>\n<p>I’m going to make a somewhat bold prediction: while touch has been revolutionary in many ways toward improving digital access, voice is the future. And the user experience of voice-based interfaces is going to be critical in creating more opportunities for people to interact with and participate in the digital world.</p>\n<p>We’ve got the jump on the other folks working in user experience when it comes to voice: We’ve been considering how interfaces sound for years. On top of that, we already understand how to design alternate interaction methods because we see experience as a continuum.</p>\n<p>As voice UX technology—for example, Siri, Google Now, and Cortana—improves, we should be the ones people should look to as the experts. We will empower the next generation of websites and applications to become voice-enabled. And in so doing, we will improve the lives of billions. Because “accessibility” is not about disabilities, it’s about access and <strong>it’s about people</strong>.</p>\n<p>Sure, we’ll make it easier to look up movie times and purchase tickets to see the latest <cite>Transformers</cite> debacle, but we will also empower the nearly 900 million people globally—over 60% of whom are female—that are illiterate. And that’s a population we have not traditionally viewed as our purview either.</p>\n<p>We will create new opportunities for the poor and disadvantaged to participate in a world that has largely excluded them. You may not be aware, but 80% of Fortune 500 companies—think Target, Walmart—only accept job applications online or via computers.</p>\n<p>We will enable people who have limited computer skills or who struggle with reading to apply for jobs with these companies.</p>\n<p>We will empower immigrants to read lease agreements and their postal mail.</p>\n<p>We will enable people with visual disabilities to vote, even on paper ballots, without human assistance.</p>\n<p>We can help bridge the digital divide and the literacy gap. We can create opportunities for people to better their lives and the lives of their families. We have the power to create more equity in this world than most of us have ever dreamed.</p>\n<p>This is an incredibly exciting time, not just for the accessibility experts, not just for user experience, not just the Web, but for the world! I can’t wait to see how awesome you make it!</p>\n<figure id=\"fig-2014-11-06-20\" class=\"media-container\">\n<p><img src=\"https://www.aaron-gustafson.com/i/posts/2014-11-06/20-lg.jpg\" alt=\"A photo of the opening ceremony of the 2012 London Olympic Games when Sir Tim Berners-Lee (creator of the World Wide Web) typed “This is for Everyone” across the stadium.\"></p>\n</figure>\n<p>Thank you.</p>\n","url":"https://www.aaron-gustafson.com/notebook/the-web-is-for-everyone/","tags":["accessibility","user experience","web design","presentations","voice UX","the future"],"date_published":"2014-11-06T20:47:54Z"},{"id":"https://www.aaron-gustafson.com/notebook/beyond-responsive-workshops-this-may/","title":"✍🏻 Beyond Responsive Workshops this May","summary":"<p>\tA lot fo my work lately has been consulting and working with teams to help them to establish or improve upon their responsive strategies.</p>","content_html":"<p>\n\tA lot fo my work lately has been consulting and working with teams to help them to establish or improve upon their responsive strategies.</p>\n<p>\n\tI love this sort of work and I live for helping teams and individuals tackle the thorny issues (in code or processes) that make responsive projects a challenge. For a lot of small companies, it can be a challenge to pull ogether enough budget to fly me in for a few days of private working sessions, which is why I am such a huge fan of running public workshops… especially über-affordable ones like I am leading this May.</p>\n<p>\n\tThe first will be on my home turf in Chattanooga, Tennessee on May 2nd and I will be co-leadiing the workshop with my esteemed colleague <a href=\"http://bradfrostweb.com\">Brad Frost</a>. It’s the first workshop from our successful <a href=\"http://codeandcreativity.com\">Code & Creativity</a> event series and should be a heck of a lot of fun. There are a few tickets left for <a href=\"http://www.eventbrite.com/e/responsive-design-and-beyond-registration-11005454611\">$399 each on Eventbrite</a>.</p>\n<p>\n\tThe second workshop will be in Düsseldorf, Germany on May 21st. There are a handful of <a href=\"https://ti.to/beyondtellerrand/2014/\">tickets still available for €349 (VAT included)</a> and a ticket also gets you into the incredible <a href=\"http://2014.beyondtellerrand.com/\">Beyond Tellerrand</a> conference which runs on the 19th & 20th. I’ve spoken at this conference twice before and it is one of only a handful of events in the world I enthusiatically recommend attending.</p>\n<p>\n\tHere’s a rough idea of what I’ll be covering in the two workshops:</p>\n<blockquote>\n<p>\n\t\tResponsive web design has taken our industry by storm and with good reason: it helps us improve our reach with less effort. But incorporating responsive design is not the goal, meeting our user’s needs is. Responsive design is not an end in itself… it’s just the beginning.</p>\n<p>\n\t\tWe need to embrace the heterogenous nature of the web—myriad web-enabled devices with vastly different dimensions, screen sizes, networks, and capabilities in use by countless individuals, each with their own special needs—and craft experiences that will work anywhere at any time. We need to build robust systems that adapt in ways far beyond aesthetics.</p>\n<p>\n\t\tEach workshop with a discussion of a number of considerations that we should be aware of, beyond screen size and pixel density, and provide examples of how to adapt our interfaces so they rise to meet our customers’ needs. Then he’ll turn it over to you to propose gnarly design and/or interface challenges you are struggling with. Once everyone’s challenges are collected, attendees will be given the opportunity to form small groups around each and you will spend a portion of the day working on solutions while Aaron mentors each group and pushes you to think more about accessibility, alternate interaction methods, slow networks, and other considerations.</p>\n<p>\n\t\tThe workshop will wrap up with brief presentations from each group followed by a an open question and answer session.</p>\n</blockquote>\n<p>\n\tI hope you’ll join me in Chattanooga or Düsseldorf next month. Bring your questions and your challenges and let’s dig in.</p>\n","url":"https://www.aaron-gustafson.com/notebook/beyond-responsive-workshops-this-may/","tags":["responsive web design","conferences","presentations"],"date_published":"2014-04-15T14:39:00Z"},{"id":"https://www.aaron-gustafson.com/notebook/adaptive-design-empathy-and-beating-creative-block/","title":"✍🏻 Adaptive Design, Empathy &amp; Beating Creative Block","summary":"<p %=\"\" from=\"\" macros.njk=\"\" import=\"\" youtube=\"\" %=\"\"></p><p>\tLately I’ve been doing a few more podcasts, local events, and interviews. Here’s a round-up of a few that posted in the last week or so:</p><p><strong><a href=\"http://www.modern.ie/en-us/podcast/modernie-podcast-with-aaron-gustafson\">The modern.IE Podcast</a></strong><br/>\tJosh Holmes interviewed me about adaptive design, progressive enhancement, and a wide range of other things.</p>","content_html":"<p>\n\tLately I’ve been doing a few more podcasts, local events, and interviews. Here’s a round-up of a few that posted in the last week or so:</p>\n<p>\n<strong><a href=\"http://www.modern.ie/en-us/podcast/modernie-podcast-with-aaron-gustafson\">The modern.IE Podcast</a></strong><br/>\n\tJosh Holmes interviewed me about adaptive design, progressive enhancement, and a wide range of other things.</p>\n<p>\n<a href=\"http://www.pechakucha.org/cities/chattanooga/events/526e68fc4f5c29f968000004\"><strong>PKNCHA#15</strong></a><br/>\n\tI did a PechaKucha talk on empathy and the golden rule last December. <a href=\"https://www.youtube.com/watch?v=6QlAj4_6m5s\">The video is now on YouTube.</a></p>\n  <lite-youtube videoid=\"6QlAj4_6m5s\" style=\"background-image: url('https://i.ytimg.com/vi/6QlAj4_6m5s/hqdefault.jpg');\" params=\"\">\n    <a href=\"https://www.youtube.com/watch?v=6QlAj4_6m5s\" class=\"lty-playbtn\" title=\"Play Video\">\n      <span class=\"lyt-visually-hidden\">Play Video</span>\n    </a>\n  </lite-youtube>\n<p>\n<a href=\"http://www.creativebloq.com/creativity/15-pro-techniques-beating-creative-block-3145683\"><strong>15 Pro Techniques for Beating Creative Block</strong></a><br/>\n\tI give my thoughts on the topic, but you can also read the fantastic thoughts of Dan Rubin, Trent Walton, Derek Featherstone, and Rachel Shillcock.</p>\n","url":"https://www.aaron-gustafson.com/notebook/adaptive-design-empathy-and-beating-creative-block/","tags":["presentations","empathy","Adaptive Web Design"],"date_published":"2014-04-01T14:33:00Z"},{"id":"https://www.aaron-gustafson.com/notebook/designing-with-empathy-at-btconf/","title":"✍🏻 Designing with Empathy at #btconf","summary":"<p %=\"\" from=\"\" macros.njk=\"\" import=\"\" youtube=\"\" %=\"\"></p><p>\tA little over a month ago I had the pleasure of speaking at <a href=\"http://2013.beyondtellerrand.com/\">Beyond Tellerrand</a> in Düsseldorf, Germany. It was my second time speaking (and attending) the conference and I can honestly say it’s easily one of my favorites. <a href=\"http://marcthiele.com/\">Marc Thiele</a> does an amazing job organizing the event and <a href=\"http://2013.beyondtellerrand.com/speakers\">the speaker roster was nothing short of amazing</a>.</p>","content_html":"<p>\n\tA little over a month ago I had the pleasure of speaking at <a href=\"http://2013.beyondtellerrand.com/\">Beyond Tellerrand</a> in Düsseldorf, Germany. It was my second time speaking (and attending) the conference and I can honestly say it’s easily one of my favorites. <a href=\"http://marcthiele.com/\">Marc Thiele</a> does an amazing job organizing the event and <a href=\"http://2013.beyondtellerrand.com/speakers\">the speaker roster was nothing short of amazing</a>.</p>\n<p>\n\tIn an effort to continue spreading my wings beyond talking about code, I delivered a talk about empathy. Empathy is something I’ve written about here before <a href=\"https://blog.easy-designs.net/archives/egalitarianism-and-progressive-enhancement/\">both explicitly</a> and as an underlying motivation for progressive enhancement and overall usability. Empathy is something I feel we need deperately in our lives and especially in our work—empathy for both our users <em>and</em> our co-workers.</p>\n<p>\n\tAnyway, Marc was kind enough to <a href=\"http://vimeo.com/70018634\">record the talk</a>. <a href=\"index.html#comments\">Let me know what you think</a>.</p>\n<figure id=\"btconf-2013-video\">\n  <lite-youtube videoid=\"9hS0Us3YhlU\" style=\"background-image: url('https://i.ytimg.com/vi/9hS0Us3YhlU/hqdefault.jpg');\" params=\"\">\n    <a href=\"https://www.youtube.com/watch?v=9hS0Us3YhlU\" class=\"lty-playbtn\" title=\"Play Video\">\n      <span class=\"lyt-visually-hidden\">Play Video</span>\n    </a>\n  </lite-youtube>\n<figcaption>Video of my talk “Designing with Empathy” from Beyond Tellerrand</figcaption></figure>\n<figure id=\"btconf-2013-slides\">\n<figure class=\"video-embed video-embed--16x9\"><iframe class=\"video-embed__video\" src=\"http://www.slideshare.net/slideshow/embed_code/22079990?rel=0\" frameborder=\"0\"></iframe></figure>\n<figcaption>Slides from “Designing with Empathy” as delivered at Beyond Tellerrand</figcaption></figure>\n","url":"https://www.aaron-gustafson.com/notebook/designing-with-empathy-at-btconf/","tags":["empathy","presentations","conferences"],"date_published":"2013-07-15T06:11:00Z"},{"id":"https://www.aaron-gustafson.com/notebook/orlando-in-a-whirlwind/","title":"✍🏻 Orlando in a Whirlwind","summary":"<p>\tLast week was a bit of a whirlwind: Kelly and I flew to Orlando, co-hosted <a href=\"http://veganchilicookoff2013.com/\">a vegan chili cook-off with the Filament Group</a> and lost <a href=\"http://instagram.com/p/X0tOE_B3FF/\">the coveted trophy</a> Kelly so lovingly created, launched a refresh of the website for the <a href=\"http://registrar.sewanee.edu\">Registrar’s Office at Sewanee University</a>, and I delivered a new talk and workshop at <a href=\"http://bdconf.com/2013/orlando\">Breaking Development</a>.</p>","content_html":"<p>\n\tLast week was a bit of a whirlwind: Kelly and I flew to Orlando, co-hosted <a href=\"http://veganchilicookoff2013.com/\">a vegan chili cook-off with the Filament Group</a> and lost <a href=\"http://instagram.com/p/X0tOE_B3FF/\">the coveted trophy</a> Kelly so lovingly created, launched a refresh of the website for the <a href=\"http://registrar.sewanee.edu\">Registrar’s Office at Sewanee University</a>, and I delivered a new talk and workshop at <a href=\"http://bdconf.com/2013/orlando\">Breaking Development</a>.</p>\n<p>\n\tTo be honest, I was a little nervous about my talk, <a href=\"http://bdconf.com/2013/orlando/schedule#aarongustafson\">Designing with Empathy</a>. I am a developer. I live and breathe code and this was my first attempt at delivering a completely code-free talk. And one on a fairly touchy-feely subject to boot. To my amazement, the talk seemed to resonate with the audience. I received lots of excellent questions and had a handful of in-depth conversations with attendees after stepping off the dais. I could not be more pleased with the talk’s reception and am looking forward to delivering it a few more times this year at <a href=\"http://beyondtellerrand.com/\">Beyond Tellerrand in Düsseldorf, Germany next month</a> and <a href=\"http://reasons.to/\">Reasons to Be Creative in Brighton, UK in September</a>. You can check out <a href=\"http://www.slideshare.net/AaronGustafson/designing-with-empathy-breaking-development-orlando-2013-18497481\">my deck on Slideshare</a> (or thumb through it below). Luke W also took <a href=\"http://www.lukew.com/ff/entry.asp?1715\">some excellent notes during my session</a>. The video is forthcoming.</p>\n<figure class=\"video-embed video-embed--16x9\"><iframe class=\"video-embed__video\" src=\"http://www.slideshare.net/slideshow/embed_code/18497481?rel=0\" frameborder=\"0\"></iframe></figure>\n<p>\n\tI also debuted a new workshop in Orlando: <a href=\"http://bdconf.com/2013/orlando/workshops#aarongustafson\">Planning Adaptive Interfaces</a>. The idea was borne out of the corporate training work I’ve been doing and <a href=\"http://retreats4geeks.com\">Retreats 4 Geeks</a>’ mentoring sessions: A brief introduction to progressive enhancement and adaptive considerations followed by actual hands-on group activities where teams plan and sketch out different ways to experience common website conventions, taking into account screen real estate, browser capabilities, assistive technology and more. The response to the workshop was excellent as well and I appreciated the opportunity to get into the trenches with the teams and help them tackle complex cross-device problems. I’ll be taking this workshop on the road to <a href=\"https://www.ux-lx.com/speaker.html?n=aarongustafson#workshop\">UXLx in Lisbon, Portugal</a> and <a href=\"http://bynd.it/btconf2013wsaaron\">Beyond Tellerrand in Düsseldorf, Germany</a> next month and a few other as-yet-unannounced conferences in Europe this Fall.</p>\n<figure>\n<img alt=\"\" src=\"http://farm9.staticflickr.com/8105/8655160799_fca2b1f9c2.jpg\"/><figcaption>Small groups planning adaptive interfaces</figcaption></figure>\n","url":"https://www.aaron-gustafson.com/notebook/orlando-in-a-whirlwind/","tags":["presentations","conferences","empathy"],"date_published":"2013-04-16T15:51:00Z"},{"id":"https://www.aaron-gustafson.com/notebook/slides-from-my-talk-at-how-interactive/","title":"✍🏻 Slides from my talk at HOW Interactive","summary":"<p>These last two days have been a bit of a whirlwind, but I have had a great time meeting and talking to the attendees (and other speakers) here at the HOW Interactive conference in San Francisco . I gave my talk yesterday on progressive…</p>","content_html":"<p>These last two days have been a bit of a whirlwind, but I have had a great time meeting and talking to the attendees (and other speakers) here at the <a href=\"http://www.howinteractiveconference.com/ehome/35392/\">HOW Interactive conference in San Francisco</a>. I gave <a href=\"http://www.howinteractiveconference.com/ereg/popups/sessiondetails.php?eventid=35392&amp;sessionid=2198869&amp;sessionchoice=2\">my talk</a> yesterday on progressive enhancement (of course) and how it can make designing and devloping for mobile a little more sane. Here are the slides (which you can also <a href=\"http://www.slideshare.net/AaronGustafson/progressive-enhancement-mobile\">see and download on Slideshare</a>) form that talk:</p>\n<figure><iframe frameborder=\"0\" height=\"426\" src=\"http://www.slideshare.net/slideshow/embed_code/14940120\" width=\"510\"> </iframe></figure>\n<p>I also provided attendees with <a href=\"http://readlists.com/7d414b24/\">a reading list</a>. It’s the one I <a href=\"http://adactio.com/journal/5813/\">developed for a private training a few weeks ago with Jeremy</a> and one which I will continue to update as I find more useful resources I want to share.</p>\n","url":"https://www.aaron-gustafson.com/notebook/slides-from-my-talk-at-how-interactive/","tags":["progressive enhancement","presentations","mobile"],"date_published":"2012-10-30T21:57:27Z"},{"id":"https://www.aaron-gustafson.com/notebook/funkas-tillgaenglighetsdagar-2012/","title":"✍🏻 Funkas Tillgänglighetsdagar 2012","summary":"<p>A few weeks back, I flew to Sweden to deliver a talk on progressive enhancement for mobile devices at Funkas Tillgänglighetsdagar , an accessibility conference whose name I will probably always butcher. I really enjoyed getting to know…</p>","content_html":"<p>\n\tA few weeks back, I flew to Sweden to deliver a talk on progressive enhancement for mobile devices at <a href=\"http://www.funkanu.se/Tillganglighetsdagar\">Funkas Tillgänglighetsdagar</a>, an accessibility conference whose name I will probably always butcher. I really enjoyed getting to know the Funka Nu team, meeting new people, and seeing how countries like Sweden, Norway, and Germany are addressing issues of accessibility in both public and private spheres. It was also nice to see validation for some of the thinking and work we’ve done around issues of accessibility.</p>\n<p>\n\tAnyway, I thought I’d share my slide deck from the talk in case you’re interested. It was picked up yesterday and today as “Top Presentation of the Day” on <a href=\"http://slideshare.net\">SlideShare</a>, so it’s either really useful or a slow time for uploads. Regardless, enjoy!</p>\n<figure class=\"video-embed video-embed--16x9\"><iframe class=\"video-embed__video\" src=\"http://www.slideshare.net/slideshow/embed_code/12595251\" frameborder=\"0\"></iframe></figure>\n","url":"https://www.aaron-gustafson.com/notebook/funkas-tillgaenglighetsdagar-2012/","tags":["accessibility","presentations","conferences"],"date_published":"2012-05-02T22:17:00Z"},{"id":"https://www.aaron-gustafson.com/notebook/crafting-rich-experiences-with-progressive-enhancement-at-beyond-telle/","title":"✍🏻 Crafting Rich Experiences with Progressive Enhancement at Beyond Tellerrand","summary":"<p>\tAfter a whirlwind trip to 4 countries (5 if you count Florida), I am back to a rock-solid internet connection and got a moment to take a breath and post my slides from the first stop on the trip: <a href=\"http://2011.beyondtellerrand.com\">Beyond Tellerrand</a> in Düsseldorf, Germany.</p>","content_html":"<p>\n\tAfter a whirlwind trip to 4 countries (5 if you count Florida), I am back to a rock-solid internet connection and got a moment to take a breath and post my slides from the first stop on the trip: <a href=\"http://2011.beyondtellerrand.com\">Beyond Tellerrand</a> in Düsseldorf, Germany.</p>\n<p>\n\tThis talk is an update of the short session I gave at WebVisions in Portland earlier this year. It covers all the topics I address in <a href=\"http://adaptivewebdesign.info\">my book</a> and more:</p>\n<figure class=\"video-embed video-embed--16x9\"><iframe class=\"video-embed__video\" src=\"http://www.slideshare.net/slideshow/embed_code/10260712\" frameborder=\"0\"></iframe></figure>\n<p>\n\tIt was an awesome trip and I met a bunch of great people there as well as at my <a href=\"http://www.flickr.com/photos/aarongustafson/6440772971/in/photostream\">Adaptive Web Design workshops in Amsterdam and Reykjavik</a>. I took a ton of photos (many of which are slowly finding their way onto <a href=\"http://instagr.am/p/YkLQx/?ref=nf\">Instagram</a> and <a href=\"http://www.flickr.com/photos/aarongustafson/6400185227/in/photostream\">Flickr</a>) and also enjoyed spending three weeks on the road with <a href=\"http://www.flickr.com/photos/aarongustafson/6359601615/in/photostream\">my loving wife and partner, Kelly</a>. It was the perfect way to spend our 10-year anniversary. Now it’s back to the grindstone so we can bang out a few more projects before the new year. W00t!</p>\n","url":"https://www.aaron-gustafson.com/notebook/crafting-rich-experiences-with-progressive-enhancement-at-beyond-telle/","tags":["progressive enhancement","presentations","conferences"],"date_published":"2011-12-12T21:05:00Z"},{"id":"https://www.aaron-gustafson.com/notebook/slides-from-fowd-nyc-2011/","title":"✍🏻 Slides from FoWD NYC 2011","summary":"<p>Below you’ll find the slides from the talk I gave earlier today at Future of Web Design titled “ HTML 5: Smart Markup for Smarter Websites .” It’s been a long day, so that’s it for now. I’ll post my notes from some of the talks I caught…</p>","content_html":"<p>Below you’ll find the slides from the talk I gave earlier today at <a href=\"http://futureofwebdesign.com/new-york-2011/\">Future of Web Design</a> titled “<a href=\"http://www.slideshare.net/AaronGustafson/html5-smart-markup-for-smarter-websites-fowd-nyc-2011\">HTML5: Smart Markup for Smarter Websites</a>.” It’s been a long day, so that’s it for now. I’ll post my notes from some of the talks I caught in a day or so (once I’ve finished prepping for Wednesday’s workshop).</p>\n<figure class=\"video-embed video-embed--16x9\"><iframe class=\"video-embed__video\" src=\"http://www.slideshare.net/slideshow/embed_code/10060798\" frameborder=\"0\"></iframe></figure>\n<p>Enjoy!</p>\n","url":"https://www.aaron-gustafson.com/notebook/slides-from-fowd-nyc-2011/","tags":["HTML","web standards","presentations"],"date_published":"2011-11-08T03:23:52Z"},{"id":"https://www.aaron-gustafson.com/notebook/progressive-enhancement-and-expressionengine/","title":"✍🏻 Progressive Enhancement and ExpressionEngine","summary":"<p>\tThis past week was a bit of a whirlwind as Kelly and I flew to DC for a few meetings and then to NYC for <a href=\"http://eeciconf.com\">the ExpressionEngine CodeIgniter Conference</a>. We had a blast at the conference, meeting new people, seeing old friends, and eating a ton of great food. While we were there, we got name-dropped by the affable <a href=\"http://ellislab.com/company/team/leslie_camacho/\">EllisLab CEO, Leslie Comacho</a> in his keynote address for our work on the forthcoming native rich text editor for ExpressionEngine and we also met up with the always charming <a href=\"http://adactio.com\">Jeremy Keith</a> (and the lovely <a href=\"http://lostintranslation.com\">Jessica Spengler</a>) to hatch some <a href=\"http://retreats4geeks.com\">R4G</a> plans that will be unveiled in the next week or so.</p>","content_html":"<p>\n\tThis past week was a bit of a whirlwind as Kelly and I flew to DC for a few meetings and then to NYC for <a href=\"http://eeciconf.com\">the ExpressionEngine CodeIgniter Conference</a>. We had a blast at the conference, meeting new people, seeing old friends, and eating a ton of great food. While we were there, we got name-dropped by the affable <a href=\"http://ellislab.com/company/team/leslie_camacho/\">EllisLab CEO, Leslie Comacho</a> in his keynote address for our work on the forthcoming native rich text editor for ExpressionEngine and we also met up with the always charming <a href=\"http://adactio.com\">Jeremy Keith</a> (and the lovely <a href=\"http://lostintranslation.com\">Jessica Spengler</a>) to hatch some <a href=\"http://retreats4geeks.com\">R4G</a> plans that will be unveiled in the next week or so.</p>\n<p>\n\tThe best part for me, though, was getting to talk about progressive enhancement. The conference organizer, <a href=\"http://twitter.com/roberteerhart\">Robert Eerhart</a>, gave me an hour to advocate on behalf of users and I made the most of that time by delving into the ways and means of progressive enhancement and how it can be accomplished in ExpessionEngine (and, to a lesser extent, CodeIgniter). I got tons of great questions from the audience and had many lively discussions after stepping off the stage as well. It was really nice to see so many people getting excited about a topic about which I’m incredibly passionate.</p>\n<p>\n\tI’ve <a href=\"http://www.slideshare.net/AaronGustafson/progressive-eenhancement-eeci-2011\">posted my slides to SlideShare</a>. If you were able to make the presentation, these will hopefully help jog your memory when it comes to the techniques I discussed, but if you couldn’t make the show, they’re also up for your enjoyment.</p>\n<figure class=\"video-embed video-embed--16x9\"><iframe class=\"video-embed__video\" src=\"http://www.slideshare.net/slideshow/embed_code/9812085?rel=0\" frameborder=\"0\"></iframe></figure>\n<p>\n\tI’d like to thank everyone who made EECI2011 so amazing and I’d like to give a special thank you to everyone who picked up a copy of my book while we were there. And if you missed out on getting a copy, you can pick one up over on <a href=\"http://easy-readers.net\">the Easy Readers site</a>. I’ll be happy to sign it for you if you reply to the receipt email and let the team know you missed out on picking up a copy at the event.</p>\n<p>\n\tThanks again and I look forward to seeing you all again next year!</p>\n","url":"https://www.aaron-gustafson.com/notebook/progressive-enhancement-and-expressionengine/","tags":["progressive enhancement","ExpressionEngine","presentations"],"date_published":"2011-10-25T13:17:00Z"},{"id":"https://www.aaron-gustafson.com/notebook/and-now-the-fun-begins/","title":"✍🏻 And now the fun begins","summary":"<p>Today marked the last day of my “work” here at SXSW and now it’s play time. It’s only been two days of the conference, but it seems like I’ve already done a week’s worth of stuff. My two sessions both went extremely well from my perspective and the feedback I’ve received has also been very good so far.</p>","content_html":"<p>Today marked the last day of my “work” here at SXSW and now it’s play time. It’s only been two days of the conference, but it seems like I’ve already done a week’s worth of stuff. My two sessions both went extremely well from my perspective and the feedback I’ve received has also been very good so far.</p>\n<p><a href=\"http://www.flickr.com/photos/kazuhito/417221254/\"><img alt=\" \" class=\"feature\" src=\"http://farm1.static.flickr.com/187/417221254_a680683936_m.jpg\" title=\"Aaron and Sarah by Kazuhito\"/></a></p>\n<p><span class=\"initial quote\">“</span>Ruining the User Experience” was yesterday and I think <a href=\"http://www.adaptivepath.com/aboutus/sarah.php\">Sarah</a> and I worked really well together. It flowed well and felt really tight, so I was extremely happy. And being that we were speaking in the “rock and roll room” to a much larger audience than I would have expected, I’m very pleased it went so well. I think we managed to pack a lot of good information into the 25 minutes and nailed the time pretty well dead-on. I do kind of wish the session had been a bit longer as I would have liked to guide the attendees through a few more examples, but I still think we managed to open a lot of eyes (and minds), so I am happy about that. And we left them wanting more, which is never a bad thing either.</p>\n<p>I’m not sure exactly how helpful they will be for people (at least not until the audio is posted), but <a href=\"http://www.slideshare.net/AaronGustafson/ruining-the-user-experience-sxsw-07\">I have uploaded the slides for the session</a>. For those who saw me give a session by the same name at The <abbr title=\"Asynchronus JavaScript and XML\">AJAX</abbr> Experience in October, this is a real departure from what you saw. I tore the old one to shreds and built this new one from scratch. Attendees at AjaxWorld in New York next week will be treated to a solo 45-minute version of this session with a few added examples.</p>\n<p>My second session, “The Future of JavaScript” was another 25-minute “power session” and I think it went equally well. It was much more geeky than most of my other sessions have been, with tons of code samples demonstrating some of the really cool stuff in JavaScript 1.6 and 1.7. As <a href=\"http://ejohn.org\">John Resig</a> mentioned to us at bowling tonight, <a href=\"http://andrewdupont.net\">Andrew</a> and I were going through the features of the two language upgrades “pretty rapid-fire,” but I think it worked well as a power session because we came in fast and hit the packed room with a lot of new information. I think extending it to 45 or 60 minutes would have been way too overwhelming. As promised, I have posted <a href=\"http://www.slideshare.net/AaronGustafson/the-future-of-javascript-sxsw-07\">the slides from that session</a> as well, so folks can copy the examples we used and play around with them on their own.</p>\n<p>I plan to relax a bit now that the important stuff is over. It was a little too rainy to hit the parties tonight after the bowling shindig, but I hope to engage in a bit more after-hours socialization tomorrow and Tuesday.</p>\n","url":"https://www.aaron-gustafson.com/notebook/and-now-the-fun-begins/","tags":["conferences","presentations","JavaScript","user experience"],"date_published":"2007-03-26T05:24:03Z"},{"id":"https://www.aaron-gustafson.com/notebook/heading-south/","title":"✍🏻 Heading South","summary":"<p>Tomorrow morning I’ll be making my annual pilgrimage to <a href=\"http://2007.sxsw.com/interactive/\">SXSW</a> (a.k.a. geek camp). In between catching up with friends, drinking, and checking out some of the excellent panels, I will be co-presenting two 25-minute “power sessions,” a new format for the conference.</p>","content_html":"<p>Tomorrow morning I’ll be making my annual pilgrimage to <a href=\"http://2007.sxsw.com/interactive/\">SXSW</a> (a.k.a. geek camp). In between catching up with friends, drinking, and checking out some of the excellent panels, I will be co-presenting two 25-minute “power sessions,” a new format for the conference.</p>\n<p>On Saturday afternoon, <a href=\"http://www.adaptivepath.com/aboutus/sarah.php\">Sarah Nelson</a> of Adaptive Path will join me to present the latest iteration of “<a href=\"http://2007.sxsw.com/interactive/programming/panels/?action=show&amp;id=IAP060214\">Ruining the User Experience</a>,” which I debuted at The <abbr title=\"Asynchronus JavaScript and XML\">AJAX</abbr> Experience in Boston last October. The session has been completely revamped and I am hopeful it will inspire more developers to work in tandem with user experience folks and vice versa.</p>\n<p>The following afternoon, <a href=\"http://andrewdupont.net\">Andrew Dupont</a> and I will be talking about “<a href=\"http://2007.sxsw.com/interactive/programming/panels/?action=show&amp;id=IAP060230\">The Future of JavaScript</a>.” We’ll be talking at length about the advancements in JavaScript 1.7 and other assorted geekery.</p>\n<p>Apart from those sessions, which I obviously need to attend, I haven’t really made up my mind as to what I want to see. There’s just <a href=\"http://2007.sxsw.com/interactive/programming/panels/\">so many good sessions</a>. I guess I’ll figure it out when I get there. I am <a href=\"http://web.archive.org/web/20071021034347/bowling.avalonstar.com/\">looking forward to bowling</a> though.</p>\n","url":"https://www.aaron-gustafson.com/notebook/heading-south/","tags":["conferences","presentations","travel"],"date_published":"2007-03-08T01:46:32Z"},{"id":"https://www.aaron-gustafson.com/notebook/new-article-tour-dates-and-feed-changes/","title":"✍🏻 New article, tour dates, and feed changes","summary":"<p>Hello, my name is Aaron Gustafson and I’m a delinquent blogger. It’s been over a month since my last <del>confession</del><ins>post</ins>.</p>","content_html":"<p>Hello, my name is Aaron Gustafson and I’m a delinquent blogger. It’s been over a month since my last <del>confession</del><ins>post</ins>.</p>\n<p>If it makes any difference, I’ll say that I am sorry, I’ve just been a little busy of late. Those of you keeping up with me via <a href=\"http://www.flickr.com/photos/aarongustafson/\">my Flickr stream</a> or <a href=\"http://beta.plazes.com/user/aarongustafson/\">Plazes</a> will see why: lots of travelling. It doesn’t seem to be ending anytime soon, but I have a bit of downtime today so I thought I’d post some updates.</p>\n<p>First off, I have <a href=\"http://www.digital-web.com/articles/push_my_button/\">a new article up on Digital Web Magazine that is all about the <code>button</code></a>. If you spend as much time with web forms as I do, I highly recommend checking it out. For some of you, the techniques may seem like old hat, but there are a lot of people out there who still haven’t realized the real power of the <code>button</code> element. On another publishing note, I’ve gotten a promotion to Technical Editor at <a href=\"http://alistapart.com\"><cite>A List Apart</cite></a>, which is sweet. Many thanks to Erin, Jeffrey and the rest of the team.</p>\n<p>Also, if you haven’t been to this site lately or don’t follow <a href=\"http://upcoming.org/syndicate/v2/my_events/12412\" type=\"application/rss+xml\">my events feed on Upcoming.org</a>, I will be speaking at <a href=\"http://www.theajaxexperience.com/\">The <abbr title=\"Asynchronus JavaScript and XML\">AJAX</abbr> Experience</a> in Boston late next month and I have also been booked to speak as part of <a href=\"http://north.webdirections.org/\">Web Directions North</a> in Vancouver early next year. I will also be co-leading a one-day workshop with <a href=\"http://stuffandnonsense.co.uk/\">Malarkey</a> while I’m there, if you’re up for some serious CSS-meets-DOM scripting magic.</p>\n<p>Finally, I’m starting to do some tidying up with regard to my feeds. I’ve had a <a href=\"http://feedburner.com\">FeedBurner</a> account for ages, but hadn’t ever really used it until today. I’ve created <a href=\"http://feeds.feedburner.com/EasyReader\" rel=\"alternate\" type=\"application/rss+xml\">a new feed for this site</a> which also incorporates <a href=\"http://web.archive.org/web/20080109075207/ma.gnolia.com/people/aarongustafson/bookmarks\">my ma.gnolia bookmarks</a> and Flickr photos (which, of late, have seen a lot more attention than this site). For the three of you using the old feed, I’d appreciate it if you could move over to this new one as I may disable the old feed at some point.</p>\n<p>Anyway, back into the fray… I’m sorry for not writing more often.</p>\n<p><dfn lang=\"la\" title=\"Through my fault, through my fault, through my most grievous fault.\">Mea culpa,<br/> Mea culpa,<br/> Mea maxima culpa.</dfn></p>\n","url":"https://www.aaron-gustafson.com/notebook/new-article-tour-dates-and-feed-changes/","tags":["web forms","presentations","web standards"],"date_published":"2006-09-26T14:49:15Z"}]}