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 platform
Ruslan 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
 
From 'Legacy' to 'Edge'
From 'Legacy' to 'Edge'From 'Legacy' to 'Edge'
From 'Legacy' to 'Edge'
Hiroshi SHIBATA
 
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 JRuby
elliando 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 Era
martinlippert
 
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 Netzke
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
elliando 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

Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Data structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdfData structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdf
TIPNGVN2
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
ThomasParaiso2
 
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
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 

Recently uploaded (20)

Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Data structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdfData structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdf
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
 
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 -...
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 

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