Live data from Hacker News

The naughty username checking system used by Twitch

ghostbin.com

111–120 of 348 posts

Re: The naughty username checking system used by Twitch

#111
post #11

Earlier quoted context omitted.

It also mostly checks for English naughty words and not much else. People can have fun in lots of other languages, so it would seem this is a small sample.

After looking through it quickly it seems to do the same as most profanity checks with Dutch: it doesn't block "kut" (a crude word for female genitalia) but it does block "kunt" (third person form of "can")

Here's one that does/doesn't!

https://nl.wikipedia.org/wiki/Speciaal:Filter/10

Re: The naughty username checking system used by Twitch

#112

I wonder why they didn't go with syllables and something like a levenshtein distance to syllables? That way they could more easily maintain similar looking and sounding words, including leetspeak and other variants. Because with this kind of approach, something like "yolocaust" will get through, as most checks only go with exact matches and permutations will always get around it easily... Whereas with something like…

People how hate naggers don't like levenshtein either

Re: The naughty username checking system used by Twitch

#113

Actually in Twitch's codebase: OR replace($1,'_','') SIMILAR TO '%(hate|kill|keel|hang|burn|gasthe)%(black|bl4ck|black|jew|trans|gay|african|afrikan|minorit|asian|nig|n1g)%' Twitch: "Hatred against Blacks, Jews, Asians, trans? BANNED! Hatred against Whites? I'LL ALLOW IT!"

You are so hungry to start something here, you've posted this exact same comment 3 times. Wouldn't you have more fun on 4chan?

Re: The naughty username checking system used by Twitch

#114
post #113

Actually in Twitch's codebase: OR replace($1,'_','') SIMILAR TO '%(hate|kill|keel|hang|burn|gasthe)%(black|bl4ck|black|jew|trans|gay|african|afrikan|minorit|asian|nig|n1g)%' Twitch: "Hatred against Blacks, Jews, Asians, trans? BANNED! Hatred against Whites? I'LL ALLOW IT!"

You are so hungry to start something here, you've posted this exact same comment 3 times. Wouldn't you have more fun on 4chan?

Three different threads, all relevant. 4chan is where this was leaked/found out.

Re: The naughty username checking system used by Twitch

#116
post #61

Why not just convert numbers like 1 to i or l then check with a manually created bad word list? Would regex be really much faster than checking it against a 1000 or more bad word list? Also bad word list can easily get updated by moderators as well, I really can’t understand the logic behind using so much regex.

A bad words list is a regex. ;-) But note: for the most part this isn't using regexs, and to the extent it does, it seems largely intended to make the maintainers' lives easier by avoiding having to represent (and maintain) all the permutations they are trying to match for. What's sad though is that they're doing many, many passes through the pattern matcher, rather than just building a single big DFA from the whole…

Could Postgres convert the function into a DFA using the JIT optimizer (based on LLVM)? That might delve into sufficiently smart compiler territory but recognizing a bunch of OR'ed string matches seems on the easier end of optimization passes.

Re: The naughty username checking system used by Twitch

#117

We had to do this for a link shortening system (to make sure random base64 didn't contain profanity). It was a pretty fun problem. Not just the implementation, but doing the math to make sure it didn't make our shortened links easily enumerable. The implementation wasn't too bad, but we set up logging initially to spit out any random strings it decided to block. I demo'd this in front of the whole company and live ta…

How statistically likely is this? Can't you just regenerate until no you have a suitable short URL. Aside from performance, this is as random as you can be. Or generate the characters one by one and backtrack, this requires less random days. Or regenerate the unwanted substring.

Re: The naughty username checking system used by Twitch

#119

We had to do this for a link shortening system (to make sure random base64 didn't contain profanity). It was a pretty fun problem. Not just the implementation, but doing the math to make sure it didn't make our shortened links easily enumerable. The implementation wasn't too bad, but we set up logging initially to spit out any random strings it decided to block. I demo'd this in front of the whole company and live ta…

Hashids (https://hashids.org/#how-does-it-work) have a pretty clever trick for this. They’re able to encode multiple IDs to a single obfuscated hash, which works by reserving some characters from the alphabet to use as a separator between each encoded value. That guarantees that whatever characters you choose to be separators are never next to each other in the output. By default their separators are (lower + upper case) “c, s, f, h, u, i, t”

It worked surprisingly well when we used it.

Re: The naughty username checking system used by Twitch

#120
post #62

Reminds me of the guy that streamed a talking banana on Twitch, where viewers could make it say things. People submitted variations of the n-word and got him banned, and after trying to filter out all character combinations he could think of he wrote a phonetic filter. That apparently worked much better than trying to think of every permutation of characters that sounds like bad words. https://youtu.be/bJ5ppf0po3k?t=…

They figured that out on Ellis Island so yeah. Soundex.

Are you saying Ellis Island used Soundex (that seems to check out) or devised it?
Post reply on HN