Embed this noticepistolero (p@fsebugoutzone.org)'s status on Wednesday, 29-Oct-2025 17:50:23 JST
pistolero▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒████████▓░▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▓░██▓░██████▓░▒▒██████▓░▒▒▒▒██████▓░▒▒▒▒ ▒▒▒▒██▓░▒▒▒▒▒▒████▓░▒▒▒▒██████▓░▒▒▒▒██▓░▒▒██▓░██▓░▒▒██▓░██▓░▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒██████▓░████████▓░██▓░▒▒██▓░██▓░██████▓░▒▒██████▓░▒▒▒▒████▓░▒▒▒▒▒▒ ▒▒▒▒██▓░▒▒▒▒██▓░▒▒▒▒▒▒██▓░▒▒██▓░██▓░██▓░▒▒██▓░██▓░▒▒██▓░▒▒▒▒▒▒██▓░▒▒▒▒ ▒▒▒▒██▓░▒▒▒▒▒▒██████▓░▒▒██████▓░██▓░██████▓░▒▒██████▓░▒▒██████▓░▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒ You are not expected to understand this. ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
[Okay, this one also has help for the new features, but everyone knows what "follow" and "unmute" and stuff do so it's hardly worth interjecting again BUT I WILL DO THAT BECAUSE I CAN.] fedibbs-2025-10-29_0846.tgz
@pernia It's text-based, not "terminal-based". You wanna look at an image, hget(1)/page(1) or curl(1)/qiv(1), depending on how much your operating system sucks.
@pernia So that, when I use the client on Plan 9, I will just see a bunch of bullshit escape codes and gibberish, plus I have to have the client actually attempt to fetch attachments and then I get to write a bunch of mitigations for how shitty the web is? No thanks, man. It's easy to view the images: you just highlight the URL and then use the plumber. it_can_do_attachments.png
A quotation circulates on the Internet, attributed to me, but it wasn't written by me.
Here's the text that is circulating. Most of it was copied from statements I have made, but the part italicized here is not from me. It makes points that are mistaken or confused.
> I'd just like to interject for a moment. What you're referring to as Linux, is in fact, GNU/Linux, or as I've recently taken to calling it, GNU plus Linux. Linux is not an operating system unto itself, but rather another free component of a fully functioning GNU system made useful by the GNU corelibs, shell utilities and vital system components comprising a full OS as defined by POSIX. Many computer users run a modified version of the GNU system every day, without realizing it. Through a peculiar turn of events, the version of GNU which is widely used today is often called “Linux,” and many of its users are not aware that it is basically the GNU system, developed by the GNU Project. There really is a Linux, and these people are using it, but it is just a part of the system they use.
> Linux is the kernel: the program in the system that allocates the machine's resources to the other programs that you run. The kernel is an essential part of an operating system, but useless by itself; it can only function in the context of a complete operating system. Linux is normally used in combination with the GNU operating system: the whole system is basically GNU with Linux added, or GNU/Linux. All the so-called “Linux” distributions are really distributions of GNU/Linux.
The main error is that Linux is not strictly speaking part of the GNU system—whose kernel is GNU Hurd. The version with Linux, we call “GNU/Linux.” It is OK to call it “GNU” when you want to be really short, but it is better to call it “GNU/Linux” so as to give Torvalds some credit.
We don't use the term “corelibs,” and I am not sure what that would mean, but GNU is much more than the specific packages we developed for it. I set out in 1983 to develop an operating system, calling it GNU, and that job required developing whichever important packages we could not find elsewhere.
@p on more serious note id rather have my server compromised than client. i dont store sensitive info like my college assignments or flash games on the server, its all on my computer
@pernia > id rather have my server compromised than client
This client is designed to be deployed to a server or to run in single-user mode.
> i dont store sensitive info like my college assignments or flash games on the server, its all on my computer
You can sandbox a client, but you can't really take Pleroma and sandbox it such that it no longer has access to its own DB. My Plan 9 dev machine gets compromised and all that happens is someone can download my code. They'd have to compromise the Plan 9 machine *and* the venti server in order to actually do anything serious. Someone gets inside FSE, and I never hear the end of it.
@rose Oh, shit, yeah, I've seen that one; it's a bug that happened in bloat a couple of times. Basically, Go's time parser gets upset at a blank value and the JSON parser doesn't cope and just throws an error instead of sending back January 1, 1970 or something.
r's upstream fix was something similar; I forget what he did, though. So I will probably end up (or if you feel like doing it) doing something similar.
@pernia That would be fun. It's probably the most usable client over a dial-up line. It now does everything the old Pleroma BBS code did, plus it handles multiple accounts, attachments, automatic interjections, paging for timelines/notifications (independent and resumable), scope, subject lines.
It's basically the perfect goddamn text-based client and it took less time to write than most other clients take to learn to use.
@judgedread It is exactly like that, yes. :thejesus:
This code makes even the most terrifying hellthread load properly on a AA-powered "laptop" from 1983. (Photograph is of the old BBS client done by lain and hacked up by me; this is the new client, which is standalone and not subject to vulnerabilities in the ssh protocol, because it doesn't speak the ssh protocol; it leaves that to sshd.) likethat.jpg
@romin :bigbosssalute: Hope it is fun. It's a bit of a mess in there because this is a side-side-side-side project but it is usable as a main client as of today, when I implemented follow/unfollow/block/unblock/mute/unmute/etc. I think the only things that bloat does that this code does not do are polls and thread muting.
@p well now that I think bloatfe can't create polls, only display and vote, I might add pool creation to my private fork (probably, surely, eventually)
@romin Bloat can vote in polls but can't create them; this client doesn't display them properly (probably), doesn't create them, doesn't have a way to vote in them. I guess either someone will write it or I will see a poll that I want to vote in and I will write it.
@romin Ha, you should try this one out. It can page timelines independently. You can do like this:
1> cares # Shows notifications. 2> twkn # Shows TWKN 3> d cares # Shows if there are any notifications since the last time. 4> d # Defaults to using the same thing to paginate, so more notifications. 5> d twkn # $pagesize new notifications of twkn 6> d # Still on twkn.
It's a thing I wanted to do when I saw the context bucket that the Pleroma BBS tossed to each function call, like it seemed like you could do this sort of thing. But I only hacked on it sporadically, I never tried to think how I'd wanna structure pagination. This, because I wrote it from scratch, I sort of structured the skeleton around the stuff I wanted to do, so it was obvious how to do it before I actually implemented it.
@romin Oh, and one thing it does that most clients can't do is it caches pretty aggressively. So you fetch a page of notifications and it doesn't have to hit the server to view the bio of the person that notified you; PleromaFE does this kind of caching, but I think it's the only other one. This makes the client much faster than it would be otherwise. The cache also caches by URL, post ID, notification ID, etc., fetches from the relevant endpoint if it doesn't have a cached copy, so you can `R https://url.to/some/post/ecc8ab7d-75d8-4072-a7f8-e01f7b8d2778` and Pleroma will actually federate the post if it doesn't have it, which makes it a lot easier to switch between accounts to reply to posts, like you're browsing on an alt and you see something you wanna reply to.
@p yeah what you did in bloat seems to be the only real option, made a patch where the UTime stuff is added to fedibbs, feel free to edit it if you see anything wrong
@rose This shit ain't nothin' to me, man. My money longer than James Cameron. On and off the court, straight fundamentals. No funny business. This shit ain't nothin' to me, man. Movin' like Dracula, we get it back in blood. You see it? I really did this. I'm really him. Flipped a whole brick into an empire, stop playin with me. I have no sympathy. I live for this shit. This shit ain't nothin' to me, man. I'm nice with it. Ha, ha! My money long. My pockets deep. No pocket-watchin' in these parts. We straight gassin', cuttin' straight to the bricks.
[Shit, I messed up the paste. I did have to make one tweak, that status display had to call the function. This didn't have to happen in bloat because the template code uses reflection to figure out what kind of value it's dealing with and if it's a function, it just calls it, but fmt.Sprintf() doesn't have that kind of thing.] fedibbs-2025-10-29_1309.tgz