Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
$1 Unistroke Recognizer (washington.edu)
122 points by tosh on Nov 13, 2023 | hide | past | favorite | 29 comments


Reminds me of the old Palm Pilot input mechanism, Graffiti https://en.m.wikipedia.org/wiki/Graffiti_(Palm_OS)


Fun to play around with that! https://archive.org/details/palm3_ghelp16 (click the power button to start the emulator, then click the Home button, then click the Graffiti app)


yes, I was going to say the same!


So the name of the thing is "$1"...

How stupid do we have to be with names??!?!


It's because the algorithm is easy to implement and efficient in terms of compute usage to match a gesture. It's a "cheap and easy" recognizer, a $1 recognizer. The name has spawned a whole host of similarly named papers which you can see on their "impact" page https://depts.washington.edu/acelab/proj/dollar/impact.html.


That doesn't help the ambiguity at all.

You have to know contextually that the dollar sign and the digit are part of the name before you can read any sentence that contains the name. That guarantees that you will be confused at least once!


Here is that terrible confusion: “Is that a price or a name? Ah, a name”


Then you continue: "You can't use $1 to..."

The ambiguity never leaves. It's an absolutely unnecessary overhead that demands more than any other name I have ever encountered.


Yeah, but someone in marketing got a high-5 for being clever, so all other considerations are moot.

and yes, I agree with you, 100%.


`awk` users hate this one simple trick!


That's funny cause I assumed this was expensive the other day and didn't check it out. "$1 for each recognition? Not worth the effort to even check it out"


Was expecting cheap hardware, then looked through the whole page trying to figure out what this had to do with money.


I think the name is genius, you'll never forget it and if you ever need to implement a basic stroke recognizer you'll undoubtedly think of this. At least this is what I have done many times in the last decade.


It does not seem to recognize 'left handed' versions of the gestures. Try to draw a curly brace from the bottom up, or the star in a counterclockwise pattern.


That's intentional, afaict. The circle in the diagram represents the stroke start point.


I noticed this too. Draw a left curly brace from the bottom up, it calls it a right curly brace, and the reverse is true as well.


It rotates the path so that the first point is to the right of center mass. See https://makezine.com/article/maker-news/gesture-recognition-...


This behavior is independent of starting point. Drawing the star counterclockwise demonstrates.


This is a family of recognizers. I used the $P or P+, which do much better for your case, I was drawing boxes


Stroke-order dependent?



Thanks! Macroexpanded:

Ship Shape - https://news.ycombinator.com/item?id=38249214 - Nov 2023 (49 comments)

Also, in case of interest:

$1 Unistroke Recognizer (2007) - https://news.ycombinator.com/item?id=27046822 - May 2021 (65 comments)

$1 Unistroke Recognizer - https://news.ycombinator.com/item?id=10245928 - Sept 2015 (41 comments)


I cannot seem to draw a right curly brace in a way that it recognizes it. It's almost as if the recognition was rotation-invariant because I sometimes get v or check as a false positive for }.


I can draw a } that it will recognize, but it takes special effort. A natural } that no human would have difficulty with tends to be "recognized" as a ] instead. Even when there is a VERY prominent center point protruding from the shape.

I also have trouble with the registered "arrow" shape - if you overshoot the point when you're doing the return from the top half of the arrowhead, you'll get recognized as a random non-arrow shape.

The "x" does not match the way I would naturally write an x, and it really highlights the fact that many common shapes are not drawn in a single stroke. (Also a problem for the arrow, as well as the "delete", which is clearly supposed to be visually identical to "x". It will be a problem for a large number of important characters that don't exist in the demo, such as A, t, and +.)

Between that and the fact that it has so much trouble recognizing }, which is visually distinctive and is naturally drawn in a single stroke, this doesn't seem like an algorithm you'd want to let users interact with.

Adding a single example of a } as drawn by me more or less removed that recognition problem. It introduced a symmetric problem where obviously squared-off ] was recognized as }. Adding the perfectly squared ] as an example of "right square bracket" reintroduced the inability to recognize very obvious }. I suspect this is not a solvable problem without switching to a more effective algorithm.


The whole family of algorithms (including the multistroke variants) suffer from this issue. They are very clever, and maybe suitable if your set of templates are sufficiently distinct, but they don't deal at all well with similar shapes


I used the Flash version of this when I was in university to make some funky art installations. Funny to see it pop up over a decade later.


Is there more information about the installation available? Sounds like it would be a cool project


It doesn't support straight lines (1D lines), like a single stroke right. According to the PDF you need to implement your own bounding box analysis for this.

I was reading about it this week because I needed a gesture recognition library but haven't found anything else.

BetterTouchTool uses this library.


so.. that character in the upper right... is that suppose to be recognized as a '3' or as boobies?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: