Hacker News new | ask | show | jobs
by ogomez92 1729 days ago
Hi, I am the developer of the app in question, accessible hangman, as well as the other games I hve made for iOS. I am a blind developer myself, that is why I thought htat making games for the blind would be the best approach for me. I chose Apple's platform, instead of Android, because of the way that SwiftUI lets me write the UI via code and change visual appearance of buttons, etc just by adding button shapes, icons, etc.

Now, I do understand that every app needs to go through review every time it is updated, of course. But this is verion 2.5 of the app, this is in no way the first or second version. So yes, Apple seems to find a new issue when someone just finds a little light in their brain clicking into place, the first version had no such issue. But after 4 or 5 versions, oooooh wait, your app does not comply with blah blah blah. So, yes, I think this is unfair. Anyway, I have some news regarding this whole hing, the update was pushed through and approved finally so I'm a bit less worried, they still say I should talk to them on the phone so they're going to schedule a call with me. Let's see how this turns out. Thanks all.

14 comments

I wish you luck. Thanks for writing accessible software.

I am not (visibly) disabled, myself, but write software for a demographic that has a statistically high number of folks dealing with various challenges. Accessibility is a big deal for me (as is Usability –Accessibility's redheaded stepchild). I do things like provide localizable accessibility labels, as well as support for things like colorblind access, high contrast mode, and reduced transparency mode.

I have also released over 20 apps in the App Store (myself), since 2012, and am the proud recipient of many app rejection notes.

One of the more annoying things, is that the reviewers are required to select from a menu of rejection reasons. They can't just write "You need to add a plist row to ensure the new permission we just added is presented to the user." Instead, they have to send you some generalized "blanket" reason that includes that requirement, among a list of others that don't apply.

It's easy to panic, when we get these.

In my case, I sometimes need to break out a Ouija board, to figure out what they mean.

Fortunately, I have had very good luck in getting folks on the phone. They still tend to "beat around the bush," but you can usually figure out what they want.

As the father of a red headed step child, I just want to jump in and let all red headed stepchildren know how much this father of a red headed stepchild loves his red headed stepson. Carry on...
I’m surprised people here are still openly using that term.
What would be a non volatile equivalent term? (Not being sarcastic. I don't see it as a good term I just can't think of a neutral term of similar meaning.)
I won’t ask dang to remove it from the post, because that would actually make this conversation seem out of place, but I doubt that I’ll use the term in the future. Won’t be the first anachronistic term I’ve stopped using.

Not a big deal. I can always work to modify awkward habits.

Sorry if I my comment made you you feel uncomfortable. I see no evidence that any red headed stepchildren or their parents have been offended here. I just always feel when I hear this phrase, that as someone with a vested interest I should give the red step children a shout out.
Odd one out? Even difficult child? beyond that I’m not sure as I think it’s meaning can change from person to person. Key takeaway is just don’t use that term.
Got me thinking about that too and doing some googling I didn’t find anything that fits perfectly into what OP wanted to express. I suppose it’s best to rephrase it entirely.
I have never ever encountered anyone that took it as anything other than a joke.

Congratulations on your award.

So why bother with the snarky reply then?
Maybe it might encourage people to stop turning non-issues into issues in the first place?
> Anyway, I have some news regarding this whole hing, the update was pushed through and approved finally so I'm a bit less worried, they still say I should talk to them on the phone so they're going to schedule a call with me.

This is the standard corporate playbook at this point.

Screw over lots and lots of people, then opponents will find some sympathetic cases like this one and put them in the news to put pressure on the company to do something.

The company fixes the one specific case that made the front page. Neither the million other instances, nor the systemic problems that led to them, are addressed. But if anyone refers to the case that made the news, the company can say that it turned out alright. "The system works."

It only turns out alright in that case because it made the front page. Things are still broken everywhere else.

Sorry for the tangent, but as a blind user, how do you manage to use HackerNews? I can't get a screenreader to pronounce indentation as the indentation of the comments is done with gif images as spacers. Do you know of a HackerNews app or alternative website that works better form an accessibility poinf-of-view? (I'm using NVDA on Windows).
I use the "[-]" next to comments. Collapsing/uncollapsing comment trees lets me know what is nested under what.
Brilliant! Is there any minor css changes that would make life easier?
Could a depth tag be added for accessibility? You could always know if you are moving up/down the tree
How do you "find" this? The NVDA "find" function can't seem to find it. What screenreader are you using?
I've noticed that in terminal browsers as well (as a non-blind person).

I suggest dropping a line about this to dang at hn@ycombinator.com. He is extremely nice and helpful.

I've always felt HN should use nested lists for comments.

Yes, a nested list would clearly be the better structure here. Or even a description list (dl) with the comment's metadata in a dt and the comment in dd.
I built hacker news client HACK for iOS, MacOS and Android which scrapes the HN page HTML and this is how I implemented it - when you collapse a comment, it tells you how many child comments that comment has. You could try my app to see if it’s user friendly for accessibility (I don’t have much experience with it so I am not sure).
Just wanted to take a moment to thank you for all your hard work. Your app is excellent and has quickly become the dominant way for me to interact with Hacker News. It lets me silo my reading and has been a valuable tool in preventing Hacker News from being a distraction in my work day. In the entire time I’ve been using it I’ve only come across one bug! (On the iPhone, the UI can very very rarely lock up when transitioning from the comment view to the post list view… and I do mean very rarely, it’s so rare I don’t care, it’s still 5 stars in my book. I only mention it because the thought occurred to me that having to force quit the app might interfere with crash diagnostics giving you information about this particular bug)
Thank you very much for the kind feedback :)

I had someone else mention that rare bug too but unfortunately I haven’t been able to reproduce it to be able to narrow it down. I will see what I can do to fix it.

I'm on a PC and don't currently use a smartphone, but thanks for the suggestion and I will bear it in mind, and give you some feedback if I do use it. I'm sure others on hear could give you some feedback in the meantime.
Here is a list of alternative UIs for HN: https://blog.luke.lol/tech/hacker-news-alternatives/

Two that display comments: https://hackerweb.app/ https://hn.premii.com/ I don't know how good they are with screenreaders.

Brilliant!

The hackerweb.app site seems very good for accessibility. It uses nested lists as others here have suggested.

hn.premii.com is a little more difficult to use (in terms of getting from the list of posts to the comments), but still quite usable. It uses a slightly more complicated layout of divs and lists.

That's awful... Why would it be done like that?
Funny enough, pg did it that way to stick it to the W3C and its recommendations about the proper use of tables.[0]

[0]http://paulgraham.com/arc0.html

>pg: "Arc embodies a similarly unPC attitude to HTML. The predefined libraries just do everything with tables. Why? Because Arc is tuned for exploratory programming, and the W3C-approved way of doing things represents the opposite spirit.

>(...)

>Tables are the lists of html. The W3C doesn't like you to use tables to do more than display tabular data because then it's unclear what a table cell means. But this sort of ambiguity is not always an error. It might be an accurate reflection of the programmer's state of mind. (...)

... and yes, that decision is baked into the server, web app, HTML and forum code (which to my knowledge have never been changed in the standard Arc distribition,) making it a de facto requirement for all Arc based webapps and a PITA to change.

Like so many things, it only seems awful in retrospect. Perhaps it is time to revisit the indentation implementation Hacker News code and change it to use nested lists for threads. (I wonder how HN is implemented and how the code is updated. It could be anything from a single file lisp program running over a single text file to a whole cluster of more traditional specialized servers. (Is it rude poking around DNS looking for clues about a backend implementation?)
> Like so many things, it only seems awful in retrospect.

No, it seemed awful at the time as well. Table layouts were already long obsolete by the time Hacker News was launched. Here’s a discussion from over a decade ago on the subject:

https://news.ycombinator.com/item?id=2019950

Quotes:

> If this were anyone other than pg, you'd all be excoriating the developer for living in the 90s.

> The big benefit is to accessibility through screenreaders or other alternate clients.

> Look, do what you want. You want to write bullshit markup, be my guest. But there isn't a single web dev in this community who would code output like this for their own site. They're just too chickenshit to tell you.

And here we are, a decade later: nothing has changed, we’re still having the same discussion about the same flaws, and it’s still causing problems for people with disabilities. It doesn’t “only seem awful in retrospect” – it has been awful all along and people have been pointing it out for over a decade.

Here's a talk by Sina Bahram from five years ago -- at around 6:30 he specifically addresses how inaccessible HN is to a visually impaired user. Nothing that he mentioned has been addressed: https://www.youtube.com/watch?v=G1r55efei5c
HN uses tables for layout. Switching it to use nested lists would likely be non-trivial.
Usually when people say something would be a simple change, they're not aware of the underlying complexity.

This is a different case -- HN genuinely does not have a complicated UI, and it genuinely would not be difficult to make a UI that worked better with screen readers. It would not be difficult to rebuild a HN UI to stop using tables without even making any visual changes to what the site looks like.

There is very little complicated functionality going on in HN pages. They're paginated, they don't have a ton of content, they don't have a lot of complicated UI controls they need to support. They're mostly static pages with some very minor form controls.

In this specific case, there really is no excuse for HN to be screenreader inaccessible. This would not be a complicated conversion for even a single experienced web developer. You wouldn't need to use React, you wouldn't need to use any 3rd-party library or dependency at all. You wouldn't need complicated CSS features, you wouldn't need to redesign the UI.

Honestly in a lot of ways, the current HN table layout is more complicated than it needs to be, the generated HTML could be a lot simpler. Really, there's a difference between being "retro" and using what works instead of chasing modern trends, and having outputted HTML that's broken and hacky, and was broken and hacky even at the time it was released. HN is very solidly in the latter category.

Actually, I think it would be rather straightforward. I'm a bit embarrassed for HN that they're still using tables and spacer gifs and see it as an intentional pushback on "caving" to modern web techniques. Despite CSS being 20 years old at this point.
Maybe you're right. I had a poke through the HTML a while back, and there are actually tables-within-tables for some reason. It was way more complicated than I expected it to be. It does seem kind of weird that it still uses tables for layout, when there are so many easier and better ways to do it.

CSS could match the current appearance exactly. I bet if dang put up the code on GitHub he'd get PRs fixing tons of stuff within a week.

The original author of the site has many talents, but web design is not one of them.
The design is great. The implementation is bad, at least for screenreaders.

pg is very proud of HN's quirky implementation that does what he wants very efficiently.

> that does what he wants very efficiently.

I'm not sure I agree that it does. HN ships a bunch of extra DOM content that it really doesn't need to ship. If you're optimizing for page size, the HTML could be lighter.

The site does what pg wants, but he really shouldn't be proud of it for doing what he wants well. It's not that the HTML is super-optimized but that the optimization has tradeoffs. It's more like whoever programmed it is very familiar with tables, and when all you have is a hammer everything starts looking like a nail.

That's fair, but if you might have blind users wanting to use your publicly-facing site, just making it do what you want isn't enough.

For visual use, I would agree that the site is great, far better than most of the bloated nonsense that is out there these days.

It was easier to get it to look right.
> as the indentation of the comments is done with gif images as spacers.

Holy shit I didn't realise this? That's terrible!

Is there any HTML that can be wrapped around the spacer-indents that would mark them as indented for screenreaders? If I knew more about this I’d propose that as a unified diff, so that they could apply it to their templates and solve this, but I don’t :(

(I know there’s ways to restructure it completely to do this, but I like focused and surgical changes that don’t affect anyone who doesn’t notice them. Opinions vary on that.)

For screen readers, there's the "tree" aria role[0] which lets you mark a specific element as a tree, and mark the elements within it as items at a certain level.

[0] https://www.w3.org/WAI/GL/wiki/Using_ARIA_trees

Nested DIVs also describe a tree but apparently that's too difficult to do with lambda calculus.
Tree wont' be a good fit for comments because one would want to read content by line/word/etc. while a tree item is presented as a whole thing by the screen reader so it's only good for small textual items.
There is also the aria-expanded role which could be added to a button if this [] were only changed to a button...
The UL/OL tags for lists solved this problem 30 years ago.
Hi, I'm using the site, what do you need indentaiton here for? NVDA can beep when it finds a space before the beginning of the line, not sure what you mean with the gifs thing. IO'm new to this site anwyay I signed up when a friend told me this thing was #2.
Just to avoid any confusion, I'll preface this comment by saying that I'm not blind, but in the last few months have mostly been using a screenreader to avoid the migraines I was getting from even small amounts of screen use. So, in other words, I've used the site visually in the past and am now familiar enough with screenreaders and other sites to know waht an accessible site is like.

Basically, the comments on HackerNews are laid out in a tree form. When you first load the page, the comment tree is expanded. You can collapse them by pressing on the little '-' next to the comment.

With the tree expanded, NVDA just reads the comments as a linear stream. Of course, many forums are structured linearly, but the advantage of a tree layout is that you can have tangents like this one, without interrupting the main flow of the thread. Reddit is very similar in that regard. If NVDA can't read the tree structure, it's hard to know what is going on. From my experience, using the arrow keys ( e.g. CTRL + DownArrow ) will not report the indentation, whereas using the numpad keys ( e.g. Numpad 7 or Numpad 9 ) will report indentation, but will not indicate how deep the indentation is, so that isn't terribly helpful. It may be possible to change settings in NVDA to get this to work, but I doubt it, which leads us to the technical implementation.

As others have pointed out, the comments are in a complicated nested table structure, which NVDA seems completely blind to, not even recognizing it as a table. Then, the visual indentation is created by prepending the comments with gif images, which act as spacers. The width of the spacers is determined by a 'width=' attribute.

Others who are more knowledgeable than me have already pointed out alternative ways that this could be implemented, such as using <ol> or <ul> tags.

It wouldn't be hard to also criticize the lack of headings, but we can leave that for another day; if this indentation issue could be sorted out, the usability of the site would go up by about 300%. I've almost stopped coming on here since using a screnreader, whereas I used to browse on here a lot -- it's one of my favourite sites.

To the other commenters: thanks for the useful suggestions and insights; this had been bugging me for months.

Edit: typo

I’ve had this sort of thing happen to me as well. Often different reasons, for example: one reviewer didn’t like my permission text for camera access.

Twice now I’ve had to appeal the review. Each time the appeal worked in my favor and I was able to publish again. Keep in mind, as part of the appeal process they call you, so you will need to be answering unknown calls for a while. But the people I’ve talked to that handled the appeal process were all very nice.

Speaking of accessibility, do you know how insistent they are on calling? I'm not an iOS dev so it's a hypothetical question for me. However, I can't speak on the phone and I'm amazed by how many problems that's still causing me in the age of jetpacks and 3D printers.
If you miss the call they will usually drop you a note online, I hear.
Well, it's nice that they eventually allow people to install software that they want on phones they own.
"I chose Apple's platform, instead of Android, because of the way that SwiftUI lets me write the UI via code"

Unless I'm misunderstanding the feature, this is coming to Android as well (well, it already has, though it's fairly recent), in the form of Jetpack Compose.

Unrelated to your comment, I would love to know more about your dev setup. I am a fellow blind developer and have found XCode to be a mixed bag accessibility wise.
I think XCode is great, you just need to be patient. I also use my friend's indentation report thing https://github.com/pitermach/IndentBeeper I made a VSCode extension which solves the same problem but obviosuly this does not apply to xcode. https://github.com/ogomez92/indent_reporter_vscode
> they still say I should talk to them on the phone so they're going to schedule a call with me. Let's see how this turns out. Thanks all.

Normal procedure of Apple to avoid any written communication.

> I chose Apple's platform, instead of Android, because of the way that SwiftUI lets me write the UI via code...

You might want to look into Google's new UI toolkit, for Android, called Compose.

will it survive ?
I have to imagine it will; it's the native way to do declarative UIs on Android right now.
Honestly just wanted to give you a round of applause. I can’t imagine the tenacity it takes to get to the point where you can ship an iOS app as a totally blind person.
It used to be very bad until I contacted support about a slew of accessibility problems. can you believe that the little dropdown to create new app/new bundle was inaccessible? So was testflight......
Apparently we don't have many blind developers in Apple's platform, otherwise this would have been solved a lot before I came in.
Apple has thousands of reviewers, sometimes some of them make mistakes. The best way forward is usually to just submit again, most likely you’ll have another reviewer then that sees things differently.
Maybe they should assign reviewers who can't see to check apps like this
>they still say I should talk to them on the phone so they're going to schedule a call with me. Let's see how this turns out. Thanks all.

Could you post on how the conversation went?

I don't really understand that every app needs to go through a review honestly. That is a rule we got with mobile OS and they don't really deliver on security ambitions.
Good luck man!
Talk to them. Apple is a huge company, but they really care about user experience (developers or otherwise), even if sometimes they fail at it.

It's a staple of large corporations struggling scale processes and at the same time properly handle edge cases.

I wholeheartedly disagree with this assessment of Apple. As a long time business owner and developer, I've had nothing but pain as a developer working with Apple technologies.

We've created over 100 cross platform experiences, and I'm seriously considering a #FckApple tattoo.

I know that feeling. I was going to write a post about how Apple's review process made us change our how business because we couldn't afford to fight with them even when we are in the right.
> Talk to them

How? He tried talking to them, and they rejected his appeal.

They have a call scheduled with him, and have approved the app now. The App Store review process is a bit confusing - at first, he replied to the e-mail from the Reviewer, who replied saying there's nothing he can do. What he should have done is explained that there's a process by which you can get a different group, the App Review Board, to look at your appeal. That is different than replying in the "Resolution Center" or replying to the initial rejection e-mail.

If Apple was more developer-friendly, which they are absolutely not as a company, you would think that all replies to rejection e-mails should go through this board. But unfortunately, that's not the case - you have to go through a different process to submit an appeal, which is what it sounds like the blog poster has done (to get a call with them scheduled.)

I've tried in the past for other issues. You get on the phone with someone who has no power to help, and that's all you're told. They don't do a good job.
Same here-- had a call with them but they don't really have much power or decision making abilities. Similar to customer service reps. Mostly script based.