Post AnLICBCSA1ooF8ePRo by phnt@fluffytail.org
 (DIR) More posts by phnt@fluffytail.org
 (DIR) Post #AnKneeP05EQKLGcERE by NonPlayableClown@postnstuffds.lol
       2024-10-24T14:46:19.077194Z
       
       4 likes, 0 repeats
       
       Man :SeethingDanielS: is the gift that keeps on giving.He is exactly like wingsofredemption.https://youtu.be/IkyXngdbyUk
       
 (DIR) Post #AnKoKeglPNsrOQxBeS by ins0mniak@majestic12.airforce
       2024-10-24T14:53:54.691585Z
       
       1 likes, 0 repeats
       
       @NonPlayableClown Get this dude some Prozac or something.
       
 (DIR) Post #AnKpIO5cFj1NHq3ozg by 11112011@annihilation.social
       2024-10-24T15:04:43.675733Z
       
       1 likes, 1 repeats
       
       @NonPlayableClown man why dude running a thing if its a cost headache someone tell him he can just be lazy and headache free
       
 (DIR) Post #AnKpObgSceFnBbGBNI by dj@parcero.bond
       2024-10-24T15:05:50.234098Z
       
       5 likes, 0 repeats
       
       @ins0mniak @NonPlayableClown Is this more vegan drama or something new?  That glussy must be 🔥
       
 (DIR) Post #AnKpeYqwunI32Wm1Wy by ins0mniak@majestic12.airforce
       2024-10-24T15:08:43.490955Z
       
       1 likes, 0 repeats
       
       @dj @NonPlayableClown Idk man, every time I hear about something with him it's some ridiculous drama.Dudes like a schoolgirl.
       
 (DIR) Post #AnKqIZiD8lT1HslZrM by dj@parcero.bond
       2024-10-24T15:15:57.135402Z
       
       3 likes, 0 repeats
       
       @ins0mniak @NonPlayableClown oh, i see now.  I don't follow him so I wasn't current. I see a lot of threats to block people and substance abuse.  :yikes:
       
 (DIR) Post #AnKqVQMpCCvK4LtFg0 by ins0mniak@majestic12.airforce
       2024-10-24T15:18:16.402209Z
       
       2 likes, 0 repeats
       
       @dj @NonPlayableClown Oh he's blocked my whole instance, which I could care less but I get snippits of drama from him non the less.Each time weirder than the last lol
       
 (DIR) Post #AnKrYRqeFIvfU9qUIy by NonPlayableClown@postnstuffds.lol
       2024-10-24T15:30:02.250486Z
       
       1 likes, 0 repeats
       
       His gf left him... again.So he's doing the most logical thing and bitching about it online. 🤣
       
 (DIR) Post #AnKrfre8j8FPWZWzfk by NonPlayableClown@postnstuffds.lol
       2024-10-24T15:31:22.747944Z
       
       0 likes, 0 repeats
       
       Of course he is the retard doesn't have a fucking job other than beg for 2k every month.
       
 (DIR) Post #AnKrtXi1eNDrkBs4Se by ins0mniak@majestic12.airforce
       2024-10-24T15:33:50.441320Z
       
       2 likes, 0 repeats
       
       @NonPlayableClown @dj I mean i bitch about girls online all the time, but I just kick em to the curb and move on.This some straight emo shit man
       
 (DIR) Post #AnKsJx5LvNYhyaNJaq by 11112011@annihilation.social
       2024-10-24T15:38:37.055755Z
       
       2 likes, 1 repeats
       
       @ins0mniak @dj @NonPlayableClown lets not lose focus guys, we need to see selfies 1st chick could be worth it a finnish bombshell dude suffering
       
 (DIR) Post #AnKsREGGSlGPH1wtiS by ins0mniak@majestic12.airforce
       2024-10-24T15:39:55.639067Z
       
       2 likes, 1 repeats
       
       @11112011 @dj @NonPlayableClown yeah i wanna see pictures too man. lol
       
 (DIR) Post #AnKspPID6GV2R9O7MW by dj@parcero.bond
       2024-10-24T15:44:17.358069Z
       
       2 likes, 1 repeats
       
       @11112011 @ins0mniak @NonPlayableClown >>She's Finnish?What are the odds its a femboy?  :happyfelix:
       
 (DIR) Post #AnKsv44AvqpaLGWMiW by ins0mniak@majestic12.airforce
       2024-10-24T15:45:19.238247Z
       
       3 likes, 1 repeats
       
       @dj @11112011 @NonPlayableClown high.prob like around %80-90
       
 (DIR) Post #AnL5fF2Jg1wH8TR8yW by NonPlayableClown@postnstuffds.lol
       2024-10-24T18:08:07.306254Z
       
       1 likes, 1 repeats
       
       >This some straight emo shit man
       
 (DIR) Post #AnL5pclEKCvPbyOaki by ins0mniak@majestic12.airforce
       2024-10-24T18:10:00.057721Z
       
       1 likes, 0 repeats
       
       @NonPlayableClown @dj Omg lmfao!!!!What a big baby. No girl wants a freaking diaper bag bro, lol
       
 (DIR) Post #AnL5vaNc5dshxsBxJI by NonPlayableClown@postnstuffds.lol
       2024-10-24T18:11:05.336408Z
       
       0 likes, 0 repeats
       
       He just keeps on posting this shit. 🤣Idk what he thinks he will accomplish with it other than making me laugh my ass off.
       
 (DIR) Post #AnL68fV6MWklbwvt4q by dj@parcero.bond
       2024-10-24T18:13:26.669645Z
       
       1 likes, 0 repeats
       
       @NonPlayableClown @ins0mniak
       
 (DIR) Post #AnL6Ke4XUzz2ejDfKS by NonPlayableClown@postnstuffds.lol
       2024-10-24T18:15:36.784023Z
       
       2 likes, 0 repeats
       
       From what I can tell he's posting old Twitter archives, and I guess reflecting on his "fweeings" today.It's pretty cringe but just it's also like a car crash you can't look away from.
       
 (DIR) Post #AnL6pUUt9H8Zw8Fhqq by ins0mniak@majestic12.airforce
       2024-10-24T18:21:10.772032Z
       
       1 likes, 0 repeats
       
       @NonPlayableClown @Owl @dj LMFAO!!!!!Good Stuff. I don't begrudge a dude venting about his chick to a point but damn, fucking Oprah over at poast rn haha
       
 (DIR) Post #AnL7D5w67NBuiBEasS by dj@parcero.bond
       2024-10-24T18:25:26.948243Z
       
       2 likes, 0 repeats
       
       @ins0mniak @Owl @NonPlayableClown I like reading your stories,  it's wild out there and you are in the trenches.
       
 (DIR) Post #AnL7MNKmnjavHGCvgm by ins0mniak@majestic12.airforce
       2024-10-24T18:27:07.727901Z
       
       1 likes, 0 repeats
       
       @dj @Owl @NonPlayableClown Hey thanks bro, appreciate it. its fun partying with you as well.
       
 (DIR) Post #AnL7QBC5scrumdxJuC by NonPlayableClown@postnstuffds.lol
       2024-10-24T18:27:49.320326Z
       
       1 likes, 1 repeats
       
       HOLY FUCK!Now he's dropping some of his "gf" dms and trying to reach out for.🤣🤣🤣🤣🤣🤣🤣🤣
       
 (DIR) Post #AnL7iAl4EuMEdztUie by ins0mniak@majestic12.airforce
       2024-10-24T18:31:03.889581Z
       
       1 likes, 0 repeats
       
       @NonPlayableClown @Owl @dj Holy shit man!Goddamn he's losing it. Goddamn Taylor Swift over there haha
       
 (DIR) Post #AnL99XuYMhJKDzwoHw by Xeraser@varishangout.net
       2024-10-24T18:47:09.747027Z
       
       0 likes, 0 repeats
       
       @NonPlayableClown @ins0mniak @Owl @dj There are two kinds of leaked DMsThe funny kind (bot & ew)and the depressing kind (whatever this is)
       
 (DIR) Post #AnL9Qq9rmCWVjvMAzI by Xeraser@varishangout.net
       2024-10-24T18:50:19.886526Z
       
       0 likes, 0 repeats
       
       @Owl @ins0mniak @dj @NonPlayableClown oh no he's gonna leak my DMs with Rika (we laughed at the bot dms for days)
       
 (DIR) Post #AnL9px6r4IFyXSvFxY by Xeraser@varishangout.net
       2024-10-24T18:54:51.922066Z
       
       0 likes, 0 repeats
       
       @Owl @ins0mniak @dj @NonPlayableClown Yeah, I know. I moved to Varis after the 10$ saga. 'member that?
       
 (DIR) Post #AnLA7neQyOHaPt8gqm by Xeraser@varishangout.net
       2024-10-24T18:58:05.153377Z
       
       0 likes, 0 repeats
       
       @Owl @ins0mniak @dj @NonPlayableClown Alzheimer's. 🫵 :klee_smug:
       
 (DIR) Post #AnLBFFF8subLyOQIFc by NonPlayableClown@postnstuffds.lol
       2024-10-24T19:10:40.030215Z
       
       0 likes, 0 repeats
       
       No I can, legit confirm that too. No joke.Plus :SeethingDanielS: has a history of keeping tabs on folks on alts.
       
 (DIR) Post #AnLBSAPo984alQZca8 by sapphire@shortstacksran.ch
       2024-10-24T19:13:00.004218Z
       
       0 likes, 0 repeats
       
       @Owl @ins0mniak @transgrammaractivist @dj @NonPlayableClown @Xeraser sounds like standard graf, at least he didn’t get drunk in matrix and try to send you a plane ticket to Toronto 2 days after meeting you
       
 (DIR) Post #AnLBdnGs1OKUSUwAFc by sapphire@shortstacksran.ch
       2024-10-24T19:15:06.097290Z
       
       1 likes, 0 repeats
       
       @Owl @NonPlayableClown >non toxicthank God, wouldn't want to hurt yourself
       
 (DIR) Post #AnLBgOPGvJiIDB6eCO by NonPlayableClown@postnstuffds.lol
       2024-10-24T19:15:34.186757Z
       
       1 likes, 0 repeats
       
       >He get very huffy with me over a certain payment but ive been asked not to pick that fight.You want to see huffy, just ask Graf about "nonplayable clown" (fyi he word filtered "nonplayableclown" so you need to add a space)And see how ballistic he will get.No joke Owl did this and he was never the same afterwards. 😂
       
 (DIR) Post #AnLBldAzRCOlSzvKYi by sapphire@shortstacksran.ch
       2024-10-24T19:16:31.109397Z
       
       1 likes, 0 repeats
       
       @Xeraser @ins0mniak @Owl @dj @NonPlayableClown please redpill me on the bot DMs
       
 (DIR) Post #AnLC8IHHIvFrJMfgvI by sapphire@shortstacksran.ch
       2024-10-24T19:20:36.869810Z
       
       1 likes, 0 repeats
       
       @Goalkeeper @NonPlayableClown intrusive thoughts, tfw no gf from 5 years ago, or graf?
       
 (DIR) Post #AnLC8sOyzkoBLgYLvk by hazlin@shortstacksran.ch
       2024-10-24T19:20:43.796600Z
       
       1 likes, 0 repeats
       
       @NonPlayableClown A man surrounded by people who really like him... determined to be unhappy.
       
 (DIR) Post #AnLCVEc16AlsbTJKfg by sapphire@shortstacksran.ch
       2024-10-24T19:24:45.625833Z
       
       1 likes, 0 repeats
       
       @Goalkeeper @NonPlayableClown its not even fedi drama apparently its just him sperging out about some twitter ethot he couldn't steal from her boyfriend
       
 (DIR) Post #AnLDDvjG9W2p4N0kAi by John-Pleroma@clubcyberia.co
       2024-10-24T19:32:49.140220Z
       
       2 likes, 1 repeats
       
       @Owl @ins0mniak @transgrammaractivist @dj @NonPlayableClown I'll get you fedi! You'll see! Nobody disagrees with graf on this whole protocol section of the internet! :PepeLaugh:
       
 (DIR) Post #AnLDjviTjcHIITu8P2 by Xeraser@varishangout.net
       2024-10-24T19:38:34.608720Z
       
       1 likes, 0 repeats
       
       @sapphire @ins0mniak @Owl @dj @NonPlayableClown need to dig through my downloads folderprobably faster if I just @RikaDerufu
       
 (DIR) Post #AnLE3SmF2XqKKpyjtg by ins0mniak@majestic12.airforce
       2024-10-24T19:42:08.570712Z
       
       4 likes, 0 repeats
       
       @Owl @transgrammaractivist @dj @NonPlayableClown He de-federated my instance.I'm happy about it tbh my timeline has been chill quality ever since.
       
 (DIR) Post #AnLEFu51M1ymULh7i4 by cvnt
       2024-10-24T19:44:25.038803Z
       
       3 likes, 0 repeats
       
       @ins0mniak @Owl @NonPlayableClown @dj @transgrammaractivist That's how it feels using P's hw.  Lots of the noise gone.
       
 (DIR) Post #AnLET27ImjT7B91RHE by ins0mniak@majestic12.airforce
       2024-10-24T19:46:45.396970Z
       
       3 likes, 0 repeats
       
       @Owl @transgrammaractivist @dj @NonPlayableClown yeah thats the thing, I get a lot of broken threads where I can't see who my friends are talking to.It's a bitch move, he thinks he runs fedi or something.
       
 (DIR) Post #AnLEbasRQm5nIp9ZKq by ins0mniak@majestic12.airforce
       2024-10-24T19:48:17.732111Z
       
       3 likes, 0 repeats
       
       @cvnt @transgrammaractivist @Owl @dj @NonPlayableClown I feel like I'm a fedi within a fedi these days lol. Sometimes ill respond to P and he's like "oh dude check out rest of the thread"I'm like brah I cant.Its a tradeoff . I get less gablin bullshit and more hangouts with people
       
 (DIR) Post #AnLEos9aVZoueKVNp2 by cvnt
       2024-10-24T19:50:44.226094Z
       
       2 likes, 0 repeats
       
       @ins0mniak @NonPlayableClown @Owl @dj @transgrammaractivist I didn't filter shit on proprietary, was a different whole network.
       
 (DIR) Post #AnLEtoBGhsz5m9e2vQ by ins0mniak@majestic12.airforce
       2024-10-24T19:51:35.911150Z
       
       2 likes, 0 repeats
       
       @cvnt @transgrammaractivist @Owl @dj @NonPlayableClown Yeah its comf.You running that over starlink too huh?
       
 (DIR) Post #AnLF4lbIdkFyxW2vGi by cvnt
       2024-10-24T19:53:36.575179Z
       
       2 likes, 0 repeats
       
       @ins0mniak @NonPlayableClown @Owl @dj @transgrammaractivist I was, the core website is still over wg backhaul over starlink, but 2.7.0 Pleroma isn't worth hosting.  Feld is retarded.
       
 (DIR) Post #AnLFJNj5gconG2ewCG by ins0mniak@majestic12.airforce
       2024-10-24T19:56:12.307209Z
       
       3 likes, 0 repeats
       
       @cvnt @transgrammaractivist @Owl @dj @NonPlayableClown Word.I've been playing with my starlink mini. Fucking awesome, runs off a battery bank.  Took it up to the park the other day and was getting about 250mbps.I think its capable of being faster but needs time to stabilize. Some bum came over and was sketching me out but it's pretty rad. I attached a c4 sbc to it and was able to do some fun stuff.
       
 (DIR) Post #AnLFcMi3gsLTbgEEUq by cvnt
       2024-10-24T19:59:40.905101Z
       
       3 likes, 0 repeats
       
       @ins0mniak @NonPlayableClown @Owl @dj @transgrammaractivist I am still waiting for the mobile version, they sent me the offer and I signed up, just have not gotten it yet.  Nginx caching (and @pwm) is wonderful for the bw limits.
       
 (DIR) Post #AnLFwdFTuNNEh3Wey8 by ins0mniak@majestic12.airforce
       2024-10-24T20:03:17.613519Z
       
       4 likes, 0 repeats
       
       @cvnt @pwm @transgrammaractivist @Owl @dj @NonPlayableClown If I ever have to fuck off to the Virginia mountains I'm all set.I got this portable solar bank and it will run just fine off of it.I was thinking about it, like it would be trivial to run a single user instance on a small pi or something with it, sounds like it might take some tweaking but doable. If antifa overruns dc I can still hang out online ha
       
 (DIR) Post #AnLFygKVQLr0pPqxvs by phnt@fluffytail.org
       2024-10-24T20:03:41.953311Z
       
       2 likes, 1 repeats
       
       @cvnt @ins0mniak @transgrammaractivist @Owl @dj @NonPlayableClown To some extent I enjoy running develop. It's like a wheelspin of what will break next every time I update. To be fair, the stalling federation was an Oban issue.
       
 (DIR) Post #AnLG8YbL0sxRkqR38S by pwm@lab.nyanide.com
       2024-10-24T20:05:29.018959Z
       
       3 likes, 1 repeats
       
       @cvnt @ins0mniak @transgrammaractivist @Owl @dj @NonPlayableClown Glad I could help.Was the difference in transfer that noticable?
       
 (DIR) Post #AnLGQHPdevbdeoPiym by dj@parcero.bond
       2024-10-24T20:08:40.774065Z
       
       3 likes, 0 repeats
       
       @ins0mniak @cvnt @pwm @transgrammaractivist @Owl @NonPlayableClown I've seen instances hosted on pi's and they suck. They offer lower power use but sff pc gives you way better performance and they usually come with a low power mobile cpu too.
       
 (DIR) Post #AnLGg8WMUA46iK7TQu by ins0mniak@majestic12.airforce
       2024-10-24T20:11:30.965523Z
       
       5 likes, 0 repeats
       
       @dj @cvnt @pwm @transgrammaractivist @Owl @NonPlayableClown Yeah I tried doing it once and it wasn't ideal. For one user in a pinch I could make it work I think.It did run pretty well from an Odroid M1 however. Idk I just like redundancy. I lived through this storm a while back that knocked power and internet off for almost a week. Sucked bro.Now I'm all about keeping my shit up and running. Like a doomsday prepper for nerds.
       
 (DIR) Post #AnLH14lTe7PB95AsCW by dj@parcero.bond
       2024-10-24T20:15:19.835086Z
       
       3 likes, 0 repeats
       
       @ins0mniak @cvnt @pwm @transgrammaractivist @Owl @NonPlayableClown If shit gets too thick my bugout spot will be in Don Pablo's old bunker.
       
 (DIR) Post #AnLH7qsleunG7JocsK by ins0mniak@majestic12.airforce
       2024-10-24T20:16:33.054048Z
       
       2 likes, 0 repeats
       
       @dj @cvnt @pwm @transgrammaractivist @Owl @NonPlayableClown That would be pimp man.You could throw an epic end of the world party in that joint.
       
 (DIR) Post #AnLHQAdovzpQbvYjIG by cvnt
       2024-10-24T20:19:53.271828Z
       
       3 likes, 0 repeats
       
       @phnt @NonPlayableClown @Owl @dj @ins0mniak @transgrammaractivist Breaking follows is basic userland, ask me how I know he doesn't test shit before pushing updates.
       
 (DIR) Post #AnLHiEPheE1JWTZGme by cvnt
       2024-10-24T20:23:09.120152Z
       
       3 likes, 0 repeats
       
       @pwm @NonPlayableClown @Owl @dj @ins0mniak @transgrammaractivist Yeah, Pleroma was requesting a lot before.  Watched it drop watching the wg0 interface live.
       
 (DIR) Post #AnLHuLvDYeSaHh5Xfc by cvnt
       2024-10-24T20:25:20.551297Z
       
       2 likes, 1 repeats
       
       @dj @ins0mniak @NonPlayableClown @Owl @pwm @transgrammaractivist  https://absolutelyproprietary.org/ is still on a "le potato" pi3b.
       
 (DIR) Post #AnLI1RWH8zwtfknpse by cvnt
       2024-10-24T20:26:37.440364Z
       
       2 likes, 0 repeats
       
       @ins0mniak @dj @NonPlayableClown @Owl @pwm @transgrammaractivist My starlink dish is ups; ask me how I don't trust the local grib, lmao.
       
 (DIR) Post #AnLI2tvuzLwA5LUaLQ by cvnt
       2024-10-24T20:26:53.249653Z
       
       1 likes, 0 repeats
       
       @ins0mniak @NonPlayableClown @Owl @dj @pwm @transgrammaractivist grid**
       
 (DIR) Post #AnLI5noMCqqFy1L5Y8 by pwm@lab.nyanide.com
       2024-10-24T20:27:24.110657Z
       
       2 likes, 1 repeats
       
       @cvnt @ins0mniak @transgrammaractivist @Owl @dj @NonPlayableClown another trick that you can pull, is to cache the json returned for remote federation requests. I realize I forgot to mention that while we were doing it.I think the biggest win honestly was just caching the front end, that thing is fucking huge
       
 (DIR) Post #AnLI6Y8TyMGxdl6oIy by ins0mniak@majestic12.airforce
       2024-10-24T20:27:31.361910Z
       
       1 likes, 0 repeats
       
       @cvnt @pwm @transgrammaractivist @Owl @dj @NonPlayableClown All mine routed through glow central.
       
 (DIR) Post #AnLICBCSA1ooF8ePRo by phnt@fluffytail.org
       2024-10-24T20:28:32.533843Z
       
       3 likes, 1 repeats
       
       @cvnt @ins0mniak @transgrammaractivist @Owl @dj @NonPlayableClown Yeah that really sucked. I don't even know who wrote that broken code 4 years ago. At least he fixed it somewhat quickly.There was a similar bug recently where remote blocks were rejected. Sort of an unintended anti-blockbot measure. https://git.pleroma.social/pleroma/pleroma/-/issues/3331
       
 (DIR) Post #AnLIN8bQ9qExNCYR8K by dj@parcero.bond
       2024-10-24T20:30:31.549233Z
       
       5 likes, 0 repeats
       
       @phnt @cvnt @ins0mniak @transgrammaractivist @Owl @NonPlayableClown Man that explains why I haven't been getting any blocks lately!It's not for lack of trying.
       
 (DIR) Post #AnLIcgnTJ2fhljbfkm by ins0mniak@majestic12.airforce
       2024-10-24T20:33:19.683966Z
       
       3 likes, 0 repeats
       
       @dj @phnt @cvnt @transgrammaractivist @Owl @NonPlayableClown I haven't gotten reported in a while, I gotta step it up.
       
 (DIR) Post #AnLIduUzqd3EYRXzVY by phnt@fluffytail.org
       2024-10-24T20:33:33.497070Z
       
       2 likes, 1 repeats
       
       @dj @cvnt @ins0mniak @transgrammaractivist @Owl @NonPlayableClown That bug existed only on the develop branch for a month or so. No release has it.
       
 (DIR) Post #AnLIoxqdjiNY7vwRqS by mint@ryona.agency
       2024-10-24T20:35:32.814400Z
       
       6 likes, 1 repeats
       
       @dj @cvnt @pwm @ins0mniak @transgrammaractivist @Owl @NonPlayableClown Having proper I/O like an actual fucking SATA port helps. Certainly a better use of PCB space than Pi's two 4K HDMI ports which it couldn't drive anyway.
       
 (DIR) Post #AnLIx9gxaKTrB1JtHk by ins0mniak@majestic12.airforce
       2024-10-24T20:37:01.696576Z
       
       2 likes, 0 repeats
       
       @mint @cvnt @pwm @transgrammaractivist @Owl @dj @NonPlayableClown I love pis as a general rule but I have zero need or desire to 4k anything with the thing. Run them headless most of the time.
       
 (DIR) Post #AnLJHSuHr0DUYwEoLo by cvnt
       2024-10-24T20:40:43.481253Z
       
       2 likes, 0 repeats
       
       @mint @dj @NonPlayableClown @Owl @ins0mniak @pwm @transgrammaractivist "it has nvme, under the usb controller...":pepereeeee:
       
 (DIR) Post #AnLJLqj1Ewoxal3eYC by cvnt
       2024-10-24T20:41:31.014019Z
       
       3 likes, 0 repeats
       
       @ins0mniak @mint @NonPlayableClown @Owl @dj @pwm @transgrammaractivist If they were not $35, I'd have zero.
       
 (DIR) Post #AnLJMyeVFinkT1U2EK by ins0mniak@majestic12.airforce
       2024-10-24T20:41:41.585398Z
       
       2 likes, 0 repeats
       
       @cvnt @pwm @transgrammaractivist @Owl @dj @NonPlayableClown @mint Oh thats a fun game.Getting the right SSD to work with it at all
       
 (DIR) Post #AnLJQmWsGevU1hjH6W by mint@ryona.agency
       2024-10-24T20:42:23.450949Z
       
       5 likes, 1 repeats
       
       @cvnt @pwm @ins0mniak @transgrammaractivist @Owl @dj @NonPlayableClown Heard the Pi 5 now has a proper PCIe interface but to use it you'd have to get a breakout board that costs almost the same as Pi itself, and at that post just get an Optiplex.
       
 (DIR) Post #AnLJSYS3ZyQswcJyro by ins0mniak@majestic12.airforce
       2024-10-24T20:42:42.390813Z
       
       2 likes, 0 repeats
       
       @cvnt @pwm @transgrammaractivist @Owl @dj @NonPlayableClown @mint My main sbc right now is a C4. Fucking love the thing.
       
 (DIR) Post #AnLJahvcEF8geX2DYG by cvnt
       2024-10-24T20:44:12.119753Z
       
       3 likes, 0 repeats
       
       @mint @NonPlayableClown @Owl @dj @ins0mniak @pwm @transgrammaractivist Optiplex 990 ex-PoS or CoW, like $200 refurb, and you don't need gpu blob to boot it.  Amazing.
       
 (DIR) Post #AnLJdT1C7WCtHLxaUK by ins0mniak@majestic12.airforce
       2024-10-24T20:44:40.507101Z
       
       0 likes, 0 repeats
       
       @mint @cvnt @pwm @transgrammaractivist @Owl @dj @NonPlayableClown I managed to brick one by connecting a PCI adapter. Prob mostly my fault for not paying attention but still
       
 (DIR) Post #AnLJuwoEbxvyb4EXmi by mint@ryona.agency
       2024-10-24T20:47:50.167004Z
       
       7 likes, 2 repeats
       
       @ins0mniak @cvnt @pwm @transgrammaractivist @Owl @dj @NonPlayableClown I'm still pimping that old Thinkcentre with an AMD APU. Recently upgraded it with two NVMes in striped zfs, and during that had to circumcise the x1 slot with a Makita drill so that I could fit the secondary NIC in there as I had to relocate it from the x16 slot now used by the drives. Broke one of the ground pins, but everything works still.
       
 (DIR) Post #AnLKOMAxNWIvfRsvnU by dcc@annihilation.social
       2024-10-24T20:53:10.063154Z
       
       4 likes, 1 repeats
       
       @mint @cvnt @pwm @ins0mniak @transgrammaractivist @Owl @dj @NonPlayableClown I'm back to my old big case so i can use my best gpu for my kvm, don't let indians tell you you cant game with kvm's
       
 (DIR) Post #AnLKSqOMycDSXYIZIe by ins0mniak@majestic12.airforce
       2024-10-24T20:53:55.862266Z
       
       2 likes, 0 repeats
       
       @mint @cvnt @pwm @transgrammaractivist @Owl @dj @NonPlayableClown Nice man, systems like that are fun. My desktop atm is just an odroid h3+. I could go tomorrow and get spankin new system but I see no point, it's got a 4tb drive and 64g ram.Legit does anything I need.
       
 (DIR) Post #AnLKWpvCfSF8EuYmGm by ins0mniak@majestic12.airforce
       2024-10-24T20:54:41.083950Z
       
       3 likes, 0 repeats
       
       @dcc @cvnt @pwm @transgrammaractivist @Owl @dj @NonPlayableClown @mint as long as I can play dead or alive 5 I'm happy.
       
 (DIR) Post #AnLKcDXgH3sswg7hya by p
       2024-10-24T20:55:40.792242Z
       
       21 likes, 8 repeats
       
       @mint @ins0mniak @NonPlayableClown @Owl @cvnt @dj @pwm @transgrammaractivistpcie_mount.jpg
       
 (DIR) Post #AnLKp0Ve2cRUI0GmOm by ins0mniak@majestic12.airforce
       2024-10-24T20:57:57.810120Z
       
       1 likes, 0 repeats
       
       @p @cvnt @pwm @transgrammaractivist @Owl @dj @NonPlayableClown @mint
       
 (DIR) Post #AnLKqkA5nBNGAR15nc by phnt@fluffytail.org
       2024-10-24T20:58:17.283570Z
       
       1 likes, 1 repeats
       
       @ins0mniak @cvnt @pwm @transgrammaractivist @Owl @dj @NonPlayableClown @mint I wish there was more OS support for the pis. Debian is basically all you can get that works ootb and most of the distributions don't packge the configuration utils for the pis anyway so good luck configuring the eeprom. One would think that the most prevalent sbc would have great OS support, but no.
       
 (DIR) Post #AnLL6XZSNAMrkbPfkm by ins0mniak@majestic12.airforce
       2024-10-24T21:01:06.314791Z
       
       3 likes, 0 repeats
       
       @phnt @cvnt @pwm @transgrammaractivist @Owl @dj @NonPlayableClown @mint Yeah tho it is a bit better. I've been using void on the pi's and armbian on my C4 boards.one that does have good support at least from what i've seen so far is diet pi.However you have very few options if systemd is a dealbreaker. Slack has an image for it but I havent used it in months for the reasons you just mentioned.
       
 (DIR) Post #AnLLKU4WB8aUx8ag7c by cvnt
       2024-10-24T21:03:40.814003Z
       
       2 likes, 0 repeats
       
       @mint @ins0mniak @NonPlayableClown @Owl @dj @pwm @transgrammaractivist > circumcise the x1 slot with a Makita drill I lost it right there.  Fucking king shit, lmao.
       
 (DIR) Post #AnLLP51siIowjUY652 by NonPlayableClown@postnstuffds.lol
       2024-10-24T21:04:29.296854Z
       
       3 likes, 0 repeats
       
       Now that's how you fork a process.
       
 (DIR) Post #AnLLQqDgkK1zNfuZ7I by ins0mniak@majestic12.airforce
       2024-10-24T21:04:48.245860Z
       
       3 likes, 0 repeats
       
       @cvnt @pwm @transgrammaractivist @Owl @dj @NonPlayableClown @mint I love a good frankenbox tho.reminds me of my youth
       
 (DIR) Post #AnLLY2fmqNVq1yUIpk by cvnt
       2024-10-24T21:06:07.830304Z
       
       2 likes, 0 repeats
       
       @phnt @ins0mniak @NonPlayableClown @Owl @dj @mint @pwm @transgrammaractivist Arch ALARM was good ime.
       
 (DIR) Post #AnLLYEXMjVuGpKdkNE by dj@parcero.bond
       2024-10-24T21:06:08.860133Z
       
       4 likes, 0 repeats
       
       @NonPlayableClown @cvnt @p @pwm @ins0mniak @transgrammaractivist @Owl @mint Forking A
       
 (DIR) Post #AnLMfllxfA6Pszcm8m by phnt@fluffytail.org
       2024-10-24T21:18:42.854283Z
       
       3 likes, 1 repeats
       
       @ins0mniak @cvnt @pwm @transgrammaractivist @Owl @dj @NonPlayableClown @mintI was setting up Pi-Hole for a family member this week and since I prefer RH stuff over Debian and needed something that wouldn't break on a random autoupdate, I gave Fedora server a try. I don't recommend it. The default image has a bunch of remote access bloat almost nobody will use. They also brag on the wiki how RPis are fully supported by a special group; A group that never bothered to package the config utils. CentOS used to have RPi images, RH dropped that with the bullshit Stream rebrand. Void might be something I might try when I find a use case for the Pi I have somewhere.
       
 (DIR) Post #AnLMuTsuS5YSkdtCaW by phnt@fluffytail.org
       2024-10-24T21:21:22.588557Z
       
       2 likes, 1 repeats
       
       @Owl @ins0mniak @transgrammaractivist @dj @NonPlayableClown I muted poa.st on Hitler's birthday because my TWKN was spammed by that and completely forgot about it for 3 weeks. A month later I finally realized that something was missing.
       
 (DIR) Post #AnLMvqjyxXv3vZMlyS by cvnt
       2024-10-24T21:21:38.295335Z
       
       2 likes, 0 repeats
       
       @phnt @ins0mniak @NonPlayableClown @Owl @dj @mint @pwm @transgrammaractivist Oh, Richard Miller's Plan 9 image for pis boots nicely too.
       
 (DIR) Post #AnLMzSjMAcW2cUnR68 by ins0mniak@majestic12.airforce
       2024-10-24T21:22:14.589864Z
       
       1 likes, 0 repeats
       
       @phnt @cvnt @pwm @transgrammaractivist @Owl @dj @NonPlayableClown @mint Oh yeah I bet. I've never liked Fedora. I've tried it here and there over the years, they used to include a disk in Linux magazines and it was always Fedora. Void is nice, its smol and pretty chill to work with. It gives you some nice BSD vibes on a linux distro.
       
 (DIR) Post #AnLN6SkmU1WwianhZY by ins0mniak@majestic12.airforce
       2024-10-24T21:23:31.794696Z
       
       3 likes, 0 repeats
       
       @cvnt @phnt @pwm @transgrammaractivist @Owl @dj @NonPlayableClown @mint Plan9 rocks on pi.Works on a 4k tv too. I was amazed tbh when I fired it up on my 55" man lolThats some comf ass shit right there. usb keyboard, sitting on your couch.
       
 (DIR) Post #AnLNFEZwYQ63MVujCq by cvnt
       2024-10-24T21:25:08.491502Z
       
       1 likes, 0 repeats
       
       @ins0mniak @NonPlayableClown @Owl @dj @mint @phnt @pwm @transgrammaractivist It really opens up once you grok 'this client isn't the computer. '
       
 (DIR) Post #AnLNGHdkeolT99CBfM by phnt@fluffytail.org
       2024-10-24T21:25:19.301634Z
       
       2 likes, 1 repeats
       
       @cvnt @pwm @ins0mniak @transgrammaractivist @Owl @dj @NonPlayableClown @mint That might be even better. At least that will give me a reason to finally tinker with Plan 9.
       
 (DIR) Post #AnLNKb3AQwk2VI8kqm by ins0mniak@majestic12.airforce
       2024-10-24T21:26:03.496164Z
       
       2 likes, 0 repeats
       
       @phnt @transgrammaractivist @Owl @dj @NonPlayableClown The worst was after the last gab meltdown.They got this huge influx of new users that would just bombard every other post with their wingnat shit.
       
 (DIR) Post #AnLNM4kDW4FQt9yv5M by cvnt
       2024-10-24T21:26:22.677394Z
       
       2 likes, 0 repeats
       
       @phnt @NonPlayableClown @Owl @dj @ins0mniak @mint @pwm @transgrammaractivist You won't come back.  It's a wonderful OS.
       
 (DIR) Post #AnLNPxDxQ0doitk3lI by cvnt
       2024-10-24T21:27:04.736579Z
       
       2 likes, 0 repeats
       
       @ins0mniak @phnt @NonPlayableClown @Owl @dj @transgrammaractivist They're not even good at racism.
       
 (DIR) Post #AnLNVAyDjoZInus4DQ by ins0mniak@majestic12.airforce
       2024-10-24T21:27:59.710381Z
       
       1 likes, 0 repeats
       
       @cvnt @phnt @pwm @transgrammaractivist @Owl @dj @NonPlayableClown @mint Even if you dont use it on the regular you can learn a shit ton just by messing around with it.
       
 (DIR) Post #AnLNYXBBcaWuYMXMIq by ins0mniak@majestic12.airforce
       2024-10-24T21:28:36.287291Z
       
       2 likes, 1 repeats
       
       @cvnt @phnt @transgrammaractivist @Owl @dj @NonPlayableClown If you're gonna do something do it right.
       
 (DIR) Post #AnLNcQUKRQ2WxWLY6C by phnt@fluffytail.org
       2024-10-24T21:29:18.986466Z
       
       2 likes, 1 repeats
       
       @ins0mniak @transgrammaractivist @Owl @dj @NonPlayableClown I'm thankfully sort of separated from Poast. The few accounts I follow are chill and only a few poasties follow me. Though every time I log in to my Poast alt, the local timeline is spammed by nonsense.
       
 (DIR) Post #AnLNlTLtA9coRniEKW by phnt@fluffytail.org
       2024-10-24T21:30:57.276552Z
       
       4 likes, 2 repeats
       
       @cvnt @ins0mniak @transgrammaractivist @Owl @dj @NonPlayableClown What do you expect from people that sit at their computer all day and post about jews while also spamming  nigger every now and then because it's supposed to be funny.
       
 (DIR) Post #AnLNpwWQeRe24hm3iS by ins0mniak@majestic12.airforce
       2024-10-24T21:31:43.866902Z
       
       1 likes, 0 repeats
       
       @phnt @transgrammaractivist @Owl @dj @NonPlayableClown Yeah its a lot of that twitter style back and forth.I just want to chill and not deal with people screeching at each other over dumb shit.
       
 (DIR) Post #AnLNuUGD9eEPs4M5aa by NonPlayableClown@postnstuffds.lol
       2024-10-24T21:32:35.121763Z
       
       1 likes, 0 repeats
       
       I like tech discussion and laughing at retards.
       
 (DIR) Post #AnLNxFtT1iEoBL2M1A by cvnt
       2024-10-24T21:33:05.837793Z
       
       2 likes, 0 repeats
       
       @phnt @NonPlayableClown @Owl @dj @ins0mniak @transgrammaractivist The Rothschilds didn't have to try very hard with some these losers.
       
 (DIR) Post #AnLNzz2s7nB4nRjkdk by ins0mniak@majestic12.airforce
       2024-10-24T21:33:33.876667Z
       
       3 likes, 1 repeats
       
       @NonPlayableClown @phnt @transgrammaractivist @Owl @dj Exactly man. None of those clowns is getting an ethno state, might as well calm down lol
       
 (DIR) Post #AnLO6WszDeVZUMEabA by ins0mniak@majestic12.airforce
       2024-10-24T21:34:44.334723Z
       
       0 likes, 0 repeats
       
       @cvnt @phnt @transgrammaractivist @Owl @dj @NonPlayableClown If they can't assimilate they have to go back.
       
 (DIR) Post #AnLOC66NiLDS9o9esK by NonPlayableClown@postnstuffds.lol
       2024-10-24T21:35:45.681619Z
       
       2 likes, 0 repeats
       
       I mean when you hate all races that isn't white but go gaga on Asian chicks, kinda makes you look retard. 😆
       
 (DIR) Post #AnLOQ3RCPsptwrXzuq by cvnt
       2024-10-24T21:38:18.117278Z
       
       2 likes, 0 repeats
       
       @ins0mniak @NonPlayableClown @Owl @dj @phnt @transgrammaractivist Bruh, I repeatedly said we need to Saigon taxi the worthwhile out.  They don't want to move, that's new and scary.  It's why S2 and Styx both have Gab accounts and are absent here.I was too forgiving is my point.  Some garbage should stay in the bin where you found it.
       
 (DIR) Post #AnLOUvlWMwXDbLNUWG by ins0mniak@majestic12.airforce
       2024-10-24T21:38:43.621714Z
       
       3 likes, 1 repeats
       
       @NonPlayableClown @phnt @transgrammaractivist @Owl @dj Yeah not deep thinkers.The nazi larp was kinda funny around 2014 just because it made liberal bed-wetters so enraged, but I dont think they understand that it was a larp. Or at least not a viable thing.I used to see them literal plotting out these uprisings. "dude...so we get all the whites redpilled and then iowa is gonna secede and become the land of Majestica.....then collapse the us government"
       
 (DIR) Post #AnLOcTRrXEt45tmOqu by ins0mniak@majestic12.airforce
       2024-10-24T21:40:30.406505Z
       
       2 likes, 0 repeats
       
       @cvnt @phnt @transgrammaractivist @Owl @dj @NonPlayableClown Yeah I feel you on that.
       
 (DIR) Post #AnLP01I5sMZziORDKC by p
       2024-10-24T21:44:48.115954Z
       
       5 likes, 0 repeats
       
       @cvnt @phnt @NonPlayableClown @Owl @dj @ins0mniak @transgrammaractivist > ask me how I know he doesn't test shit before pushing updates. "there isn't a Pleroma instance that exists which cannot handle the load on available hardware" still irks me because it means that the person that wrote it was ignoring the performance issues that had been reported in the bug tracker as well as in messages on fedi.  (I don't think most people could have convinced Pleroma to stay up when subjected to FSE's load.)  I guess nothing has changed since FSE's last merge with upstream.
       
 (DIR) Post #AnLPBK2OW3Xl2hU4g4 by cvnt
       2024-10-24T21:46:50.674934Z
       
       2 likes, 0 repeats
       
       @p @NonPlayableClown @Owl @dj @ins0mniak @phnt @transgrammaractivist Imagine thinking an rpi4 was underpowered for your website, and the issue isn't your fucking website.
       
 (DIR) Post #AnLPUis2Pb3pYwtI3M by mint@ryona.agency
       2024-10-24T21:50:19.532737Z
       
       3 likes, 1 repeats
       
       @p @phnt @cvnt @ins0mniak @transgrammaractivist @Owl @dj @NonPlayableClown In his defense, he's been a big help with identifying the root cause of performance issue (a bug in Oban that made it crash its queue processing tasks) that until that point only affected my instances and one other guy that made a bug report.
       
 (DIR) Post #AnLR9Hne46xBQmk4Ya by p
       2024-10-24T22:08:53.196043Z
       
       4 likes, 0 repeats
       
       @cvnt @NonPlayableClown @Owl @dj @ins0mniak @phnt > Imagine thinking an rpi4 was underpowered for your website, and the issue isn't your fucking website. In this case, he was talking about maximum-size Frantech instances at the time:  https://freespeechextremist.com/objects/508dc765-46de-4e28-adde-a8a6fd1d8ee0 .  Granted, it's gotten better sometimes (worse sometimes) but breaking follows is a thing that shouldn't happen at any point on a release version.The bae.st media import is actually running on a CM-4 and the actual bottleneck is the disk and it's chugging but I just sort of took it as a given that this is something I have to fix.  There was an instance running on a Switch for a while, and I'm sure you're aware of mint's antics.  lain cares about that kind of platform, so it's nice that lain is around.
       
 (DIR) Post #AnLRL6aBb0iu7J5AqO by cvnt
       2024-10-24T22:11:01.361496Z
       
       2 likes, 0 repeats
       
       @p @NonPlayableClown @Owl @dj @ins0mniak @phnt I mean, I was specific about the release for that reason.  I am trying my best to not just be discarding.
       
 (DIR) Post #AnLRjdq3bQAcCzCpFY by p
       2024-10-24T22:15:27.418389Z
       
       3 likes, 0 repeats
       
       @mint @NonPlayableClown @Owl @cvnt @dj @ins0mniak @phnt Yeah?  That's good to hear, maybe he cares about craftsmanship.
       
 (DIR) Post #AnLSAcJzLraNK04L2G by i@declin.eu
       2024-10-24T22:20:19.414538Z
       
       5 likes, 0 repeats
       
       @p @phnt @cvnt @ins0mniak @Owl @dj @NonPlayableClown it would also be nice if lain was around to actually make a 2.7.1 release like they said they should half a month ago
       
 (DIR) Post #AnLT1hTKvpWAe0km0m by phnt@fluffytail.org
       2024-10-24T22:29:54.851535Z
       
       4 likes, 1 repeats
       
       @p @cvnt @ins0mniak @transgrammaractivist @Owl @dj @NonPlayableClown The main problem is that lain likely never expected to Pleroma grow this large to instances with hundreds of users. Something which would have influenced some of the design decisions. And that the developers don't run those active big instances. I don't remember what version FSE runs on (2.2.X I think), but I can say that at least things didn't get worse with releases from 2.5.0 to current develop (apart from maybe increased IO usage I have yet to investigate in 2.7.0). I heard that some of the expensive DB queries were improved recently. Feld also committed some fixes found with static analysis and that's about it. You can still run Pleroma on cheap hardware, it just requires a lot of know-how in optimizing Postgres and Linux. FluffyTail runs on BuyVMs $7 tier with the DB stored on a slab and it is yet to encounter a major performance issue after 1.5 years. Granted I'm the only user, so there isn't a lot of stress on the system.
       
 (DIR) Post #AnLT8EWWxZiUtCMXia by phnt@fluffytail.org
       2024-10-24T22:31:05.905932Z
       
       4 likes, 1 repeats
       
       @i @cvnt @p @ins0mniak @Owl @dj @NonPlayableClown lain said he wants to make a new release recently. This or last week I think.
       
 (DIR) Post #AnLTioj1qBJtajeY4m by i@declin.eu
       2024-10-24T22:37:42.151325Z
       
       2 likes, 0 repeats
       
       @phnt @cvnt @p @ins0mniak @Owl @dj @NonPlayableClown yes, but they keep talking more, releasing none
       
 (DIR) Post #AnLTjtgAuJqbFHpiQi by p
       2024-10-24T22:37:54.794327Z
       
       1 likes, 0 repeats
       
       @cvnt @NonPlayableClown @Owl @dj @ins0mniak @phnt Yeah, holy shit.
       
 (DIR) Post #AnLUV1u29N8OMQn2hs by FUCKINGWHOCARESDUDE@5dollah.click
       2024-10-24T22:46:25.099636Z
       
       0 likes, 0 repeats
       
       @phnt @i @cvnt @p @ins0mniak @Owl @dj @NonPlayableClown Is Lain the only one who can push a release?
       
 (DIR) Post #AnLUdE2QulhKJacvKK by cvnt
       2024-10-24T22:47:54.748463Z
       
       2 likes, 0 repeats
       
       @FUCKINGWHOCARESDUDE @phnt @NonPlayableClown @Owl @dj @i @ins0mniak @p Give Gleason back his access!
       
 (DIR) Post #AnLUl7fgTEeMsvkftg by p
       2024-10-24T22:49:20.386918Z
       
       2 likes, 0 repeats
       
       @i @NonPlayableClown @Owl @cvnt @dj @ins0mniak @phnt Yeah; after the project stopped getting funding, most of the devs got jobs, so I get time and energy.  It can happen.
       
 (DIR) Post #AnLUobOoOpUtx9WFaS by phnt@fluffytail.org
       2024-10-24T22:49:57.631180Z
       
       1 likes, 1 repeats
       
       @FUCKINGWHOCARESDUDE @i @cvnt @p @ins0mniak @Owl @dj @NonPlayableClown I think lanodan did some of the security releases, but lain still coordinates the normal releases I think. At least it seems like that.
       
 (DIR) Post #AnLV1yEsnD8GYQFWhk by FUCKINGWHOCARESDUDE@5dollah.click
       2024-10-24T22:50:38.604938Z
       
       3 likes, 1 repeats
       
       @phnt @i @cvnt @p @ins0mniak @Owl @dj @NonPlayableClown I just want to be able to follow people
       
 (DIR) Post #AnLVIuDmz29J15oTmC by i@declin.eu
       2024-10-24T22:55:25.727369Z
       
       1 likes, 0 repeats
       
       @FUCKINGWHOCARESDUDE @phnt @cvnt @p @ins0mniak @Owl @dj @NonPlayableClown too bad, switch to develop
       
 (DIR) Post #AnLWP9qjtII9B7ZpOi by i@declin.eu
       2024-10-24T23:07:43.615178Z
       
       2 likes, 0 repeats
       
       @FUCKINGWHOCARESDUDE @phnt @cvnt @p @ins0mniak @Owl @dj @NonPlayableClown from OTP, or at least your own 'mix release' build
       
 (DIR) Post #AnLWjLg3cpfDeYCyZM by abner@shitpost.cloud
       2024-10-24T23:11:25.192777Z
       
       1 likes, 0 repeats
       
       I was thinking about that payment earlier today out of the blue. Really weird shit but hey the crash will happen when it happens I guess
       
 (DIR) Post #AnLXWjOuD9KZQ3jVwm by chog9@cum.salon
       2024-10-24T23:20:18.522830Z
       
       2 likes, 1 repeats
       
       @Lyx @dj @NonPlayableClown @binkle @ins0mniak @korgster you fool, if he had kids and was happy then we couldn't say "nothing ever happens" anymore
       
 (DIR) Post #AnLY137XSQVBGc4Bt2 by FUCKINGWHOCARESDUDE@5dollah.click
       2024-10-24T22:59:50.820235Z
       
       1 likes, 0 repeats
       
       @i @phnt @cvnt @p @ins0mniak @Owl @dj @NonPlayableClown From OTP?
       
 (DIR) Post #AnLYeInV6aiJBJPYZs by FUCKINGWHOCARESDUDE@5dollah.click
       2024-10-24T23:32:53.099665Z
       
       2 likes, 0 repeats
       
       @i @phnt @cvnt @p @ins0mniak @Owl @dj @NonPlayableClown MAYBE IT SHOULD JUST WORK PROPERLY
       
 (DIR) Post #AnLbvTKJVjHecfdcUC by Griffith@5dollah.click
       2024-10-25T00:09:37.859207Z
       
       0 likes, 0 repeats
       
       @FUCKINGWHOCARESDUDE @i @NonPlayableClown @Owl @cvnt @dj @ins0mniak @p @phnt tell him
       
 (DIR) Post #AnLd604shJyh340IGu by p
       2024-10-25T00:22:45.166969Z
       
       5 likes, 0 repeats
       
       @phnt @NonPlayableClown @Owl @cvnt @dj @ins0mniak @transgrammaractivist > The main problem is that lain likely never expected to Pleroma grow this large to instances with hundreds of users.Well, sure, I made that remark in the linked-to thing:>  FSE is an edge case, but will not be forever. I think it is a good problem to have that scaling is becoming an issue, you don't wanna build super scalability into something that nobody ends up using, but it is the case that there are scaling issues that presently affect pleroma instances.And that's November 2020.> And that the developers don't run those active big instances.I offered perf datasets many times.  Server logs, Postgres logs.  At the time that I wrote that post, there was a Prometheus endpoint that was open to the public on every single instance, so an interested party could collect performance data on every live Pleroma instance; it closed in the release immediately after that post.I get it doesn't touch them and I get that the idea wasn't to run instances with this many users, but it's not number of users that introduce the scaling issues:  it's number of activities.> I don't remember what version FSE runs on (2.2.X I think),It's modified and has fixes backported, but it is 2.2.2:  http://demo.fedilist.com/instance/fsebugoutzone.org .  (Still zero downtime!  Everyone can suck my dick, I'm a goddamn genius hackerman.)> You can still run Pleroma on cheap hardware, it just requires a lot of know-how in optimizing Postgres and Linux.Well, a single-user one, following a few hundred people, I don't think you need much effort.  At that level, concurrent users *do* start to matter.> FluffyTail runs on BuyVMs $7 tier with the DB stored on a slab and it is yet to encounter a major performance issue after 1.5 years.Oh, yeah, FSE started like that and I think we got to about a dozen people before I had to upgrade to whatever :francisco:'s next tier was.
       
 (DIR) Post #AnLdCORb17RaMBg1ei by ins0mniak@majestic12.airforce
       2024-10-25T00:23:52.924166Z
       
       1 likes, 0 repeats
       
       @p @phnt @cvnt @transgrammaractivist @Owl @dj @NonPlayableClown
       
 (DIR) Post #AnLeB5UC7KQnDwpjdo by p
       2024-10-25T00:34:52.646475Z
       
       2 likes, 0 repeats
       
       @i @phnt @NonPlayableClown @Owl @cvnt @dj @ins0mniak If the problem with 2.7.0 was that basic shit was broken, do you really want them to rush 2.7.1?
       
 (DIR) Post #AnLgaZJKZAcms71vQe by p
       2024-10-25T01:01:53.551868Z
       
       1 likes, 0 repeats
       
       @RedTechEngineer @NonPlayableClown @Owl @cvnt @dj @i @ins0mniak @phnt Ha, you remember 0.9.9.9.9.9.9.999?
       
 (DIR) Post #AnLiDqlRhyzCFbTXUm by i@declin.eu
       2024-10-25T01:20:10.678197Z
       
       0 likes, 0 repeats
       
       @p @phnt @cvnt @ins0mniak @Owl @dj @NonPlayableClown making a release in the middle of rewriting the work queue was the stupid bit, not making a release a month after it's fixed, and weeks after people complained about it, isn't any betterthey could cherry pick that single commit change for all into 2.7.2 (2.7.1 was a pleroma-fe emoji picker bug fix release apparently) for all i carepleroma's codebase needs a hard forking, but with federation details relying on implementation edge cases not accidentally changing, it's hard to muster up the will power to care enough to go through with it
       
 (DIR) Post #AnLiy8MAdI4W8JisYS by cvnt
       2024-10-25T01:28:33.692791Z
       
       1 likes, 0 repeats
       
       @feld @NonPlayableClown @Owl @ins0mniak @phnt @transgrammaractivist Even if it's not your fault I am going to shit on you.  Call the FBI, this is a threat.
       
 (DIR) Post #AnLjEZtO1V76AQ6IIi by p
       2024-10-25T01:31:32.002306Z
       
       2 likes, 0 repeats
       
       @i @NonPlayableClown @Owl @cvnt @dj @ins0mniak @phnt I don't think *another* fork is a good solution.  A release engineer maybe, but it's their call.
       
 (DIR) Post #AnLjMOG99qu6PATIyO by cvnt
       2024-10-25T01:32:56.715025Z
       
       2 likes, 0 repeats
       
       @p @i @NonPlayableClown @Owl @dj @ins0mniak @phnt. akkomabox on azure, somehow Pasture is stuck selling it.
       
 (DIR) Post #AnLjjc267BHxmayPzs by p
       2024-10-25T01:37:08.514382Z
       
       3 likes, 0 repeats
       
       @cvnt @NonPlayableClown @Owl @dj @i @ins0mniak @phnt We're all screwed.seller_response.jpeg
       
 (DIR) Post #AnLjrAd9sb0l73ucjo by p
       2024-10-25T01:38:30.485965Z
       
       7 likes, 2 repeats
       
       @cvnt @NonPlayableClown @Owl @dj @i @ins0mniak @phnt Maybe not, I don't know.  Falling asleep in my chair.saypizzatodrugs.png
       
 (DIR) Post #AnLk75QWziMvbiayaO by ins0mniak@majestic12.airforce
       2024-10-25T01:41:21.489721Z
       
       5 likes, 0 repeats
       
       @feld @phnt @cvnt @p @transgrammaractivist @Owl @NonPlayableClown
       
 (DIR) Post #AnLkQMKUNKaFX1xWZk by dj@parcero.bond
       2024-10-25T01:44:50.977440Z
       
       2 likes, 0 repeats
       
       @p @i @phnt @cvnt @ins0mniak @Owl @NonPlayableClown +1 for another fork reference
       
 (DIR) Post #AnM6j6aJKuVPC4hgXo by phnt@fluffytail.org
       2024-10-25T05:54:44.646172Z
       
       3 likes, 1 repeats
       
       @dj @i @cvnt @p @ins0mniak @Owl @NonPlayableClown Forking will never fix anything. You will create the Misskey situation where a bunch of people are unhappy with upstream and created a bunch of incompatible forks that die on a quarterly basis.
       
 (DIR) Post #AnMss8ak2VOTpAHHeK by p
       2024-10-25T14:54:14.352338Z
       
       3 likes, 0 repeats
       
       @feld @NonPlayableClown @Owl @cvnt @ins0mniak @phnt @transgrammaractivist > Nobody proved there was an *Oban* bottleneck and still haven't.Well, this was a remark years back.  (It does still irk me.)  Everything I know about the current Oban bug is second-hand, I am running what might be the only live Pleroma instance with no Gleason commits (happy coincidence; I was actually dodging another extremely expensive migration and then kicked off the other project, which meant I don't want to have to hit a moving target if I can avoid it, so I stopped pulling); at present, I backport a security fix (or just blacklist an endpoint) once in a while.Unless you mean the following thing, but I haven't run 2.7.0.  I don't know what that bug is.> If I could reproduce reported issues it would be much easier to solve them but things generally just work for me.I mean, like I mentioned, the Prometheus endpoints were public at the time.  You could see my bottlenecks.  (I think that would be cool to reenable by default; they'd just need to stop having 1MB of data in them if people are gonna fetch them every 30s, because enough people doing that can saturate your pipe.)> A ton of work has been put into correctness (hundreds of Dialyzer fixes) and tracking down elusive bugs and looking for optimizations like reducing JSON encode/decode work when we don't need to, avoiding excess queries, etc.I'm not sure what the Dialyzer is (old codebase), but improvements are good to hear about.  That kind of thing gets you a 5%, 10% bump to a single endpoint, though.  The main bottleneck is the DB; some cleverness around refetching/expiration would get you some much larger performance gains, I think; using an entire URL for an index is costing a lot in disk I/O.  There's a lot of stuff to do, just not much of it is low-hanging, I think.> It's actually been going really great :shrug: :bigbosssalute: That is awesome to hear.
       
 (DIR) Post #AnMtFC3XKCVvEHjxQW by p
       2024-10-25T14:58:24.369486Z
       
       2 likes, 0 repeats
       
       @ins0mniak @feld @NonPlayableClown @Owl @cvnt @phnt @transgrammaractivist Bosoms.
       
 (DIR) Post #AnMu9RbShwZ7fHQmvI by p
       2024-10-25T15:08:34.329811Z
       
       1 likes, 0 repeats
       
       @dj @NonPlayableClown @Owl @cvnt @i @ins0mniak @phntspoons.jpg
       
 (DIR) Post #AnMvu57aDF4vVFG2Xg by feld@friedcheese.us
       2024-10-25T15:28:11.424681Z
       
       6 likes, 0 repeats
       
       @p > I mean, like I mentioned, the Prometheus endpoints were public at the time.Problem is that this data is useful for monitoring overall health of an instance but doesn't give enough granular information to track down a lot of issues. With the metrics/telemetry work I have in progress we'll be able to export more granular Pleroma-specific metrics that will help a lot.> The main bottleneck is the DBSo often it's just badly configured Postgres. If your server has 4 cores and 4 GB of RAM you can't go use pgtune and tell it you want to run Postgres with 4 cores and 4GB. There's nothing leftover for the BEAM. You want at least 500MB-1GB dedicated to BEAM, more if your server has a lot of local users so it can handle memory allocation spikes.And then what else is running on your OS? That needs resources too. There isn't a good way to predict the right values for everyone. 😭 Like I said, it's running *great* on my little shitty thin client PC with old slow Intel J5005 cores and 4GB RAM. But I have an SSD for the storage and almost nothing else runs on the OS (FreeBSD). I'm counting a total of 65 processes before Pleroma, Postgres, and Nginx are running. Most Linux servers have way more services running by default. That really sucks when trying to make things run well on lower specced hardware.You also have to remember that BEAM is greedy and will intentionally hold the CPU longer than it needs because it wants to produce soft-realtime performance results. This needs to be tuned down on lower resource servers because BEAM itself will be preventing Postgres from doing productive work. It's just punching itself in the face then. Set these vm.args on any server that isn't massively overpowered:+sbwt none+sbwtdcpu none+sbwtdio none> using an entire URL for an index is costing a lot in disk I/OFor the new Rich Media cache (link previews stored in the db so they're not constantly refetched) I hashed the URLs for the index for that same reason. Research showed a hash and the chosen index type were super optimal.Another thing I did was I noticed we were storing *way* too much data in Oban jobs. Like when you federated an activity we were taking the entire activity's JSON and storing it in the jobs. Imagine making a post with 100KB of content that needs to go to 1000 servers? Each delivery job in the table was HUGE. Now it's just the ID of the post and we do the JSON serialization at delivery time. Much better, lower resource usage overall, lower IO.Even better would be if we could serialize the JSON *once* for all deliveries but it's tricky because we gotta change the addressing for each delivery. Jason library has some features we might be able to leverage for this but it doesn't seem important to chase yet. Even easier might be to put placeholders in the JSON text, store it in memory, and then just use regex or cheaper string replacement to fill those fields at delivery time. Saves all that repeat JSON serialization work.Other things I've been doing:- making sure Oban jobs that have an error we should really treat as permanent are caught and don't allow the job to repeat. It's wasteful for us, rude to remote servers when we're fetching things- finding every possible blocker for rendering activities/timelines and making those things asynchronous. One of the most recent ones I found was with polls. They could stall rendering a page of the timeline if the poll wasn't refreshed in the last 5 mins or whatever. (and also... I'm pretty sure polls were still being refreshed AFTER the poll was closed 🤬)I want Pleroma to be the most polite Fedi server on the network. There are still some situations where it's far too chatty and sends requests to other servers that could be avoided, so I'm trying to plug them all. Each of these improvements lowers the resource usage on each server. Just gotta keep striving to make Pleroma do *less* work.I do have my own complaints about the whole Pleroma releases situation. I wish we were cutting releases like ... every couple weeks if not every month. But I don't make that call.
       
 (DIR) Post #AnMyD9K11FQDwPIDNw by p
       2024-10-25T15:54:03.702016Z
       
       3 likes, 0 repeats
       
       @phnt @dj @NonPlayableClown @Owl @cvnt @i @ins0mniak It was a joke about the M.2fork mount, which was a joke about mint's improvised solutions.
       
 (DIR) Post #AnN045uaWooyfPD2jA by dj@parcero.bond
       2024-10-25T16:14:48.538782Z
       
       4 likes, 0 repeats
       
       @p @i @phnt @cvnt @ins0mniak @Owl @NonPlayableClown Don't mess with the silverware
       
 (DIR) Post #AnN1MtJFhtoJ2QGy5w by phnt@fluffytail.org
       2024-10-25T16:29:25.291609Z
       
       1 likes, 1 repeats
       
       @p @i @cvnt @ins0mniak @Owl @dj @NonPlayableClown
       
 (DIR) Post #AnN4vHNd1GDjOrPOxE by cvnt
       2024-10-25T17:09:16.028955Z
       
       5 likes, 0 repeats
       
       @p @phnt @NonPlayableClown @Owl @dj @i @ins0mniak Listen, some days you just gotta take power tools to the mobo.
       
 (DIR) Post #AnNMkpGWUaBMU1FaAi by p
       2024-10-25T20:29:04.101167Z
       
       3 likes, 0 repeats
       
       @feld > export more granular Pleroma-specific metrics that will help a lot.If it's targeted, that's great, but a meg of stuff, something useful should have been in there.> So often it's just badly configured Postgres.Well, yeah, the defaults are bad, but you don't even get to the big performance issues if you're still doing that kind of thing.> If your server has 4 cores and 4 GB of RAM you can't go use pgtune and tell it you want to run Postgres with 4 cores and 4GB.I think there's a "mixed" dropdown but that's one of the reasons I split early on:  it's not just that, I/O bandwidth is a killer, and BEAM doesn't know how to leave the disk alone.  In terms of CPU/memory, Pleroma's pretty lightweight.  I'm addressing you from this ARM cluster and this instance is just a small one while the big one comes back, and it's fine:  BEAM is eating 2% of the RAM, 80% of one core, it's around 10r/s (bump from bae.st's closure, but still about a third of FSE), but I've also got all the CPU-heavy stuff killed (no filemagic, no imagemagick, no Twitter cards) and my own code is serving the /objects/.At any rate, I had Postgres sensibly configured, Moon did, sjw did.  graf has to delete everything older than three months (or something like that) and he has a ridiculous amount of hardware.  Reconfiguring Postgres does not help you with a 1kB foreign key, though.  Throwing more cores and more RAM at it doesn't make a 1kB key act like an 8-byte key, and you've still got to store it *somewhere*.> And then what else is running on your OS? That needs resources too. There isn't a good way to predict the right values for everyone. 😭Man, if we're gauging from your picture, I've been doing this a little longer than you, so I really don't need to hear basic sysadmin stuff.  Regardless of intent, it looks like condescension and fine, whatever, I'm an adult, but it wastes time to say things that, you know, you could reason that I know these things if I've been running Pleroma for six years.  I think most of the people in the thread are running machines dedicated to Pleroma, anyway.I'm currently trying to cope with sjw's 1TB DB and the "everything in a flat directory" problem ( https://git.pleroma.social/pleroma/pleroma/-/issues/1513 ) but multiplied across 3TB of waifus, right.  I mean, "Well, you're at the mercy of VFS" and that's a trivial observation, but "the directory listing is 187MB" is a real problem (even if it's not a pointer-chase, you're still reading 187MB from the disk and you're still copying 187MB of dirents into userspace and `ls` takes 45s), and that gets marked as a dup of a "nice to have" S3 bug, but this is the default Pleroma configuration.  It's stuff you can't write off, you know?  You hit real constraints.> Most Linux servers have way more services running by default. That really sucks when trying to make things run well on lower specced hardware.Well, sure, but I think anyone running it on a Pi is going to be configuring the Pi for a dedicated setup, I don't think they're running Gnome on it.  Sysadmin 101 doesn't help here.  That last box, flaky hardware aside, that was 32 cores, 384GB RAM, Postgres got its own dedicated NVMe SSD (currently the same disk has been repurposed for the apotheosis because the DB was already on it), heavily tuned kernel, it should have screamed (it did for most stuff), but hashtags never got fast enough that I could turn them back on.> You also have to remember that BEAM is greedy and will intentionally hold the CPU longer than it needs because it wants to produce soft-realtime performance results.Yeah, BEAM using CPU isn't the bottleneck, though.  Like I said in the post you're replying to, it's I/O.  It's already a problem if any of this is CPU-bound, anyway:  it's network software.> Set these vm.args on any server that isn't massively overpowered:> +sbwt none> +sbwtdcpu none> +sbwtdio noneThanks.  Those are probably useful.  I don't know, I'd have to dig into the BEAM docs because I don't know the implications of "sbwtdio" off the top of my head, but if you're expecting CPU usage to be too high, it's not that; CPU usage is fine.  FSE never used much CPU, fast_html ate a lot of CPU, Postgres hardly needed CPU.  So I can squeeze about as much out of this RK3588 as I could those 32 Xeon cores because it's just I/O bandwidth.> For the new Rich Media cache (link previews stored in the db so they're not constantly refetched) I hashed the URLs for the index for that same reason. Research showed a hash and the chosen index type were super optimal.That is cool, but if you could do that for fetching objects from the DB, you'd have a bigger bump.  You know, just something like activities_unique_apid_index, which is just `data->>'id'`, right?  Or activities_recipients_index.  These indexes get huge and it'd be faster to toss a little CPU at Postgres if it has to read fewer pages from the disk.  This is a big, slow one:CREATE INDEX activities_create_objects_index ON public.activities USING btree (COALESCE(((data -> 'object'::text) ->> 'id'::text), (data ->> 'object'::text)));Lots of joins use indexes like that.  And this is something you don't see in a regular benchmark, you only see if you've got a lot of concurrent random load, but sometimes the N+1 problem helps:  even on a single thread, sometimes fetching 100 IDs and then populating the objects one at a time is faster (seriously, try it, do a test on /api/v1/notifications:  dump the queries, break them up, then try without the joins), but in any case it means that one process that ties up a connection from the pool for six minutes no longer does that, so you get better throughput, but sometimes it ends up faster even if it's the only request (the query plan is often counterintuitive and Pleroma's mature enough that you more or less know which queries you're going to run, you'll want to run `EXPLAIN` a lot).  I mean, the connection pool has the same characteristics as a system with voluntary preemption so you want to release connections as frequently as you can.> Another thing I did was I noticed we were storing *way* too much data in Oban jobs.Yep; I've had to debug problems with that, and you end up having to walk down some JSON embedded in another JSON blob just to figure out which /inbox a job is bound for.  > Imagine making a post with 100KB of content that needs to go to 1000 servers?Ha, no one sends the Bee Movie script or the King James bible around fedi any more.Anyway, I am very familiar with fedi's n*(n-1)/2 problems.  (Some time in the future, look for an object proxy patch.)  But that table basically fits in memory in most cases.  It's 36MB on FSE right now.  (It's 1.6GB on Poast right now and that doesn't seem right so I will have to have a look at that after I've done this.)But you know, back-pressure, like lowering the number of retries based on the size of the table, that could make a big difference when a system gets stressed.  Some sort of per-host grouping would be better:  re-use connections or if you try selecting jobs from hosts without recent failures, that'd be good.  Like, we had to manually clear a lot of shit out of Poast's queue for various reasons, like a timeout eats a worker for 15, 30, 60 seconds, right?  Whatever the number is.  So someone supplements their instance-block with `-j DROP` and suddenly the oban queue is full of connection timeouts; the easy solution was to drop all the jobs bound for those instances and then shove an iptables rule in so that the jobs would fail immediately instead of timing out, and people start getting posts delivered again.You could ping graf; it's easier to just ask stressed instances than to come up with a good way to do stress-testing.  I'm happy to help with that stuff (as I have been) but fsebugoutzone.org is running an old version and not as stressed as freespeechextremist.com was, so it's not likely to be helpful.  (I'll be updating this instance after FSE proper is back up, but it's still not going to be the same amount of traffic as FSE, so limited utility.)> Even better would be if we could serialize the JSON *once* for all deliveries but it's tricky because we gotta change the addressing for each delivery.This is probably a fun problem to work on but I think it's not a major bottleneck.  (It is nice to have even the little stuff polished and optimized, so I get it.  I'm not saying it's a bad thing to work on, it's cool you're doing that.)> - making sure Oban jobs that have an error we should really treat as permanent are caught and don't allow the job to repeat. It's wasteful for us, rude to remote servers when we're fetching thingsOh, yeah, so 403s?  What counts as permanent?  {:rejected, "Go away"}?> - finding every possible blocker for rendering activities/timelines and making those things asynchronous.You think you might end up with a cascade for those?  Like, if rendering TWKN requires reading 10MB of data from the disk and that's split across several pages in several different indexes, you're still reading 10MB, just doing it asynchronously means you're holding up a connection in the background and it's still got to read 10MB and it's still gotta do 2500 seek()s or whatever.  10MB coming off the disk is still 10MB coming off the disk, it's still 10MB going through the bus, and a seek() is still not free (even on an SSD, even a fancy NVMe SSD).> They could stall rendering a page of the timeline if the poll wasn't refreshed in the last 5 mins or whatever.Ah, okay, yeah, that kind of thing you can serve stale.> also... I'm pretty sure polls were still being refreshed AFTER the poll was closedAh, ha, that's an easy one I bet.> I want Pleroma to be the most polite Fedi server on the network.That would be ideal, yeah.  Some of the Pleroma issues I have had the opportunity to address (it's much easier to analyze something that has been built already than it is to do it from scratch, so I owe Pleroma), that's one of them:  no simultaneous requests for the same URL flooding the other server, no repeated requests for the same URL, things like that.  If you could beat me on politeness before I get mine out the door, that'd be cool.  (I mean, the initial seed for it was that I wanted to make an object proxy/repository so that N cofespace servers didn't need to make N requests to the same server and keep N copies of the same object.)> I do have my own complaints about the whole Pleroma releases situation. I wish we were cutting releases like ... every couple weeks if not every month. But I don't make that call. The schedule doesn't bug me.  I think the breakage is a bad thing:  you see the thing people are talking about in the thread (when the thread gets around to real shit instead of drama), the following bug is a big problem, that's a basic thing that was broken in a release.  Some kind of release engineer/QA situation could have caught it.A decent stress/fuzzer setup would be useful but you almost don't need one because of this:  http://demo.fedilist.com/instance?software=pleroma&sort=users .  1,083 live instances, and they're all constantly being flooded with dirty data from weird experimental servers, some of them are Soapbox but a lot of the Soapbox instances are going to be moving back to Pleroma soon.  (If there is a tweak to fedilist that would help debugging, I'm happy to make it, time permitting:  search by version number or whatever.  It's been useful for tracing bugs, like the peer count for the Misskey/Mastodon activitypub-troll.cf bug that Pleroma was immune to, so we could see when the number of peers spiked and find patient zero, ping the admins that were affected.  Say if "Follow" activities stop coming from servers and those servers all have the same version number; it's hard to know what you're looking for before people start complaining about it.)
       
 (DIR) Post #AnNN8uz8sVzJAkbnV2 by p
       2024-10-25T20:33:25.341163Z
       
       1 likes, 0 repeats
       
       @dj @NonPlayableClown @Owl @cvnt @i @ins0mniak @phntforkslots.png
       
 (DIR) Post #AnNNEFCh8KuPKLUHRI by p
       2024-10-25T20:34:23.114478Z
       
       2 likes, 0 repeats
       
       @phnt @NonPlayableClown @Owl @cvnt @dj @i @ins0mniakdaemons.png
       
 (DIR) Post #AnNNRx4FMPCr8I4XHU by p
       2024-10-25T20:36:51.749440Z
       
       1 likes, 0 repeats
       
       @cvnt @NonPlayableClown @Owl @dj @i @ins0mniak @phnt It's fun.  (It was more exciting when I just had the one computer.  Now it's only exciting if I am hot-swapping something by reaching my giant hands through a morass of badly managed cables.)
       
 (DIR) Post #AnNjL1j2QTgRcKiK7U by goatmeal@shitposter.world
       2024-10-26T00:42:06.946609Z
       
       2 likes, 2 repeats
       
       @p @i @phnt @cvnt @ins0mniak @Owl @dj @NonPlayableClown
       
 (DIR) Post #AnNvFo68rc6FM3nXJw by p
       2024-10-26T02:55:38.291735Z
       
       5 likes, 0 repeats
       
       @feld If this comes out hasty, it's because we are currently being swamped; it's been a while since FSE got DDoS'd/scraped, it feels nostalgic!  Anyway, it's enough that I'm getting 100ms ping times and apparently 85% packet loss periodically; see attached.  At any rate, if I seem curt or distracted, it is because I am distracted, don't take it personally.> The only good stuff in there would be the Ecto stats but they're not granular enough to be useful. Someone sharing the raw Postgres stats from pg_exporter would have been better.Makes sense.> Where is the "ls" equivalent happening for Pleroma? Fetching a file by name is not slow even when there are millions in the same directory.The `ls` illustration isn't because Pleroma does an `ls`, it's a gauge.  `rm` is quadratic.  Some filesystems have a hard limit on the number of entries you can put into a directory.  If you are not hosting UGC by strangers, it doesn't matter to you personally that finding and removing a file takes ten minutes, sure.  If you do not need to write and run a backup script, this doesn't matter to you, sure.What *does* matter is that when you unlink a file, most filesystems just scribble over the dirent for the unlinked file and the space is never reclaimed.  See the figures in !1513.  Adding a file is usually appending, but it's going to be O(n) anyway because it'll usually scan the entire chain of dirents and put it at the end.  (ext4 has some facilities to mitigate this, it'll occasionally repack, see the tune2fs man page, but it's a mess even if it does and that option isn't always enabled.)And, you know, anyone with open registrations is going to have trouble like this.  There's some forum where a guy just went down the list of places that have open registrations and dumped some videos that no one wants to host and then checked back in a week to see which accounts got banned and which were still up.  FSE got .exe files dumped by someone that needed a host for some email-based phishing campaign.  (UGC is a goddamn nightmare.)> BEAM intentionally holds the CPU in a spinlock when it's done doing work in the hopes that it will get more work. That's what causes the bottleneck. That's what causes the bottleneck. It might not look like high CPU usage percentage-wise, but it's preventing the kernel from context switching to another process.Well, here's a hypothetical situation:  let's say that you notice something is slow as shit, and you watch Postgres and see that the query for fetching the notifications takes 10s and the request takes 10.1s.  Then let's say you paste that query into Postgres and fill in a value for the user_id and it takes 10s.  Then say someone says "You see, this is a BEAM spinlock issue" instead of asking what makes you think that, and you have already eliminated that or you wouldn't have said that the query is slow:  what do you say?Come on, dude.  If you're skeptical, go ahead and ask for details.  I am happy to give details, but if I'm not certain, I wouldn't say it, I'd qualify it with "I think" or I'd ask.  The CPU is not the bottleneck for most of the load I that see.Anyway, the query is slow.  Notifications, that is a really slow query; part of it is that notifications never go away and one activity is one notification, so maybe they should be collapsed.  I've had to abridge the table and this is difficult to do in a reasonable way that makes sense to people, like maybe you get rid of everything that has been marked as seen and is older than three months, but you try to keep a minimum of 100 notifications per user, right, because it gets insanely slow to query after a certain point.  (Right now FSE's getting close to its 10,000,000th notification and I think there are only about 200k in the DB.)  Same thing with hashtags, same thing with search:  it's not BEAM, it's the DB.> Even if you're not using S3 your media files should be served by your webserver, not Pleroma/Phoenix.This has nothing to do with S3, it has nothing to do with serving the files:  the files are stored in a way that you learn not to do pretty quickly, because a pointer-chase across the disk just to read the directory trashes your performance even if you don't know that it's a pointer-chase across the disk.  As noted, it starts to grind on adding new files, it hurts backups, it hurts a lot of normal sysadmin tasks you have to perform.You know what happens if you delete a file?  It doesn't shrink the directory on most filesystems:  `mkdir testdir; cd testdir; awk 'BEGIN{for(i=0;i<(2^17);i++) printf "%x">i}'; find -type f -delete; ls -lhd .`  Appending a file to the list is O(n) and hopefully it's cached but this is how the data is laid out on disk, and "n" is potentially all of the files that ever existed in the directory rather than the ones that are there now.> patches welcome, but I don't have time to dig into this in the very near future.That's reasonable, but it's a thing to keep in mind; I might not have the time to dig into this, either.  I could build out the index and see that it's smaller but how well that translates into real-world query performance is not a trivial thing to determine.  I do know that the big strings in the JSONB bloat the indexes but a minimally disruptive way to do that without a rewrite, that's a big deal, and then making the migration fast is sometimes non-trivial.  (The flakeid migration took the better part of three *days* on FSE with that stupid ASCII-art version of Clippy telling me cutesy bullshit about the behavior of rabbits the entire time.  I'm not sure that *could* have been made faster the way the activities table is structured.)> plz plz sendThis one I definitely will.  (I'll have to update to send a patch so don't look for it this week, you know, it'll be a minute.  But if it works fine with objects, there are a lot of things that ought to be able to work this way.  You'll probably want a low-priority job to check some percentage of the proxied objects, things like that.)  I do not have a plan for removing objects (while it's a join, you can't as easily make it trigger a refetch if the object is missing), but fetching them from other sources should hopefully alleviate situations like a post on a tiny single-user instance blowing up and saturating the pipe, and it should be trivial to use as an external media proxy.  If I'm lucky, the software ends up symbiotic and we both benefit, but in any case, if an instance is down but you can still fetch posts, that's good, and if an instance is less swamped because load gets distributed, that's nice.> patches welcome. You can write custom backoff algorithms for Oban. It's supported.Sure; I'm dealing with another codebase, and hopefully it's a nice complement to Pleroma but I don't know how much work I'll be able to put into Pleroma directly.  (Obviously the object proxy thing I plan to do.)  It's less "Do this!" and more "Do you have thoughts on this?"  I'm well aware that it's one thing to come up with a plan and another to actually work it into a codebase.> Everyone I've asked to get access to their servers which were stuggling has refused except mint. Either everyone's paranoid over nothing or far too many people have illegal shit on their servers. I don't know what to think.Sure, I get it.  I don't think you'd hose anyone, but there are people with legitimate privacy concerns.  There are probably people on some of these servers that would close their accounts on the server if anyone besides their admin had access to the server.  (Ironically, there are people on Poast that are there because they're afraid of me.  So they bailed from FSE to...another server I have root on.)  So it's not just the admin's paranoia, it's the LCM of all of the paranoias of everyone on the box, and you know, even if it's just a big repository of shitposts, you kinda feel responsible for things you do that affect the people using it, you know what I mean?  No one's making any money off this stuff, so it's a bunch of people trying to do a good job and provide a reliable service just because they care about doing that.> It's not exactly a motivator to solve their problems.Well, in my case, I can solve my own problems; it's just that a bunch of hatchet-job patches to FSE's codebase (at present, because 2.2.2 does not run with current OpenSSL, I had to actually patch _deps in-place) only solve *my* problems and they do not help anyone else out.  A lot of people ask me about this or that and I expect this is true for a lot of people running higher-volume Pleromae, so multiply however many questions I get by the number of people running those servers, and if it were fixed upstream, no one would need to ask.> If you get a 403 on an object fetch or profile refresh they're blocking you, so no point in retrying.Right, so it's just not retrying the current job, not a list of things to never retry, right?  (I think the former is a better idea unless you're doing the Postgres equivalent of a circular buffer; misconfigurations are frequent.)> (when a Delete for an activity you didn't even have came in, it would put in the job to fetch the activity it was referencing... and kept trying to fetch it over and over and over...)Yeah, I know this one.  :terrylol2:> No, I mean it was hanging to fetch latest data from remote serverRight, I follow now.> Same with rich media previewsAh, I have those completely elimated; it'd be nice if this were a user-level setting, I think.  I don't want to fetch an image from Facebook's CDN, this is the "good web" that I'm glad to browse rather than the hostile web, and Facebook can't be the only company doing "shadow profiles".> Again, it wasn't broken in a release.What I have is second-hand and by the time I update FSE, it'll probably be fixed.  The extent of what I know is that people complained of breakage, they downgraded, the breakage went away.> You seem to have a lot of opinions and ideas on how to improve things but nobody else on the team seems to give a shit about any of this stuff right now. So send patches. I'll merge them. Join me.Ha, appreciated, that's encouraging.  Time and energy permitting, sure; I end up spelunking a lot in either case, but most of the ideas I have are architectural and doing something like that ends up requiring a really good overview of the codebase:  you can see the symptoms and reason what the architecture must be because you are familiar with how these things act (in a language-independent way) but reasoning from the outside is a long way from making a big change to the inside, I'm barely conversant in Elixir (which seems to change very frequently), and Elixir seems to favor too much of the AOP-style stuff that Rails/Java like, this makes behavior hard to track down, you get "spooky functors at a distance".  So I am not certain that I will ever get enough time to do the kind of stuff that I'd like to do with Pleroma, but small stuff I come across I can send up, like the DB indexes one.  (Relatively self-contained and was heavier on Postgres than Elixir.)  You know?  Like, I see the refetching bug with the accidental DDoS and I can reason that it must not be limiting the outgoing reqs and it must not be keeping track of objects that it fetches and then rejects by an MRF, I can ask around at Moon and moth and lanodan and they can confirm things, but then I discuss it with mint and there are two HTTP request libraries in use and which uses which changes between versions and a fix is doable but non-trivial. I am curious how your IPFS experiment went, because, so far, IPFS has been a disaster every time I tried to integrate it into anything.  Revolver nominally supports it but I have it turned off on every node because it's—not remotely exaggerating—a 100x slowdown.  (I like keeping it around because it gives a side-channel for distributing blocks and I like it in theory but IPFS's codebase is a mess spread across multiple repos and actually using it has been nothing but pain.  I tried to track down some behavior that diverged from the documentation (storing raw blocks) but the origin of the behavior was split across three repos, it was a mess.)  Dumping objects into IPFS might actually be tenable if IPFS worked right (I imagine you could use the IPNS stuff).swamped.png
       
 (DIR) Post #AnNvWVa2xu02qWkX7w by p
       2024-10-26T02:58:39.396217Z
       
       1 likes, 0 repeats
       
       @feld That would be great.  I mean, I hacked around the problem (webvac, then Revolver) so it doesn't affect me any more, and things that occur in the future don't help with the bae.st problem I'm dealing with at the moment (it is fun trying to figure out how to store 3TB of waifus but some parts of the problem are annoying), but in general, splitting the directories up is a really good thing to do, that is cool.
       
 (DIR) Post #AnNwuD4vVSamMr3iO8 by p
       2024-10-26T03:14:08.717229Z
       
       0 likes, 0 repeats
       
       @goatmeal @NonPlayableClown @Owl @cvnt @dj @i @ins0mniak @phnt People love spoons!
       
 (DIR) Post #AnNyvUMWvkgmAe1wem by p
       2024-10-26T03:36:47.183929Z
       
       3 likes, 1 repeats
       
       @feld > I spent so many hours fighting with IPFS I think it's a dead end.Yeah, that's my conclusion, too.  It should be great but is not even good.  FSE had the start of a patch but I didn't get too far actually integrating it.  ( https://git.freespeechextremist.com/gitweb/?p=fse;a=commit;h=2dec0a138612eebe79f757b5bc04810b81d65951 )> Nobody working on Kubo has any interest in fixing the storage scalability problems it seems.I think it's a little past them, if I'm being honest.  They could probably get away with just integrating tkrzw.> To use it for fedi we'd really want the garbage collection to work and not spin 100% CPU and IO for hours but that's what it does when you get enough data in there 🤬Yeah, you wanna see a real horror, look at the directory where it stores the data.  I don't know if it's still doing that but it was storing different permutations of the same hash as different files last I checked.  So the Qm$whatever or the bafy$whatever, those were just stored as separate files instead of normalizing the hash.8MB is too large for you to get fortuitous collisions, it's not a very good chunk size for transfer, just the entire thing is like a parody.
       
 (DIR) Post #AnO9F0VKeP48tv5qAy by frogzone@wizard.casa
       2024-10-26T05:32:21.047845Z
       
       2 likes, 0 repeats
       
       @feld @p @silverpill @jeffcliff ok, very interesting to read these thoughts on the degraded state of IPFS and how unfit it currently is for use with fedi (in browser as an add-on and as a server).it fits with my thesis that foss on m$github is getting slowly compromised, by the shell accounts that the corporate state have on that weaponized platform.... a controlled platform, at best, and a platform that deanonymizes devs, which is a way to control them at the very least.Id consider going back to 2021 and looking at their codebase then, and comparing it to today, there were some very prominent independent media folk talking about IPFS back then and so i suspect that THAT is when the controlled demolition may have started. My understanding is once the corporates have their sights on a codebase they force the programmers to accept bad tradeoffs. Trade-offs exist everywhere, and permutations of tradeoffs can be chosen ad-infinitum. my learned experience is that foss on mshithub tends to not improve in ways that would allow it to compete with corposhit, especially in the #ux department.to accelerate :butterfedyC: fediverse centric adaptations, just over a week ago i wrote about having #ipfs on another repo and i now, having read both your comments i think it may need to indeed be a fork. a week ago i suggested the acronym DCN (decentralised content network) a tongue-in-cheek reference/reversal of CDN....so yeah if anyone wants to run with that idea, u have my blessing#dcn #msgithub #getoffgithub
       
 (DIR) Post #AnONVzQXJAQfqBqGvY by mint@ryona.agency
       2024-10-26T08:12:17.237473Z
       
       1 likes, 1 repeats
       
       @p @feld >If there is a tweak to fedilist that would help debugging, I'm happy to make it, time permittingSearch by IP subnet and/or domain wildcard would be nice, also ?state=any.
       
 (DIR) Post #AnOOClbYZh15QLOWIK by mint@ryona.agency
       2024-10-26T08:20:00.292293Z
       
       1 likes, 1 repeats
       
       @feld @p >Even if you're not using S3 your media files should be served by your webserver, not Pleroma/Phoenix.Pretty sure it was served by Phoenix for the longest time until the docs changed to recommend using separate media subdomain in the wake of XSS paranoia. Also frontend with all its JSON blobs and emoji annotations in Enochian is served by Phoenix by default as well (I'm using a bunch of hacky nginx rules to serve it directly from my VPS instead of fetching them from my homeserver eery time a new tab is loaded).
       
 (DIR) Post #AnOpnVTmBnM0t9Uyoq by feld@friedcheese.us
       2024-10-26T13:29:11.495773Z
       
       2 likes, 0 repeats
       
       @mint @p after first load it really should be served by nginx or varnish cache tho. Ideally.
       
 (DIR) Post #AnOwBpADFnxQc7KJm4 by silverpill@mitra.social
       2024-10-26T14:40:13.388600Z
       
       2 likes, 0 repeats
       
       @frogzone @jeffcliff @p @feld Performance issues with IPFS were there from the beginning. Many hoped that Protocol Labs will fix them but that didn't happen, perhaps due to the inherent limitations of the protocol, or due to incompetence.In any case, this is not a "controlled demolition". There was a shift to NFTs and then Filecoin around 2020, but I don't think that affected IPFS in a negative way
       
 (DIR) Post #AnP7ohstLq5apJy5Uu by p
       2024-10-26T16:51:07.023251Z
       
       0 likes, 0 repeats
       
       @feld Ha, it's worse than 20, it's N:  https://github.com/multiformats/multibase , https://github.com/multiformats/multicodec/blob/master/table.csv .  I had a big comment block near the top with notes while I was trying to decipher it and those links in it, then that accumulated a note that the URLs keep going stale, then eventually at the very top was "Just put f1220 at the front."  "f" for hex, "12" for SHA-256, and "20" for the length of the hash in bytes (not bits) once decoded (rather than on the wire), and the rest of it is not worth coping with.  Just those two links took forever to find because their stupid docs say "Just use this library!" and then you try to find out what the library does and it says "It's fully compliant with this thing!" and links back to the place you came from.> Which is annoying when running a proxy because you have to script generation of a blacklist to stop every possible hash for that same file.Yeah, before I repurposed it to serve FSE's media over Revolver, screamshitter.club ran an IPFS proxy, and then for about half a day plus debugging time, it was also trying to store the data on IPFS, and just trying to write these 8192-byte blocks caused IPFS to grind, so I turned off the integration.  Eventually they broke my config file and started redirecting me to a gateway and I didn't bother to fix it, so I don't have any live IPFS nodes at the moment.
       
 (DIR) Post #AnP8MsoDEyQ2YR4ltY by p
       2024-10-26T16:57:17.626784Z
       
       0 likes, 0 repeats
       
       @feld trkzw is by the same dude that did TokyoCabinet/KyotoCabinet.  Very good shit (TokyoTyrant spoke HTTP and memcache's protocol over the same port) but he got fascinated with C++ so I haven't used the later ones.  trkzw has Go bindings (that is, not a Go implementation, and CGO is useless if you are on Plan 9, but IPFS relies on a bunch of fluoridated Linux stuff anyway so CGO is necessary for them).
       
 (DIR) Post #AnP8hvmvMJnRsLVfZA by syzygy@clubcyberia.co
       2024-10-26T17:01:03.206915Z
       
       2 likes, 1 repeats
       
       @p @feld trzkw sounds like a twitter handle of some jap drawing MS Paint scribbles of anime girls that would then get reposted by 300 lbs balding trannies crying how sad their life is on /r9k/.
       
 (DIR) Post #AnP956k6nQNuVkFDBQ by p
       2024-10-26T17:05:17.178573Z
       
       6 likes, 1 repeats
       
       @frogzone @silverpill @jeffcliff @feld > foss on mshithub tends to not improve in ways that would allow it to compete with corposhit,The mass "Rewrite it in Rust" bit tends to have the side effect of converting (A)GPL software to MIT/BSD.> so yeah if anyone wants to run with that idea,:ocelot: I may be a bit ahead of you on this. :revolvertan:
       
 (DIR) Post #AnPA2Vvomv7pib34GO by amerika@annihilation.social
       2024-10-26T17:16:01.026252Z
       
       1 likes, 1 repeats
       
       @p @feld @silverpill @jeffcliff @frogzone Rust = hipster jive
       
 (DIR) Post #AnPCGkvq0usaCfybkO by frogzone@wizard.casa
       2024-10-26T17:40:59.442330Z
       
       1 likes, 0 repeats
       
       @silverpill @jeffcliff @p @feld @smallcircles fwict nfts were a well-orchestrated #moneylaundering op and distraction and #socialengineering attack, and affected a lot of stuff in a negative way.... if it had the effect of derailing the development of ipfs then that would be another feather in its cap.i remember stumbling across a govt radio station when it was doing an upbeat report about NfTs.... was  clearly designed for young people to get into it, i wonder what they were trying to disract the kids from *cue sarcastic voice*.
       
 (DIR) Post #AnPCHVS13bx2TnNxI0 by p
       2024-10-26T17:41:08.528115Z
       
       1 likes, 0 repeats
       
       @mint @feld That is something that would be useful.> ?state=anyI keep wanting that also but consider the case of 200k instances that have been blacklisted because they all point to the same parking page.
       
 (DIR) Post #AnPCS3cwqTI7N5Wv7w by mint@ryona.agency
       2024-10-26T17:43:01.350534Z
       
       1 likes, 1 repeats
       
       @p @feld Well, maybe "any except blacklisted" then. Returned result may be split into parts of ~1000 instances (or whatever value does not make the server shart), possibly even with pagination.
       
 (DIR) Post #AnPDUuekkswWN6IdhA by p
       2024-10-26T17:54:46.203991Z
       
       2 likes, 0 repeats
       
       @mint @feld Yeah, I forgot who said it but really early on, I remarked that Phoenix couldn't keep up and was chewing CPU because if Elixir is going to be some immutable stateless deal that it needs to have a call for IO.copy(fd1,fd2) *somewhere*, and I got an objection from one of the devs, I forget who, but there's not really a way around it:  there's one way to get data out of one FD and into another efficiently and in a pure-ish functional language you have to just write some C and wrap it in something that fits the language's semantics, because it's a fundamentally FP-unfriendly task.  @j probably remembers this because we both came to the same conclusion around the same time and we traded notes on nginx configuration.
       
 (DIR) Post #AnPE0PzsHVHCYACaGG by frogzone@wizard.casa
       2024-10-26T18:00:24.155757Z
       
       2 likes, 0 repeats
       
       @p @silverpill @jeffcliff @feld >re rust and (A)GPL to BSDI'll need to keep an eye on that>ocelot/revolversounds like i may need to look closer :pthe reason i thought we could do it with ipfs was that it already was being used in i2p, but its only being used as a proof of concept at this stage.
       
 (DIR) Post #AnPFNE3Cxm9e78CUS0 by mint@ryona.agency
       2024-10-26T18:15:45.670253Z
       
       1 likes, 1 repeats
       
       @feld @p >Everyone I've asked to get access to their servers which were stuggling has refused except mintWell, giving access to the server is kinda like letting someone access your bank deposit box to check if your bills aren't counterfeit. The server I gave you access to isn't even mine and its owner was essentially MIA, so I didn't have much qualms about it.
       
 (DIR) Post #AnPOADhZqeHKr3xKxk by p
       2024-10-26T19:54:17.138851Z
       
       0 likes, 0 repeats
       
       @feld @mint We're doing it with a redir until I take 5-10 minutes to figure out which endpoints Pleroma wants to treat it like an upload service.
       
 (DIR) Post #AnPPhTdthaZpnvenBY by p
       2024-10-26T20:11:30.063059Z
       
       0 likes, 0 repeats
       
       @feld Yeah, he claims that Kyoto is better in every metric than Tokyo and then that trkzw was better than Kyoto in every metric.  (It failed the "doesn't use C++" metric for me so I don't know.)
       
 (DIR) Post #AnPPsBUdWNhqhUQlw8 by p
       2024-10-26T20:13:26.166447Z
       
       1 likes, 0 repeats
       
       @syzygy @feld It is C++ so I don't even know.  :kenbw:
       
 (DIR) Post #AnPQidjdlNzPLkSfoW by p
       2024-10-26T20:22:54.975159Z
       
       0 likes, 0 repeats
       
       @mint @feld > possibly even with pagination.Yeah, I have probably procrastinated on this long enough.  Pagination is not fun; crawler throughput is fun.
       
 (DIR) Post #AnPRhx64OJQ141BkzA by p
       2024-10-26T20:33:59.817204Z
       
       1 likes, 0 repeats
       
       @frogzone @silverpill @jeffcliff @feld > sounds like i may need to look closer :pI explained the block splitting to nyanide's final boss a few days ago:  https://fsebugoutzone.org/notice/AnGc6MOGfUsuVOsblQ .  Really, the better thing to read, though, would be the Kademlia paper (attached) and the venti paper, which is at http://doc.cat-v.org/plan_9/4th_edition/papers/venti/ .> the reason i thought we could do it with ipfs was that it already was being used in i2p, but its only being used as a proof of concept at this stage.I hesitate to say too much about numbers but I will say that I think it would be hard to make something as slow as IPFS.  You'd have to try really hard.kpos.pdf
       
 (DIR) Post #AnPRqqTAOwHx7DETz6 by p
       2024-10-26T20:35:36.251251Z
       
       0 likes, 0 repeats
       
       @feld @j @mint Yeah, but last I checked (which has admittedly been a minute), there's no "Just stream this FD to this other FD until you get EOF on the first one" call.  You read, then write, you've gotta do it yourself.
       
 (DIR) Post #AnPU8dIUJWClNoqaKu by j@shitposter.world
       2024-10-26T21:01:13.329379Z
       
       2 likes, 1 repeats
       
       @p @feld @mint lmao for the whole time bae.st was going I was serving with pleroma because I was lazyI just use a big cache on a dedicated nvme drive so it wasn't really ever an issue.
       
 (DIR) Post #AnPUXjblzEBACDpxQG by silverpill@mitra.social
       2024-10-26T21:04:38.811227Z
       
       2 likes, 0 repeats
       
       @p @frogzone @jeffcliff @feld What is your current stance on FEP-ef61? Does it conflict with what you're doing in Revolver, or complement that?https://codeberg.org/fediverse/fep/src/branch/main/fep/ef61/fep-ef61.mdSignificant progress has been made since we last discussed it. Today there two implementations, Mitra and Streams, and they are partially interoperating.
       
 (DIR) Post #AnPZioNv4EULxzSU76 by p
       2024-10-26T22:03:47.549427Z
       
       2 likes, 0 repeats
       
       @j @feld @mint :bruceforsythe:
       
 (DIR) Post #AnPeQsSzeU0JBV6E2i by p
       2024-10-26T22:56:34.579657Z
       
       3 likes, 0 repeats
       
       @silverpill @frogzone @jeffcliff @feld I haven't kept up with it.  I have some notes but you can feel free to ignore them; I don't want to get in the way of some people doing a thing.  Wherever it lands, I'll try to make sure that we can interoperate without breaking the FEP semantics if possible, but some places, it's not going to be possible.  So, here are the notes (and quick read, so I may have missed things or I may have the wrong idea, because the stupid DDoS yesterday cost me a lot of time and I'm trying to catch up today):> ap://did:example:123456/path/to/object?name=value#key-idIf it's a new protocol, I don't know why we're still doing a fragment for the key ID.  I don't love JSON (anti-web) but we've got to live with it; on the other hand, I don't want to abuse JSON or URLs.> Ed25519I'm using RSA keys so that it's easy to port myself from Pleroma.  It is entirely possible that there is something I am missing and that we shouldn't be using RSA keys; maybe key algo is overspecifying.> /.well-known/apgatewayI like this, but I wonder if there's a way around it without hard-coding another URL.> The client MUST specify an Accept header with the application/ld+json; profile="https://www.w3.org/ns/activitystreams" media type.This is actually objectively wrong.  I don't know why this should be done rather than using the HTTP standard interpretation of "Accept:" headers.  If the client doesn't include "application/ld+json" or "*/*", then you just return a 406.  The way Pleroma/Masto do these things kind of shits on RFC 2616 and I really love RFC 2616.  (This is why I'm not doing the terrible sniffing algorithm to differentiate between a browser and another server on the /objects/$id URLs.)  If there is a good reason, maybe, but if we're tossing out the well-defined HTTP semantics that HTTP clients rely on, we can't call it HTTP.> Portable actorsThis looks roughly compatible with what I am doing; there's an ID for an actor, the network protocol is used to find the actor, etc., and then to use an AP gateway, you sign a request to be canonically located on one, the owner of that domain approves or ignores, and that's the PoT for your account as far as any other AP server knows.  So your /inbox and /outbox, the server with the responsibility for delivering your posts when it sees new ones, etc.So this section looks like it's roughly compatible with that.  Instead of ordered gateways, Revolver can just send one gateway.> Portable objectsThis part, I don't know how I'm going to manage this.  The "attributedTo" being tied to the gateway URLs, and then those potentially changing, that's going to be a mess with content-addressed storage.  If you create a new activity by signing the head of a tree that contains pointers to objects in a stream, then those objects changing (e.g., because a gateway changed) is going to make hopping computationally infeasible once you have a long enough history (which is going to be almost all of the initial users, since they will mostly be people on FSE/bae.st that follow the move to Revolver).
       
 (DIR) Post #AnPfQT4EBcNQMbss9Q by p
       2024-10-26T23:07:42.431609Z
       
       1 likes, 0 repeats
       
       @feld @j @mint Yeah, that's why it's got to be lower-level; you don't want to put something semantically ugly in the higher level but you end up with a read giving you an immutable linked list of bytes instead of repeatedly refilling the same preallocated, aligned, contiguous region of memory.  To do it without burning CPU, you can't allocate anything:  it has to be loop{syscall; conditional break; syscall; conditional break;}.  So the buffer can't cross into the user-level of the runtime unless you have an exact GC and you somehow have an internal allocator that can recognize that you're doing that.  The former exists and I've never seen the latter, but you can tell it to copy one FD to the other without breaking the language and you can do that with a static buffer at a lower level where the semantics aren't expected to hold.
       
 (DIR) Post #AnPgEXcFY3vwwzfs7k by p
       2024-10-26T23:16:45.415539Z
       
       2 likes, 1 repeats
       
       @i @feld @j @mint How tricky is it to just call Erlang stuff from Elixir?  Seems relatively easy, right?  (Unless I am forgetting something, I think you can just call it directly.)
       
 (DIR) Post #AnPh9ftPRqFp7uwaci by p
       2024-10-26T23:27:04.947996Z
       
       1 likes, 0 repeats
       
       @feld @j @mint They tell you how to install it instead of explaining what it is (I gather it's an FFI) or what sort of thing you need at runtime; I'm not sure what the FFI that is in the version I have is but Pleroma ends up relying at some level on the system's version of OpenSSL so I gather that there must be some FFI of some sort.
       
 (DIR) Post #AnPkFhS6rUknZ1ju2S by p
       2024-10-27T00:01:47.184820Z
       
       2 likes, 0 repeats
       
       @feld @i @j @mint Highly recommend his chapter in Coders at Work.
       
 (DIR) Post #AnQ6ucRUajWitGMqmW by Ai2ObsFjnLcY8CdUMi.KuteboiCoder@subs4social.xyz
       2024-10-27T04:15:40.358Z
       
       2 likes, 1 repeats
       
       @p@fsebugoutzone.org @i@declin.eu @feld@friedcheese.us @j@shitposter.world @mint@ryona.agency Imagine #learning a whole-ass interpreted #language and #runtime environment just so you can run a #fedi #instance
       
 (DIR) Post #AnQ78LETNHlHZJoy8W by Ai2ObsFjnLcY8CdUMi.KuteboiCoder@subs4social.xyz
       2024-10-27T04:18:08.208Z
       
       1 likes, 0 repeats
       
       @p@fsebugoutzone.org @i@declin.eu @feld@friedcheese.us @j@shitposter.world @mint@ryona.agency Presumptuously assuming here that you need Erlang and Elixir for #Pleroma and precisely nothing else, cuz I had literally never heard of either of those languages before getting involved in #fedi
       
 (DIR) Post #AnQCvF6NSL2EW1Ahs0 by p
       2024-10-27T05:23:02.090033Z
       
       1 likes, 0 repeats
       
       @DiamondMind @feld @i @j @mint Ah, I can't eat sugar, makes me vomit for some reason.
       
 (DIR) Post #AnQG3z5SfSShJbbSjY by p
       2024-10-27T05:58:13.790025Z
       
       3 likes, 0 repeats
       
       @KuteboiCoder @mint @i @feld @j Ah, Elixir's not hard to pick up if you know Erlang.  Elixir is definitely not my favorite language but I've never regretted learning a language, JavaScript aside.
       
 (DIR) Post #AnQGLFjs0gYnsmjqGu by get@clubcyberia.co
       2024-10-27T06:01:19.671603Z
       
       3 likes, 1 repeats
       
       @p @i @feld @mint @j @KuteboiCoder >If you know erlangsix guys raise their hands up
       
 (DIR) Post #AnQJT80SwTuQ52wovw by p
       2024-10-27T06:36:23.330448Z
       
       2 likes, 0 repeats
       
       @KuteboiCoder @mint @i @feld @j > Presumptuously assuming here that you need Erlang and Elixir for #Pleroma and precisely nothing else,You do need those to hack on Pleroma because Pleroma is written in Elixir, but there are dependencies that are written in C, too.  There's probably other stuff in there.> cuz I had literally never heard of either of those languages before getting involved in #fediI did some Erlang at an old job; I'd never done Elixir but I saw people talking about it.It gets easier to pick up languages the more you pick up anyway.  And then you know, like anyone can pick up awk in 30 minutes, most of the shells anyone uses are scripting languages you can pick up gradually.:bwk: Had a pretty fascinating talk on this:  https://www.youtube.com/watch?v=Sg4U4r_AgJU
       
 (DIR) Post #AnQJkkduXyJCpbnk1Y by mint@ryona.agency
       2024-10-27T06:39:33.055815Z
       
       1 likes, 1 repeats
       
       @p @i @feld @j @KuteboiCoder >I'd never done ElixirYou wrote at least three MRFs (primary practical application of the Elixir programming language).
       
 (DIR) Post #AnQKacQeKaakPmKYqW by p
       2024-10-27T06:48:56.866263Z
       
       4 likes, 0 repeats
       
       @get @KuteboiCoder @feld @i @j @mint Six is a lot of people on this network.
       
 (DIR) Post #AnQNvJJIuMAH40S944 by p
       2024-10-27T07:26:18.138795Z
       
       1 likes, 0 repeats
       
       @mint @KuteboiCoder @feld @i @j > You wrote at least three MRFs (primary practical application of the Elixir programming language). Before joining fedi, I had written zero MRFs.
       
 (DIR) Post #AnQNwW3yyjTMuCrT60 by p
       2024-10-27T07:26:31.215011Z
       
       2 likes, 0 repeats
       
       @mint @KuteboiCoder @feld @i @j MRFs did not exist when I joined.
       
 (DIR) Post #AnQb6TAts56YFOAotM by j@shitposter.world
       2024-10-27T09:53:58.457749Z
       
       1 likes, 1 repeats
       
       @p @i @feld @mint @KuteboiCoder How hard would it be to port Pleroma to HolyC? :terry:
       
 (DIR) Post #AnQbKbE2jg7fGoNhPU by j@shitposter.world
       2024-10-27T09:56:31.702027Z
       
       2 likes, 1 repeats
       
       @phnt @i @feld @p @mint @KuteboiCoder What about honk? https://humungus.tedunangst.com/r/honk
       
 (DIR) Post #AnQcPKwkmt1IBU7JxY by phnt@fluffytail.org
       2024-10-27T10:08:34.813206Z
       
       2 likes, 1 repeats
       
       @j @i @feld @p @mint @KuteboiCoder Never looked into it. It's not something I would run instead of Pleroma, but it seems like something nice to tinker with. Same with snac2.
       
 (DIR) Post #AnQdYWvHjGZBt9NTUG by i@declin.eu
       2024-10-27T10:21:25.065242Z
       
       4 likes, 3 repeats
       
       @phnt @feld @p @mint @j @KuteboiCoder honks code suffers from tedu's whimsy, it doesn't take too long to figure out what's a honk a chonk a donk a xonk a zonk a doov is, but it's also best meant to be experienced on a 2015 or later Thinkpad X1 Carbon with a 2560x1440 screen running chromium at 150% scaling with the dwm window manager so that the main menu lines up just rightnice to play around with, but it's eventual explosion will leave you with all your 10grans gone
       
 (DIR) Post #AnQlIUhj0fP20VtpnU by mint@ryona.agency
       2024-10-27T11:48:11.331331Z
       
       5 likes, 2 repeats
       
       @j @i @phnt @feld @p @KuteboiCoder Ted Unangst apparently has some reason to nullroute my server, so it's fair for me to assume he rapes kids.
       
 (DIR) Post #AnQls0ZiVTO2zL5X1s by j@shitposter.world
       2024-10-27T11:54:37.072093Z
       
       3 likes, 1 repeats
       
       @mint @i @phnt @feld @p @KuteboiCoder that's usually the case with such behavior. I don't really fully understand the connection but boy is it a good indicator.
       
 (DIR) Post #AnQtlLjIFuwyChu4Z6 by p
       2024-10-27T13:23:03.764567Z
       
       1 likes, 0 repeats
       
       @j @KuteboiCoder @feld @i @mint No networking support so...hard.HolyC is for C64-style stuff anyway, it's for fun and for making the computer do cool things, I don't think there's a JSON parser.
       
 (DIR) Post #AnQuCKvXLboLX9UyQ4 by p
       2024-10-27T13:27:56.403451Z
       
       3 likes, 0 repeats
       
       @DiamondMind @feld @i @j @mintyour_computer_is_stoned.jpg
       
 (DIR) Post #AnQuFbOwYLMHUqoJIe by p
       2024-10-27T13:28:31.812913Z
       
       1 likes, 0 repeats
       
       @j @phnt @KuteboiCoder @feld @i @mint It is an okay codebase but it is whimsical.
       
 (DIR) Post #AnQuofyDYdKLno2B6m by mint@ryona.agency
       2024-10-27T13:34:50.198215Z
       
       1 likes, 1 repeats
       
       @p @i @feld @j @KuteboiCoder >No networking support so...hard.Does not mean impossible. Some ported the whole TCP/IP stack together with drivers to it, others I think made do with the serial ports. aiwnios.com (personal site of one of the three TempleOS devs on fedi) is apparently hosted with a makeshift CGI server running on a custom HolyC runtime.
       
 (DIR) Post #AnQv8saoKy7Ak3ig5I by pomstan@xn--p1abe3d.xn--80asehdb
       2024-10-27T13:38:15.222731Z
       
       1 likes, 0 repeats
       
       @j @i @feld @p @mint @KuteboiCoder port mitra instead
       
 (DIR) Post #AnQwaglI1AuA6xRfRw by p
       2024-10-27T13:54:45.073481Z
       
       3 likes, 0 repeats
       
       @mint @j @KuteboiCoder @feld @i @phnt I hesitate to believe this about an OpenBSD dev.  (Maybe he's deep cover.)
       
 (DIR) Post #AnQwlQKjRFO2LS8rWC by i@declin.eu
       2024-10-27T13:56:40.139800Z
       
       3 likes, 0 repeats
       
       @p @phnt @feld @mint @j @KuteboiCoder he's publicly decried all frantech server as scum unworthy of federation a few times, and gloated about nullrouting their ranges
       
 (DIR) Post #AnQwywqxqF5uy5fR6O by p
       2024-10-27T13:59:08.133791Z
       
       6 likes, 3 repeats
       
       @mint @KuteboiCoder @feld @i @j > Some ported the whole TCP/IP stack together with drivers to it,Desecration of the temple.10f7a163d700f7d0439095bd60bc006b7d1c8a8741a1a64b29c848d36e0b9369.jpg
       
 (DIR) Post #AnQx4ltbUghoiog8ps by i@declin.eu
       2024-10-27T14:00:10.279920Z
       
       2 likes, 2 repeats
       
       @p @feld @mint @j @KuteboiCoder FALSE
       
 (DIR) Post #AnQyPQc5usswkcu1ZY by pomstan@xn--p1abe3d.xn--80asehdb
       2024-10-27T14:15:00.532543Z
       
       1 likes, 0 repeats
       
       @j @KuteboiCoder @feld @i @mint @p better yet, snac
       
 (DIR) Post #AnQzmVIel4eJttNU80 by p
       2024-10-27T14:30:30.078409Z
       
       2 likes, 1 repeats
       
       @i @KuteboiCoder @feld @j @mint @phnt Well, a lot of bullshit traffic does come from there, like ssh brute-force floods and so many Tor exits that the Tor project is asking people to stop putting Tor exits there.  Lotta bad shit comes out of there for the same reason it's a good place to host good shit.
       
 (DIR) Post #AnR0bpeIrOeZmTyhdo by p
       2024-10-27T14:39:46.676184Z
       
       1 likes, 0 repeats
       
       @i @KuteboiCoder @feld @j @mint You say this, but it's an OS to use interactively, not an OS to run a server on.  He's talking about clients.
       
 (DIR) Post #AnRBhDdUCirz7PMpEG by silverpill@mitra.social
       2024-10-27T16:43:16.246932Z
       
       2 likes, 1 repeats
       
       @p>I'll try to make sure that we can interoperate without breaking the FEP semantics if possible, but some places, it's not going to be possible.If you want to see how it all works in practice, there is @nomadIt is a Mastodon-compatible FEP-ef61 actor that is managed from a client.>If it's a new protocol, I don't know why we're still doing a fragment for the key ID.'ap' URLs resolve to ActivityStreams documents, and fragments are useful for pointing to specific sections within those documents. The URL you're citing is just an example, and implementers are not required to use fragments for key IDs (although that might be a good idea).I shall change fragment ID in this example to something neutral.>>Ed25519>I'm using RSA keys so that it's easy to port myself from Pleroma. It is entirely possible that there is something I am missing and that we shouldn't be using RSA keys; maybe key algo is overspecifying.Nowadays security specialists advise against using RSA (1, 2), and some modern standards do not support it (for example, there is no RSA cryptosuite for Data Integity, which we use for signing objects).Fediverse needs to migrate to something else and EdDSA seems to be the best option (according to the rough consensus among fedi devs). Also, Ed25519 key size is very small, that's pretty cool.>>/.well-known/apgateway>I like this, but I wonder if there's a way around it without hard-coding another URL.Yes, follow-your-nose approach is mentioned in "Discussion - Discovering locations". Existing implementations rely on well-known locations, but I think we can support follow-your-nose if needed.>> The client MUST specify an Accept header with the application/ld+json; profile="https://www.w3.org/ns/activitystreams" media type.>This is actually objectively wrong. I don't know why this should be done rather than using the HTTP standard interpretation of "Accept:" headers. If the client doesn't include "application/ld+json" or "*/*", then you just return a 406. The way Pleroma/Masto do these things kind of shits on RFC 2616 and I really love RFC 2616.But the FEP should say something about Accept header and media type, I don't see any way around that. The exact same requirement exists in ActivityPub spec.How do you prefer it to be written?>> Portable objects>This part, I don't know how I'm going to manage this. The "attributedTo" being tied to the gateway URLs, and then those potentially changingIDs are not supposed to change. You include this special query parameter ("location hint") when you create an object, and then it stays there even if you start using a different gateway.Maybe there's a better way to provide location hints, I don't know. Existing implementations use compatible IDs (regular 'http' URLs with 'ap' URL appended), so not much thought has been put into pure 'ap' IDs.>that's going to be a mess with content-addressed storageHow do you process Update activities then?@frogzone @jeffcliff @feld
       
 (DIR) Post #AnRJ72KlXwRbH4rvai by p
       2024-10-27T18:07:06.457613Z
       
       3 likes, 0 repeats
       
       @silverpill @frogzone @jeffcliff @feld > Fediverse needs to migrate to something else and EdDSA seems to be the best option (according to the rough consensus among fedi devs). Also, Ed25519 key size is very small, that's pretty cool.Ah, okay.  Reasonable.  I'll put it on the list; I had seen support for it in Honk but because Pleroma didn't have it, I just put a note in a comment and ignored it.> But the FEP should say something about Accept header and media type, I don't see any way around that.The Accept header mechanics don't need redefining; you just say it's served with this MIME-type, right, and then servers that handle Accept headers correctly will handle it correctly.  If you're worried an informal reading will make sloppy implementations create a de facto bad standard, then you could put a note in that the client and server are expected to implement HTTP-compliant semantics.> The exact same requirement exists in ActivityPub spec.It's broken in the ActivityPub spec.  It is not just broken in the ActivityPub spec, but it is irreparably brain-damaged.  Feel free to skip these next two paragraphs; I explain why what the ActivityPub spec says can/should be ignored, but I also cannot type this without ranting.Why call it the "Accept" header if the server isn't going to treat it that way?  If the ActivityPub spec says that a byte is nine bits, it's exceeded its authority.  cwebber wants to treat it like a secret handshake because cwebber is a greasy illiterate dingus and this is network software:  fuckups take years to resolve."Accept:" is intended for content negotiation, not like a secret handshake like cwebber seems to think:  the idea was initially that a server can represent content in several possible forms, clients say which forms they prefer and indicates preference, the server tries to give the client one of its preferred forms.  Support for parameters *besides* preference was explicitly dropped, so the ActivityPub spec if not just broken, it fails to comply with an obsolete version.  You sure as hell don't put some stupid fucking XML-style wank in there where you cram a *namespace* into the Accept header.  Dear god, I haven't seen a worse idea than ` The client MUST specify an Accept header with the application/ld+json; profile="https://www.w3.org/ns/activitystreams" media type in order to retrieve the activity.` in forever.Ahem.> How do you prefer it to be written?If I were writing it, I'd leave it out:  you take it as read that if they are doing web server software, they should be following HTTP's semantics.  Maybe a "See also RFC 9110 sections 8.3, 12, and 15.5.7" or something.  You don't specify that the client MUST send some value for the Accept header, you take a well-formed HTTP message from the client, the semantics are in the spec for what you've got to do when the message is well-formed but semantically wrong, and you've not broken anyone's clients as long as you stick to the spec.  So you say what the server should do in case the message is well-formed but the semantics specify something the server can't do, and you refer to the other specs for semantics and behavior of lower layers instead of re-specifying it.Again, you know, you're the one putting in the work so take anything I say about as seriously as is warranted:  here are my thoughts.> Maybe there's a better way to provide location hints,Well, I think, like, you embed the location hints in the user's profile but you expect that if someone has the object, then they can figure out how to get the user.  You don't get an object out of context, it's part of someone's stream.I think maybe "how the URI is constructed and how it should be interpreted semantically" should probably be a different document.> How do you process Update activities then?Updates update the Actor, and those are trivial, because the actor's metadata is a slot, not a stream.  Other stuff, longer answer, and food is ready.
       
 (DIR) Post #AnRepP1scninRT21tA by silverpill@mitra.social
       2024-10-27T22:09:36.396418Z
       
       2 likes, 0 repeats
       
       @p @frogzone @jeffcliff @feld Thank you, this is a useful feedback. I'll adjust the FEP
       
 (DIR) Post #AnRfWJiOG8FdPbNXRw by silverpill@mitra.social
       2024-10-27T22:17:43.215781Z
       
       2 likes, 0 repeats
       
       @feld @frogzone @jeffcliff @p Projects that implement FEP-8b32 are already using Ed25519 keys (most notable of them is probably Hubzilla).Some other developers are also considering Ed25519, either for embedded (FEP-8b32) or HTTP signatures (RFC 9421).>MastodonMastodon too: https://github.com/mastodon/fediverse_auxiliary_service_provider_specifications/pull/27/files#diff-2caefb0fa42bedec7feb2490de59da44151d6e5e98fbab4640495535229b079cR65
       
 (DIR) Post #AnRh12YEDx4t6tq6Gu by silverpill@mitra.social
       2024-10-27T22:33:04.089103Z
       
       1 likes, 0 repeats
       
       @feld @frogzone @jeffcliff @p The way of Mastodon
       
 (DIR) Post #AnRwR9mjRwDwO5XDMm by j@shitposter.world
       2024-10-28T01:27:43.858906Z
       
       1 likes, 1 repeats
       
       @p @i @feld @mint @KuteboiCoder In no way impossible
       
 (DIR) Post #AnT6xx3wxtfjBapBz6 by mint@ryona.agency
       2024-10-28T15:00:24.033917Z
       
       1 likes, 1 repeats
       
       @fluffy @p @i @feld @j @KuteboiCoder Except I believe there's no user-facing instructions to put and retrieve something specific from the cache, at least on x86.
       
 (DIR) Post #AnT7KkSbzByklGEL68 by Inginsub@clubcyberia.co
       2024-10-28T15:04:29.050310Z
       
       3 likes, 1 repeats
       
       @mint @fluffy @i @feld @p @j @KuteboiCoder there's prefetch, but you're more likely to lose performance by using it. (also, L3 may be enough to run the bare system but not if you want to do anything fun, save for 1k demos and such)
       
 (DIR) Post #AnTBLQrWjj0y5KSwUK by mint@ryona.agency
       2024-10-28T15:49:27.770021Z
       
       1 likes, 1 repeats
       
       @fluffy @i @feld @p @j @KuteboiCoder Fidonet died with the spread of broadband as all the restrictions that made it what it was became irrelevant. I guess you could make do with something like LoRaWAN, e.g. https://markqvist.github.io/Reticulum/manual/, but the issue of gaining a critical mass of users remains.
       
 (DIR) Post #AnTBkR0JLZ1XlQUqNE by p
       2024-10-28T15:54:00.622247Z
       
       5 likes, 0 repeats
       
       @silverpill @feld @frogzone @jeffcliff > It is a Mastodon-compatible FEP-ef61 actor that is managed from a client. [ https://codeberg.org/silverpill/fep-ae97-client ]That is awesome.>  Other stuff, longer answer, and food is ready. I don't have an answer for Edits; I don't plan to support them initially, maybe ever.  I don't think it's a good idea.  But the way a Delete works internally versus how it tries to convey this to the network, like, your activity stream is a list, as much as is needed can be backfilled, but deletion is O(n) for the actor doing it and O(1) for everyone else.  I'm not sure what's a good way to convey that back and forth to fedi, you know, I don't wanna get stuck processing some Delete-flood from someone with 400k Creates on some masto instance.(I think I had other stuff to say here but I don't remember.  Weekend before Halloween, couch, bourbon and pizza, woman, Dawn of the Dead, Day of the Dead, really great movies (the remakes sucked).  Anyway, fell asleep on the couch, put on I forget what, and cannot remember what I was supposed to put in this box.  Rather than feeling refreshed after a day off, I feel sluggish and off my game, so I figure weekends and vacations are for suckers.)
       
 (DIR) Post #AnTCf9TdBVcfuXFuDY by ins0mniak@majestic12.airforce
       2024-10-28T16:04:10.315517Z
       
       4 likes, 1 repeats
       
       @p @feld @silverpill @jeffcliff @frogzone
       
 (DIR) Post #AnTDHROl0AJUUtEXDM by i@declin.eu
       2024-10-28T16:11:09.957241Z
       
       4 likes, 1 repeats
       
       @mint @fluffy @feld @p @j @KuteboiCoder >critical mass of usersNUCLEAR
       
 (DIR) Post #AnTDanHTrnVnrp3fTU by p
       2024-10-28T16:14:40.690049Z
       
       3 likes, 0 repeats
       
       @feld @frogzone @jeffcliff @silverpill > We'll do ed25519 if it's gonna actually stick.Well, it's not too much trouble from my end to support verifying signatures using another key type.I do not have strong opinions on the keys in use (because it doesn't make a huge difference and will change every few years), just that the old ones stay supported indefinitely.
       
 (DIR) Post #AnTHETyVMhjFR6nb72 by iamtakingiteasy@eientei.org
       2024-10-28T16:55:26.743439Z
       
       1 likes, 0 repeats
       
       @p @feld @silverpill @jeffcliff @frogzone Proper fedi storage should be partitionable and replicatable, so that O(n) could be brought closer to O(1), granted storage nodes are added as number of partitions increases; and storage scheme allows rebalancing for shorter partitions as partition size increases. Cassandra/Scylla comes close, doing perfectly the first part, but all schema rebalancing has to be manual and designed to be deferrable, which demands from every mutating query not to only be aware of various inverse indices it must maintain to support various queries, but also up to two current partitioning schemes: one online and it's potentially present successor with more granular partitions, that is currently being populated.
       
 (DIR) Post #AnTHNY4HW4HQjlp98q by p
       2024-10-28T16:57:06.271860Z
       
       2 likes, 0 repeats
       
       @silverpill @frogzone @jeffcliff @feld I'm glad to be of use; I hope to be of more use when my shit's out the door but as things stand I gotta hack on that and find a dollar and I'm a bit pressed for time.
       
 (DIR) Post #AnTIaX1smziREbSNLU by p
       2024-10-28T17:10:39.358397Z
       
       1 likes, 0 repeats
       
       @j @KuteboiCoder @feld @i @mint 9600 8N1 > TCP/IP
       
 (DIR) Post #AnTK1WTd3F0zIHrw2q by p
       2024-10-28T17:26:44.336334Z
       
       1 likes, 0 repeats
       
       @ins0mniak @feld @frogzone @jeffcliff @silverpill Those are nice, she's cute.
       
 (DIR) Post #AnTP54VDV7C1Si7hT6 by p
       2024-10-28T18:23:24.318245Z
       
       1 likes, 0 repeats
       
       @iamtakingiteasy @feld @frogzone @jeffcliff @silverpill > Proper fedi storage should be partitionable and replicatable, so that O(n) could be brought closer to O(1),Well, I have already built a content-addressed storage system and a means of replicating that storage, but somewhere you have to keep something that allows you to enumerate the activities of an account.On top of the storage, whatever the storage *is*, you're going to end up with operations that are not O(1).  I'm modeling a stream as a list because it is easy to build a linked list on top of a CAS system, it's easy to propagate an account's data, it's easy to backfill on-demand, etc.  Common things are cheap:  adding a post is O(1), attaching a file is cheap.  There's stuff that's going to be slower, though, and there's not a way to pick the optimal side of every trade-off.In general, it's better to move the cost to whoever is doing something expensive:  on Mastodon, you click "Delete" and that's very easy but this is O(n*m) outgoing reqs for your server and O(n) incoming Deletes for m servers.  If you delete something from an immutable linked list, that's going to be O(n) and verifying a signature and keeping track of a sequence number if O(1) for the receiving server and this is about as cheap as I can make a delete.  (Technically, that is just the worst-case.  The implementation of a linked list here is more or less an n-ary tree, right, so if you are removing something and creating it was within the last 64 activities you performed (this is a knob, this can be changed at runtime), then it's O(1), you just pull it out and sign the new head of the list.)> Cassandra/ScyllaI'd read your proof of concept with interest but the big problems right now aren't efficient partitioning, but I think that what you are talking about is not related to the problem I'm solving.
       
 (DIR) Post #AnTfQGpVYvhhukuEtM by iamtakingiteasy@eientei.org
       2024-10-28T21:26:29.826036Z
       
       3 likes, 0 repeats
       
       @p @feld @silverpill @jeffcliff @frogzone Yeah, unfortunately even if you partition everything, O(n) would creep up on object<->users relationship, such as timelines and user interactions with the object. But you could at least defer those operations if queries are designed to handle absence of referenced object, essentially shifting that O(n) overhead towards background maintenance tasks that are compacting storage, improving performance and refreshing timelines, but not essential to consistency. Main issue with partitioning though is unevenness and dynamic nature of fedi; one instance may be announcing one activity per year, another may be announcing thousands a day; and those can change over time. But it all seem to be on instance boundary, so a domain/authority (in case of portable objects)/owner (in case of AP collections) seem to be a solid segregation key between varying dynamics.With Scylla/Cassandra you'd have a partition key which defines which partition row goes to and sorting key, which defines row ordering within the partition.  Since I mostly see just two partitioning schemes- hash partitions (for everything IRI identified and also unordered AP collections)- time partitions (for timelines)All stored objects must have internal time-ordered ID as well as IRI in order to be convertible between hash and time collections on O(1) basis.A part of partition key must be the partitioning generation and and a partition bucket- for hash: bucket = H / (H_max/(2^generation)); where H is a hash value and H_max is the maximum value of a hash function- for time: bucket = T / 2^generation; where T is the associated timestamp.This allows fitting neatly (mostly) single-partition collections such as object likes as well as  potentially huge collections such as all instance' objects.Current/pending generations as well as latest buckets for time-ordered collections would have to be tracked in own index.Timelines are indeed best represented as time-ordered linked partitions, allowing immediate timestamp/time-ordered id conversion to a corresponding partition. Scylla/Casandra however are terrible at dealing with short-lived objects, so for durable queues, something like nats seem to be most reasonable choice. Preliminarily, a supposed schema:-- genbucket is a generation counter + partition bucket, two 64-bit values essentially-- actors collection, unordered, hash-partitionedcreate table if not exists actors (  genbucket         blob,  key               text, -- domain/authority  actor             text, -- IRI  data              text, -- actor content  id                blob,  email             text,  username          text,  password_hash     text,  private_key       text,  settings          map,  attributes        map,  followers_count   int,  following_count   int,  confirmed         boolean,  locked            boolean,  created           timestamp,  updated           timestamp,  posted            timestamp,  seen              timestamp,  primary key ((genbucket, key), actor)) with clustering order by (actor ASC);-- items collection, objects/activities/links/etc. unordered, hash-partitionedcreate table if not exists items (  genbucket         blob, -- partition of hash of item ID  key               text, -- domain/authority of item IRI  item              text, -- item IRI  data              text, -- item content  id                blob, -- item internal time-ordered ID  context           text,  list              text,  visibility        tinyint,  actor             text,  reply_to_item     text,  reply_to_actor    text,  replies           int,  shares            int,  likes             int,  reactions         int,  sensitive         boolean,  pinned            boolean,  media             boolean,  tags              frozen>,  recipients        frozen>,  created           timestamp,  updated           timestamp,  primary key ((genbucket, key), item)) with clustering order by (item ASC);-- internal ID lookup secondary indexcreate index if not exists items_id on items(id);-- generic collections, e.g. actor likes/blocks/follows/etc. unordered, hash-partitionedcreate table if not exists collections (  genbucket         blob,    -- partition of hash of a target  key               text,    -- actor, typically  type              tinyint, -- collection type  element           text,    -- collection element  hash              bigint,  -- hash value  data              text,    -- collection element data  created           timestamp,  primary key ((genbucket, key, type), element)) with clustering order by (element ASC);-- timelines, time-ordered and time-partitioned collection of itemscreate table if not exists timelines (  genbucket            blob,    -- partition of item internal time-ordered ID  key                  text,    -- actor/tag/public  type                 tinyint, -- timeline type, inbox/outbox/liked/bookmarked/notifications  id                   blob,    -- item internal time-ordered ID  nav_type             tinyint, -- bucket navigation type, 0 - data (regular entry), 1 - older bucket (first entry in a partition, unless it is first ever), 2 - newer bucket (last entry in a partition, unless it is the latest)  nav_bucket           bigint,  -- in case of nav_type 1/2 -- genbucket's bucket ID  activity             text,  activity_actor       text,  activity_type        text,  item                 text,    -- item IRI  item_context         text,  item_visibility      tinyint,  item_actor           text,  item_reply_to_item   text,  item_reply_to_actor  text,  item_type            text,  item_reply           boolean,  item_share           boolean,  item_media           boolean,  item_tags            boolean,  item_recipients      frozen>,  created              timestamp,  primary key ((genbucket, key, type), id)) with clustering order by (id DESC);-- generations indexcreate table if not exists generations (  repository          tinyint, -- repository type, items/collections/timelines  key                 text,    -- key from the repository,  type                tinyint, -- type from the repository, can be zero (unknown)  current             bigint,  -- current generation  pending             bigint,  -- pending next generation  current_last_bucket bigint,  -- current generation's last bucket, only relevant for time-partitioned repositories  pending_last_bucket bigint,  -- pending next generation's last bucket, only relevant for time-partitioned repositories  primary key ((repository, key, type)));
       
 (DIR) Post #AnTgSWm3LwABtjvjcm by iamtakingiteasy@eientei.org
       2024-10-28T21:38:07.285371Z
       
       2 likes, 0 repeats
       
       @p @feld @frogzone @jeffcliff @silverpill Oh, and with deference on high-level *-to-many operations, you could also batch changes on same partitions, and avoid doing some things entirely if two subsequent actions happen to cancel each other out, besides the obvious IO rationing.
       
 (DIR) Post #AnUEHGI5h4jW23iPAW by p
       2024-10-29T03:57:03.863907Z
       
       2 likes, 0 repeats
       
       @iamtakingiteasy @feld @frogzone @jeffcliff @silverpill Oh, man, this could use some line breaks.  I don't know what happened.  Probably some difference between how bloat renders shit and how Pleroma does; Pleroma respects the whitespace even if you have made the post type HTML, that is probably what happened.> But you could at least defer those operations if queries are designed to handle absence of referenced object, essentially shifting that O(n) overhead towards background maintenance tasks that are compacting storage, improving performance and refreshing timelines, but not essential to consistency.See, the way I'm doing it, there is no compaction needed:  it's content-addressed storage, it's self-compacting.  There could be a garbage collection step; that's going to be tricky the way the data is structured on-disk right now, but I'm not using an external database server.> Main issue with partitioning though is unevenness and dynamic nature of fedi; one instance may be announcing one activity per year, another may be announcing thousands a day; and those can change over time. But it all seem to be on instance boundary, so a domain/authority (in case of portable objects)/owner (in case of AP collections) seem to be a solid segregation key between varying dynamics.In this case, I don't have to worry about these things:  I can just rely on the properties of cryptographic hashes for partitioning.> With Scylla/Cassandra you'd have a partition key which defines which partition row goes to and sorting key, which defines row ordering within the partition.Yeah, I mean, I don't have rows:  I have modeled a stream as a list.  I haven't done a list as rows in a regular RDBMS or in Cassandra or Mnesia or MongoDB or BigTable.  I'm doing something a little closer to venti:  http://doc.cat-v.org/plan_9/4th_edition/papers/venti/ .  There's a discussion of how the blocks are put together, you can actually walk down the individual blocks for any of the media or emchijos on FSE (because it's been serving them for a while), here's the explanation:  https://fsebugoutzone.org/notice/AnGc6MOGfUsuVOsblQ .  Metadata (e.g., the amount of zero-padding, whether or not the block is compressed, etc.) is shifted up from the data block to the pointer block so as to make the slush opaque and facilitate hash collisions (which are a good thing in this case).So that's the primary data store and I've cycled through a few ways of representing that on disk, and then there's a kind of trivial K/V store that handles application state:  here's this actor's URL, here's the block that represents the head of the stream for that actor, here's the sequence number, here's the block that this data came from, and these are all just SHA-256 hashes, the bulk of the data is stored like that.Consequently, I mean, sure, Cassandra is fun stuff but I'm not sure what it's got to do with anything.  Partitioning isn't really necessary, the performance is great for regular use, it handles large files and timelines nicely, it's pretty space-efficient, What I'm doing with likes, etc., right now is an activity has a unique identifier, those are checked as needed in the K/V store.  It's also a bit late in the game for me to be making that kind of architectural design change (and a self-contained thing works great on Plan 9, where I am doing the development, but I don't think anyone's bothered to port the JVM to Plan 9; JVM is a dealbreaker for me anyway, I'm not going to touch the JVM unless someone's paying me to touch the JVM).> Preliminarily, a supposed schema:I mean, you could if you were writing a server.  I've basically designed this entire thing around content-addressed data storage, I took a cue from Pleroma and mostly keep the data in its AP representation (I do a little normalization but I try not to lose data), I hang some metadata off it, this stuff's all fetched on demand, and as long as the blocks have propagated to the network, you can blow your entire node away, keep the K/V bits and your private keys (although nearly everything in the K/V store can be recreated), and you're fine.  The idea was P2P fedi and there's still work left but it's worked out fine so far.  It's basically meeting the design goals and exceeding some of the goals I had for a first draft.  I didn't expect it to be as fast as it is, for one thing.  I don't have a huge amount of interested in cloning Pleroma:  there's already a Pleroma.  If I'm making something, I'd like it to run on Plan 9, so the thing I made runs on Plan 9.  I'd like it to be P2P and free me from administering FSE, so it is P2P and will free me from administering FSE.What you've got for the schema, that looks reasonable at a first pass (but you may want to consider reifying threads; threads are not first-class in Pleroma and this has made hellthreads slow to load).  Maybe you should take a pass at it.
       
 (DIR) Post #AnUTcqb9OhYg20Ngqu by iamtakingiteasy@eientei.org
       2024-10-29T06:49:01.010605Z
       
       1 likes, 0 repeats
       
       @p @feld @silverpill @jeffcliff @frogzone Aww, damn. Yeah, its a complete mess in bloat. Edited that post to make it more palatable in both frontends. Guess you can't have code blocks together with proper paragraphs without jumping several hoops.My main concern is: what implementation is going to do when resources of a single server are no longer sufficient to continue serving the collection it owns; be that space, IO, CPU time, network bandwidth or other constraints. When there are millions of local users, thousands of likes and emojis on a single post, more interactions than iops of single server could allow, it is no longer feasible to have everything in one place.Thats where partitioning of storage system and Cassandra/Scylla come into this; they have a very robust implementation of distributing partitions across variable number of nodes in a cluster, also supporting multiple copies for redundancy and a quorum on operations, and of course extensive performance tuning on IO operations. Partitions are kept small enough to be quickly replicated, but large enough to not be a pointer chase, ~100Mb is current golden rule. I suppose you could have another layer that does clustering across multiple storage nodes for larger servers with your approach; but the amount of NIH/DIY stuff on storage level that would need to be tested, debugged and hardened over time somewhat curbs the appeal; and at some point that data structure would also need to be migrated to support additional metadata/indices somehow too, which would require extra tooling to be debugged and tested. Also a bunch of small hierarchical blocks does seem as IO hazard.Some of the properties are cool though, it certainly provides decent data resilience and message consistency by storing everything together, being able to reconstruct entire post together with all of it's attachments; and intrinsic data deduplication is nice. I just figure AP is already a huge mound of logic with ungodly amount of corner-cases that nobody could even fully tackle yet, so maybe focusing there would be more efficient. Also Scylla is c-pl*s-pl*s, which may be even worse for compiling or hacking yourself, and doubt anyone tried porting it to plan9 either, but at least it does not share the JVM runtime issues of Cassandra.> you may want to consider reifying threads; threads are not first-class in Pleroma and this has made hellthreads slow to load> Maybe you should take a pass at it.Good point, threads could very well be given their own time-ordered collection for faster general lookups.
       
 (DIR) Post #AnVqyHXGvqJZlGiUhU by p
       2024-10-29T22:45:20.479893Z
       
       1 likes, 0 repeats
       
       @iamtakingiteasy @feld @frogzone @jeffcliff @silverpill > Guess you can't have code blocks together with proper paragraphs without jumping several hoops.I just take the obvious approach and wrap them in <p>s or add <br>s; some front-ends end up double-spacing them.  C'est la guerre.> My main concern is: what implementation is going to do when resources of a single server are no longer sufficient to continue serving the collection it owns;Well, in my case a server doesn't "own" any of the data and any other server can pop in to do its job, and ideally you run a peer instead of using an external server.  The only actually scarce resource is domains and they're not resource-constrained.> it is no longer feasible to have everything in one place.I think we passed that point.> Thats where partitioning of storage system and Cassandra/Scylla come into this;Well, my solution is a distributed CAS system distributed over a P2P network instead of trying to roll out a massive deployment of trusted nodes that you control.  Single-machine performance on Revolver is way better than I expected (though write-heavy loads were disappointing) but the point is to not have a single machine, any sort fo single point of failure.  You're trying to scale up the number of users per node, I'm trying to solve a completely different set of problems:  I'm eliminating the handshake problem, the censorship problem, the storage problem, I'm trying to eliminate admins (and thus the split between an admin and a regular user as well as the problems that come with being an admin, because I just want to hack and run the pipes and I hate the presumption that I am responsible for something another adult says).  Luckily for me, it's faster (among other technical benefits), but even if it was *slower* I would still prefer something that solved those problems.  You're talking about using a tail for ballast and I'm making a slime mold, not a brontosaurus.> but the amount of NIH/DIY stuff on storage level that would need to be tested, debugged and hardened over time somewhat curbs the appeal;There's plenty of DIY but there's no NIH; I am deliberately cribbing from well-understood technologies, as noted in the initial announcement.  I can go read shit Ken did in the 70s or /sys/src on Plan 9 or go trawling papers HPC guys wrote in the 90s:  whatever I am doing, someone else ran into the same problem three decades ago and they had a slower machine than I have.Either way, I'd be delighted if there was less that had to be built, but as far as I can tell, no one is doing what I want done and if I had known that was going to be the case, I would have started sooner.  (I had initially just assumed I could make a small layer on top of IPFS but IPFS is complete shit, as noted upthread.)  I am building what has to be built in order to accomplish what I want to accomplish.> at some point that data structure would also need to be migrated to support additional metadata/indices somehow too,That's already done.  Like I said, it's a bit late in the game to make big changes to the architecture.> Also a bunch of small hierarchical blocks does seem as IO hazard.It has been handling FSE's load in real-time, serving large files as well as the /objects/$id endpoint.  The dashboard's mostly focused on the ingestion process but you can watch this stuff work in real-time:  http://pbuhwjjhrzcvrghtfqlwqlgabuzc7jnkqv4swekxjvv7pgubd7jjoiqd.onion/public-dashboards/8643a3beee524385bd0ef6a304dbbd65?orgId=0&refresh=6s (or grab the raw stats yourself, it's /rvl/stats or /rvl/prometheus on any of the publicly accessible nodes).  You're telling me this stuff is going to be tricky to pull off and it's already pulled off and handling real load.  I deliberately exploited the hellthread DDoS bug ( https://git.pleroma.social/pleroma/pleroma/-/issues/2765 ) for load testing, it comfortably sustained as many requests per second as I could get fedi to throw at it (800, 900, I forget, but over 800 and I think under 950; I posted screenshots at the time), and single-node performance is like a side-quest, you know?> I just figure AP is already a huge mound of logic with ungodly amount of corner-cases that nobody could even fully tackle yet, so maybe focusing there would be more efficient. Yeah, that's a real thing.  I'm already way down this road, because this road caught my interest and at the end of it is the solution to the problems that I want solved, so that's what I'm doing.  I'd like to make single nodes irrelevant, I'd like to seep through the cracks when censorship occurs, I want fedi to be impossible to stop.You know, I decided it was a more urgent task when neckbeard.xyz went down, so I had that on my mind, you know, the reliance on domains created a large amount of work, and the centralized hosting problem is a threat, especially, if we're talking about internet censorship.  But you can't kill a thing that is hosted nowhere, you can't pressure a node operator to do something if they actually *can't*, you can't censor a thing that can assemble itself from nothing anywhere on the earth.  And now bae.st is down and I'm using it to rez bae.st and if I pull that off, that'd be a nice bookend for the first draft.> Also Scylla is c-pl*s-pl*s, which may be even worse for compiling or hacking yourself, and doubt anyone tried porting it to plan9 either, but at least it does not share the JVM runtime issues of Cassandra.Ha, the 9front guys agitated until cfront was dug out and its source dumped on the world.  (You might know what it is, maybe most people don't, but cfront was the original implementation of C++, implemented as C preprocessor macros.)Anyway, it's probably easier to clone the JVM than to port a C++ program.  C++ shit doesn't even run on the *same* distribution of the *same* OS once six months have passed.> Good point, threads could very well be given their own time-ordered collection for faster general lookups. IMAP clients seem to know how to do this without any major fuckups.  Even Thunderbird doesn't chug this hard if you try to view a 500-message thread.  So, anyway, I've got threads reified so, at least from the server's side, it's one lookup to get all the IDs instead of a long series of round-trips, and you can grab those in parallel.  Getting the frontend to render it, I don't know, but the static HTML bit that I use for debugging, it's not too far from listserv HTML.