Jonathan Blow, in a talk about how software is getting worse, points to the example of Ken Thompson’s text editor, which Ken built in a single week. Plenty of the code in this blog post is accidental complexity. […] But at the same time, Ken Thompson’s editor was much, much simpler than what we expect from our text editors today. Unicode supports almost every one of the ~7000 living languages used around the world, and plenty more dead languages too. These use a variety of scripts, directions, and input methods that each impose tricky (and in some cases, unsolved) problems on any editor we’d like to make. Our editor also needs to be usable by vision-impaired folks who use screen readers.
This is such an important point. Most “accidental” complexity is essential to someone. Problem domains only look simple if you don’t know what people actually need.
Our editor also needs to be usable by vision-impaired folks who use screen readers.
My colleagues on the Windows accessibility team at Microsoft have collectively spent many person-months, maybe even person-years, on this (and I’ve also done some work in this area). And that’s just for the platform and screen reader support, not for the actual application implementations (e.g. Edge and Office). Check out the IUIAutomationTextRange interface to get a taste. Using and implementing that interface is harder than it seems.
This is such an important point. Most “accidental” complexity is essential to someone. Problem domains only look simple if you don’t know what people actually need.
My colleagues on the Windows accessibility team at Microsoft have collectively spent many person-months, maybe even person-years, on this (and I’ve also done some work in this area). And that’s just for the platform and screen reader support, not for the actual application implementations (e.g. Edge and Office). Check out the IUIAutomationTextRange interface to get a taste. Using and implementing that interface is harder than it seems.
Disclaimer: Posting on my own behalf.