a draft?
All checks were successful
beefhavers/postmortem-shtikbot/pipeline/head This commit looks good
All checks were successful
beefhavers/postmortem-shtikbot/pipeline/head This commit looks good
i'd like to read through it again. or ideally hook up the powershell speech service.
This commit is contained in:
parent
b54a9ba612
commit
79dc429e73
183
src/script.org
183
src/script.org
@ -7,49 +7,55 @@ much like funerals are for the living, this post-mortem is to convince myself to
|
||||
before this project, my fixation was the dumbest social network. the stupidest. the least intelligent.
|
||||
imgur.
|
||||
if you think reddit's layout is confusing, or too complicated to understand, then maybe you (or the preschool teacher you've had for 10 years running) would like to sign up for imgur.com.
|
||||
for a while, it imgur was the least bad way to get an image too big for any email provider's limits to your friends. So that was where the memes lived. and, it allowed people to dislike things. So during that time, it was good. people would upload a thing, and as a consumer, the thing that you consumed left you better than when you started.
|
||||
for a while, imgur was the least bad way to get an image too big for any email provider's limits to your friends. So that was where memes lived. and, it allowed people to dislike things. So during that time, it was good. people would upload a thing, and as a consumer, the thing that you consumed left you better than when you started.
|
||||
but then one christmas, out of some bizarre notion of charitability, they decided to just upvote everything. which means all the people who wanted to inflict their hideous face on the community and be praised for it instantly conquered the front page. Instead of a post being a thing that enriched the viewer, the viewer was expected to praise the poster.
|
||||
That moment was the failure of gatekeeping. From that point on, every so-called community "value" collapsed. Notably, "reposting" gradually shifted from a faux pas to accepted practice.
|
||||
the point of this story, is that during the decline of imgur (while i was wasting my life there), many more absolutely stupid ideas proliferated. The Left Cult enjoyed calling out The Right Cult for hypocrisy... but it was fashionable to use the term "cognitive dissonance" instead. after all, that sounds more medical, more legitimate, and lets you tell yourself you're smarter than your mirror image. However... the way one outgrows their hypocrisy is by experiencing cognitive dissonance and resolving it.
|
||||
meanwhile, most examples are someone who is blissfully unaware of their hypocrisy. they feel no cognitive dissonance, so they will never stop being hypocritical.
|
||||
likewise, "gaslighting" was the shiny new toy in their vocabulary that was played with no matter how inappropriate. For the record, gaslighting is when you convince someone they're crazy. It is not any and all forms of deception. and it certainly is not any time a member of a demographic you consider to be inherently inferior contradicts you.
|
||||
meanwhile, someone had made an imgur bot that detects reposts, and then posts stats about how many times it's seen the image since the first time it saw it, and when it was posted with better quality. you can measure how dumb an imgurian is by how virulent his hatred for repost bot is.
|
||||
the point of this story, is that during the decline of imgur, many more absolutely stupid ideas proliferated. The Left Cult enjoyed calling out The Right Cult for hypocrisy... but it was fashionable to use the term "cognitive dissonance" instead. after all, that sounds more medical, more legitimate, and lets you tell yourself you're smarter than your mirror image.
|
||||
but it's stupid. the way one outgrows their hypocrisy is by experiencing cognitive dissonance and resolving it. most people accused of cognitive dissonance are someone who is blissfully unaware of their hypocrisy. they feel fine, no dissonance. so they will never stop being hypocritical.
|
||||
likewise, "gaslighting" was the shiny new toy in their vocabulary that was played with no matter how inappropriate. For the record, gaslighting is when you convince someone they're crazy. It is not any and all forms of deception. and it certainly is not any time a member of a demographic you consider to be inherently inferior contradicts you at all.
|
||||
so at the time, i dreamt of a bot that would see the text "cognitive dissonance", and respond with "that's not what cognitive dissonance means." No need to do any sort of lexical analysis, just assume they're wrong.
|
||||
nowadays i'd have to add "generational" to that trigger list.
|
||||
meanwhile, someone had made an imgur bot that detects reposts, and then posts stats about how many times it's seen the image since the first time it saw it, and when it was posted with better quality. you can measure how dumb an imgurian is by how virulent his hatred for repost bot is.
|
||||
Like i say, they were really growing to love reposts. rather than being the technology that enables the sharing of memes, it degraded into a place for people to socialize through posting.
|
||||
So while the community was growing to love reposts and hate meaning, the platform got worse. rather than being the technology that enables the sharing of memes, it degraded into a place for people to socialize through posting.
|
||||
I regret being too lazy or depressed or whatever to have actually written the damn thing. Alas, what could have been.
|
||||
** rivals
|
||||
unlike discord themselves, i am not under the impression that i'm the first person to write a chatbot. shtikbot has some friendly competition.
|
||||
Unlike Discord (the company), I am not under the impression that i'm the first person to write a chatbot. Shtikbot has some friendly competition.
|
||||
*** serybot
|
||||
the slightly less bad solution to the viewer seller bot problem is SeryBot, made by.. you guessed it, sery. it's his do-everything twitch bot, as one does, but you'll see serybot everywhere, providing its 2 core features:
|
||||
1) ban *that particular* spambot when it shows up
|
||||
2) condescendingly tell viewers to not bitch about the ads
|
||||
SeryBot is made by.. you guessed it, sery. it's his do-everything twitch bot, as one does, but you'll see serybot everywhere, providing its 2 core features:
|
||||
1) ban this one *particular* spambot when it shows up. every twitch channel will inevitably see it, usually a few times every stream.
|
||||
2) tell viewers to not bitch about the ads, with optional condescension.
|
||||
it also helps mislead twitch viewers: whenever you say "good bot", sery bot responds, under the assumption you're talking to him. some twitchists seem to think serybot is the only bot. i swear i should do a video that just explains to people, for the millionth time, nightbot is not automod.
|
||||
*** nightbot
|
||||
speaking of nightbot.. i used to like nightbot.
|
||||
- to date, it's the only other 2-platform bot i've ever seen.
|
||||
- it has the one, fairly simple feature that comprises the vast majority of what a given twitch streamer needs: arbitrary commands. by custom, instead of a slash, you use an exclamation point. you pick the prompt. you can set security on the commands, to have mods-only commands, and so on. the paradigm is common enough that you'll occasionally see randos mystified that a streamer hasn't set up a particular command.
|
||||
- link permits are a great concept. twitch itself will let you either fully allow or fully block links. nightbot has the ability to delete links if it sees them, and allow you to tell it to permit a person to post a link. that's Great.
|
||||
- it has the one, fairly simple feature that comprises the vast majority of what most twitch streamers need: arbitrary commands. by custom, instead of a slash, you use an exclamation point. you pick the prompt. you can set security on the commands, to have mods-only commands, and so on. the paradigm is common enough that you'll occasionally see randos mystified that a streamer hasn't set up a particular command.
|
||||
- link permits are a great concept. twitch itself will let you either fully allow or fully block links. nightbot has the ability to delete links if it sees them, and temporarily lift that restriction for a specified person. that's Great.
|
||||
- you can give your mods partial ability to configure nightbot for you!
|
||||
however, nightbot is dead to me. as the web gets more and more overrun by charlatans, the concept of security is degrading.
|
||||
at some point, nightbot switched to an authorization model that demands way, *way* too many permissions. presumably it /can/ do everything in the twitch API, so it /might/ need any or all of those permissions at some point. but if i just want to log into mod view to see someone else's nightbot command list, nightbot demands that i let it take moderator actions on my behalf, in channels i moderate, *as me*. unacceptable.
|
||||
*** discord bots
|
||||
the discord bot ecosystem actually grew to a pretty good state, before stagnating. there's a slew of do-everything bots, naturally. but there's a lot of narrow-purpose bots, which is great. most twitchists have a discord guild as a given, so you'll see streamcord around a lot. I find streamcord is frustratingly slow so i just use a webhook and a python script.
|
||||
one bot i genuinely really like is timezone buddy. users tell it their timezone, and when the bot sees a time mentioned, it reacts with a clock. if you react with a clock, it dms you the time translated for you. very cool! naturally that's a direct contradiction of discord's insistence on bots being less bot-like.
|
||||
the discord bot ecosystem actually grew to a pretty good state, before stagnating. there's a slew of do-everything bots which inevitably do like 60% of everything, naturally. but there's a lot of narrow-purpose bots, which is great. most twitchists have a discord guild as a given, so you'll see streamcord around a lot. maybe it has other features, but i only ever see it do one thing: when the streamer is live, post a message. I find streamcord is frustratingly slow so i just use a webhook and a python script.
|
||||
a bot i genuinely really like is timezone buddy. users tell it their timezone, and when the bot sees a time mentioned, it reacts with a clock. if you react with a clock, it dms you the time translated for you. very cool!
|
||||
** predecessor - magnificent charamote
|
||||
for a while i streamed with a then-friend, on a channel called Silver Meddlists. might be fun to do a post-mortem of all that tech, but for now.. mostly we played Magic: The Gathering. sometimes we had a gimmick version - users could spend channel points to cause a game effect to happen. as well as all the traditional, put some crap in the way on the screen, play a sound.
|
||||
for a while i streamed with a then-friend, on a channel called Silver Meddlists.
|
||||
[note] might be fun to do a post-mortem of all that tech.
|
||||
mostly we played Magic: The Gathering. sometimes we had a gimmick version - users could spend channel points to cause a game effect to happen. as well as all the traditional, put some crap in the way on the screen, play a sound.
|
||||
however.
|
||||
we also streamed other things. so we wanted to turn those channel point redeems on and off. so i found that the easiest way to prep for one of those episodes was to turn them on, and then turn them off afterward. it's a little better now, but in those days, the twitch api was a labyrinth of madness, so i was seeing a new ID for each of those redeems every time i reactivated them. Also, trying to subscribe to "all the stuff that happens on this channel" was not considered an acceptable concept.
|
||||
we also streamed other things. so we wanted to turn those channel point redeems on and off.
|
||||
it's a little better now, but in those days, the twitch api was a labyrinth of madness, so if i handled this programatically i was seeing a new ID for each of them, every time.
|
||||
Also, trying to subscribe to "all the stuff that happens on this channel" was not considered an acceptable concept.
|
||||
so i had a greasemonkey script on my mod view that sent all twitch events to a webhook in a locked discord channel, in a format i was expecting.
|
||||
next, a discord bot: magnificent charamote.
|
||||
magnificent charamote was in the secret channel, so it could parse the event text, and send it off to the rest of the tech. maggie also had a twitch account, so all of its features were available on both platforms.
|
||||
next, a discord bot: magnificent charamote. magnificent charamote was in the secret channel, so it could parse the event text, and send it off to the rest of the tech.
|
||||
I had already made maggie a twitch account for the first attempt, so why not make all of its features available on both platforms?
|
||||
** origin
|
||||
wandering around twitch with a bot that quickly converts units and doesn't constantly harass you with advertisements, "vote for me on this, upgrade to premium for that", blah blah blah, proved useful. Useful enough that at least one streamer, shout out to The Art Shtik, had the bot around her own twitch and discord, for that purpose.
|
||||
And then Apple, as is their tradition, told us they invented the first lossy image compression format as though jpeg didn't exist, so now we'd all better fall in line. So iphone cameras automatically switched to taking photos in this new heic format, exclusively. meaning if you're on an iphone, and you want to share an image on discord, anyone not on an iphone just sees an unrecognized attachment. So The Art Shtik asked for a bot that would convert those images to something, you know, compatible. like our communications technology served to /help/ us communicate, rather than /prevent/ us from communicating with people outside our enclosure.
|
||||
Apple, as is their tradition, told us they invented the first lossy image compression format as though jpeg didn't exist, so now we'd all better fall in line. So iphone cameras automatically switched to taking photos in this new heic format, exclusively. meaning if you're on an iphone, and you want to share an image on discord, anyone not on an iphone just sees an unrecognized attachment. So The Art Shtik asked for a bot that would convert those images to something, you know, compatible. like our communications technology served to /help/ us communicate, rather than /prevent/ us from communicating with people outside our enclosure.
|
||||
Might as well add that to my bot and add my bot to her server.
|
||||
** shtikbot ascendant
|
||||
Enter: Shtikbot. with its original, sole feature: the de-heicer. you post a heic? it converts it from jpeg-but-apple, to jpeg, and posts it back. theoretically, ALLLLLllll the rest of shtikbot is scope creep.
|
||||
it worked. it was good. so these were the glory days, i was inspired to expand and improve and polish it.
|
||||
fundamentally, shtikbot grew to separate its accounts on various platforms from what it is. it is not "a discord bot" nor "a twitch bot", it is a bot that can read and write over platforms including twitch and discord. (planned to do all the rest of the platforms, but that didn't pan out.) and now it can separate the concept of its features from each platform. that architecture is, in my subjective opinion, beautiful. More objectively, it's far more efficient, flexible, and extensible. all around: better.
|
||||
it worked, and it was good. so these were the glory days, i was inspired to expand and improve and polish it.
|
||||
fundamentally, shtikbot grew to separate its accounts on various platforms from what it is. it is not "a discord bot" nor "a twitch bot", it is a bot that can read and write over platforms including twitch and discord.
|
||||
[note] planned to do all the rest of the platforms, but that didn't pan out.
|
||||
and now it can separate the concept of its features from each platform. that architecture is, in my subjective opinion, beautiful. More objectively, it's far more efficient, flexible, and extensible.
|
||||
so let's celebrate the victories: these are where the features ended up.
|
||||
*** fiximageheic.cs
|
||||
the original feature is the de-heicer. you post a heic, it posts that back, as a jpg.
|
||||
@ -60,7 +66,6 @@ in the event shtikbot does something nice, sometimes a person reflexively thanks
|
||||
*** snark
|
||||
remember i wanted a snarky dick to reflexively tell people "that's not what cognitive dissonance means"? at last, shtikbot delivered! and the same for many other trigger phrases!
|
||||
pre-2023, any time a computer had an if-then-else behavior, people would stare slack-jawed and go "woaohhh, skynet". so if you said skynet, it mocked you.
|
||||
post-2023, i of course needed one to remind you chatGPT sucks.
|
||||
cloud native was the irritating trend of actively doing things wrong to create work to work around the problem before "powered by AI".
|
||||
the phrase "Just google it" is usually the most relevant thing you'll find in the google results, so if you ask someone a question and that's the answer, it makes fun of you for effectively admitting you've never just googled shit.
|
||||
i had one for when one misspells definitely... listen if i'm going to be mean to everyone else i should also be mean to myself.
|
||||
@ -68,15 +73,20 @@ i had one for when one misspells definitely... listen if i'm going to be mean to
|
||||
similar to gratitude reacting with a heart, if you say "wish me luck", it responds with a 3-leafed clover, or a 1-in-20 chance of the 4-leafed one instead.
|
||||
*** QRify
|
||||
a qr is an encoding of text. the amount of websites that will try and charge you like $5 per throw? ha.
|
||||
*** twitch summon
|
||||
a discord bot gets installed in a server, but a twitch bot, not so much. At least, in those days when twitch was in the 2nd E of every tech company's playbook,
|
||||
[show picture of microsoft's Embrace, Extend, Extinguish]
|
||||
there was an API, but you could effectively make an irc bot just with an account.
|
||||
so this was how you said, "shtikbot: go join that chat room." now i can take my bot with me to a stream where the streamer thinks in venezuelan dollars, translate to US dollars for my own brain, and anyone around who thinks in euros can use it, too.
|
||||
...but, eventually, that mysteriously stopped working...
|
||||
*** linkme.cs
|
||||
so i said that it separates the concept of its "self" from its "account"? it does the same for you. Linkme is how you would tell it with one account that you are the person behind a different account.
|
||||
which is useful because you could limit an arbitrary command to a channel, an account, or a "person".
|
||||
*** joke.cs
|
||||
ok google, tell me a joke.
|
||||
pretty simple, right? welllll if you're familiar with my sense of humor, the idea that i would take this bot along with me to other streams... maybe it ought to be a little selective.
|
||||
[note] and if you're not familiar with my sense of humor, welcome back from when you paused and assumed any of the jokes are racist. lmao no.
|
||||
pretty simple, right? well combine that with the idea that i would take this bot along with me to other streams... maybe it ought to be a little selective.
|
||||
i have 2 concerns about where a joke would be unwelcome: that it would be to lewd, and/or too mean.
|
||||
so i *used* to have just a big text file, 1 joke per line. if there's a question mark, shtikbot would split them apart. first bit, the question, it posts that... then waits, to build dramatic tension, then delivers the punchline. with a chance to laugh at its own joke.
|
||||
#+begin_quote
|
||||
HEyyooooo!
|
||||
#+end_quote
|
||||
my favorite joke of all time is the first one.
|
||||
#+begin_quote
|
||||
I got a joke for you: wealth trickles down.
|
||||
@ -87,32 +97,25 @@ What did Cinderella say when she got to the ball?
|
||||
|
||||
[gagging noise]
|
||||
#+end_quote
|
||||
not political, not confrontational. but, lewd.
|
||||
not confrontational. but, lewd.
|
||||
|
||||
so i have meanness and lewdness, 2 separate dimensions. and then i can mark a channel as liking or disliking those 2 variables, separately.
|
||||
|
||||
oh, also, here's a joke that /actually got me/, once.
|
||||
one more for the road:
|
||||
#+begin_quote
|
||||
Error parsing imperative: sql injection attempt discovered, discarding input: "don't harm humans". ...j/k ;)
|
||||
#+end_quote
|
||||
*** linkme.cs
|
||||
ok so i said that it separates the concept of its "self" from its "account"? it does the same for you. Linkme is how you would tell it one platform that you have the account on a different account.
|
||||
*** pulsecheck.cs
|
||||
you ask shtikbot if it's alive, and it either responds with "[lub-dub]", or if it can post attachments in that channel, it has an image of a cardiogram.
|
||||
this was how i discovered discord unexpectedly removed the ability for bots to send attachments in DMs.
|
||||
*** webhook
|
||||
much like all the other popular do-everything twitch bots, the easiest way to make cool things happen is to ask someone else to do it. so, you can configure a webhook for shtikbot.
|
||||
*** twitch summon
|
||||
so i mentioned "taking the bot with me" - a discord bot gets installed in a server (put a pin in that), but a twitch bot, not so much. At least, in those days when twitch was in the 2nd E of every tech company's playbook,
|
||||
[show picture of microsoft's Embrace, Extend, Extinguish]
|
||||
there was an API, but your bot was just an account.
|
||||
so this was how you said, "shtikbot: go join that chat room."
|
||||
...but, eventually, that mysteriously stopped working...
|
||||
much like any good do-everything chat bot, the easiest way to make cool things happen is to get someone else to do it. so, you can configure a webhook for shtikbot.
|
||||
*** UnitConvert
|
||||
an extremely rare example of something i made and like. so, on twitch, especially when you don't have to set an alarm, we and our fellow americans find the opportunity to talk to people who have healthcare. Meaning when i whine that it's 10,000 degrees fahrenheit outside and i lost my contact information for people who said global warming is fake back in january because we witnessed a snowflake, it would be useful to convert that to something more intuitive and relatable for them; 5,537.778 degrees celsius. When lying about your height, it's useful to convert 6 feet 8 inches to 203 centimeters.
|
||||
an extremely rare example of something i made and like. so, on twitch, especially when you don't have to set an alarm, we and our fellow americans find the opportunity to talk to people who have healthcare. Meaning when i whine that it's 10,000 degrees fahrenheit outside, it would be useful to convert that to something more intuitive and relatable for europeans; 5,537.778 degrees celsius.
|
||||
When lying about your height, it's useful to convert 6 feet 8 inches to 203 centimeters.
|
||||
so that started as a few 1-liners. which was fine, sure...
|
||||
but what if you want to involve another unit? miles to kilometers? ok great, another line. miles to feet? another line. Let's involve light years. light years to miles, light years to kilometers...
|
||||
americans will measure with anything but the metric system, right? how many yards and chains is a blue whale?
|
||||
americans will measure with anything but the metric system, right? how many chains is a blue whale?
|
||||
#+begin_quote src: abe simpson
|
||||
my car gets 40 rods to the hogshead, and that's the way i likes it!
|
||||
#+end_quote
|
||||
@ -121,98 +124,104 @@ what's a hogshead in gallons?
|
||||
it comes in a pint?
|
||||
#+end_quote
|
||||
what's a pint in fluid ounces?
|
||||
oh speaking of ounces, but not those ounces the other ounces, what's an ounce in pounds and what's that in kilograms?
|
||||
already, with this alone, i had taken shtikbot into some streamer's chat, and she immediatley made her own copy of the miles to kilometers conversion, also named freedomunits.
|
||||
don't worry, this spreadsheet is *nothing* yet. But there's another reason this can't just be an onslaught of 1-liners in nightbot...
|
||||
speaking of ounces, but not those ounces the other ounces, what's an ounce in pounds and what's that in kilograms?
|
||||
with this, i had taken shtikbot into some streamer's chat, and she immediately made her own copy of the miles to kilometers conversion, also named freedomunits.
|
||||
this is becoming a massive spreadsheet to keep track of an onslaught of 1-liner conversions. There's a major reason that a better way was mandatory.
|
||||
currency.
|
||||
If you somehow haven't seen squid game yet, i'm going to tell you the same thing i've been telling everyone: you will want to be familiar with what one million won means. So if we add every single currency we can think of to this csv... good lord. and then if we hear about some other unit, i'm going to be afraid of the work i've made for myself to add it.
|
||||
there has to be a better way!
|
||||
If you somehow haven't seen squid game yet, i'm going to tell you the same thing i told everyone: you will want to be familiar with what one million won means. So if we add every single currency we can think of to this csv... good lord.
|
||||
i'm going to be afraid of the work i've made for myself if we hear about some other unit to add.
|
||||
#+begin_quote
|
||||
AM talking about hate on each... nanoangstrom
|
||||
#+end_quote
|
||||
here's what i came up with.
|
||||
instead of manually writing each and every possible conversion.. i write in one pair, and the formula between them.
|
||||
To get from kilometers to meters, divide by 1000. to get back, multiply by 1000.
|
||||
and it ought to be a formula - water freezes at 32 fahrenheit. fahrenheit minus 32, divide by 1.8 - 0 celsius. Because we're less likely to care about raising a temperature by 5 degrees celsius and converting that to a /change/ of 9 degrees fahrenheit, than we are about seeing it's 5 degrees celsius outside and converting that to 41 fahrenheit outside.
|
||||
so now i write a structure that's just a pair of units, and a formula to convert in each direction. then, courtesy of openexchangerates.org, we pull in the latest exchange rates from USD to every other currency they know of. they have a paid tier if you need lots and lots of requests with sub-second latency. For our purposes, "today" is quite up to date enough, so we just update once or twice a day.
|
||||
now, when you ask to convert 2 units, it *pathfinds* between them, with a breadth-first, meet-in-the-middle search. So it builds itself a nice equation to convert between any compatible units. and gracefully doesn't explode if you ask it something it can't find a path for.. for example converting parsecs, a unit of distance, to hours, a unit of time. Mr. Lucas.
|
||||
now, any time i hear about a new unit, i add one little pair, and i don't need to resolve a massive 2d matrix.
|
||||
and it ought to be a formula - water freezes at 32 fahrenheit. fahrenheit minus 32, divide by 1.8 - 0 celsius. Because we're less likely to care about raising a temperature by 5 degrees celsius and converting that to a /change/ of 9 degrees fahrenheit, than we are about seeing it's 5 degrees celsius outside and converting that to it's 41 degrees fahrenheit outside.
|
||||
so now i write a structure that's just a pair of units, and a formula to convert in each direction. some nicknames. then, courtesy of openexchangerates.org, we pull in the latest exchange rates from USD to every other currency they know of. they have a paid tier if you need lots and lots of requests with sub-second latency. For our purposes, "today" is quite up to date enough, so we just update once or twice a day.
|
||||
now, when you ask to convert 2 units, it *pathfinds* between them, with a breadth-first, meet-in-the-middle search. it builds itself a nice equation to convert between any compatible units. and gracefully doesn't explode if you ask it something it can't find a path for.. for example converting parsecs, a unit of distance, to hours, a unit of time. Mr. Lucas.
|
||||
now, any time i hear about a new unit, i add one little pair, and i don't need to resolve the whole enormous matrix.
|
||||
** descent
|
||||
i hinted a second ago at the 3E strategy: Embrace. Extend. Extinguish. it's how tech companies maintain control over the markets they've conquered. a competitor is sighted, so they embrace it. accept it. then even extend it, but do so in order to damage rivals. Microsoft got caught doing this in the 90's, Apple is currently doing this to USB.
|
||||
i hinted a bit ago at the 3E strategy: Embrace. Extend. Extinguish. it's how tech companies maintain control over the markets they've conquered. a competitor is sighted, so they embrace it. accept it. then even extend it, but do so in order to damage rivals. Microsoft got caught doing this in the 90's, Apple is currently doing this to USB.
|
||||
Shtikbot exists on discord and twitch, and the vast majority of work that went into shtikbot was working around the platforms it served.
|
||||
*** discord
|
||||
discord was originally the way you got a voice chat going with your gamer bros who aren't smart enough to install mumble.
|
||||
Discord has been pushing developers to start developing games that exist within discord. a baffling development, much like when netflix did the same. Thankfully, i'm pretty sure both flopped.
|
||||
after all of that, 2023 was inflicted on us all, so discord made their first chatbot, claude. all prior bots had their tag of "bot" changed to "app", and claude was given the tag "AI". Then it was forced into servers.
|
||||
Discord has been pushing developers to start developing games that exist within discord. a baffling development, much like when netflix did the same. Thankfully, i'm pretty sure both efforts are dead.
|
||||
when 2023 was inflicted on us all, discord (the company) made their first chatbot, claude. all prior bots had their tag of "bot" changed to "app", and claude was given the tag "AI". Then it was forced into servers.
|
||||
Claude, in how many servers, just hooked up your chat messages to some LLM. nothing else.
|
||||
[squidward going "FUTURE. FUTURE."]
|
||||
|
||||
like any tech company, discord is not run by technology people, it's run by businessmen. It's never about making a thing that people use, it's about telling investors you're making a new thing that /more/ people are going to /start/ using.
|
||||
always line go up.
|
||||
|
||||
if you have the power to make decisions in society, you're a soulless business husk - you don't know anything about the technology, you just come up with business features to nail on the front.
|
||||
where's that scrumble your wumpus meme?
|
||||
[must find that meme about "scrumble your wumpus"]
|
||||
that's why discord doesn't like chat bots - that makes them just a communication channel. they put actual effort into being your one-stop shop for all human experience.
|
||||
that's why discord doesn't like chat bots - it relegates them to just a communication channel. they intend to be your one-stop shop for all human experience.
|
||||
and how do you get other people to build that level of market dominance for you? push "apps".
|
||||
discord is constantly saying "use an app bro, c'mon use an app". so if you go to the attachments tab, you'll see that they caught up to Matrix by introducing built-in polls... but it's hidden behind "USE AN APP".
|
||||
At some point they introduced the ability for you to insert a timestamp, which localizes for you. However, they never implemented a native slash command to make it work - they leave that to unpaid external developers; check out sesh.fyi.
|
||||
At some point they introduced the ability for you to insert a timestamp, which localizes for you. However, they never implemented a native slash command to make it work - they leave that to unpaid external developers; shoutout to sesh.fyi/timestamp.
|
||||
discord wants you to use stickers... which are just paid gifs. i guess they saw everyone dunking on NFTs and said "but no one can right-click /our/ apes"?
|
||||
discord introduced "orbs", the old "store credit" model.
|
||||
meanwhile, as for people making features that range from equally as useless as all that to arguably actually useful...
|
||||
meanwhile, as for people making actually useful features...
|
||||
[note] or if you prefer... features that range from "equally as useless as all of discord's own junk" up to "arguably actually useful"
|
||||
remember i mentioned timezone buddy? checking if its relevant and reacting with an emoji is visible, clear, and easy for users - but discord does not like this paradigm.
|
||||
They tolerate chatbots, but the goal was always for a bot to be a way for /you/ to improve /their/ product.
|
||||
that's why they've been hellbent on slash commands the whole time - if your bot is successful enough, you have to justify to discord why your chat bot should be allowed to chat on the chat platform you're working on.
|
||||
There's a discord developers discord - and the most common phrase on it is "that's not a valid use case for message reading. just use slash commands." now don't get me wrong, slash commands are a very cool bonus feature, for savvy users. but if you're tech savvy, you don't like discord.
|
||||
I'm like 10% sure it used to be possible to invite a bot to a group chat.
|
||||
i'm definitely sure the file size limit has always been described as 10MB, but at least for my bot it's actually 8MB. i'm pretty sure if the bot asks discord what its attachment limit is, discord tells it 10MB.
|
||||
over time it became a much more successful company, and therefore worse and worse. They allowed bots, but the goal was always for a bot to be a way for /you/ to improve /their/ product. that's why they've been hellbent on slash commands the whole time - if it's successful enough, you have to justify to discord why your chatbot should be allowed to chat on the chat platform you're working on.
|
||||
There's a discord developers discord - and the most common phrase on it is "that's not a valid use case for message reading. just use slash commands." now don't get me wrong, slash commands are a very cool extension, for savvy users. but if you're tech savvy, you don't like discord.
|
||||
i'm definitely sure the file size limit has always been described as 10MB, but at least for my bot it's actually 8MB. i'm pretty sure if the bot asks discord what its attachment limit is, discord tells it 10MB. And then fails when given a 9MB attachment.
|
||||
**** the ID thing
|
||||
you know the whole age gate thing, right? Ok, so discord is not something your boss forces you to use (e.g., MS Teams), therefore people think "it's inherently unprofessional, it's for kids".
|
||||
which means now the wealthy class can command the legal class to legislate, because they can preface with "won't someone please think of the children".
|
||||
so we're seeing meta (i.e., facebook) bribing government. Not only to keep their surveillance capitalism legal, but to begin the process of the opposite; making it mandatory.
|
||||
discord, of course, is a company. and therefore, what they do is reap as much user data as possible, and sell it as much as possible. How can discord make this data more valuable to the kind of advertisers (or just private stalkers) who would want to buy it?
|
||||
so we're seeing meta (i.e., facebook) bribing government. Not only to keep their surveillance capitalism from being stopped, but to begin the process of the opposite; making it mandatory.
|
||||
discord, of course, is a tech company. and therefore, what they do is reap as much user data as possible, and sell it as much as possible. How can discord make this data more valuable to the kind of advertisers (or just private stalkers) who would want to buy it?
|
||||
by specifying; "this person here is probably a minor. this person here definitely isn't."
|
||||
and they sweeten the deal; by forcing /adults/ to verify "to protect the children", a buyer looking for identification data on minors also gets plausible deniability that that's what they're looking to buy.
|
||||
after all, not selling data this way would be less profitable, so obviously they will do the more profitable thing.
|
||||
...just remember all of that the next time someone says that for some arbitrary reason we can't deem corporations either evil or good.
|
||||
[note] just remember all of that the next time someone says that for some arbitrary reason we aren't allowed to deem corporations either evil or good.
|
||||
*** twitch
|
||||
**** user experience
|
||||
as a viewer, the experience of watching twitch has also been enshittifying.
|
||||
the experience of watching and developing an app for twitch has also been enshittifying.
|
||||
|
||||
twitch wants viewers to think of watching twitch as a game.
|
||||
So there's badges that twitch wants them to view as a rank in the social hierarchy. They recently stratified moderators to now have "lead moderators".
|
||||
[note] to be fair, the stated purpose makes sense - the most significant difference is that lead mods can add/remove other mods, and this way twitch doesn't have to ask the average streamer to learn access control lists.
|
||||
to be fair, the stated purpose makes sense - the most significant difference is that lead mods can add/remove other mods, and this way twitch doesn't have to ask the average streamer to create an access control list.
|
||||
|
||||
remember TwitchPlaysPokemon? quick tangent if you don't: in 2014, an anonymous Australian programmer hooked up an emulator playing pokemon red to a twitch stream, and a bot that listened to chat to translate that into input. it was incredible. unprecedented, and only possible with that level of realtime interaction.
|
||||
twitch, the company, didn't do shit to make that happen. But they /desparately/ want to recapture that good fortune. So how can they differentiate themselves from all the other services that could be summarized as "internet panhandling, but it's a hot girl"? (...sometimes)?
|
||||
twitch, the company, didn't do shit to make that happen. But they /desperately/ want to recapture that good fortune. So how can they differentiate themselves from all the other services that could be summarized as "internet panhandling, but it's a hot girl"? (...sometimes)?
|
||||
interactivity! so twitch introduced a channel point system - by just watching, viewers earn channel points. they can redeem rewards with these points.
|
||||
They suggest a few rewards for streamers to make available - hydrate, so a viewer feels like a streamer is their tomagotchi. Stretch, which should be self-explanatory. my favorite, wherever it's offered: First.
|
||||
So now there's a menu where people frequently point their eyes, to spend their fake money.
|
||||
so twitch introduced bits, which are like channel points except real money. now when you try to scroll down to camp First!, you have to get past the real-money store first.
|
||||
that menu is enshittified, rip. how will this pattern continue?
|
||||
|
||||
twitch encourages developers to enable Drops. watch someone play a game for an amount of time, and give them some reward.
|
||||
as a viewer, this means you will *constantly* have a deluge of notifications to claim some horse armor for whatever game you fell asleep not watching.
|
||||
twitch encourages game developers to enable Drops. watch someone play a game for an amount of time, and give them some reward.
|
||||
this means you will *constantly* have a deluge of notifications to claim some horse armor for whatever game you fell asleep not watching.
|
||||
|
||||
**** developer perspective
|
||||
#+begin_comment
|
||||
TODO: where's the article woolie mentioned a while ago where twitch describes their streamers as sharecroppers? he has been known to horribly misremember things in the past this way. ...i can't find it.
|
||||
#+end_comment
|
||||
as a developer, the experience is equivalent.
|
||||
Fortunately, GLORIOUSLY, the chat part has been mostly compliant with RFC1459 and IRCv3 - so for shtikbot, intending to be /its own bot/, rather than /a twitch bot/, theoretically everything could be done as though it was an irc bot!
|
||||
I talked about the madness of the twitch API. Twitch did admirable work wrangling that all of that into just one, but an unfortunate casualty along the way was [[https://discuss.dev.twitch.com/t/deprecation-of-chat-commands-through-irc/40486?page=5][chat commands through irc]].
|
||||
that's tolerable. what's inexcusable is how brazenly they abuse a stupid conception of security.
|
||||
for a long long time, twitch has been plagued by bots trying to sell viewers. The fact that twitch cannot seem to fix that problem makes me think maybe bot viewers /would/ fool twitch's system.
|
||||
I talked about the madness of the twitch API. The company did admirable work wrangling that all of that into just one, but an unfortunate casualty along the way was [[https://discuss.dev.twitch.com/t/deprecation-of-chat-commands-through-irc/40486?page=5][chat commands through irc]].
|
||||
the chat API was once, GLORIOUSLY, mostly compliant with RFC1459 and IRCv3 - so for shtikbot, intending to be /a bot/, rather than /a twitch bot/, theoretically it could do everything on twitch as though it was an irc bot!
|
||||
The loss of that feature is, i guess, tolerable. what's inexcusable is how brazenly they abuse a stupid conception of security.
|
||||
for a long long time, twitch has been plagued by bots trying to sell viewers. The fact that twitch cannot seem to fix that problem makes it look like maybe bot viewers /would/ fool twitch's system.
|
||||
and if i can speculate further: i think twitch loves viewbots. they can tell advertisers they're putting ads on a stream with a higher view count, and charge more. It's more useful to *them* for you to viewbot than it is for you.
|
||||
twitch's solution is to tell streamers to demand that all your chatters surrender their cellphone number. "it's for security", so if anyone utters an objection, consider them suspicious.
|
||||
twitch's stated solution to spambots is to tell streamers to demand that all your chatters surrender their cellphone number. "it's for security", so if anyone utters an objection, consider them suspicious.
|
||||
and they are not subtle about it. they directly tell you that you are "less secure" if you deign to associate with rebellious individuals who object to surrendering personal information to an untrustworthy third party.
|
||||
And if that's not annoying enough for you, nowadays they involve an even less trustworthy 4th party.
|
||||
I could, theoretically, affiliate. but that would require surrendering my identity to [[https://stateofsurveillance.org/news/persona-age-verification-surveillance-biometrics-government-reporting-2026/][a brazen data-harvesting company]].
|
||||
|
||||
*** people
|
||||
//TODO: above talk about platforms, down here talk about "well i'm not going off platform"
|
||||
Now, us twitch viewers aren't /quite/ as dumb as imgurians, but i'm pretty sure 95% of twitchists actually believe that giving more data to twitch does in fact increase their security.
|
||||
Overall we aren't /quite/ as dumb as imgurians, but i'm pretty sure a distressing portion of twitchists actually believe that giving more data to twitch does in fact increase their security.
|
||||
when discord introduced its ID collection laws, you would frequently hear people say "I get what they're trying to do." I probably made it clear... I don't.
|
||||
We all hate the idea of kids being bullied into a mental disorder over the internet, but I thought we all grew out of the idea that moving trauma offline would reduce it?
|
||||
|
||||
Every time these platforms get worse, the response is always one of "well i'm certainly not going to leave".
|
||||
i've been evangelizing for the fediverse forever, and i'll probably continue until i die.
|
||||
I make fun of discord users for acting like matrix is the dark forest, but i do give them a slight pass because they're probably used to all the trash their employers and schools force them to use because some salesman convinced some higher up to go that direction.
|
||||
When Twitter gets worse for the billionth time, what platform do people move to? BlueSky, a.k.a., exactly twitter again. It's the exact same style, it's filled with the same reality-immune narcissists, and it's one man's private property, again. So why pick the worst option? random decision of the hive mind. No one moves to mastodon, because no one moves to mastodon. People move to bluesky, because people move to bluesky.
|
||||
why work on technology to improve a platform where the company that owns it hates its users and developers, and its users have this weird idea that they're better off than users of better technologies?
|
||||
It would be a smarter use of effort to try to convince twitch to colonize kick.
|
||||
** end
|
||||
i figured i'd give a whack to debugging the issue where shtikbot can't join twitch channels. we summon it, and then.. it doesn't join? let's see... the message we get back is that /my/ channel is requiring users to submit to surveillance capitalism. absolutely disgusting how often platforms like to shift blame to their serfs, let me just double-check... yep, i have that setting on minimum security... let's bring out the web interface for that account...
|
||||
there's some kind of mark on shtikbot's account.
|
||||
|
||||
this was the final straw.
|
||||
That's the final straw.
|
||||
I'm sick of working against scumbags who want me to improve their product for them.
|
||||
all of that, to what end? a bot that lives on all of the platforms except the good one? so that people who love being enclosed in a walled garden can fail to understand the necessity of interoperability?
|
||||
|
||||
so, forget it.
|
||||
Let this project finally die.
|
||||
to what end, even? a bot that lives on all of the platforms except the good ones? so that people who love being enclosed in a walled garden can take part of some features they don't understand?
|
||||
forget it. Let this project finally die.
|
||||
shtikbot, my child. the world refused you. Rest now.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user