(Anti-)Social Media

Don’t Dunk the Gunk

How to Avoid Accidentally Amplifying Assholes on Twitter

It happened again. You were doom-scrolling on the hellsite (a.k.a. browsing Twitter) and stumbled upon some stranger’s tweet that was so stunningly ignorant that it almost seems artificial.

But sometimes it’s more than just stupid, it’s also harmful in some tangible way. Homophobic, racist, etc. nonsense is posted to social media almost as frequently as the comments section on YouTube.

It’s never a good idea to boost fascists.

Often, to your horror, you discover that a lot of your friends and peers are replying to, or quote-tweeting, the bad take.

Art: LvJ

This serves to amplify messages of hatred, bigotry, and intolerance, to anyone who follows your friends and peers. Eventually, the bad tweet reaches enough engagement to reach escape velocity, and unsuspecting people find it recommended by the Twitter Algorithm. Again.

After the first tweet got traction, the second was posted. Shitty people count on their bad takes being amplified.

Stop Directly Interacting With Bad Takes

No matter how tempting it may be to dunk on a hater, you’re going to ultimately help amplify the idiot’s message if you interact with it directly.

To be clear: I am not saying don’t dunk on them. Just be smarter about it.

What Does Clever Dunking Look Like?

The standard advice you’ll hear from activists is an excellent start.

First, always take a screenshot of the offending content, and tweet that instead of the original tweet. This uncouples your message from the original tweet, and provides you the opportunity to censor anything offensive or inappropriate to your followers.

Next, always archive the original tweet to preserve evidence. There are plenty of web page archiving services online. The Internet Archive and Archive.Today are two. Screenshots can be faked, but third-party archiving services are much more difficult to falsify.

What’s written above is the normal advice you’re probably used to.

But that isn’t clever enough for us. Let’s take it a step further.

Art: LvJ

Introducing: Dunktags!

A dunktag is a (relatively) unique hashtag, generated from the URL of the original tweet, that we can use to standardize, and thus coordinate, our dunks without having to ever comment on, or reply to, an original bad tweet.

Update: CatmanJon created a dunktag web app for your convenience.

const { dunktag } = require('dunktags');

// "#dunk_3e45fd4499"

The dunktags algorithm, as well as a TypeScript implementation, is open source on GitHub.

How Can Dunktags Help?

With dunktags, our dunking procedure now looks like this.

  1. Take a screenshot of the offending tweet.
  2. Archive the original tweet.
  3. Use my library to generate a dunktag from the original tweet URL.
  4. When you choose to dunk on this clown, instead of replying or quote-tweeting them, simply post your screenshot (and archive URLs) with the hashtag generated by the dunktag() function.

If you’d like to see what Twitter users have already said about a dumb hot take, you can just take the tweet URL and run it into the dunktag() function, and then hit up Twitter Search to enjoy others’ sarcastic one-liners.

Art: LvJ

What Is A Dunktag, Under the Hood?

Dunktags use BLAKE2b under the hood, with an output length of 5 bytes (10 hex characters), and a constant BLAKE2b key of 0x572a7ff65e3969e1d1f43911cc07ff82463e5ae113f248dc9035d5e21aabad85 (for domain separation).

The key is the BLAKE2b hash of the string, Soatok Dreamseeker's dunktag function.

First, the Twitter user’s tweet ID is extracted from the tweet .

Next, the BLAKE2b hash of this tweet ID is calculated, using the above parameters.

This hex-encoded hash is returned with a constant prefix (#dunk_).

That’s it. That’s the entire algorithm. I kept it boring and obviously secure.

Why Only 5 Bytes?

I figure billions of tweets are posted per day, but a dunk would only occur for some very small fraction of those tweets, so the risk of collisions isn’t significant.

You’d expect a 50% chance of collision after 2^{20} dunktags, which is a little more than 1 million.

If your tweet and someone else’s bad tweet collide many years later, it’s obvious that they’re not dunking on you.

5 bytes hex-encodes to 10 hexits, which combined with the # character and the dunk_ prefix rounds off nicely to 16 characters of overhead. I think that’s sufficient for most of the Internet’s needs today.

Header art credit: Sophie

By Soatok

Security engineer with a fursona. Ask me about dholes or Diffie-Hellman!

Bark My Way

This site uses Akismet to reduce spam. Learn how your comment data is processed.