My AHG2018 experience

What the heck is AHG conference all about?

Early this year, I spoke in the CSUN international conference. Later this year, I got another opportunity to speak in the international conference, and it was accessing higher ground conference. The Short form of accessing higher ground is AHG. AHG focuses on the implementation and benefits of: accessible media, Inclusive Design, accessible curriculum, and Assistive Technology in the university, business and public setting, read more about AHG here. AHG takes places every year and this year(2018) conference has taken place from 12th November to 16th November at Westin, Westminster Colorado, USA. The first 2 days of the conference usually go with some workshops/trainings and the next 3 days of the conference usually go with some technical sessions.

A little about how did my session go

I have travelled all the way from India for this conference to present the ARIA 1.1 topic and my topic name was WAI ARIA 1.1: an in depth view into new and shiny. First of all, I want to thank my employer(Deque) for giving such a wonderful opportunity.  As per the schedule, I spoke on my topic on 15th November at 8am. Although few technical glitches at the beginning, the session went well but there were less number of participants. Even though participants were less, there were more number of questions at the end, and I am glad I could answer most of the queries! In fact, there were healthy debates too!


what did I learn?

In my view, attending the conference is kind of mutual benefit for the both parties and it is beauty of the conference! We get the opportunity to learn what others are talking, and we also get the opportunity to share our knowledge with the big crowd. With that said, lot of educational institutions such as universities and colleges participated in this conference. Of course, few non-education institutions also participated here.  People in the conference were talking on the various topics such as document accessibility, multimedia accessibility, web accessibility, classroom accessibility, math accessibility, building the accessible course/curriculum/educational material, EPUB adoptions, software accessibility like Zoom, MS word, MS power point, UDL adoptions, , different assistive technologies, and so on. I heard more on document accessibility though as this conference was more of educational related platform.

As mentioned earlier, 3 days of the conference usually go with lot of technical sessions. I have looked at 3 days schedule and chosen some of the sessions to attend. I attended the sessions that were relevant to web accessibility and the sessions that could help me to become independent at my work.  Below are some of the sessions that I attended along with my learnings

Session name: Making Websites Usable, Not Just Accessible


This session was presented by Karen Hawkins, Senior Experience Designer, Publicis.Sapient. it went for 2 hours long. The interesting thing in this session was that she explained how the end user pain would be while browsing the ecommerce website although it was accessible site. She highlighted possible usability issues such as clumsy filters, not notifying the changes to the screen reader users, and so on.. in the ecommerce website. She highlighted the usability issues starting from product landing page till placing the order. At the end, she mentioned that they would be releasing accessible and usable ecommerce templet in the mid of the next year. They said that this new templet would help everyone who would like to make their ecommerce website accessible and usable and that was very exciting thing! Looking forward to see the great ecommerce templet from these people!


Session name: How to CADET: free caption and audio description authoring software from WGBH’s NCAM


This session was presented by Bryan Gould, Director , WGBH/NCAM. He explained how easy to add/edit  the captions and audio descriptions scripts with the help of their CADET  tool. CADET  tool  is free and downloadable software. In addition, they said that the interface of this tool would be very much accessible unlike other tools in the market.


Session name: What is VPAT® 2.0?

This session was presented by Joe Humbert, Senior Accessibility Analyst, Interactive Accessibility. The funny thing was, by the time this session was scheduled, VPAT 2.2 had been released too! He mentioned about that fact at the beginning of his session. He highlighted the one of the major changes from VPAT 2.0 to VPAT 2.2 was that there would not be “supports with exceptions” status in 2.2 and it got changed to “partially supports”. He explained majorly the difference between from 1.0 to 2.0 in this session. At the end, when he opened for the questions then we all of us were asking when WCAG2.1 would be incorporated in the VPAT. Immediately, we got the response from the women who sat behind and introducing herself that “I am from ITI and works for the VPAT”. Everybody got shocked and surprised! She responded that they started working on incorporating the WCAG2.1 in the VPAT and would release the next version in few months. By the way, ITI is the organization who develops the VPAT. Anyways, I have got opportunity to meet such a great person with the help of this session.

A quick tour on the booths/exhibitors

As like any other conferences, there were number of booths in this conference too. I think there were more than 30 booths here. As usual, all the booths were showcasing about their products and services. While I was visiting this booths, I found some interesting stuff. One of the interesting things was that many organizations were working in the PDF remediation space. In fact, some of the organizations(such as Onix-equidox, Appligent Document Solutions, Commonlook, Crawford Technologies, Pubcom, and so on..) developed their own PDF remediation tools too. I felt that Equidox PDF remediation tool by Onix was bit interesting with the advanced features that has! Apart from that, I have got opportunity to look at the other web accessibility tools such as Compliance Sheriff by a Cyxtera solution,  Blackboard Ally, Dinolytics, and so on.. overall, I felt worth time spending on this booths.



 How did I feel about the conference as a whole?

I felt that conference was very cool going. I like the way the technical sessions on those 3 days were scheduled. There were No back to back technical sessions and we used to have some breakout meetings once in every 2 hours. Breakout meetings/sessions such as round table and lunch breakouts were the another thing I wanted to highlight. These breakout sessions gave an opportunity to meet and talk to the various people and that was fantastic! Another cool thing was that audiences got an opportunity to rate the sessions that they attended. In fact, my session was rated 4.1 stars average rating out of 5 stars and I was very happy for that!


Oh, wait! I know your next question

Probably, your next question is going to be where I can access and download all these great AHG presentations. Here are the simple steps to download any AHG presentation

  1. Open AHG schedule
  2. It shows Wednesday schedule by default. You can view Thursday and Friday schedules by clicking on the corresponding links on the same web page
  3. Choose any topic that is relevant for you and activate the link
  4. It opens the session information with summary, speakers, abstract, handouts, and so on..
  5. Navigate to the handout section and activate the link
  6. That is all and presentation/ppt/deck/PDF  is going to be downloaded for that topic

Thank you and will be back again!


ARIA 1.1 overview


the modern web is becoming more and more rich from day by day but at the same time it is becoming more and more complex in terms of accessibility.  To address the accessibility challenges of modern web, ARIA has evolved. ARIA stands for accessible rich internet applications and it defines the way to make the web content or web applications more accessible to people with the disabilities. It helps especially with dynamic content and advanced controls(such as tree, menu, slider and so on..) developed with the various technologies(ajax, java script, and so on..). before aria, it was tough for the screen reader users to understand what was going on in the dynamic web application.

WAI ARIA1.0 has become w3c recommendation on 20th march 2014. After 3 and half years, WAI ARIA1.1 has become w3c recommendation and it is on 14th dec 2017. ARIA1.1 extends version 1.0 and provides no of additional features to continue bridging the gap for accessibility in html.


What’s new in the aria1.1

8 new roles (now 81 total)

The following new roles have been added

  1. cell
  2. Feed
  3. Figure
  4. Table
  5. Term
  6. none (synonym for presentation)
  7. Searchbox
  8. Switch


13 new states & properties (now 48 total)

The following new states and properties have been added

  1. aria-colcount(property)
  2. aria-colindex(property)
  3. aria-colspan(property)
  4. aria-current(state)
  5. aria-details(property)
  6. aria-errormessage(property)
  7. aria-keyshortcuts(property)
  8. aria-modal(property)
  9. aria-placeholder(property)
  10. aria-roledescription(property)
  11. aria-rowcount(property)
  12. aria-rowindex(property)
  13. aria-rowspan(property)


8 roles with major updates

The below roles have been updated in terms of it’s usage

  1. Application: it is not a landmark and needs to be thought as last option
  2. Article: along with the original behavior, in addition, it is the child of feed role
  3. Combobox: it should also own an element that has a role of tree, grid, or dialog along with the role of listbox.
  4. Dialog: it should be considered as a window and assistive technologies should not pass through keys.
  5. Document: it is Recommended to use inside application elements.
  6. Grid: spec provides the additional guidance on how focus management should be, and how aria-readonly should be used
  7. Region: it should be considered as a landmark
  8. Separator: If focusable, it should be widget requiring aria-valuenow, aria-valuemin, and aria-valuemax, supports aria-valuetext.


11 states & properties with significant changes

The below attributes have been updated in terms of it’s usage

  1. aria-activedescendant: editorial change
  2. aria-autocomplete: editorial change
  3. aria-busy: it should not be limited to live regions
  4. aria-haspopup: it should support additional values such as menu, grid, dialog, tree, listbox along with the original values(true/false)
  5. aria-hidden: editorial change
  6. aria-level: it should be required for the heading role
  7. aria-orientation: default value should be undefined and it is allowed for more roles
  8. aria-readonly: it should support other roles too such as combobox, listbox, radiogroup, slider, and spinbutton.
  9. aria-posinset: it should Support other roles too such as radio, tab, article in feed.
  10. aria-setsize: it should Support other roles too such as , radio, tab, article in feed.
  11. aria-setsize: the value should be set to “-1” if the size is unknown.



The following attributes have been deprecated in aria1.1

  1. aria-dropeffect
  2. aria-grabbed



  1. aria1.1 specification: c. change log





As discussed in aria-rowcount post, at time, author might not want to show all the total rows of the table in the DOM due to the usage of advance filters and so on rather author might want to show only portion of the rows in the DOM. When author wants to show only the portion of the rows of the table in the DOM then it is  suggested to use aria-rowcount property to communicate the total no of rows to the assistive technology users. Up to this, we are clear with the concept. However, using aria-rowcount alone would not be sufficient to convey all the table properties to the assistive technology users. Since only the portion of the rows are visible in the DOM, assistive technologies like screen readers do not understand which cell/row has the data. As a result, screen readers might end up with incorrect row index announcements when user navigates through the table and it is a problem.

In order to address this problem, aria1.1 introduced the new brand table property and that is aria-rowindex. When aria-rowindex property is set on the cell container of the table then screen readers would understand row index of that cell and announces the row index accordingly. Let me elaborate this little bit more. As we have been discussing, this property should be used only when the portion of the rows in the tables are available in the DOM. By considering this important point in the mind, let us think there are 4 rows(row2, row3, row5, and row9) of the table are available in the DOM out of 20 total rows. If aria-rowindex is set as 2 for the row2 cell then screen readers would announce the row2 and this announcement is appropriate. Failing to set this attribute may result the incorrect row index announcements by screen reader software and this intern confuses the users a lot. When aria-rowcount is set for the complete table container then it is necessary to set the aria-rowindex to define the position of the visible row of that table.

In a broader view, aria-rowindex Defines an element’s row index or position with respect to the total number of rows within a table, grid, or treegrid.


Author notes

  • Aria-rowindex property must be used for the below roles only
    • Cell
    • Row
    • Column header
    • Gridcell
    • Rowheader
  • Authors should not set/define this attribute If all of the rows are present in the DOM as user agent can automatically calculate the row index of each cell or gridcell
  • Authors should set/define this attribute only when portion of the rows is present in the DOM at a given moment
  • Aria-rowindex attribute is needed to provide an explicit indication of the row position
  • Authors MUST set the value for aria-rowindex to an integer greater than or equal to 1,
  • Aria-rowindex must be greater than the aria-rowindex value of any previous rows
  • Aria-rowindex must be less than or equal to the number of rows in the full table
  • aria-rowindex cannot be greater than aria-rowcount, unless aria-rowcount is unknown (e.g. value -1)
  • aria-rowindex must be set on the start of the span if the cell or gridcell spans multiple rows


Sample code snippet

if given

<div role=”table”>

<div role=”row”>

<div id=”sd” role=”cell” aria-rowindex=”5″>test</div>



Then expose aria-rowindex=”5″ on the element with id=”sd”





As you may be aware of, making the simple tables accessible is much easier than making the complex tables accessible. In my view, there is no problem with the complex tables as long as they are accessible to the assistive technology users. Usually, complex tables would have multi-level column headers/row headers and it is one type of variety but there are many more verities within this complex tables. We are not going to discuss all the varieties of the complex table rather will discuss how one single row header becomes the row header for multiple rows in this post. Let us understand this in-details. Usually, we see the pattern like one single row header would be present for entire row and basically it is called as simple data table. In case of complex table, multiple rows/entries may have the sane row header like sidebar. To understand what are the different rows that have common row header, visually, authors need to group the related rows technically(like all the related rows need to be grouped with the corresponding row header by merging the cells with the help of CSS paddings and HTML row span techniques. When they do so, it is semantical to both sighted and assistive technology users that how many cells are spanned or so. Since the context that I have made so far is all about native data table, the semantical information is conveyed to the assistive technology users. However, the information about how many rows are spanned would not be conveyed to the assistive technology users if it is custom table as custom table is built with <div> and <span> tags and with other CSS properties and it is a problem.

In order to address this problem, aria1.1 introduced new brand attribute and it is aria-rowspan. Aria-rowspan defines the number of rows spanned by a cell or gridcell. When aria-rowspan is defined for the cells in the custom table, assistive technologies like screen reader are expected to understand how many rows are spanned and are expected to convey the same information to the users. The information about how many rows are spanned in the table enables the screen reader users to visualize the table structure very clearly than ever before. as I have explained this concept with the spanning of row headers, it does not mean that spanning the rows is not limited to row headers. Author can span any rows by using aria-rowspan attribute based on the requirement.



Author notes


  • Author must use this attribute on the below roles only
    • Cell
    • Gridcell
    • Column header
    • Row header
  • Authors MUST set the value of aria-rowspan to an integer
    • greater than or equal to 0
    • less than value that prevents overlapping of other cells in the same column. In simple terms, if author wants to span 3 rows then the value of aria-rowspan must be set to 3 only but not to 4 or 5 or so.
  • Aria-rowspan=”0” means the cell spans all the remaining rows in its row group.


Notes for assistive technology venders

  • Assistive technologies should not expose the value of aria-rowspan for an element if equivalent host language attribute is provided rather assistive technologies should expose the value of the host language’s attribute.




Sample code snippet

<div role=”table”>

<div role=”row”>

<div id=”sd” role=”cell” aria-rowspan=”2″>test cell</div>



then expose aria-rowspan =”2″ on the element with id=”sd”





Even though the web is accessible, sometimes efficiency matters like how quicker the people with disabilities can perform the things on the web, especially frequent actions. Let us understand this better with the web email application as an example. There are many frequent actions in the web email application such as composing an email, sending an email, replying to an email, and so on.. author would have done those elements accessible but still navigating to those elements from the user’s current position on the web for such frequent actions would consume certain amount of time. It is always better to provide hot keys for the users to perform such frequent actions on the web in order to enhance the user’s efficiency in performing the things on the web. Hotkeys/keyboard shortcuts not only help the efficiency of the people with disabilities but also efficiency of the power users as power users take some time to locate the desired item with the mouse pointer. Web Gmail, for the instance, already implemented the hot keys(like C for compose, control enter from the message area to send the email, R for reply, and so on..) for such frequent actions. Do you think assigning and implementing the keyboard shortcuts happen just like that? Answer is no. first of all, there should be provision for author to add/define the keyboard shortcuts for an element programmatically and this provision is not present in ARIA till ARIA1.0, and it is a problem.

In order to address this problem ARIA1.1 introduced new attribute called aria-keyshortcuts. Aria-keyshortcuts Indicates keyboard shortcuts that an author has implemented to activate or give focus to an element. In other words, aria-keyshortcuts enables the author to define what keyboard shortcuts activates or takes the focus to an element. When aria-keyshortcuts attribute is defined for an element then assistive technologies like screen readers are expected to announce name of the element and it’s keyboard shortcut(for ex: compose button alt+c). to put it simpler, aria-keyshortcuts exposes the availability of the keyboard shortcut having said that, the functionality of the keyboard shortcut is completely dependent upon the web developer. Web developer needs to write the script for functioning the keyboard shortcut as expected. Author should choose the keyboard shortcut in such a way that keyboard shortcut must contain 0 or more modifier keys and exact one non-modifier key. If you are wondering that what modifier key means? Modifier key is nothing but alt, shift, control, and so on.. whereas non-modifier key is nothing but any printable character(a, b, 1, 2$, and so on..)

In addition, there is a misconception that both aria-keyshortcuts and HTML accesskey do the same thing but that is not true. Although they both do the similar kind of job like assigning/defining the keyboard shortcuts/hotkeys, the way of the implementation differs. The main difference between both of them is that, if HTML accesskey attribute is defined for an element then modifier key is decided by browser but if the aria-keyshortcuts attribute is defined for an element then modifier key is decided by the author(again, it’s author wish whether modifier key should be provided or not in the keyboard shortcut). Let us not dig more about what all HTML accesskey do in this post and let us continue to put our attention on aria-keyshortcuts attribute.


Author notes

  • Author can use this attribute on any element of the base markup
  • Author must ensure that the value of this attribute is string
    • string may contain more than one keyboard shortcuts with space-delimited
    • Each keyboard shortcut consists of one or more tokens delimited by the plus sign(ex: alt+shift+t)
  • Authors must ensure that the modifier key comes first and non-modifier key comes last as part of the keyboard shortcut(for ex: it should be “alt+c” but it should not be “c+alt”)
  • It is author responsibility to make the keyboard shortcut functional as expected with the help of java script or with the help of other relevant programming techniques
  • Authors must ensure that both upper and lower letter of the non-modifier key in the keyboard shortcut function the same
  • Authors should implement the keyboard shortcuts by keeping the below points in the mind
    • Keyboard shortcuts should not produce unintended results when they are activated as different languages have the different keyboards
    • It is always better to have the ASCII letters instead of other keys in the keyboard shortcuts to prevent the conflicts from the international keyboards as numbers characters and common punctuation often require modifiers in the international keyboards(for ex: German keyboard).
    • The keyboard shortcuts developed by author should not conflict with the keyboard shortcuts of assistive technology, user agent, and operating system
    • The keys defined in the shortcuts represent the physical keys pressed and not the actual characters generated(ex: the keys in the keyboard shortcut should be “shift+5” but should not be “%”)
  • Authors should expose the keyboard shortcuts for the sighted keyboard users too by using tooltip or other techniques

Sample code snippet

if given



<div id=”sd” tabindex=”0″ role=”button” aria-keyshortcuts=”alt+c”>compose



then the element with role=”button” and id=”sd” exposes aria-keyshortcuts=”alt+c”