ic Gastric bypass: bariatric and metabolic surgery perspectives / João Ettinger, Euler Ázaro, Rudolf Weiner, Kelvin D. Higa, Manoel Galvão Neto, Andre Fernandes Teixeira, Muhammad Jawad, editors By library.mit.edu Published On :: Sun, 26 Apr 2020 07:06:33 EDT Online Resource Full Article
ic Traditional Chinese medicine: heritage and adaptation / Paul U. Unschuld ; translated by Bridie J. Andrews By library.mit.edu Published On :: Sun, 26 Apr 2020 07:06:33 EDT Hayden Library - R601.U57813 2013 Full Article
ic Turner syndrome: pathophysiology, diagnosis and treatment / Patricia Y. Fechner, editor By library.mit.edu Published On :: Sun, 26 Apr 2020 07:06:33 EDT Online Resource Full Article
ic Oculoplastic Surgery: A Practical Guide to Common Disorders / edited by Essam A. El Toukhy By library.mit.edu Published On :: Sun, 26 Apr 2020 07:06:33 EDT Online Resource Full Article
ic Carving a niche: the medical profession in Mexico, 1800-1870 / Luz María Hernández Sáenz By library.mit.edu Published On :: Sun, 26 Apr 2020 07:06:33 EDT Hayden Library - R465.H47 2018 Full Article
ic Enlightened immunity: Mexico's experiments with disease prevention in the Age of Reason / Paul F. Ramírez By library.mit.edu Published On :: Sun, 26 Apr 2020 07:06:33 EDT Hayden Library - RA451.R36 2018 Full Article
ic The Artificial Knee: an Ongoing Evolution / by Peter S. Walker By library.mit.edu Published On :: Sun, 26 Apr 2020 07:06:33 EDT Online Resource Full Article
ic Perspectives in Performing Arts Medicine Practice: A Multidisciplinary Approach / edited by Sang-Hie Lee, Merry Lynn Morris, Santo V. Nicosia By library.mit.edu Published On :: Sun, 26 Apr 2020 07:06:33 EDT Online Resource Full Article
ic Atlas of operative maxillofacial trauma surgery: post-traumatic deformity / Michael Perry, Simon Holmes, editors By library.mit.edu Published On :: Sun, 26 Apr 2020 07:06:33 EDT Online Resource Full Article
ic Death is all around us: corpses, chaos, and public health in Porfirian Mexico City / Jonathan M. Weber By library.mit.edu Published On :: Sun, 26 Apr 2020 07:06:33 EDT Hayden Library - RA452.M6 W43 2019 Full Article
ic Dr. Arthur Spohn: surgeon, inventor, and Texas medical pioneer / Jane Clements Monday and Frances Brannen Vick ; with Charles W. Monday Jr. ; introduction by Kenneth L. Mattox By library.mit.edu Published On :: Sun, 26 Apr 2020 07:06:33 EDT Hayden Library - R154.S66 M66 2018 Full Article
ic Ethical issues in clinical forensic psychiatry Artemis Igoumenou, editor By library.mit.edu Published On :: Sun, 26 Apr 2020 07:06:33 EDT Online Resource Full Article
ic Medicine, religion, and magic in early Stuart England: Richard Napier's medical practice / Ofer Hadass By library.mit.edu Published On :: Sun, 26 Apr 2020 07:06:33 EDT Hayden Library - R489.N37 H33 2018 Full Article
ic Mental conditioning to perform common operations in general surgery training: a systematic approach to expediting skill acquisition and maintaining dexterity in performance / edited by Raul J. Rosenthal, Armando Rosales, Emanuele Lo Menzo, Fernando D. Di By library.mit.edu Published On :: Sun, 3 May 2020 07:23:24 EDT Online Resource Full Article
ic ICU protocols: a step-wise approach. / Rajesh Chawla, Subhash Todi, editors By library.mit.edu Published On :: Sun, 3 May 2020 07:23:24 EDT Online Resource Full Article
ic Fundamentals and Clinics of Deep Brain Stimulation: An Interdisciplinary Approach / edited by Yasin Temel, Albert F.G. Leentjens, Rob M.A. de Bie, Stephan Chabardes, Alfonso Fasano By library.mit.edu Published On :: Sun, 3 May 2020 07:23:24 EDT Online Resource Full Article
ic New therapies to prevent or cure auditory disorders Sylvie Pucheu, Kelly E. Radziwon, Richard Salvi, editors By library.mit.edu Published On :: Sun, 3 May 2020 07:23:24 EDT Online Resource Full Article
ic Handbook of lower extremity reconstruction: clinical case-based review and flap atlas / Scott T. Hollenbeck, Peter B. Arnold, Dennis P. Orgill, editors By library.mit.edu Published On :: Sun, 3 May 2020 07:23:24 EDT Online Resource Full Article
ic Pediatric gender identity: gender-affirming care for transgender & gender diverse youth / edited by Michelle Forcier, Gerrit Van Schalkwyk, Jack L. Turban By library.mit.edu Published On :: Sun, 3 May 2020 07:23:24 EDT Online Resource Full Article
ic Lasers in oral and maxillofacial surgery Stefan Stübinger, Florian Klämpfl, Michael Schmidt, Hans-Florian Zeilhofer, editors By library.mit.edu Published On :: Sun, 3 May 2020 07:23:24 EDT Online Resource Full Article
ic Evidence-based critical care: a case study approach / Robert C. Hyzy, Jakob McSparron, editors By library.mit.edu Published On :: Sun, 3 May 2020 07:23:24 EDT Online Resource Full Article
ic Heaviest element could have fascinating atomic and nuclear spectra By feedproxy.google.com Published On :: 2018-02-12T09:27:39Z Simulations suggest oganesson has extremely smooth electron and nucleon distributions Full Article
ic TRAPPIST-1 exoplanets could harbour significant amounts of water By feedproxy.google.com Published On :: 2018-02-13T09:29:54Z All seven worlds circling a red dwarf could be habitable, say astronomers Full Article
ic Pistachio trees 'talk' to their neighbours, reveals statistical physics By feedproxy.google.com Published On :: 2018-02-19T15:43:36Z Ising model could account for nut production of pistachio orchards Full Article
ic Japan’s SuperKEKB set for first particle collisions By feedproxy.google.com Published On :: 2018-02-21T14:45:12Z Revamped accelerator will soon be smashing electrons and positrons together Full Article
ic Physicists beat Lorentz reciprocity for microwave transmission By feedproxy.google.com Published On :: 2018-02-22T14:27:47Z New device could boost telecommunications and be adapted for photonics Full Article
ic How to Build a Dynamic Imgur Upload App Using jQuery & PHP By designshack.net Published On :: Thu, 29 Aug 2013 14:00:13 +0000 Many new online web services are providing backend APIs for developers. These allow anyone to connect into a web app and pull out specific information (or push or change bits of data). Today we’re specifically looking at the API for Imgur. In this tutorial I want to demonstrate how we can remotely mirror an image […] Full Article JavaScript PHP api jQuery php
ic Introduction to Service Worker: How to use Service Worker By feedproxy.google.com Published On :: Mon, 01 Dec 2014 00:00:00 +0000 Service Worker will revolutionize the way we build for the web. Learn about what it is, why it is important and how to use it. Full Article
ic Rolling out Public Key Pinning with HPKP Reporting By feedproxy.google.com Published On :: Tue, 01 Sep 2015 00:00:00 +0000 Full Article
ic Updates to the service worker cache API By feedproxy.google.com Published On :: Thu, 03 Sep 2015 00:00:00 +0000 Full Article
ic AAP MLA Prakash Jarwal arrested in Delhi doctor suicide case By Published On :: Saturday, May 09, 2020, 19:43 +0530 A Delhi court had on May 8 issued a non-bailable warrant against Jarwal and his close aide Kapil Nagar. Full Article
ic Semantics to Screen Readers By feedproxy.google.com Published On :: 2019-02-28T13:37:00+00:00 As a child of the ’90s, one of my favorite movie quotes is from Harriet the Spy: “there are as many ways to live as there are people in this world, and each one deserves a closer look.” Likewise, there are as many ways to browse the web as there are people online. We each bring unique context to our web experience based on our values, technologies, environments, minds, and bodies. Assistive technologies (ATs), which are hardware and software that help us perceive and interact with digital content, come in diverse forms. ATs can use a whole host of user input, ranging from clicks and keystrokes to minor muscle movements. ATs may also present digital content in a variety of forms, such as Braille displays, color-shifted views, and decluttered user interfaces (UIs). One more commonly known type of AT is the screen reader. Programs such as JAWS, Narrator, NVDA, and VoiceOver can take digital content and present it to users through voice output, may display this output visually on the user’s screen, and can have Braille display and/or screen magnification capabilities built in. If you make websites, you may have tested your sites with a screen reader. But how do these and other assistive programs actually access your content? What information do they use? We’ll take a detailed step-by-step view of how the process works. (For simplicity we’ll continue to reference “browsers” and “screen readers” throughout this article. These are essentially shorthands for “browsers and other applications,” and “screen readers and other assistive technologies,” respectively.) The semantics-to-screen-readers pipeline Accessibility application programming interfaces (APIs) create a useful link between user applications and the assistive technologies that wish to interact with them. Accessibility APIs facilitate communicating accessibility information about user interfaces (UIs) to the ATs. The API expects information to be structured in a certain way, so that whether a button is properly marked up in web content or is sitting inside a native app taskbar, a button is a button is a button as far as ATs are concerned. That said, screen readers and other ATs can do some app-specific handling if they wish. On the web specifically, there are some browser and screen reader combinations where accessibility API information is supplemented by access to DOM structures. For this article, we’ll focus specifically on accessibility APIs as a link between web content and the screen reader. Here’s the breakdown of how web content reaches screen readers via accessibility APIs: The web developer uses host language markup (HTML, SVG, etc.), and potentially roles, states, and properties from the ARIA suite where needed to provide the semantics of their content. Semantic markup communicates what type an element is, what content it contains, what state it’s in, etc. The browser rendering engine (alternatively referred to as a “user agent”) takes this information and maps it into an accessibility API. Different accessibility APIs are available on different operating systems, so a browser that is available on multiple platforms should support multiple accessibility APIs. Accessibility API mappings are maintained on a lower level than web platform APIs, so web developers don’t directly interact with accessibility APIs. The accessibility API includes a collection of interfaces that browsers and other apps can plumb into, and generally acts as an intermediary between the browser and the screen reader. Accessibility APIs provide interfaces for representing the structure, relationships, semantics, and state of digital content, as well as means to surface dynamic changes to said content. Accessibility APIs also allow screen readers to retrieve and interact with content via the API. Again, web developers don’t interact with these APIs directly; the rendering engine handles translating web content into information useful to accessibility APIs. Examples of accessibility APIs Windows: Microsoft Active Accessibility (MSAA), extended with another API called IAccessible2 (IA2) Windows: UI Automation (UIA), the Microsoft successor to MSAA. A browser on Windows can choose to support MSAA with IA2, UIA, or both. MacOS: NSAccessibility (AXAPI) Linux/Gnome: Accessibility Toolkit (ATK) and Assistive Technology Service Provider Interface (AT-SPI). This case is a little different in that there are actually two separate APIs: one through which browsers and other applications pass information along to (ATK) and one that ATs then call from (AT-SPI). The screen reader uses client-side methods from these accessibility APIs to retrieve and handle information exposed by the browser. In browsers where direct access to the Document Object Model (DOM) is permitted, some screen readers may also take additional information from the DOM tree. A screen reader can also interact with apps that use differing accessibility APIs. No matter where they get their information, screen readers can dream up any interaction modes they want to provide to their users (I’ve provided links to screen reader commands at the end of this article). Testing by site creators can help identify content that feels awkward in a particular navigation mode, such as multiple links with the same text (“Learn more”), as one example. Example of this pipeline: surfacing a button element to screen reader users Let’s suppose for a moment that a screen reader wants to understand what object is next in the accessibility tree (which I’ll explain further in the next section), so it can surface that object to the user as they navigate to it. The flow will go a little something like this: Diagram illustrating the steps involved in presenting the next object in a document; detailed list follows The screen reader requests information from the API about the next accessible object, relative to the current object. The API (as an intermediary) passes along this request to the browser. At some point, the browser references DOM and style information, and discovers that the relevant element is a non-hidden button: <button>Do a thing</button>. The browser maps this HTML button into the format the API expects, such as an accessible object with various properties: Name: Do a thing, Role: Button. The API returns this information from the browser to the screen reader. The screen reader can then surface this object to the user, perhaps stating “Button, Do a thing.” Suppose that the screen reader user would now like to “click” this button. Here’s how their action flows all the way back to web content: Diagram illustrating the steps involved in routing a screen reader click to web content; detailed list follows The user provides a particular screen reader command, such as a keystroke or gesture. The screen reader calls a method into the API to invoke the button. The API forwards this interaction to the browser. How a browser may respond to incoming interactions depends on the context, but in this case the browser can raise this as a “click” event through web APIs. The browser should give no indication that the click came from an assistive technology, as doing so would violate the user’s right to privacy. The web developer has registered a JavaScript event listener for clicks; their callback function is now executed as if the user clicked with a mouse. Now that we have a general sense of the pipeline, let’s go into a little more detail on the accessibility tree. The accessibility tree Dev Tools in Microsoft Edge showing the DOM tree and accessibility tree side by side; there are more nodes in the DOM tree The accessibility tree is a hierarchical representation of elements in a UI or document, as computed for an accessibility API. In modern browsers, the accessibility tree for a given document is a separate, parallel structure to the DOM tree. “Parallel” does not necessarily mean there is a 1:1 match between the nodes of these two trees. Some elements may be excluded from the accessibility tree, for example if they are hidden or are not semantically useful (think non-focusable wrapper divs without any semantics added by a web developer). This idea of a hierarchical structure is somewhat of an abstraction. The definition of what exactly an accessibility tree is in practice has been debated and partially defined in multiple places, so implementations may differ in various ways. For example, it’s not actually necessary to generate accessible objects for every element in the DOM whenever the DOM tree is constructed. As a performance consideration, a browser could choose to deal with only a subset of objects and their relationships at a time—that is, however much is necessary to fulfill the requests coming from ATs. The rendering engine could make these computations during all user sessions, or only do so when assistive technologies are actively running. Generally speaking, modern web browsers wait until after style computation to build up any accessible objects. Browsers wait in part because generated content (such as ::before and ::after) can contain text that can participate in calculation of the accessible object’s name. CSS styles can also impact accessible objects in other various ways: text styling can come through as attributes on accessible text ranges. Display property values can impact the computation of line text ranges. These are just a few ways in which style can impact accessibility semantics. Browsers may also use different structures as the basis for accessible object computation. One rendering engine may walk the DOM tree and cross-reference style computations to build up parallel tree structures; another engine may use only the nodes that are available in a style tree in order to build up their accessibility tree. User agent participants in the standards community are currently thinking through how we can better document our implementation details, and whether it might make sense to standardize more of these details further down the road. Let’s now focus on the branches of this tree, and explore how individual accessibility objects are computed. Building up accessible objects From API to API, an accessible object will generally include a few things: Role, or the type of accessible object (for example, Button). The role tells a user how they can expect to interact with the control. It is typically presented when screen reader focus moves onto the accessible object, and it can be used to provide various other functionalities, such as skipping around content via one type of object. Name, if specified. The name is an (ideally short) identifier that better helps the user identify and understand the purpose of an accessible object. The name is often presented when screen focus moves to the object (more on this later), can be used as an identifier when presenting a list of available objects, and can be used as a hook for functionalities such as voice commands. Description and/or help text, if specified. We’ll use “Description” as a shorthand. The Description can be considered supplemental to the Name; it’s not the main identifier but can provide further information about the accessible object. Sometimes this is presented when moving focus to the accessible object, sometimes not; this variation depends on both the screen reader’s user experience design and the user’s chosen verbosity settings. Properties and methods surfacing additional semantics. For simplicity’s sake, we won’t go through all of these. For your awareness, properties can include details like layout information or available interactions (such as invoking the element or modifying its value). Let’s walk through an example using markup for a simple mood tracker. We’ll use simplified property names and values, because these can differ between accessibility APIs. <form> <label for="mood">On a scale of 1–10, what is your mood today?</label> <input id="mood" type="range" min="1" max="10" value="5" aria-describedby="helperText" /> <p id="helperText">Some helpful pointers about how to rate your mood.</p> <!-- Using a div with button role for the purposes of showing how the accessibility tree is created. Please use the button element! --> <div tabindex="0" role="button">Log Mood</div> </form> First up is our form element. This form doesn’t have any attributes that would give it an accessible Name, and a form landmark without a Name isn’t very useful when jumping between landmarks. Therefore, HTML mapping standards specify that it should be mapped as a group. Here’s the beginning of our tree: Role: Group Next up is the label. This one doesn’t have an accessible Name either, so we’ll just nest it as an object of role “Label” underneath the form: Role: Group Role: Label Let’s add the range input, which will map into various APIs as a “Slider.” Due to the relationship created by the for attribute on the label and id attribute on the input, this slider will take its Name from the label contents. The aria-describedby attribute is another id reference and points to a paragraph with some text content, which will be used for the slider’s Description. The slider object’s properties will also store “labelledby” and “describedby” relationships pointing to these other elements. And it will specify the current, minimum, and maximum values of the slider. If one of these range values were not available, ARIA standards specify what should be the default value. Our updated tree: Role: Group Role: Label Role: Slider Name: On a scale of 1–10, what is your mood today? Description: Some helpful pointers about how to rate your mood. LabelledBy: [label object] DescribedBy: helperText ValueNow: 5 ValueMin: 1 ValueMax: 10 The paragraph will be added as a simple paragraph object (“Text” or “Group” in some APIs): Role: Group Role: Label Role: Slider Name: On a scale of 1–10, what is your mood today? Description: Some helpful pointers about how to rate your mood. LabelledBy: [label object] DescribedBy: helperText ValueNow: 5 ValueMin: 1 ValueMax: 10 Role: Paragraph The final element is an example of when role semantics are added via the ARIA role attribute. This div will map as a Button with the name “Log Mood,” as buttons can take their name from their children. This button will also be surfaced as “invokable” to screen readers and other ATs; special types of buttons could provide expand/collapse functionality (buttons with the aria-expanded attribute), or toggle functionality (buttons with the aria-pressed attribute). Here’s our tree now: Role: Group Role: Label Role: Slider Name: On a scale of 1–10, what is your mood today? Description: Some helpful pointers about how to rate your mood. LabelledBy: [label object] DescribedBy: helperText ValueNow: 5 ValueMin: 1 ValueMax: 10 Role: Paragraph Role: Button Name: Log Mood On choosing host language semantics Our sample markup mentions that it is preferred to use the HTML-native button element rather than a div with a role of “button.” Our buttonified div can be operated as a button via accessibility APIs, as the ARIA attribute is doing what it should—conveying semantics. But there’s a lot you can get for free when you choose native elements. In the case of button, that includes focus handling, user input handling, form submission, and basic styling. Aaron Gustafson has what he refers to as an “exhaustive treatise” on buttons in particular, but generally speaking it’s great to let the web platform do the heavy lifting of semantics and interaction for us when we can. ARIA roles, states, and properties are still a great tool to have in your toolbelt. Some good use cases for these are providing further semantics and relationships that are not naturally expressed in the host language; supplementing semantics in markup we perhaps don’t have complete control over; patching potential cross-browser inconsistencies; and making custom elements perceivable and operable to users of assistive technologies. Notes on inclusion or exclusion in the tree Standards define some rules around when user agents should exclude elements from the accessibility tree. Excluded elements can include those hidden by CSS, or the aria-hidden or hidden attributes; their children would be excluded as well. Children of particular roles (like checkbox) can also be excluded from the tree, unless they meet special exceptions. The full rules can be found in the “Accessibility Tree” section of the ARIA specification. That being said, there are still some differences between implementers, some of which include more divs and spans in the tree than others do. Notes on name and description computation How names and descriptions are computed can be a bit confusing. Some elements have special rules, and some ARIA roles allow name computation from the element’s contents, whereas others do not. Name and description computation could probably be its own article, so we won’t get into all the details here (refer to “Further reading and resources” for some links). Some short pointers: aria-label, aria-labelledby, and aria-describedby take precedence over other means of calculating name and description. If you expect a particular HTML attribute to be used for the name, check the name computation rules for HTML elements. In your scenario, it may be used for the full description instead. Generated content (::before and ::after) can participate in the accessible name when said name is taken from the element’s contents. That being said, web developers should not rely on pseudo-elements for non-decorative content, as this content could be lost when a stylesheet fails to load or user styles are applied to the page. When in doubt, reach out to the community! Tag questions on social media with “#accessibility.” “#a11y” is a common shorthand; the “11” stands for “11 middle letters in the word ‘accessibility.’” If you find an inconsistency in a particular browser, file a bug! Bug tracker links are provided in “Further reading and resources.” Not just accessible objects Besides a hierarchical structure of objects, accessibility APIs also offer interfaces that allow ATs to interact with text. ATs can retrieve content text ranges, text selections, and a variety of text attributes that they can build experiences on top of. For example, if someone writes an email and uses color alone to highlight their added comments, the person reading the email could increase the verbosity of speech output in their screen reader to know when they’re encountering phrases with that styling. However, it would be better for the email author to include very brief text labels in this scenario. The big takeaway here for web developers is to keep in mind that the accessible name of an element may not always be surfaced in every navigation mode in every screen reader. So if your aria-label text isn’t being read out in a particular mode, the screen reader may be primarily using text interfaces and only conditionally stopping on objects. It may be worth your while to consider using text content—even if visually hidden—instead of text via an ARIA attribute. Read more thoughts on aria-label and aria-labelledby. Accessibility API events It is the responsibility of browsers to surface changes to content, structure, and user input. Browsers do this by sending the accessibility API notifications about various events, which screen readers can subscribe to; again, for performance reasons, browsers could choose to send notifications only when ATs are active. Let’s suppose that a screen reader wants to surface changes to a live region (an element with role="alert" or aria-live): Diagram illustrating the steps involved in announcing a live region via a screen reader; detailed list follows The screen reader subscribes to event notifications; it could subscribe to notifications of all types, or just certain types as categorized by the accessibility API. Let’s assume in our example that the screen reader is at least listening to live region change events. In the web content, the web developer changes the text content of a live region. The browser (provider) recognizes this as a live region change event, and sends the accessibility API a notification. The API passes this notification along to the screen reader. The screen reader can then use metadata from the notification to look up the relevant accessible objects via the accessibility API, and can surface the changes to the user. ATs aren’t required to do anything with the information they retrieve. This can make it a bit trickier as a web developer to figure out why a screen reader isn’t announcing a change: it may be that notifications aren’t being raised (for example, because a browser is not sending notifications for a live region dynamically inserted into web content), or the AT is not subscribed or responding to that type of event. Testing with screen readers and dev tools While conformance checkers can help catch some basic accessibility issues, it’s ideal to walk through your content manually using a variety of contexts, such as using a keyboard only; with various OS accessibility settings turned on; and at different zoom levels and text sizes, and so on. As you do this, keep in mind the Web Content Accessibility Guidelines (WCAG 2.1), which give general guidelines around expectations for inclusive web content. If you can test with users after your own manual test passes, all the better! Robust accessibility testing could probably be its own series of articles. In this one, we’ll go over some tips for testing with screen readers, and catching accessibility errors as they are mapped into the accessibility API in a more general sense. Screen reader testing Screen readers exist in many forms: some are pre-installed on the operating system and others are separate applications that in some cases are free to download. The WebAIM screen reader user survey provides a list of commonly used screen reader and browser combinations among survey participants. The “Further reading and resources” section at the end of this article includes full screen reader user docs, and Deque University has a great set of screen reader command cheat sheets that you can refer to. Some actions you might take to test your content: Read the next/previous item. Read the next/previous line. Read continuously from a particular point. Jump by headings, landmarks, and links. Tab around focusable elements only. Get a summary of all elements of a particular type within the page. Search the page for specific content. Use table-specific commands to interact with your tables. Jump around by form field; are field instructions discoverable in this navigational mode? Use keyboard commands to interact with all interactive elements. Are your JavaScript-driven interactions still operable with screen readers (which can intercept key input in certain modes)? WAI-ARIA Authoring Practices 1.1 includes notes on expected keyboard interactions for various widgets. Try out anything that creates a content change or results in navigating elsewhere. Would it be obvious, via screen reader output, that a change occurred? Tracking down the source of unexpected behavior If a screen reader does not announce something as you’d expect, here are a few different checks you can run: Does this reproduce with the same screen reader in multiple browsers on this OS? It may be an issue with the screen reader or your expectation may not match the screen reader’s user experience design. For example, a screen reader may choose to not expose the accessible name of a static, non-interactive element. Checking the user docs or filing a screen reader issue with a simple test case would be a great place to start. Does this reproduce with multiple screen readers in the same browser, but not in other browsers on this OS? The browser in question may have an issue, there may be compatibility differences between browsers (such as a browser doing extra helpful but non-standard computations), or a screen reader’s support for a specific accessibility API may vary. Filing a browser issue with a simple test case would be a great place to start; if it’s not a browser bug, the developer can route it to the right place or make a code suggestion. Does this reproduce with multiple screen readers in multiple browsers? There may be something you can adjust in your code, or your expectations may differ from standards and common practices. How does this element’s accessibility properties and structure show up in browser dev tools? Inspecting accessibility trees and properties in dev tools Major modern browsers provide dev tools to help you observe the structure of the accessibility tree as well as a given element’s accessibility properties. By observing which accessible objects are generated for your elements and which properties are exposed on a given element, you may be able to pinpoint issues that are occurring either in front-end code or in how the browser is mapping your content into the accessibility API. Let’s suppose that we are testing this piece of code in Microsoft Edge with a screen reader: <div class="form-row"> <label>Favorite color</label> <input id="myTextInput" type="text" /> </div> We’re navigating the page by form field, and when we land on this text field, the screen reader just tells us this is an “edit” control—it doesn’t mention a name for this element. Let’s check the tools for the element’s accessible name. 1. Inspect the element to bring up the dev tools. The Microsoft Edge dev tools, with an input element highlighted in the DOM tree 2. Bring up the accessibility tree for this page by clicking the accessibility tree button (a circle with two arrows) or pressing Ctrl+Shift+A (Windows). The accessibility tree button activated in the Microsoft Edge dev tools Reviewing the accessibility tree is an extra step for this particular flow but can be helpful to do. When the Accessibility Tree pane comes up, we notice there’s a tree node that just says “textbox:,” with nothing after the colon. That suggests there’s not a name for this element. (Also notice that the div around our form input didn’t make it into the accessibility tree; it was not semantically useful). 3. Open the Accessibility Properties pane, which is a sibling of the Styles pane. If we scroll down to the Name property—aha! It’s blank. No name is provided to the accessibility API. (Side note: some other accessibility properties are filtered out of this list by default; toggle the filter button—which looks like a funnel—in the pane to get the full list). The Accessibility Properties pane open in Microsoft Edge dev tools, in the same area as the Styles pane 4. Check the code. We realize that we didn’t associate the label with the text field; that is one strategy for providing an accessible name for a text input. We add for="myTextInput" to the label: <div class="form-row"> <label for="myTextInput">Favorite color</label> <input id="myTextInput" type="text" /> </div> And now the field has a name: The accessible Name property set to the value of “Favorite color” inside Microsoft Edge dev tools In another use case, we have a breadcrumb component, where the current page link is marked with aria-current="page": <nav class="breadcrumb" aria-label="Breadcrumb"> <ol> <li> <a href="/cat/">Category</a> </li> <li> <a href="/cat/sub/">Sub-Category</a> </li> <li> <a aria-current="page" href="/cat/sub/page/">Page</a> </li> </ol> </nav> When navigating onto the current page link, however, we don’t get any indication that this is the current page. We’re not exactly sure how this maps into accessibility properties, so we can reference a specification like Core Accessibility API Mappings 1.2 (Core-AAM). Under the “State and Property Mapping” table, we find mappings for “aria-current with non-false allowed value.” We can check for these listed properties in the Accessibility Properties pane. Microsoft Edge, at the time of writing, maps into UIA (UI Automation), so when we check AriaProperties, we find that yes, “current=page” is included within this property value. The accessible Name property set to the value of “Favorite color” inside Microsoft Edge dev tools Now we know that the value is presented correctly to the accessibility API, but the particular screen reader is not using the information. As a side note, Microsoft Edge’s current dev tools expose these accessibility API properties quite literally. Other browsers’ dev tools may simplify property names and values to make them easier to read, particularly if they support more than one accessibility API. The important bit is to find if there’s a property with roughly the name you expect and whether its value is what you expect. You can also use this method of checking through the property names and values if mapping specs, like Core-AAM, are a bit intimidating! Advanced accessibility tools While browser dev tools can tell us a lot about the accessibility semantics of our markup, they don’t generally include representations of text ranges or event notifications. On Windows, the Windows SDK includes advanced tools that can help debug these parts of MSAA or UIA mappings: Inspect and AccEvent (Accessible Event Watcher). Using these tools presumes knowledge of the Windows accessibility APIs, so if this is too granular for you and you’re stuck on an issue, please reach out to the relevant browser team! There is also an Accessibility Inspector in Xcode on MacOS, with which you can inspect web content in Safari. This tool can be accessed by going to Xcode > Open Developer Tool > Accessibility Inspector. Diversity of experience Equipped with an accessibility tree, detailed object information, event notifications, and methods for interacting with accessible objects, screen readers can craft a browsing experience tailored to their audiences. In this article, we’ve used the term “screen readers” as a proxy for a whole host of tools that may use accessibility APIs to provide the best user experience possible. Assistive technologies can use the APIs to augment presentation or support varying types of user input. Examples of other ATs include screen magnifiers, cognitive support tools, speech command programs, and some brilliant new app that hasn’t been dreamed up yet. Further, assistive technologies of the same “type” may differ in how they present information, and users who share the same tool may further adjust settings to their liking. As web developers, we don’t necessarily need to make sure that each instance surfaces information identically, because each user’s preferences will not be exactly the same. Our aim is to ensure that no matter how a user chooses to explore our sites, content is perceivable, operable, understandable, and robust. By testing with a variety of assistive technologies—including but not limited to screen readers—we can help create a better web for all the many people who use it. Further reading and resources WebAIM “Survey of Users with Low Vision” WebAIM “Screen Reader User Survey” W3C developer guides W3C Web Accessibility Initiative (WAI) resources Web Content Accessibility Guidelines (WCAG) 2.1 WAI-ARIA Authoring Practices 1.1 ARIA in HTML Using ARIA W3C specifications: The docs below are known as “AAMs.” They detail how content maps into various accessibility APIs and may be less relevant to web developers’ day-to-day work. However, some have notes on how specific elements’ names and descriptions are meant to be calculated: Core Accessibility API Mappings 1.1 Graphics Accessibility API Mappings HTML Accessibility API Mappings 1.0 SVG Accessibility API Mappings Inclusive Components A List Apart articles on accessibility “Conversational Semantics” “WAI-finding with ARIA Landmark Roles” “The Importance of Manual Accessibility Testing” Deque University screen reader shortcuts references Screen reader user docs (commands) JAWS user docs Narrator user docs NVDA user docs VoiceOver user docs (VoiceOver command charts) iOS VoiceOver user docs Browser rendering engine bug trackers Chrome Firefox Microsoft Edge Safari Full Article
ic Daily Ethical Design By feedproxy.google.com Published On :: 2019-05-30T14:30:24+00:00 Suddenly, I realized that the people next to me might be severely impacted by my work. I was having a quick lunch in the airport. A group of flight attendants sat down at the table next to me and started to prepare for their flight. For a while now, our design team had been working on futuristic concepts for the operations control center of these flight attendants’ airline, pushing ourselves to come up with innovative solutions enabled by the newest technologies. As the control center deals with all activities around flying planes, our concepts touched upon everything and everyone within the airline. How was I to know what the impact of my work would be on the lives of these flight attendants? And what about the lives of all the other people working at the airline? Ideally, we would have talked to all the types of employees in the company and tested our concepts with them. But, of course, there was no budget (or time) allocated to do so, not to mention we faced the hurdle of convincing (internal) stakeholders of the need. Not for the first time, I felt frustrated: practical, real-world constraints prevented me from assessing the impact and quality of my work. They prevented me from properly conducting ethical design. What is ethical design? Right, good question. A very comprehensive definition of ethical design can be found at Encyclopedia.com: Design ethics concerns moral behavior and responsible choices in the practice of design. It guides how designers work with clients, colleagues, and the end users of products, how they conduct the design process, how they determine the features of products, and how they assess the ethical significance or moral worth of the products that result from the activity of designing. In other words, ethical design is about the “goodness”—in terms of benefit to individuals, society, and the world—of how we collaborate, how we practice our work, and what we create. There’s never a black-and-white answer for whether design is good or bad, yet there are a number of areas for designers to focus on when considering ethics. Usability Nowadays usability has conquered a spot as a basic requirement for each interface; unusable products are considered design failures. And rightly so; we have a moral obligation as designers to create products that are intuitive, safe, and free from possibly life-threatening errors. We were all reminded of usability’s importance by last year’s accidental nuclear strike warning in Hawaii. What if, instead of a false-positive, the operator had broadcasted a false-negative? Accessibility Like usability, inclusive design has become a standard item in the requirement list of many designers and companies. (I will never forget that time someone tried to use our website with a screen reader—and got absolutely stuck at the cookie message.) Accessible design benefits all, as it attempts to cover as many needs and capabilities as possible. Yet for each design project, there are still a lot of tricky questions to answer. Who gets to benefit from our solutions? Who is (un)intentionally left out? Who falls outside the “target customer segment”? Privacy Another day, another Facebook privacy scandal. As we’re progressing into the Data Age, the topic of privacy has become almost synonymous with design ethics. There’s a reason why more and more people use DuckDuckGo as an alternative search engine to Google. Corporations have access to an abundance of personal information about consumers, and as designers we have the privilege—and responsibility—of using this information to shape products and services. We have to consider how much information is strictly necessary and how much people are willing to give up in exchange for services. And how can we make people aware of the potential risks without overloading them? User involvement Overlapping largely with privacy, this focus area is about how we deal with our users and what we do with the data that we collect from them. IDEO has recently published The Little Book of Design Research Ethics, which provides a comprehensive overview of the core principles and guidelines we should follow when conducting design research. Persuasion Ethics related to persuasion is about to what extent we may influence the behavior and thoughts of our users. It doesn’t take much to bring acceptable, “white hat” persuasion into gray or even dark territories. Conversion optimization, for example, can easily turn into “How do we squeeze out more revenue from our customers by turning their unconsciousness against them?” Prime examples include Netflix, which convinces us to watch, watch, and watch even more, and Booking.com, which barrages our senses with urgency and social pressure. Focus The current digital landscape is addictive, distracting, and competing for attention. Designing for focus is about responsibly handling people’s most valuable resource: time. Our challenge is to limit everything that disrupts our users’ attention, lower the addictiveness of products, and create calmness. The Center for Humane Technology has started a useful list of resources for this purpose. Sustainability What’s the impact of our work on the world’s environment, resources, and climate? Instead of continuously adding new features in the unrelenting scrum treadmill, how could we design for fewer? We’re in the position to create responsible digital solutions that enable sustainable consumer behavior and prevent overconsumption. For example, apps such as Optimiam and Too Good To Go allow people to order leftover food that would normally be thrashed. Or consider Mutum and Peerby, whose peer-to-peer platforms promote the sharing and reuse of owned products. Society The Ledger of Harms of the Center for Human Technology is a work-in-progress collection of the negative impacts that digital technology has on society, including topics such as relationships, mental health, and democracy. Designers who are mindful of society consider the impact of their work on the global economy, communities, politics, and health. [caption id="attachment_7171650" align="alignnone" width="1200"] The focus areas of design ethics. That’s a lot to consider![/caption] Ethics as an inconvenience Ideally, in every design project, we should assess the potential impact in all of the above-mentioned areas and take steps to prevent harm. Yet there are many legitimate, understandable reasons why we often neglect to do so. It’s easy to have moral principles, yet in the real world, with the constraints that our daily life imposes upon us, it’s seldom easy to act according to those principles. We might simply say it’s inconvenient at the moment. That there’s a lack of time or budget to consider all the ethical implications of our work. That there are many more pressing concerns that have priority right now. We might genuinely believe it’s just a small issue, something to consider later, perhaps. Mostly, we are simply unaware of the possible consequences of our work. And then there’s the sheer complexity of it all: it’s simply too much to simultaneously focus on. When short on time, or in the heat of approaching deadlines and impatient stakeholders, how do you incorporate all of design ethics’ focus areas? Where do you even start? Ethics as a structural practice For these reasons, I believe we need to elevate design ethics to a more practical level. We need to find ways to make ethics not an afterthought, not something to be considered separately, but rather something that’s so ingrained in our process that not doing it means not doing design at all. The only way to overcome the “inconvenience” of acting ethically is to practice daily ethical design: ethics structurally integrated in our daily work, processes, and tools as designers. No longer will we have to rely on the exceptions among us; those extremely principled who are brave enough to stand up against the system no matter what kind of pressure is put upon them. Because the system will be on our side. By applying ethics daily and structurally in our design process, we’ll be able to identify and neutralize in a very early stage the potential for mistakes and misuse. We’ll increase the quality of our design and our practices simply because we’ll think things through more thoroughly, in a more conscious and structured manner. But perhaps most important is that we’ll establish a new standard for design. A standard that we can sell to our clients as the way design should be done, with ethical design processes and deliverables already included. A standard that can be taught to design students so that the newest generation of designers doesn’t know any better than to apply ethics, always. How to practice daily ethical design? At this point we’ve arrived at the question of how we can structurally integrate ethics into our design process. How do we make sure that our daily design decisions will result in a product that’s usable and accessible; protects people’s privacy, agency, and focus; and benefits both society and nature? I want to share with you some best practices that I’ve identified so far, and how I’ve tried to apply them during a recent project at Mirabeau. The goal of the project was to build a web application that provides a shaver manufacturer’s factory workers insight into the real-time availability of production materials. Connect to your organization’s mission and values By connecting our designs to the mission and values of the companies we work for, we can structurally use our design skills in a strategic manner, for moral purposes. We can challenge the company to truly live up to its promises and support it in carrying out its mission. This does, however, require you to be aware of the company’s values, and to compare these to your personal values. As I had worked with our example client before, I knew it was a company that takes care of its employees and has a strong focus on creating a better world. During the kick-off phase, we used a strategy pyramid to structure the client’s mission and values, and to agree upon success factors for the project. We translated the company’s customer-facing brand guidelines to employee-focused design principles that maintained the essence of the organization. Keep track of your assumptions Throughout our entire design process, we make assumptions for each decision that we take. By structurally keeping track of these assumptions, you’ll never forget about the limitations of your design and where the potential risks lie in terms of (harmful) impact on users, the project, the company, and society. In our example project, we listed our assumptions about user goals, content, and functionalities for each page of the application. If we were not fully sure about the value for end users, or the accuracy of a user goal, we marked it as a value assumption. When we were unsure if data could be made available, we marked this as a data (feasibility) assumption. If we were not sure whether a feature would add to the manufacturer’s business, we marked it as a scope assumption. Every week, we tested our assumptions with end users and business stakeholders through user tests and sprint demos. Each design iteration led to new questions and assumptions to be tested the next week. Aim to be proven wrong While our assumptions are the known unknowns, there are always unknown unknowns that we aren’t aware of but could be a huge risk for the quality and impact of our work. The only way we can identify these is by applying the scientific principle of falsifiability: seeking actively to be proven wrong. Only outsiders can point out to us what we miss as an individual or as a team. In our weekly user tests, we included factory workers and stakeholders with different disciplines, from different departments, and working in different contexts, to identify the edge cases that could break our concept. On one occasion, this made us reconsider the entirety of our concept. Still, we could have done better: although scalability to other factories was an important success factor, we were unable to gather input from those other factories during the project. We felt our only option was to mention this as a risk (“limit to scalability”). Use the power of checklists Let’s face it: we forget things. (Without scrolling up the page, can you name all the focus areas of design ethics?) This is where checklists help us out: they provide knowledge in the world, so that we don’t have to process it in our easily overwhelmed memory. Simple yet powerful, a checklist is an essential tool to practice daily ethical design. In our example project, we used checklists to maintain an overview of questions and assumptions to user test, checking whether we included our design principles properly, and assessing whether we complied to the client’s values, design principles, and the agreed-upon success factors. In hindsight, we could also have taken a moment during the concept phase to go through the list of focus areas for design ethics, as well as have taken a more structural approach to check accessibility guidelines. The main challenge for daily ethical design Most ethics focus areas are quite tangible, where design decisions have immediate, often visible effects. While certainly challenging in their own right, they’re relatively easy to integrate in our daily practice, especially for experienced designers. Society and the environment, however, are more intangible topics; the effects of our work in these areas are distant and uncertain. I’m sure that when Airbnb was first conceived, the founders did not consider the magnitude of its disruptive impact on the housing market. The same goes for Instagram, as its role in creating demand for fast fashion must have been hard to foresee. Hard, but not impossible. So how do we overcome this challenge and make the impact that we have on society and the environment more immediate, more daily? Conduct Dark Reality sessions The ancient Greek philosopher Socrates used a series of questions to gradually uncover the invalidity of people’s beliefs. In a very similar way, we can uncover the assumptions and potential disastrous consequences of our concepts in a ‘Dark Reality’ session, a form of speculative design that focuses on stress-testing a concept with challenging questions. We have to ask ourselves—or even better, somebody outside our team has to ask us— questions such as, “What is the lifespan of your product? What if the user base will be in the millions? What are the long-term effects on economy, society, and the environment? Who benefits from your design? Who loses? Who is excluded? And perhaps most importantly, how could your design be misused? (For more of these questions, Alan Cooper provided a great list in his keynote at Interaction 18.) The back-and-forth Q&A of the Dark Reality session will help us consider and identify our concept’s weaknesses and potential consequences. As it is a team effort, it will spark discussion and uncover differences in team members’ ethical values. Moreover, the session will result in a list of questions and assumptions that can be tested with potential users and subject matter experts. In the project for the airline control center, it resulted in more consideration for the human role in automatization and how digital interfaces can continue to support human capabilities (instead of replacing them), and reflection on the role of airports in future society. The dark reality session is best conducted during the convergent parts of the double diamond, as these are the design phases in which we narrow down to realistic ideas. It’s vital to have a questioner from outside the team with strong interviewing skills and who doesn’t easily accept an answer as sufficient. There are helpful tools available to help structure the session, such as the Tarot Cards of Tech and these ethical tools. Take a step back to go forward As designers, we’re optimists by nature. We see the world as a set of problems that we can solve systematically and creatively if only we try hard enough. We intend well. However, merely having the intention to do good is not going to be enough. Our mindset comes with the pitfall of (dis)missing potential disastrous consequences, especially under pressure of daily constraints. That’s why we need to regularly, systematically take a step back and consider the future impact of our work. My hope is that the practical, structural mindset to ethics introduced in this article will help us agree on a higher standard for design. Full Article
ic Contributing to the ARIA Authoring Practices Guide By feedproxy.google.com Published On :: Thu, 01 Aug 2019 16:24:37 +0000 We believe that inclusivity and accessibility are of utmost importance to the open web platform. One of the ways that we empower the full diversity of Internet users is by ensuring that those with permanent disabilities and temporary limitations, can browse websites with assistive technologies. Writing accessible code improves the experience of browsing a website […] Full Article Accessibility Open Source Reliability Standards And Testing Standards Web Platform
ic Class history and class practices in the periphery of capitalism / edited by Paul Zarembka By library.mit.edu Published On :: Sun, 1 Mar 2020 08:00:08 EST Dewey Library - HB501.C53 2019 Full Article
ic A question of inequality: the politics of equal worth / Christopher Steed By library.mit.edu Published On :: Sun, 1 Mar 2020 08:00:08 EST Dewey Library - HB523.S78 2018 Full Article
ic The Canadian environment in political context / Andrea Olive By library.mit.edu Published On :: Sun, 8 Mar 2020 08:11:31 EDT Dewey Library - HC120.E5 O45 2019 Full Article
ic The Russian job: the forgotten story of how America saved the Soviet Union from ruin / Douglas Smith By library.mit.edu Published On :: Sun, 8 Mar 2020 08:11:31 EDT Dewey Library - HC340.F3 S55 2019 Full Article
ic Mongrel firebugs and men of property: capitalism and class conflict in American history / Steve Fraser By library.mit.edu Published On :: Sun, 8 Mar 2020 08:11:31 EDT Dewey Library - HC110.C3 F73 2019 Full Article
ic The Oxford handbook of consumption / edited by Frederick F. Wherry and Ian Woodward By library.mit.edu Published On :: Sun, 8 Mar 2020 08:11:31 EDT Dewey Library - HC79.C6 O938 2019 Full Article
ic The ethical algorithm: the science of socially aware algorithm design / Michael Kearns and Aaron Roth By library.mit.edu Published On :: Sun, 8 Mar 2020 08:11:31 EDT Dewey Library - HC79.I55 K43 2020 Full Article
ic Behavioural macroeconomics: theory and policy / Paul de Grauwe and Yuemei Ji By library.mit.edu Published On :: Sun, 8 Mar 2020 08:11:31 EDT Dewey Library - HB74.P8 G73 2019 Full Article
ic Predatory value extraction: how the looting of the business corporation became the U.S. norm and how sustainable prosperity can be restored / William Lazonick and Jang-Sup Shin By library.mit.edu Published On :: Sun, 8 Mar 2020 08:11:31 EDT Dewey Library - HB201.L39 2020 Full Article
ic Laid waste!: the culture of exploitation in early America / John Lauritz Larson By library.mit.edu Published On :: Sun, 8 Mar 2020 08:11:31 EDT Dewey Library - HC103.7.L36 2020 Full Article
ic Globalization, the IMF, and international banks in Argentina: the model economic crisis / Christian Hernandez By library.mit.edu Published On :: Sun, 8 Mar 2020 08:11:31 EDT Dewey Library - HC175.H47 2019 Full Article
ic How rich countries got rich ... and why poor countries stay poor / Erik S. Reinert By library.mit.edu Published On :: Sun, 8 Mar 2020 08:11:31 EDT Dewey Library - HC21.R425 2019 Full Article
ic Arguing with zombies: economics, politics, and the fight for a better future / Paul Krugman By library.mit.edu Published On :: Sun, 8 Mar 2020 08:11:31 EDT Dewey Library - HC106.84.K78 2020 Full Article
ic Organicity: entropy or evolution / David Dobereiner By library.mit.edu Published On :: Sun, 8 Mar 2020 08:11:31 EDT Dewey Library - HC79.E5 D625 2019 Full Article
ic Failure or reform?: market-based policy instruments for sustainable agriculture and resource management / Stewart Lockie By library.mit.edu Published On :: Sun, 8 Mar 2020 08:11:31 EDT Dewey Library - HC79.E5 L636 2019 Full Article
ic Italy's economic revolution: integration and economy in Republican Italy / Saskia T. Roselaar By library.mit.edu Published On :: Sun, 8 Mar 2020 08:11:31 EDT Dewey Library - HC39.R67 2019 Full Article