man 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
man The Cambridge companion to Hippocrates / edited by Peter E. Pormann By library.mit.edu Published On :: Sun, 26 Apr 2020 07:06:33 EDT Hayden Library - R126.H8 C36 2018 Full Article
man 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
man How to Easily Manage Cookies Within jQuery By designshack.net Published On :: Wed, 18 Sep 2013 14:00:27 +0000 Web browsers can generate unique sessions organized for each user on a website. Often these are handled on the backend using languages like PHP or Ruby, but we can also utilize cookie sessions on the frontend with Javascript. There are many tutorials out there explaining how to generate pure JS cookies. But a newer library […] Full Article JavaScript
man 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
man Resilient Management, An Excerpt By feedproxy.google.com Published On :: 2019-06-06T13:30:51+00:00 In Tuckman’s Stages of Group Development, the Storming stage happens as a group begins to figure out how to work together. Previously, each person had been doing their own thing as individuals, so necessarily a few things need to be ironed out: how to collaborate, how to hit goals, how to determine priorities. Of course there may be some friction here! But even if your team doesn’t noticeably demonstrate this kind of internal Storming as they begin to gel, there might be some outside factors at play in your work environment that create friction. During times of team scaling and organizational change—the water we in the web industry are often swimming in—managers are responsible for things like strategy-setting, aligning their team’s work to company objectives, and unblocking the team as they ship their work. In addition to these business-context responsibilities, managers need to be able to help their teammates navigate this storm by helping them grow in their roles and support the team’s overall progress. If you and your teammates don’t adapt and evolve in your roles, it’s unlikely that your team will move out of the Storming stage and into the Norming stage of team dynamics. To spur this course-correction and growth in your teammates, you’ll end up wearing four different hats: Mentoring: lending advice and helping to problem solve based on your own experience. Coaching: asking open questions to help your teammate reflect and introspect, rather than sharing your own opinions or quickly problem solving.Sponsoring: finding opportunities for your teammate to level up, take on new leadership roles, and get promoted.Delivering feedback: observing behavior that is or isn’t aligned to what the team needs to be doing and sharing those observations, along with praise or suggestions. Let’s dive in to how to choose, and when to use, each of these skills as you grow your teammates, and then talk about what it looks like when teammates support the overarching direction of the team. Mentoring When I talk to managers, I find that the vast majority have their mentor hats on ninety percent of the time when they’re working with their teammates. It’s natural! In mentoring mode, we’re doling out advice, sharing our perspective, and helping someone else problem solve based on that information. Our personal experiences are often what we can talk most confidently about! For this reason, mentorship mode can feel really good and effective for the mentor. Having that mentor hat on can help the other person overcome a roadblock or know which next steps to take, while avoiding drastic errors that they wouldn’t have seen coming otherwise. As a mentor, it’s your responsibility to give advice that’s current and sensitive to the changing dialog happening in our industry. Advice that might work for one person (“Be louder in meetings!” or “Ask your boss for a raise!”) may undermine someone else, because members of underrepresented groups are unconsciously assessed and treated differently. For example, research has shown that “when women are collaborative and communal, they are not perceived as competent—but when they emphasize their competence, they’re seen as cold and unlikable, in a classic ‘double bind’”. If you are not a member of a marginalized group, and you have a mentee who is, please be a responsible mentor! Try to be aware of the way members of underrepresented groups are perceived, and the unconscious bias that might be at play in your mentee’s work environment. When you have your mentor hat on, do lots of gut checking to make sure that your advice is going to be helpful in practice for your mentee. Mentoring is ideal when the mentee is new to their role or to the organization; they need to learn the ropes from someone who has firsthand experience. It’s also ideal when your teammate is working on a problem and has tried out a few different approaches, but still feels stumped; this is why practices like pair coding can help folks learn new things. As mentors, we want our mentees to reach beyond us, because our mentees’ success is ultimately our success. Mentorship relationships evolve over time, because each party is growing. Imaginative, innovative ideas often come from people who have never seen a particular challenge before, so if your mentee comes up with a creative solution on their own that you wouldn’t have thought of, be excited for them—don’t just focus on the ways that you’ve done it or seen it done before. Managers often default to mentoring mode because it feels like the fastest way to solve a problem, but it falls short in helping your teammate connect their own dots. For that, we’ll look to coaching. Coaching In mentoring mode, you’re focused on both the problem and the solution. You’ll share what you as the mentor would do or have done in this situation. This means you’re more focused on yourself, and less on the person who is sitting in front of you. In coaching mode—an extremely powerful but often underutilized mode—you’re doing two primary things: Asking open questions to help the other person explore more of the shape of the topic, rather than staying at the surface level.Reflecting, which is like holding up a mirror for the other person and describing what you see or hear, or asking them to reflect for themselves. These two tools will help you become your teammate’s fiercest champion. Open Questions “Closed” questions can only be answered with yes or no. Open questions often start with who, what, when, where, why, and how. But the best open questions are about the problem, not the solution. Questions that start with why tend to make the other person feel judged, and questions that start with how tend to go into problem solving mode—both of which we want to avoid while in coaching mode. However, what questions can be authentically curious! When someone comes to you with a challenge, try asking questions like: What’s most important to you about it?What’s holding you back?What does success look like? Let’s say my teammate comes to me and says they’re ready for a promotion. Open questions could help this teammate explore what this promotion means and demonstrate to me what introspection they’ve already done around it. Rather than telling them what I think is necessary for them to be promoted, I could instead open up this conversation by asking them: What would you be able to do in the new level that you can’t do in your current one?What skills are required in the new level? What are some ways that you’ve honed those skills?Who are the people already at that level that you want to emulate? What about them do you want to emulate? Their answers would give me a place to start coaching. These questions might push my teammate to think more deeply about what this promotion means, rather than allowing them to stay surface level and believe that a promotion is about checking off a lot of boxes on a list. Their answers might also open my eyes to things that I hadn’t seen before, like a piece of work that my teammate had accomplished that made a huge impact. But most important, going into coaching mode would start a two-way conversation with this teammate, which would help make an otherwise tricky conversation feel more like a shared exploration. Open questions, asked from a place of genuine curiosity, help people feel seen and heard. However, if the way you ask your questions comes across as judgy or like you’ve already made some assumptions, then your questions aren’t truly open (and your teammate can smell this on you!). Practice your intonation to make sure your open questions are actually curious and open. By the way, forming lots of open questions (instead of problem solving questions, or giving advice) is tremendously hard for most people. Don’t worry if you don’t get the hang of it at first; it takes a lot of practice and intention over time to default to coaching mode rather than mentoring mode. I promise, it’s worth it. Reflections Just like open questions, reflections help the other person feel seen and heard, and to explore the topic more deeply. It’s almost comical how rarely we get the sense that the person we’re talking to is actively listening to us, or focusing entirely on helping us connect our own dots. Help your teammates reflect by repeating back to them what you hear them say, as in: “What I’m hearing you say is that you’re frustrated with how this project is going. Is that right?”“What I know to be true about you is how deeply you care about your teammates’ feelings.” In each of these examples, you are holding up a metaphorical mirror to your teammate, and helping them look into it. You can coach them to reflect, too: “How does this new architecture project map to your goals?”“Let’s reflect on where you were this time last year and how far you’ve come.” Occasionally, you might get a reflection wrong; this gives the other person an opportunity to realize something new about their topic, like the words they’re choosing aren’t quite right, or there’s another underlying issue that should be explored. So don’t be worried about giving a bad reflection; reflecting back what you’re hearing will still help your teammate. The act of reflecting can help the other person do a gut check to make sure they’re approaching their topic holistically. Sometimes the act of reflection forces (encourages?) the other person to do some really hard work: introspection. Introspection creates an opportunity for them to realize new aspects of the problem, options they can choose from, or deeper meanings that hadn’t occurred to them before—which often ends up being a nice shortcut to the right solution. Or, even better, the right problem statement. When you have your coaching hat on, you don’t need to have all the answers, or even fully understand the problem that your teammate is wrestling with; you’re just there as a mirror and as a question-asker, to help prompt the other person to think deeply and come to some new, interesting conclusions. Frankly, it may not feel all that effective when you’re in coaching mode, but I promise, coaching can generate way more growth for that other person than just giving them advice or sharing your perspective. Choose coaching when you’re looking to help someone (especially an emerging leader) hone their strategic thinking skills, grow their leadership aptitude, and craft their own path forward. Coaching mode is all about helping your teammate develop their own brain wrinkles, rather than telling them how you would do something. The introspection and creativity it inspires create deeper and longer-lasting growth. Sponsoring While you wear the mentoring and coaching hats around your teammates, the sponsor hat is more often worn when they’re not around, like when you’re in a 1:1 with your manager, a sprint planning meeting, or another environment where someone’s work might be recognized. You might hear about an upcoming project to acquire a new audience and recommend that a budding user researcher take it on, or you’ll suggest to an All Hands meeting organizer that a junior designer should give a talk about a new pattern they’ve introduced to the style guide. Sponsorship is all about feeling on the hook for getting someone to the next level. As someone’s sponsor, you’ll put their name in the ring for opportunities that will get them the experience and visibility necessary to grow in their role and at the organization. You will put your personal reputation on the line on behalf of the person you’re sponsoring, to help get them visible and developmental assignments. It’s a powerful tool, and the one most effective at helping someone get to the next level (way more so than mentoring or coaching!). The Center for Talent Innovation routinely measures the career benefits of sponsorship (PDF). Their studies have found that when someone has a sponsor, they are way more likely to have access to career-launching work. They’re also more likely to take actions that lead to even more growth and opportunities, like asking their manager for a stretch assignment or a raise. When you’re in sponsorship mode, think about the different opportunities you have to offer up someone’s name. This might look like: giving visible/public recognition (company “shout outs,” having them present a project demo, thanking them in a launch email, giving someone’s manager feedback about their good work);assigning stretch tasks and projects that are just beyond their current skill set, to help them grow and have supporting evidence for a future promotion; oropening the door for them to write blog posts, give company or conference talks, or contribute open-source work. Remember that members of underrepresented groups are typically over-mentored, but under-sponsored. These individuals get lots of advice (often unsolicited), coffee outings, and offers to teach them new skills. But it’s much rarer for them to see support that looks like sponsorship. This isn’t because sponsors intentionally ignore marginalized folks, but because of in-group bias. Because of how our brains (and social networks) work, the people we’re closest to tend to look mostly like us—and we draw from that same pool when we nominate people for projects, for promotions, and for hires. Until I started learning about bias in the workplace, most of the people I sponsored were white, cisgender women, like myself. Since then, I’ve actively worked to sponsor people of color and nonbinary people. It takes effort and intention to combat our default behaviors—but I know you can do it! Take a look at the daily communications you participate in: your work chat logs, the conversations you have with others, the process for figuring out who should fix a bug or work on a new project, and the processes for making your teams’ work visible (like an architecture review, code review, launch calendar, etc.). You’ll be surprised how many moments there are to sponsor someone throughout an average day. Please put in the time and intention to ensure that you’re sponsoring members of underrepresented groups, too. Full Article
man 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
man 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
man US infrastructure: challenges and directions for the 21st century / edited by Aman Khan and Klaus Becker By library.mit.edu Published On :: Sun, 15 Mar 2020 08:09:28 EDT Dewey Library - HC110.C3 U7 2020 Full Article
man Institutionalised dreams: the art of managing foreign aid / Elżbieta Drążkiewicz By library.mit.edu Published On :: Sun, 15 Mar 2020 08:09:28 EDT Dewey Library - HC60.D686 2020 Full Article
man Managing socio-ecological production landscapes and seascapes for sustainable communities in Asia: mapping and navigating stakeholders, policy and action / Osamu Saito, Suneetha M Subramanian, Shizuka Hashimoto, Kazuhiko Takeuchi, editors By library.mit.edu Published On :: Sun, 15 Mar 2020 08:09:28 EDT Online Resource Full Article
man Human/machine: the future of our partnership with machines / Daniel Newman, Olivier Blanchard By library.mit.edu Published On :: Sun, 15 Mar 2020 08:09:28 EDT Dewey Library - HC79.I55 B567 2019 Full Article
man Secrets and siblings: the vanished lives of China's one child policy / Mari Manninen ; translated by Mia Spangenberg By library.mit.edu Published On :: Sun, 15 Mar 2020 08:09:28 EDT Dewey Library - HB3654.A3 M3613 2019 Full Article
man One road, many dreams: China's bold plan to remake the global economy / Daniel Drache, A.T. Kingsmith & Duan Qi By library.mit.edu Published On :: Sun, 15 Mar 2020 08:09:28 EDT Dewey Library - HC427.95.D72 2019 Full Article
man Divorce in Europe: New Insights in Trends, Causes and Consequences of Relation Break-ups / edited by Dimitri Mortelmans By library.mit.edu Published On :: Sun, 22 Mar 2020 07:44:49 EDT Online Resource Full Article
man The humachine: humankind, machines, and the future of enterprise / Nada R. Sanders and John D. Wood By library.mit.edu Published On :: Sun, 22 Mar 2020 07:44:49 EDT Dewey Library - HC79.A9 S26 2020 Full Article
man Australia's Fertility Transition: A study of 19th-century Tasmania. By library.mit.edu Published On :: Sun, 29 Mar 2020 07:44:51 EDT Online Resource Full Article
man A human rights based approach to development in India / edited by Moshe Hirsch, Ashok Kotwal, and Bharat Ramaswami By library.mit.edu Published On :: Sun, 5 Apr 2020 07:47:23 EDT Dewey Library - HC435.3.H86 2019 Full Article
man Romantic anti-capitalism and nature: the enchanted garden / Robert Sayre and Michael Löwy By library.mit.edu Published On :: Sun, 5 Apr 2020 07:47:23 EDT Dewey Library - HB501.S3196 2020 Full Article
man Environmental Performance in Democracies and Autocracies: Democratic Qualities and Environmental Protection / Romy Escher, Melanie Walter-Rogg By library.mit.edu Published On :: Sun, 5 Apr 2020 07:47:23 EDT Online Resource Full Article
man Rescheduling Under Disruptions in Manufacturing Systems: Models and Algorithms / by Dujuan Wang, Yunqiang Yin, Yaochu Jin By library.mit.edu Published On :: Sun, 12 Apr 2020 09:49:18 EDT Online Resource Full Article
man Sustainability, capabilities and human security editor, Andrew Crabtree By library.mit.edu Published On :: Sun, 12 Apr 2020 09:49:18 EDT Online Resource Full Article
man Developments in demography in the 21st century Joachim Singelmann, Dudley L. Poston, Jr., editors By library.mit.edu Published On :: Sun, 12 Apr 2020 09:49:18 EDT Online Resource Full Article
man Red swan: how unorthodox policy making facilitated China's rise / Sebastian Heilmann By library.mit.edu Published On :: Sun, 19 Apr 2020 10:15:39 EDT Dewey Library - HC427.92.H454 2018 Full Article
man The quality of growth in Africa / edited by Ravi Kanbur, Akbar Noman, and Joseph E. Stiglitz By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - HC800.Q225 2019 Full Article
man Fighting to preserve a nation's soul: America's ecumenical war on poverty / Robert Bauman By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - HC110.P63 B38 2019 Full Article
man Reaching new heights: promoting fair competition in the Middle East and North Africa / written by Rabah Arezki (Regional Chief Economist), Meriem Ait Ali Slimane, Andrea Barone, Klaus Decker, Dag Detter, Rachel Yuting Fan, Ha Nguyen, Graciela Miralles Mur By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Online Resource Full Article
man The visionary realism of German economics: from the Thirty Years' War to the Cold War / Erik S. Reinert ; edited by Rainer Kattel By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - HC283.R45 2019 Full Article
man Regional economic development in Russia: institutions, regulations, and structural transformations / Niyaz Kamilevich Gabdrakhmanov, Lenar Nailevich Sfiullin, editors By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Online Resource Full Article
man Manipulating globalization: the influence of bureaucrats on business in China / Ling Chen By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - HC427.95.C433414 2018 Full Article
man Markets and people: Romania country economic memorandum. By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Online Resource Full Article
man Toward a just society: Joseph Stiglitz and twenty-first century economics / edited by Martin Guzman By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - HC79.P6 T69 2018 Full Article
man Get things moving!: FDR, Wayne Coy, and the Office for Emergency Management, 1941-1943 / Mordecai Lee By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - HC106.4.L474 2018 Full Article
man Transfer state: the idea of a guaranteed income and the politics of redistribution in modern Britain / Peter Sloman. By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - HC79.I5 S56 2019 Full Article
man Capitalism on edge: how fighting precarity can achieve radical change without crisis or utopia / Albena Azmanova By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - HB501.A96 2020 Full Article
man Sustainable human-nature relations: environmental scholarship, economic evaluation, urban strategies / Giuseppe T. Cirella, editors By library.mit.edu Published On :: Sun, 3 May 2020 10:24:48 EDT Online Resource Full Article
man Accounting, accountability and society: trends and perspectives in reporting, management and governance for sustainability / Mara Del Baldo [and more], editors By library.mit.edu Published On :: Sun, 3 May 2020 10:24:48 EDT Online Resource Full Article
man Product :: Managing Apple Devices: Deploying and Maintaining iOS 9 and OS X El Capitan Devices, 3rd Edition By www.peachpit.com Published On :: Wed, 01 Jun 2016 00:00:00 GMT Full Article
man Product :: Managing Apple Devices: Deploying and Maintaining iOS 9 and OS X El Capitan Devices, 3rd Edition By www.peachpit.com Published On :: Fri, 10 Jun 2016 00:00:00 GMT Full Article
man Steel Manufacturing Companies India By Published On :: Steel Manufacturing Companies India Full Article
man Steel Manufacturing Plants India By Published On :: Steel Manufacturing Plants India Full Article
man Steel Manufacturiong Companies India By Published On :: Steel Manufacturiong Companies India Full Article