Going to list a few interesting problems that were easy to solve but the identification of the issue was hard.
* A test suite we wrote for a client's project before a massive refactor was stalling randomly, but would continue when you tried to diagnose the problem. Turns out their user creation code used /dev/random, and the system was running out of entropy and so the code was blocking. Moving the mouse or typing on the keyboard would add entropy, thus cause the tests to resume. Fix was to to use /dev/urandom for tests.
* Found a weird issue with an embedded network stack where a limited broadcast packets to more than 3 devices would result in only a response from a few of them, but directed packets to each device would work fine. Devices reported successfully receiving and transmitting when monitored over serial console. Issue turned out to be a bug in the ARP implementation where it would incorrectly store any ARP response it saw (rather than ARP responses the device requested). Given the embedded system has a limited ARP cache due to memory constraints, when multiple devices wanted to respond, they would all send ARP requests, and the responses would flush the ARP cache, so when the network stack wanted to send the response, it didn't know what MAC to use and just drop it on the floor. A workaround was to increase the ARP cache size.
> Turns out their user creation code used /dev/random, and the system was running out of entropy and so the code was blocking. Moving the mouse or typing on the keyboard would add entropy, thus cause the tests to resume.
Funny how this goes completely against the typical operant conditioning a user undergoes when working with computers. Usually if your software hangs up, you want to touch nothing and let it finish. But in this case it's actually additional user activity that's needed.
It seems perfectly in line with what I generally see. A hang up usually results in some desperately mashed combination of Esc, Space, and Enter, then clicking on absolutely everything, and finally mashing ctrl-alt-del in the hopes of something happening. The let it do its thing and wait crowd has always been on the higher end of the technical knowledge spectrum.
Hmm, probably. I used to use Shift but the problem was there are languages where they need to use Shift to be able to type more letters (Thai for example), so it wouldn't let them type other languages. I could probably add it as an option though, but you wouldn't be able use capital letters, naturally heh
This app relies on applications implementing the Accessibility API properly. I'm hoping that there'll be enough Shortcat users to pressure application developers into making their apps more accessible so people who actually need to use accessibility tools (due to being visually impaired can) use their apps.
I've found that most mail clients (apart from Mail.app, which I don't like) have pretty terrible Accessibility support, due to heavy emphasis on custom views. It's still possible to add Accessibility support on custom views though, but visually-impaired users tends to be a pretty small niché unfortunately...
In addition to its other merits, apps like this are a great way to encourage developers implement Accessibility support, which is really not that burdensome at all.
If it gets more app developers to support it (even if it's because their users want to use power tools like this), then indirectly, much good will be done for the users who need Accessibility support for its intended purpose. Definitely a win all around.
Regions needs a bit more thought, but it'll let you narrow down the search space easier when you're using a complex app like Xcode with a billion different scrollviews.
That's actually a pretty cool idea! I had ideas for sorting by depth in the element tree to current active or moused over element, but a proximity-based search would be interesting. What operator would you think is meaningful? I haven't got plans for '#' just yet.
I'm not sure what the best operator would be for my suggestion, but after thinking about it '/' would work well since it calls to mind the idea of navigating a hierarchy. 'Shortcat/comments' feels nice to me. It can also be typed without using shift on a US keyboard, which is convenient.
I'll be adding '/' down the track for a proper hierarchy, but things that are close to each other aren't guaranteed to be in a sane hierarchy. What about '@'? "comments@shortcat" kinda flips it around first, which could work as you might decide to narrow down the query when you see too many results. A possible problem is that the second part of the query also has too many results.
The reason why I'm currently making users explicitly use Enter/Return to click is because this allows them to use modifiers while clicking, so Ctrl+Enter for right click, Cmd+Enter on a link to open it in a new tab, etc. However, I think Ctrl+letter might be interesting, but might be confusing on multi-letter shortcuts.