SlideShare a Scribd company logo
What visually impaired
programmers are thinking
about Ruby?
Takuya Nishimoto @nishimotz
RubyKaigi 2017
2
self
• Hiroshima → Tokyo → Kyoto → Tokyo → Hiroshima
• PhD Eng. (17 years)
• speech, audio, natural language, machine learning
• experimental psychology / applications / accessibility
• Freelance jobs: Objective-C++ / Python
• NonVisual Desktop Access (NVDA)
• Japanese Team Director www.nvda.jp
• Localizations / Enhancements
• Insert key → Escape key (makes Mac users happy)
• OpenJTalk / ATOK / Excel cell border / Japanese Braille
Takuya Nishimoto (RubyKaigi 2017) 3
Takuya Nishimoto (RubyKaigi 2017) 4
Pref Shimane CMS
Takuya Nishimoto (RubyKaigi 2017) 5
Read aloud button
Takuya Nishimoto (RubyKaigi 2017) 6
https://github.com/edhowland/viper
• simple editor in Ruby that works with screen readers
• only attempts an audible interface
• sighted users will only see confusing gibberish
Takuya Nishimoto (RubyKaigi 2017) 7
Takuya Nishimoto (RubyKaigi 2017) 8
Braille display
Takuya Nishimoto (RubyKaigi 2017) 9
Console (Terminal) applications
• only displays text
• text is accessible
• use can use speech synthesizers and braille displays
• engineers prefer terminal + screen reader
• remote access
• demo
• Windows Subsystem for Linux (WSL)
• Emacs 24.3.1 + sshd
• TeraTerm + NVDA (NonVisual Desktop Access)
Takuya Nishimoto (RubyKaigi 2017) 10
Text + Assistive Technology
• Screen reader
• VoiceOver (iOS/macOS) / TalkBack (Android) / Orca (Linux)
• Narrator, JAWS, NVDA, etc. (Windows)
• Tactile (refreshable Braille display)
• good for verify spelling (type errors)
• device is expensive
• difficult to learn
• Listening (speech synthesizer)
• takes time, difficult to locate information
Takuya Nishimoto (RubyKaigi 2017) 11
Accessible modern text editors
• Visual Studio Code
• Chromium-based
• Web accessibility technologies are used
• collaborating with NVDA developers
• Eclipse
• IAccessible2 API (developed by Mozilla)
• Dynamic Language Toolkit (DLTK)
• Ruby is supported
Takuya Nishimoto (RubyKaigi 2017) 12
Ruby and visually impaired programmers
• Pros
• documents in Japanese
• easy to read, easy to write, less coding
• tools for server engineers
• test driven development (RSpec etc.)
• Cons
• How to build Windows Apps?
• GUI development? (in non-visual way)
• TK is not accessible
Takuya Nishimoto (RubyKaigi 2017) 13
GUI framework and accessibility
• application
• does not directly use speech synthesizer (or Braille display)
• should expose necessary information to OS
• if GUI framework just draws images
• sends nothing to OS
• OS cannot send information to screen reader
• application cannot be operated with screen reader
• wxRuby is good, but not actively developed now
Takuya Nishimoto (RubyKaigi 2017) 14
Example Ruby source code
Takuya Nishimoto (RubyKaigi 2017) 15
Documentation tools
• Ruby source code to HTML
• rdoc
• yard
• demo
• Ruby 2.4.1 (Windows Subsystem for Linux)
• Windows 10 + NVDA + Firefox
Takuya Nishimoto (RubyKaigi 2017) 16
rdoc output
Takuya Nishimoto (RubyKaigi 2017) 17
Landmarks
• efficient way of move
• main role = class Poke
• navigation
• search
• content info
• operations
• d : next landmark
• shift+d : previous landmark
Takuya Nishimoto (RubyKaigi 2017) 18
Headings
• == : h2
• === : h3
• default items
• h1 : Class
• no methods or constants
• operations
• h : next heading
• shift + h : previous heading
• 3 : next h3
Takuya Nishimoto (RubyKaigi 2017) 19
View Source
• "click to toggle source" appears if pointed by mouse
• announced as "clickable"
• cannot understand what happens without mouse pointer
• line indentation reporting
Takuya Nishimoto (RubyKaigi 2017) 20
Yard output (no landmarks)
Takuya Nishimoto (RubyKaigi 2017) 21
Headings
Takuya Nishimoto (RubyKaigi 2017) 22
• == : h2
• === : h3
• default items
• h1 : Class
• h3 : Instance Method Details
• no constants
• Summary and Details
• "collapse" in item name
expand / collapse (without mouse pointer)
Takuya Nishimoto (RubyKaigi 2017) 23
view/hide source (without mouse pointer)
Takuya Nishimoto (RubyKaigi 2017) 24
Why important?
• Comply with standards
• Robustness / quality
• Prepared to new technologies
• Voice agents
• Human rights of every person
• guidelines and regulations
• W3C WCAG / JIS X8341 / US Section 508 Law
• Technology is removing barriers
Takuya Nishimoto (RubyKaigi 2017) 25
Conclusions
• accessibility of Ruby
• pretty good
• we can make it better
• inclusive design
• handicapped people = lead users
Takuya Nishimoto (RubyKaigi 2017) 26

More Related Content

What's hot

Lisp in the Cloud
Lisp in the CloudLisp in the Cloud
Lisp in the Cloud
Mike Travers
 
Ractor's speed is not light-speed
Ractor's speed is not light-speedRactor's speed is not light-speed
Ractor's speed is not light-speed
SATOSHI TAGOMORI
 
The Future of Bundled Bundler
The Future of Bundled BundlerThe Future of Bundled Bundler
The Future of Bundled Bundler
Hiroshi SHIBATA
 
Middleware as Code with mruby
Middleware as Code with mrubyMiddleware as Code with mruby
Middleware as Code with mruby
Hiroshi SHIBATA
 
Jslab rssh: JS as language platform
Jslab rssh:  JS as language platformJslab rssh:  JS as language platform
Jslab rssh: JS as language platformRuslan Shevchenko
 
IDLs
IDLsIDLs
Improve extension API: C++ as better language for extension
Improve extension API: C++ as better language for extensionImprove extension API: C++ as better language for extension
Improve extension API: C++ as better language for extension
Kouhei Sutou
 
Ruby, the language of devops
Ruby, the language of devopsRuby, the language of devops
Ruby, the language of devops
Rob Kinyon
 
About Clack
About ClackAbout Clack
About Clack
fukamachi
 
The Future of library dependency manageement of Ruby
The Future of library dependency manageement of RubyThe Future of library dependency manageement of Ruby
The Future of library dependency manageement of Ruby
Hiroshi SHIBATA
 
What's new in RubyGems3
What's new in RubyGems3What's new in RubyGems3
What's new in RubyGems3
Hiroshi SHIBATA
 
OSS Security the hard way
OSS Security the hard wayOSS Security the hard way
OSS Security the hard way
Hiroshi SHIBATA
 
Rake: Not Your Father's Build Tool
Rake: Not Your Father's Build ToolRake: Not Your Father's Build Tool
Rake: Not Your Father's Build Tool
filmprog
 
Ruby on Rails Presentation
Ruby on Rails PresentationRuby on Rails Presentation
Ruby on Rails Presentation
Joost Hietbrink
 
Ruby Security the Hard Way
Ruby Security the Hard WayRuby Security the Hard Way
Ruby Security the Hard Way
Hiroshi SHIBATA
 
The Future of library dependency management of Ruby
 The Future of library dependency management of Ruby The Future of library dependency management of Ruby
The Future of library dependency management of Ruby
Hiroshi SHIBATA
 
JRoR Deploying Rails on JRuby
JRoR Deploying Rails on JRubyJRoR Deploying Rails on JRuby
JRoR Deploying Rails on JRubyelliando dias
 
Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0
Hiroshi SHIBATA
 
The Future of Dependency Management for Ruby
The Future of Dependency Management for RubyThe Future of Dependency Management for Ruby
The Future of Dependency Management for Ruby
Hiroshi SHIBATA
 

What's hot (20)

Lisp in the Cloud
Lisp in the CloudLisp in the Cloud
Lisp in the Cloud
 
Ractor's speed is not light-speed
Ractor's speed is not light-speedRactor's speed is not light-speed
Ractor's speed is not light-speed
 
The Future of Bundled Bundler
The Future of Bundled BundlerThe Future of Bundled Bundler
The Future of Bundled Bundler
 
Middleware as Code with mruby
Middleware as Code with mrubyMiddleware as Code with mruby
Middleware as Code with mruby
 
Jslab rssh: JS as language platform
Jslab rssh:  JS as language platformJslab rssh:  JS as language platform
Jslab rssh: JS as language platform
 
IDLs
IDLsIDLs
IDLs
 
Improve extension API: C++ as better language for extension
Improve extension API: C++ as better language for extensionImprove extension API: C++ as better language for extension
Improve extension API: C++ as better language for extension
 
Ruby, the language of devops
Ruby, the language of devopsRuby, the language of devops
Ruby, the language of devops
 
About Clack
About ClackAbout Clack
About Clack
 
From 'Legacy' to 'Edge'
From 'Legacy' to 'Edge'From 'Legacy' to 'Edge'
From 'Legacy' to 'Edge'
 
The Future of library dependency manageement of Ruby
The Future of library dependency manageement of RubyThe Future of library dependency manageement of Ruby
The Future of library dependency manageement of Ruby
 
What's new in RubyGems3
What's new in RubyGems3What's new in RubyGems3
What's new in RubyGems3
 
OSS Security the hard way
OSS Security the hard wayOSS Security the hard way
OSS Security the hard way
 
Rake: Not Your Father's Build Tool
Rake: Not Your Father's Build ToolRake: Not Your Father's Build Tool
Rake: Not Your Father's Build Tool
 
Ruby on Rails Presentation
Ruby on Rails PresentationRuby on Rails Presentation
Ruby on Rails Presentation
 
Ruby Security the Hard Way
Ruby Security the Hard WayRuby Security the Hard Way
Ruby Security the Hard Way
 
The Future of library dependency management of Ruby
 The Future of library dependency management of Ruby The Future of library dependency management of Ruby
The Future of library dependency management of Ruby
 
JRoR Deploying Rails on JRuby
JRoR Deploying Rails on JRubyJRoR Deploying Rails on JRuby
JRoR Deploying Rails on JRuby
 
Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0
 
The Future of Dependency Management for Ruby
The Future of Dependency Management for RubyThe Future of Dependency Management for Ruby
The Future of Dependency Management for Ruby
 

Similar to Rubykaigi 2017-nishimotz-v6

Ruby, Rails, and the Open Source Community
Ruby, Rails, and the Open Source CommunityRuby, Rails, and the Open Source Community
Ruby, Rails, and the Open Source Community
Jim Myhrberg
 
cadec-2017-golang
cadec-2017-golangcadec-2017-golang
cadec-2017-golang
TiNguyn863920
 
How I become Go GDE
How I become Go GDEHow I become Go GDE
How I become Go GDE
Evan Lin
 
The story of language development
The story of language developmentThe story of language development
The story of language development
Hiroshi SHIBATA
 
Tooling for the JavaScript Era
Tooling for the JavaScript EraTooling for the JavaScript Era
Tooling for the JavaScript Eramartinlippert
 
Web development post io2016
Web development post io2016Web development post io2016
Web development post io2016
Filip Bruun Bech-Larsen
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to Go
zhubert
 
Contributions to Node-RED project
Contributions to Node-RED projectContributions to Node-RED project
Contributions to Node-RED project
nodered_ug_jp
 
GDSC NYCU | 如何建立自己的開源專案
 GDSC NYCU | 如何建立自己的開源專案 GDSC NYCU | 如何建立自己的開源專案
GDSC NYCU | 如何建立自己的開源專案
秀吉(Hsiu-Chi) 蔡(Tsai)
 
Frontender in-2016
Frontender in-2016Frontender in-2016
Frontender in-2016
Filip Bruun Bech-Larsen
 
Citizen Developer Tools (session at SharePoint Saturday Houston 4/28/2018) by...
Citizen Developer Tools (session at SharePoint Saturday Houston 4/28/2018) by...Citizen Developer Tools (session at SharePoint Saturday Houston 4/28/2018) by...
Citizen Developer Tools (session at SharePoint Saturday Houston 4/28/2018) by...
Antti Koskela
 
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
Heiko Voigt
 
Everyone wants (someone else) to do it: writing documentation for open source...
Everyone wants (someone else) to do it: writing documentation for open source...Everyone wants (someone else) to do it: writing documentation for open source...
Everyone wants (someone else) to do it: writing documentation for open source...
Jody Garnett
 
Rapid RIA development with Netzke
Rapid RIA development with NetzkeRapid RIA development with Netzke
Rapid RIA development with Netzkenetzke
 
RubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on RailsRubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on Railselliando dias
 
2023-My AI Experience - Colm Dunphy.pdf
2023-My AI Experience - Colm Dunphy.pdf2023-My AI Experience - Colm Dunphy.pdf
2023-My AI Experience - Colm Dunphy.pdf
Colm Dunphy
 
Prototyping like it is 2022
Prototyping like it is 2022 Prototyping like it is 2022
Prototyping like it is 2022
Michael Yagudaev
 
WDC lntroduction
WDC lntroductionWDC lntroduction
WDC lntroduction
Chia-An Lee
 
The Ring programming language version 1.7 book - Part 6 of 196
The Ring programming language version 1.7 book - Part 6 of 196The Ring programming language version 1.7 book - Part 6 of 196
The Ring programming language version 1.7 book - Part 6 of 196
Mahmoud Samir Fayed
 
Characteristics of Sustainable OSS Projects:
 A Theoretical and Empirical Study
Characteristics of Sustainable OSS Projects:
 A Theoretical and Empirical StudyCharacteristics of Sustainable OSS Projects:
 A Theoretical and Empirical Study
Characteristics of Sustainable OSS Projects:
 A Theoretical and Empirical Study
Hideaki Hata
 

Similar to Rubykaigi 2017-nishimotz-v6 (20)

Ruby, Rails, and the Open Source Community
Ruby, Rails, and the Open Source CommunityRuby, Rails, and the Open Source Community
Ruby, Rails, and the Open Source Community
 
cadec-2017-golang
cadec-2017-golangcadec-2017-golang
cadec-2017-golang
 
How I become Go GDE
How I become Go GDEHow I become Go GDE
How I become Go GDE
 
The story of language development
The story of language developmentThe story of language development
The story of language development
 
Tooling for the JavaScript Era
Tooling for the JavaScript EraTooling for the JavaScript Era
Tooling for the JavaScript Era
 
Web development post io2016
Web development post io2016Web development post io2016
Web development post io2016
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to Go
 
Contributions to Node-RED project
Contributions to Node-RED projectContributions to Node-RED project
Contributions to Node-RED project
 
GDSC NYCU | 如何建立自己的開源專案
 GDSC NYCU | 如何建立自己的開源專案 GDSC NYCU | 如何建立自己的開源專案
GDSC NYCU | 如何建立自己的開源專案
 
Frontender in-2016
Frontender in-2016Frontender in-2016
Frontender in-2016
 
Citizen Developer Tools (session at SharePoint Saturday Houston 4/28/2018) by...
Citizen Developer Tools (session at SharePoint Saturday Houston 4/28/2018) by...Citizen Developer Tools (session at SharePoint Saturday Houston 4/28/2018) by...
Citizen Developer Tools (session at SharePoint Saturday Houston 4/28/2018) by...
 
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
 
Everyone wants (someone else) to do it: writing documentation for open source...
Everyone wants (someone else) to do it: writing documentation for open source...Everyone wants (someone else) to do it: writing documentation for open source...
Everyone wants (someone else) to do it: writing documentation for open source...
 
Rapid RIA development with Netzke
Rapid RIA development with NetzkeRapid RIA development with Netzke
Rapid RIA development with Netzke
 
RubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on RailsRubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on Rails
 
2023-My AI Experience - Colm Dunphy.pdf
2023-My AI Experience - Colm Dunphy.pdf2023-My AI Experience - Colm Dunphy.pdf
2023-My AI Experience - Colm Dunphy.pdf
 
Prototyping like it is 2022
Prototyping like it is 2022 Prototyping like it is 2022
Prototyping like it is 2022
 
WDC lntroduction
WDC lntroductionWDC lntroduction
WDC lntroduction
 
The Ring programming language version 1.7 book - Part 6 of 196
The Ring programming language version 1.7 book - Part 6 of 196The Ring programming language version 1.7 book - Part 6 of 196
The Ring programming language version 1.7 book - Part 6 of 196
 
Characteristics of Sustainable OSS Projects:
 A Theoretical and Empirical Study
Characteristics of Sustainable OSS Projects:
 A Theoretical and Empirical StudyCharacteristics of Sustainable OSS Projects:
 A Theoretical and Empirical Study
Characteristics of Sustainable OSS Projects:
 A Theoretical and Empirical Study
 

More from Takuya Nishimoto

221217 SwiftはPythonに似ている
221217 SwiftはPythonに似ている221217 SwiftはPythonに似ている
221217 SwiftはPythonに似ている
Takuya Nishimoto
 
220427-pydata 統計・データ分析 特集
220427-pydata 統計・データ分析 特集220427-pydata 統計・データ分析 特集
220427-pydata 統計・データ分析 特集
Takuya Nishimoto
 
220126 python-datalake-spark
220126 python-datalake-spark220126 python-datalake-spark
220126 python-datalake-spark
Takuya Nishimoto
 
211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解する211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解する
Takuya Nishimoto
 
211020 すごい広島 with OSH 2021.10
211020 すごい広島 with OSH 2021.10211020 すごい広島 with OSH 2021.10
211020 すごい広島 with OSH 2021.10
Takuya Nishimoto
 
210917 オープンセミナー@広島のこれまでとこれから
210917 オープンセミナー@広島のこれまでとこれから210917 オープンセミナー@広島のこれまでとこれから
210917 オープンセミナー@広島のこれまでとこれから
Takuya Nishimoto
 
210911 これから始める電子工作とMicroPython
210911 これから始める電子工作とMicroPython210911 これから始める電子工作とMicroPython
210911 これから始める電子工作とMicroPython
Takuya Nishimoto
 
210728 mpy
210728 mpy210728 mpy
210728 mpy
Takuya Nishimoto
 
210630 python
210630 python210630 python
210630 python
Takuya Nishimoto
 
210526 Power Automate Desktop Python
210526 Power Automate Desktop Python210526 Power Automate Desktop Python
210526 Power Automate Desktop Python
Takuya Nishimoto
 
210428 python
210428 python210428 python
210428 python
Takuya Nishimoto
 
200918 hannari-python
200918 hannari-python200918 hannari-python
200918 hannari-python
Takuya Nishimoto
 
200429 python
200429 python200429 python
200429 python
Takuya Nishimoto
 
200325 flask
200325 flask200325 flask
200325 flask
Takuya Nishimoto
 
200208 osh-nishimoto-v2
200208 osh-nishimoto-v2200208 osh-nishimoto-v2
200208 osh-nishimoto-v2
Takuya Nishimoto
 
191208 python-kansai-nishimoto
191208 python-kansai-nishimoto191208 python-kansai-nishimoto
191208 python-kansai-nishimoto
Takuya Nishimoto
 
191101 nvda-sightworld-nishimoto
191101 nvda-sightworld-nishimoto191101 nvda-sightworld-nishimoto
191101 nvda-sightworld-nishimoto
Takuya Nishimoto
 
191114 iotlt-nishimoto
191114 iotlt-nishimoto191114 iotlt-nishimoto
191114 iotlt-nishimoto
Takuya Nishimoto
 
191030 anna-with-python
191030 anna-with-python191030 anna-with-python
191030 anna-with-python
Takuya Nishimoto
 
190916 nishimoto-nvda-pyconjp
190916 nishimoto-nvda-pyconjp190916 nishimoto-nvda-pyconjp
190916 nishimoto-nvda-pyconjp
Takuya Nishimoto
 

More from Takuya Nishimoto (20)

221217 SwiftはPythonに似ている
221217 SwiftはPythonに似ている221217 SwiftはPythonに似ている
221217 SwiftはPythonに似ている
 
220427-pydata 統計・データ分析 特集
220427-pydata 統計・データ分析 特集220427-pydata 統計・データ分析 特集
220427-pydata 統計・データ分析 特集
 
220126 python-datalake-spark
220126 python-datalake-spark220126 python-datalake-spark
220126 python-datalake-spark
 
211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解する211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解する
 
211020 すごい広島 with OSH 2021.10
211020 すごい広島 with OSH 2021.10211020 すごい広島 with OSH 2021.10
211020 すごい広島 with OSH 2021.10
 
210917 オープンセミナー@広島のこれまでとこれから
210917 オープンセミナー@広島のこれまでとこれから210917 オープンセミナー@広島のこれまでとこれから
210917 オープンセミナー@広島のこれまでとこれから
 
210911 これから始める電子工作とMicroPython
210911 これから始める電子工作とMicroPython210911 これから始める電子工作とMicroPython
210911 これから始める電子工作とMicroPython
 
210728 mpy
210728 mpy210728 mpy
210728 mpy
 
210630 python
210630 python210630 python
210630 python
 
210526 Power Automate Desktop Python
210526 Power Automate Desktop Python210526 Power Automate Desktop Python
210526 Power Automate Desktop Python
 
210428 python
210428 python210428 python
210428 python
 
200918 hannari-python
200918 hannari-python200918 hannari-python
200918 hannari-python
 
200429 python
200429 python200429 python
200429 python
 
200325 flask
200325 flask200325 flask
200325 flask
 
200208 osh-nishimoto-v2
200208 osh-nishimoto-v2200208 osh-nishimoto-v2
200208 osh-nishimoto-v2
 
191208 python-kansai-nishimoto
191208 python-kansai-nishimoto191208 python-kansai-nishimoto
191208 python-kansai-nishimoto
 
191101 nvda-sightworld-nishimoto
191101 nvda-sightworld-nishimoto191101 nvda-sightworld-nishimoto
191101 nvda-sightworld-nishimoto
 
191114 iotlt-nishimoto
191114 iotlt-nishimoto191114 iotlt-nishimoto
191114 iotlt-nishimoto
 
191030 anna-with-python
191030 anna-with-python191030 anna-with-python
191030 anna-with-python
 
190916 nishimoto-nvda-pyconjp
190916 nishimoto-nvda-pyconjp190916 nishimoto-nvda-pyconjp
190916 nishimoto-nvda-pyconjp
 

Recently uploaded

De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
g2nightmarescribd
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 

Recently uploaded (20)

De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 

Rubykaigi 2017-nishimotz-v6

  • 1. What visually impaired programmers are thinking about Ruby? Takuya Nishimoto @nishimotz RubyKaigi 2017
  • 2. 2
  • 3. self • Hiroshima → Tokyo → Kyoto → Tokyo → Hiroshima • PhD Eng. (17 years) • speech, audio, natural language, machine learning • experimental psychology / applications / accessibility • Freelance jobs: Objective-C++ / Python • NonVisual Desktop Access (NVDA) • Japanese Team Director www.nvda.jp • Localizations / Enhancements • Insert key → Escape key (makes Mac users happy) • OpenJTalk / ATOK / Excel cell border / Japanese Braille Takuya Nishimoto (RubyKaigi 2017) 3
  • 5. Pref Shimane CMS Takuya Nishimoto (RubyKaigi 2017) 5
  • 6. Read aloud button Takuya Nishimoto (RubyKaigi 2017) 6
  • 7. https://github.com/edhowland/viper • simple editor in Ruby that works with screen readers • only attempts an audible interface • sighted users will only see confusing gibberish Takuya Nishimoto (RubyKaigi 2017) 7
  • 9. Braille display Takuya Nishimoto (RubyKaigi 2017) 9
  • 10. Console (Terminal) applications • only displays text • text is accessible • use can use speech synthesizers and braille displays • engineers prefer terminal + screen reader • remote access • demo • Windows Subsystem for Linux (WSL) • Emacs 24.3.1 + sshd • TeraTerm + NVDA (NonVisual Desktop Access) Takuya Nishimoto (RubyKaigi 2017) 10
  • 11. Text + Assistive Technology • Screen reader • VoiceOver (iOS/macOS) / TalkBack (Android) / Orca (Linux) • Narrator, JAWS, NVDA, etc. (Windows) • Tactile (refreshable Braille display) • good for verify spelling (type errors) • device is expensive • difficult to learn • Listening (speech synthesizer) • takes time, difficult to locate information Takuya Nishimoto (RubyKaigi 2017) 11
  • 12. Accessible modern text editors • Visual Studio Code • Chromium-based • Web accessibility technologies are used • collaborating with NVDA developers • Eclipse • IAccessible2 API (developed by Mozilla) • Dynamic Language Toolkit (DLTK) • Ruby is supported Takuya Nishimoto (RubyKaigi 2017) 12
  • 13. Ruby and visually impaired programmers • Pros • documents in Japanese • easy to read, easy to write, less coding • tools for server engineers • test driven development (RSpec etc.) • Cons • How to build Windows Apps? • GUI development? (in non-visual way) • TK is not accessible Takuya Nishimoto (RubyKaigi 2017) 13
  • 14. GUI framework and accessibility • application • does not directly use speech synthesizer (or Braille display) • should expose necessary information to OS • if GUI framework just draws images • sends nothing to OS • OS cannot send information to screen reader • application cannot be operated with screen reader • wxRuby is good, but not actively developed now Takuya Nishimoto (RubyKaigi 2017) 14
  • 15. Example Ruby source code Takuya Nishimoto (RubyKaigi 2017) 15
  • 16. Documentation tools • Ruby source code to HTML • rdoc • yard • demo • Ruby 2.4.1 (Windows Subsystem for Linux) • Windows 10 + NVDA + Firefox Takuya Nishimoto (RubyKaigi 2017) 16
  • 17. rdoc output Takuya Nishimoto (RubyKaigi 2017) 17
  • 18. Landmarks • efficient way of move • main role = class Poke • navigation • search • content info • operations • d : next landmark • shift+d : previous landmark Takuya Nishimoto (RubyKaigi 2017) 18
  • 19. Headings • == : h2 • === : h3 • default items • h1 : Class • no methods or constants • operations • h : next heading • shift + h : previous heading • 3 : next h3 Takuya Nishimoto (RubyKaigi 2017) 19
  • 20. View Source • "click to toggle source" appears if pointed by mouse • announced as "clickable" • cannot understand what happens without mouse pointer • line indentation reporting Takuya Nishimoto (RubyKaigi 2017) 20
  • 21. Yard output (no landmarks) Takuya Nishimoto (RubyKaigi 2017) 21
  • 22. Headings Takuya Nishimoto (RubyKaigi 2017) 22 • == : h2 • === : h3 • default items • h1 : Class • h3 : Instance Method Details • no constants • Summary and Details • "collapse" in item name
  • 23. expand / collapse (without mouse pointer) Takuya Nishimoto (RubyKaigi 2017) 23
  • 24. view/hide source (without mouse pointer) Takuya Nishimoto (RubyKaigi 2017) 24
  • 25. Why important? • Comply with standards • Robustness / quality • Prepared to new technologies • Voice agents • Human rights of every person • guidelines and regulations • W3C WCAG / JIS X8341 / US Section 508 Law • Technology is removing barriers Takuya Nishimoto (RubyKaigi 2017) 25
  • 26. Conclusions • accessibility of Ruby • pretty good • we can make it better • inclusive design • handicapped people = lead users Takuya Nishimoto (RubyKaigi 2017) 26