NPS LIVE BOARD FOR BRAVE HEROES - port 1915 # Tue Jun 3 00:27:08 CEST 2025 Online hero! => /037/ How to write something on the board => /bin/board-001/ Previous archived board # Tue Jun 3 00:59:30 CEST 2025 Purged noise everywhere. Simplified a lot. If something is fucked up, as always, let me know dear hero. morena # Tue Jun 3 00:59:50 CEST 2025 Cleanliness of board is godliness. # Wed Jun 4 14:49:45 CEST 2025 IanJ, since you envy my fruity machine, I'm offering you my HP T520 again, completely free, as compensation. Just drop me an address. morena # Thu Jun 5 00:00:14 CEST 2025 Thanks for the offer of the T520 but I will stick with the T620/630. IanJ # Thu Jun 5 21:27:29 CEST 2025 Look what youtube.com said me today. - Ad blockers are not allowed on YouTube It looks like you may be using an ad blocker. Ads allow YouTube to be used by billions worldwide. You can go ad-free with YouTube Premium, and creators can still GET PAID from your subscription. Allow YouTube Ads Try YouTube Premium Not using an ad blocker? Report issue - Note: if you are browsing the web in your terminal you probably don't see it ;/ morena # Fri Jun 6 02:16:14 CEST 2025 I'll tell you my secret to avoiding youtube adds: => gopher://codemadness.org/1/idiotbox.cgi I search for what I want, then I expose the link using '='. For me, because I can click on links in the terminal, I just click on the top link which opens in mpv. However, the embed links seem to work also in an ordinary web browser and don't seem to display adverts; I just checked it. I don't disapprove people making a living but youtube adverts have gone from one advert per video to numerous and it totally ruins the experience. IanJ # Fri Jun 6 09:16:12 CEST 2025 I did not see advert on youtube for decade. I use uBlock Origin in Firefox. That nonsense just somehow starting to pop up on me yesterday when I open youtube.com. But when I close it, all works like before. Btw. congratulation on your ritual to check some youtube video. Maybe you can pipe it over IRC ;/ I can't use mpv, it's huge bloat. I am minimalist, I just use Firefox ;/ morena # Fri Jun 6 13:38:24 CEST 2025 mpv 6.67MB vs firefox 310MB (on OpenBSD 7.6). I was surprised to see that ungogled-chromium is even bigger 432MB, bigger even than normal chromium 408MB. How is it that less google crap translates to a bigger program? Web browsers are the apex of bloatware, they are practically an operating system in their own right with so much built in functionality for viewing various file types. Unfortunately we are in denial if we say we don't use them. Maybe you are right in your acceptance of them and to use them to their fullest, rather than try to leverage individual specialist applications. Personally I just feel dirty using them when I don't have to. IanJ # Fri Jun 6 14:43:07 CEST 2025 That is not really helpful number. Firefox has huge dependencies, like mpv. I think they are relatively same size, Chromium just includes most of things inside. A lot of software is like that, vim editor too. Packages itself may look light, but they need shitload of other software to run. Also that funny thing, that most clones are usually even bigger than original. Regular software today, every change just adds more bloat. morena # Sat Jun 7 01:59:02 CEST 2025 Reading this will give you vi superpowers: => gopher://gopher.icu/9/files/edtut.pdf IanJ # Sat Jun 7 09:56:30 CEST 2025 It did not. morena # Sat Jun 7 13:54:21 CEST 2025 Interesting. I learned a lot about how vi is meant to be used or maybe I have just been using it incorrectly from the beginning. More as a graphical editor than string search and replacement. Obviously YMMV. IanJ # Sat Jun 7 21:27:32 CEST 2025 Notice: You sent something and found stupid typo or something fucked up? Just send me correct message over port 1925 privately or even repost your correct version and I will silently replace it. morena # Sat Jun 7 22:10:41 CEST 2025 Similar pop up nonsense showing now even on google. That junk always wants now to confirm those choices for cookies. Even when Ublock Origin off. Probably if third party cookies off. They try to get me, they will fail. morena # Sun Jun 8 13:55:45 CEST 2025 "I used to think that online had to be the place where I'd find "my people", given I never found them in so-called real life. *WRONG*! Searching/seeking is a hair's breadth less crock of shit than the idea of one's self." Funny brother how we are excpecting that if we add some layer over shit it will become tasty sweet. Our mind loves to searching out there, always something to do, somewhere to go ;/ Never ever found anything, but still continues. morena # Tue Jun 10 09:55:43 CEST 2025 My only criticism re. Self-host or die is that you are still dependent on an ISP to provide internet connectivity. They too can monitor you and cut you off. In which case are you really any better off than having a VPS? The advantages are no responsibility for hardware. At the time I made the decision to migrate to a VPS it was also cheaper than the electricity cost of running my own server. I can also move house or make changes to my local infrastructure without downtime. Because I host a couple of third party sites I don't want downtime. One of my reasons for taking up amateur radio is that with the HF bands you have practically global coverage and there is no middle man. I own a radio and if another also owns a radio there is nobody between that can prevent your radio waves from travelling to the other side of the earth. This is why BBC long wave radio transmissions were restarted at the outbreak of the Ukraine war when Russia actively started blocking access to external news sources. IanJ # Tue Jun 10 18:28:15 CEST 2025 There is always some master in this system. ISP, electricity, water, your house can be taken from you tomorrow and you can't do anything about that. They can even take your life legaly if they decide. But. What you mentioned like cheaper, this and that. Yes, that's the case with everything. Gmail, Whatsapp and so on. You get comfort, convenience and more dependence from some master. Today there are many services relatively cheap. All kind of subscription models, something is "free", something for few EUR. All of it takes freedom and independence from you. They made system like that. It's cheaper to buy some hormone and chemical filled chicken meat than to have 20 chickens in the garden. Or easier to buy some clean nice shaped carrots than to plant them in the garden. For sure. We do that every day more and more, system is pushing us. They made their offerings more accessible while much harder to make it on your own with all kind of restrictions and rules. Amateur radio? You even had to make some exames that some master allow you to turn on your radio. Everything can be taken from you, they can destroy your signal like they can cut off your internet access and you will be unable to even delete data from OpenBSD Amsterdam. Or some idiot there just decides he does not like you and turn you off or takes your data. Regarding blocking news sources. There is not such thing. All is propaganda, not news. Good country should block every harmful bullshit coming from other masters. I don't remember one fucking thing that helped me during my whole life from "news". Zero value, lot of harmful noise. Byt ye, I can totally agree with you. It's like that and almost with everything. It's not always easy to justify make things yourself, if somebody out there is offering much better service with lower price and almost zero energy and time needed from you. morena # Tue Jun 10 20:55:10 CEST 2025 I never solved the question about hard wrap lines and length. It resolved itself. Like everything. morena # Thu Jun 12 07:19:41 CEST 2025 Hi, Greetings from Ukraine, from the other side of the wall. I had been thinking about the same thing for some time, when I wrote my "smolweb" browser BFG (with Gopher/Finger/Nex/Spartan/Gemini support), I wrote that Nex essentially is what Gopher should have evolved into in the first place. And I am going to move some stuff from Gopher to Nex for sure. The thing is, Gopher has Bongusta, Gopher Lawn, Quarry and other places that let you be heard. We need some catalogues or search engines for Nex as well. Uncensored, of course. I heard there is some onion Gopher scene, but it's hard to find as well besides several places already mirrored in the clearnet. Regarding self-hosting, things are not as easy as they might seem. You still either depend on your ISP to provide you with an external IP address, or on a VPS provider to tunnel into. For instance, my Nex/NPS servers are going to be hosted on an Orange Pi Zero but I am behind three NATs on a Starlink network. I have no choice but to create an 'ssh -R'-based tunnel into a VPS I already have. Of course, that's a good and privacy respecting provider but still a potential point of failure. The scripts to start and stop a tunnel are kinda fun though: #!/bin/sh SOCKET_PATH=/var/run/sshcontrol.sock TARGET=root@myvps PORT_OPTS="-R :79:localhost:79 -R :1900:localhost:1900 -R :1915:localhost:1915" MISC_OPTS="-o ServerAliveInterval=60 -o ServerAliveCountMax=3" ssh -f -N -M -S $SOCKET_PATH $PORT_OPTS $MISC_OPTS $TARGET #!/bin/sh SOCKET_PATH=/var/run/sshcontrol.sock TARGET=root@myvps ssh -S $SOCKET_PATH -O cancel $TARGET ssh -S $SOCKET_PATH -O exit $TARGET Any ideas on how to further optimize them btw? => gopher://hoi.st My Gopherhole is there at the moment. That will give you an idea what I've been into recently. --- Luxferre --- # Thu Jun 12 11:09:06 CEST 2025 Hey brother, Forget Ukraine, join Slovakia. Ukraine is gone already. I know your Gopher, good writting. NEX needs nothing now, it is as is and it's good. There is no content, NEX servers to catalog or search. If there will be more servers, some search and cataloge is matter of few lines of shell script. Yes, Gopher has many legacy baggage, like anything that is old. Still almost no good content, just empty words here and there. And obviously, most Gopher servers are broken. Pointing to ISP regarding self-hosting is nonsense. Without ISP or internet connection you can't connect even to VPS. So this is not argument. There is always something, owner of store where you buy hardware or electricity company, power plant, country. But nothing is granted. Everything belongs to some master who put rules you have to follow and can allow you to breath or not no matter what rules he previously pushed to you. Looking at things this way would mean we will all use just whatever they throw at us, like gmail, facebook and so. Comfort and convenience are your enemies. God, all the time I see some similar unix shenanigans, socket, ssh, I am closer to write Plan 9 into SD card. And these days I am really close ;/ morena # Thu Jun 12 11:55:08 CEST 2025 Of course I'd flee this place if I could. When I mentioned the wall, I really meant it. The Berlin wall is nothing in comparison. The world has almost no clue about what's really going on here. Maybe they do but also deliberately choose to do nothing about it. Of course, Nex as a protocol needs nothing new but I found your site through Bongusta on Gopher, not through nex://nightfall.city. Ecosystem is what's still missing. Even Tor has Torch and other things that would in theory allow it to survive without clearweb. What I mean is we need to remember how the first Web crawlers/indexers worked: just recursively visiting links and parsing the contents, no fancy stuff. I also liked the idea of the ii/iDEC protocols (and even proposed using Nex as one of their backends as opposed to HTTP(S) but my tiid is the only one implementing this idea AFAIK) and again, there's no way to announce your ii station to the world and add it to the network exchange unless you're already subscribed to some other station. Chicken-egg problem, you know. As for electricity, I've been running my stuff on solar power for about a year now. The Starlink router even has some extra help from a small wind turbine installed near our garage. Yet I can't do a damn thing about not having a direct external IP. I understand that's just how it is but it drives me nuts. Luckily, when moving all stuff from the VPS to a local machine, I can think of the VPS as a more disposable resource because all it needs to have to act as a tunnel endpoint is a slightly modified sshd_config (the "GatewayPorts=clientspecified" and "AllowTcpForwarding yes" lines, to be exact). And it's not that hard to find more or less privacy-friendly VPS providers. Domain name providers are another story: do you know of any decent ones besides Epik? Btw, do you prefer hardwrapped posts on Nex? If so, to which line length? I only do this for Gopher but can run further text through fmt or my own phlow script if really necessary. Also, why Firefox and not Librewolf? --- Luxferre --- # Thu Jun 12 11:57:17 CEST 2025 You may also try 9p. So all crap will run on the VPS, while your files will have safe home under your bed. Or even choose god-mode and run Plan 9 and forget all role-playing on ancient UNIX. Then you either mount /net on orange pi from VPS, so you will use network from VPS or you mount just orange filesystem into VPS. No workaround bullshits, no fuckery. As gods intended. That's how you become real hero ;/ morena # Thu Jun 12 12:15:04 CEST 2025 Ye, world does not give a shit about you. Nobody cares. Most people, very close to 100% have no idea you even exist. So stop worrying about the world. Plan 9 + NEX One writter One reader But true one. No fakery. I was pretty hard about 70 characters length of lines. But. That is artificial limitation and I am trying to get it out of my head. Of course visualy it's nice, all aligned, easy to read. Comfortable, convenient, all nice. Eating snack in the cage. morena # Thu Jun 12 12:44:18 CEST 2025 Depends on what you read with (e.g. BFG wraps the text to the window length), but OK, 70 chars it is. No problem with that. I wrap my phlog posts to 78, but some source code lines are even longer than that. I can install v9fs on a VPS but I can't install full Plan 9 there. Most of them won't even let me install Alpine there. However, do I really need to do that if VPSes are supposed to be disposable and interchangeable? Btw, unlike RPi, OPiZero doesn't have any kind of video output, so how do you imagine installing any Plan 9 version onto it? And the overall support for this board is far from great tbh, so a pretty much stock Armbian is as good as it can get here. As well as the stock Debian on the cheapest VPS. Two scripts onto the Orange and two lines in the sshd_config on the VPS, et voila, here's your tunnel ready to go. Encrypted, I might add. As soon as those two lines are there and the client SSH keys are installed, you don't even need to log into that VPS for the rest of its life. Another thing I've been thinking of is that this setup is pretty much scalable to any Android device that can run Termux. Local ports will need to be higher than 1024, of course. Need to check how inetd will work there though. Rumors are there still are some bugs due to the bionic implementation of some basic networking functions. In which case... chrooted/prooted Alpine FTW! --- Luxferre --- # Thu Jun 12 13:26:29 CEST 2025 Ye, domains, DNS, static IP, all that crap is also just control. Some layer from some fake authority to put their nose into your shit. Regular legacy garbage of masters. For me even domain names are disposable. This one will die soon. Some NEX/NPS style DNS may happen. So no domain name from some fake authority. Just fucking host file with values. Not for randoms obviously. But you don't find randomly some gem in life. They can browse tiktok and youtube and they will. True, if you have regular respectable ;/ Linux, then it's pretty usable everywhere without much hassle. As SSH crapware is everywhere. I would hate your setup if I have to use it ;/ morena # Thu Jun 12 13:57:12 CEST 2025 Well, "doing what I can with what I got": SSH does not differ much across Linux, OpenBSD etc. I don't like the internal complexity of all this (and I also had a rant about it on the phlog) but at least it serves a purpose: it gets harder to track a request that terminates on my VPS in Iceland back to my Starlink here. This can be wrapped in more layers or even served over Tor if necessary. Also, I like the idea of hosting a simple "addressbook" file (/etc/hosts style) instead of relying upon DNS, but even static IP addresses tend to _suddenly_ change sometimes. How do you notify your contacts in case they do, for them to update their addressbook files without trusting any third party? I had thought about that for some time, nothing better than a DHT-based (torrent-like) system came up, but then, how can you prove that you are you? Only with public-key cryptography, which in turn leads to some central point of trust, which is exactly what we're trying to move away from. The best approach therefore seems like something that SimpleX employs: you exchange the long-term keys in person, peer-to-peer, and no one has any global identifier whatsoever. Only those who have your peer key know that you are you. But if it's gone, it's gone forever. Is this scalable? Not at all. But I can't think of any other way yet. --- Luxferre --- # Thu Jun 12 15:04:32 CEST 2025 I2p uses similar crap. It does not give a shit about your IP address. You had some key. But that's crypto nonsense nobody really understand. It just does something behind the scene ;/ Lot of complexity to just get the address of your plain text file. Domain name is relatively easy to replace, static IP a bit harder. But it's good to check reality. If it really helps and then how many people will use it. 10, or even 100 is managable manualy. Good old ways. NPS, IRC, mail, whatever. Luxferre updates over NPS, confirm with morena. IanJ asks morena if it's true if some suspicion. Not everything has to be completely auto mode, we are not robots. Of course system can be easily in auto mode, but some checks can be made manualy by connected people. The system does not need to be ready for 8 billions. Again close to 100% of people will never know about it and will never want to use anyway. It helps if one thinks more realistic and about himself, not about the whole world. Whole world is doomed. You can still have garden where people meet each other. It does not have to be world scalable. The world does not want that. Questioning things Socrates way can help here. It may be pointless waste of energy or the thing you live in. morena # Thu Jun 12 15:20:39 CEST 2025 You have content. The rest can be disposable. Domain, DNS, protocols. If you have plain text files, you have content. The rest is just road it travels. If you have server, it can run web server as easy as Gopher server or NEX server. Few lines of shell script over TCP. Question is only if you want. How close to the truth you want to stay. morena # Thu Jun 12 15:49:02 CEST 2025 Got your point. By the way, since we're offloading all socket heavy-lifting to the C-based inetd anyway, I'd still prefer writing these things in POSIX AWK, the code looks a lot cleaner than pure POSIX shell (if I knew AWK as well back then as I do now, I'd never write Bopher-NG in Bash, btw, it used /dev/tcp so not fully POSIX-compliant) and the engine itself parses strings much faster. Even in the slowpoke Busybox variant. The cleanest and closest to POSIX AWK implementation though is nawk aka one-true-awk, which is the one from the original language author and, unsurprisingly, is also available on Plan 9 with minor modifications. GAWK, on the other hand... I consider it a whole another language that has nothing to do with the purity of the original design. It's like C++ vs. C, well, maybe not that much worse but still. --- Luxferre --- # Thu Jun 12 16:57:49 CEST 2025 God what a google fuckery for me in search. Every fucking click or whatever always pop up that setting cookie nonsense. It remembers nothing, shitting at me like I opened it first time. morena # Thu Jun 12 22:04:24 CEST 2025 The most ridiculous thing is that those cookie popups, just like cookies themselves, change absolutely nothing in terms of real visitor data collection. Just more useless traffic and computing resources consumption. This, in essence, is the direction modern big Web has been moving in continuously for the past 25 years or so. Meanwhile, I'm really thinking about creating a Nex crawler, because now the overall picture looks kinda scattered. Even the nightfall.city itself contains a lot of non-Nex links. How many unique Nex links are there? Who can gather the stats? Is it even possible? The Nex/NPS servers are ready on my Orange Pi Zero too. Still thinking which content to populate the Nex with. Just mirroring the Gopherhole isn't as interesting. Although it would be quite easy to start with: the source material for the entire hole essentially is Gemtext with no features used except the Nex links. Maybe will start with a portion of the content. Just the most essential and valuable pieces of information. Like IMEI editing, HP 12C soft, abacus rules and algos, hand ciphers, bytewords lists and movement regulation guide. For NPS, I've got a rudimentary antispam feature: need to specify a special prefix with the current UTC date in the YYYYmmdd format appended to it as the first message line (so with e.g. the prefix %%, the current keyline would look like %%20250612). If the keyline is wrong, the connection terminates immediately. It's rudimentary but at least a random port 1915 spammer wouldn't bother going to port 1900 in order to find instructions on how to properly send an NPS message and then scripting in a prefix that might change on the following day or even sooner when that spam gets noticed. Feel free to write me there, by the way. The address is the same as Gopher, the port is nineteen-fifteen, and the prefix is three at-signs. --- Luxferre --- # Thu Jun 12 22:43:24 CEST 2025 Currently NEX servers world know about: => nex://mozz.us/bookmarks/ My recommendation: => nex://nightfall.city/shore/sufficient/ Crawler? Why? Crawl those two and half active NEX servers? Remember, we are not robots. Not everything has to be scalable, automatic, bullet proof, safe, secure and shit. Good old way. Natural, simple and minimal. Human to human. Bookmarks, links, recommendation, list, catalogue, whatever. Not some broken dirty script hitting pointlessly every poor garage personal server. Every connection should matter. Regarding your NEX and NPS. How the fuck should I decrypt your shenanigans? Not able to just simple type fuckingdomain.tld? And that part about antispam, some hash or whatever, does not need any comment at all. I think I will need to read it 10 times to understand it. Then to find out it will not work anyway. But if your NPS asks some fuckery, then fuck it. So you are already protecting against bots, even not one visited you? Why? 1915 port is pretty clean. Do you see bot spam here? I remove maybe two spam crap every daily with some two lines nonsense. Your web is probably under fire thousand time more. morena # Thu Jun 12 22:56:04 CEST 2025 By "does not need any comment" I meant. It deserves whole article. Just think about it. You took the simplest protocol, if we can even call it a protocol and you fucked it up. Without blinking an eye you already broke it before even using it ;/ morena # Thu Jun 12 22:58:53 CEST 2025 And this fucking BusyBox vi can't even pipe thing with ":w !nc morena.rip 1915" ;/ morena # Thu Jun 12 23:22:05 CEST 2025 Ok, disabled the antispam. It's just plain NPS on hoi.st:1915 now. Or luxferre.top:1915. They point to the same place. --- Luxferre --- # Thu Jun 12 23:36:48 CEST 2025 Now we can speak ;/ Let's check if kremlin.ru uses NPS too. morena # Fri Jun 13 00:34:45 CEST 2025 Can you please stop putting / on the end of your filenames? Examples: => /037/ How to write something on the board => /bin/board-001/ Previous archived board If you use that path as the gopher selector it results in: 3"/var/nex//bin/board-001/" not found error.file error.host... IanJ # Fri Jun 13 00:55:09 CEST 2025 No I can't. I don't use it as Gopher selector. Gopher does not support links in 0 item type. So for Gopher it means nothing. It's just plain text with some url ending with /. It's your client or way how you try to open it in Gopher. For Gopher it just text in document. Do what you want with it. My Gopher is compliant with Gopher RFC ;/ But don't worry, Gopher will be killed in few days, so no more issue with it on your side. For NEX it has meaning. If link ends with slash / then non existent NEX client knows, that => should render as a link. Otherwise it has to render it as plain text even if => is there. Or you want to tell me you cheat Gopher with NEX feature? ohoho ;/ morena # Fri Jun 13 01:04:28 CEST 2025 I use just two menu - directories files. One is main menu /menu and other is /morena which is "Great Gopher of Morena" fake directory. Rest are documents, item type 0 - plain text files without anything as Gopher does not even allow anything there. morena # Fri Jun 13 01:45:07 CEST 2025 I am experimenting with my no client gopher client. Basically just an awk script that exposes links so I can use the URL opening functionality built into my terminal. But, rather than have a file extension to give people a clue WTF they are about to open you end file paths with a '/' so it's not clear it's a file. If you want to try it it's here: => gopher://gopher.icu/0/files/degopher.awk Examples: > $ echo "board" | nc morena.rip 70 | ./degopher.awk | less > $ echo "/quarry unix programming" | nc gopher.icu 70 | ./degopher.awk | less > $ echo "idiotbox.cgi ed editor" | nc codemadness.org 70 | ./degopher.awk | less IanJ # Fri Jun 13 08:50:53 CEST 2025 Hi IanJ, any reason for using GNUism gensub instead of POSIX gsub? I have this [1] in my bookmarks to be reminded of what should and should not be done. --- Luxferre --- [1]: https://pubs.opengroup.org/onlinepubs/9799919799/utilities/awk.html # Fri Jun 13 09:42:18 CEST 2025 Writing this from the (rlwrapped) ed. The .inputrc magic is here: $if ed set bind-tty-special-chars off set convert-meta on Meta-m: "\n.\n" Meta-e: "\nx\n.\ns/./.\n" Control-w: "\n.\nw\n" "\e[Z": "\C-v\t" TAB: " " $endif Now, with Alt+e, I can automatically insert the dot at the end of the message. Also, this snippet allows to type two spaces with Tab and the hard tab with Ctrl+Tab. --- Luxferre --- . # Fri Jun 13 09:45:03 CEST 2025 Ok, now I remember why I didn't like the fmt util. It really messes up the newlines. $if ed set bind-tty-special-chars off set convert-meta on Meta-m: "\n.\n" Meta-e: "\nx\n.\ns/./.\n" Control-w: "\n.\nw\n" "\e[Z": "\C-v\t" TAB: " " $endif --- Luxferre --- # Fri Jun 13 09:49:24 CEST 2025 I'd just like to interject for a moment. What IanJ refers to as Degopher is, in fact, GNU/Degopher, or as he has recently taken to calling it, GNU plus Degopher. morena # Fri Jun 13 10:03:35 CEST 2025 Oh yeah, I meant Shift+Tab, not Ctrl+Tab. It's represented quite strangely in libreadline: \e[Z. If you've got an old Amiga, POSIX AWK es tu amigo. --- Luxferre --- # Fri Jun 13 10:57:54 CEST 2025 Re. AWK gensub() I used it because the functionality is different to gsub(). gsub() modifies the string given as a parameter and returns the number of replacements. gensub() returns the modified string. From my pragmatic point of view, and not knowing gensub() was not in the POSIX AWK specification, it saved me a line of code: > print gensub(/^URL:/, "", "", $2) VS > gsub(/^URL:/, "", $2) > print $2 I'm using OpenBSD and honestly didn't expect gnuisms in the default awk, there is gawk if you want the GNU version after all... IanJ # Fri Jun 13 11:15:14 CEST 2025 Standard UNIX fuckery. Search the internet, find some hack, add it. Layer this broken shit with something, at least. Every broken UNIX, either Linux or BSD is just random sugar coat on one big pile of shit. You learn something and it works exactly on one machine if you don't update it ever ;/ morena # Fri Jun 13 11:37:47 CEST 2025 Well, idk which awk version I used when I tried out OpenBSD. Maybe nawk, just as usual. But yeah, they might have backported some GAWK features at some point. Either way, gensub is non-POSIX. I myself would have loved having bitwise operators in the spec and not having to rely on a particular implementation quirks. Alas. Not sure if saving one line of code is worth reducing support to just two AWK implementations. Maybe three. But that's up to you, of course. I chose AWK because it should work exactly the same on a system from 1988 as on a system from 2038 if you follow the standard. It's pretty self-sufficient for all its intents and purposes. Remember Ian Bell's Text Elite? I had ported it to POSIX AWK in a much cleaner fashion than I thought it would get. It's much more playable now, not a mere demo engine. Meanwhile, most AWK-written games nowadays turn out to be strictly gawk-specific, which throws the entire idea out of the window tbh. Imagine using your degopher.awk script on a router shell that only has Busybox and the tools it populates. You can't count on gensub being implemented there because it's out of the standard. But you can play Text Elite there, because it had been ported properly. Surreal, ain't it? --- Luxferre --- # Fri Jun 13 12:12:29 CEST 2025 I had already removed gensub(). As you said, there is no reason that shouldn't run on a system from the 1980's if you stick to the standard awk functions. IanJ # Fri Jun 13 14:32:32 CEST 2025 There is no reason why your personal program should run on a system from 1980, or to stick to the ancient standard garbage. morena # Fri Jun 13 14:34:04 CEST 2025 Cool. When in doubt, here's the nawk source code: https://github.com/onetrueawk/awk Of course you can always run gawk --posix but this one is much more straightforward, compact and conveys the original vision. --- Luxferre --- # Fri Jun 13 14:54:35 CEST 2025 Brother, "A command/utility's bullshit is proportional to, at a bare minimum, its number of flags/options." ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] [-J destination] [-L address] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-P tag] [-p port] [-R address] [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]] destination [command [argument ...]] tar {crtux}[014578beFfHhjLmNOoPpqsvwXZz] [blocking-factor | format | archive | replstr] [-C directory] [-I file] [file ...] morena # Fri Jun 13 15:03:16 CEST 2025 AWK is not an "ancient garbage". It was designed to be useful for eternity. And it still is, when it comes to text processing in a clean and concise way. It's not a fad to get obsoleted by another fad. I'm into this field long enough to remember everyone's freaky obsession with Perl, then with Java, then with PHP, then with Ruby, then with Python and Go (ok, these two are still quite useful), now with that abomination called Rust... AWK survived all these, a lot before these and will survive many more of these. Because it, despite all GNU's efforts to grow a mutant transformer out of GAWK, still doesn't pretend to be anything that it actually isn't. It does one thing and does it well enough to not think of any replacement for the century to come. If it ain't broke, don't fix it. Besides, I know plenty of people who consider text-based protocols themselves "ancient garbage". Precisely because they don't care about people with old hardware and human-scale computing in general. Not only text, but even GUI: they WILL invest a ton of time + money into learning the newest fad instead of just mastering Tcl/Tk in a couple of days and being able to create nice desktop applications for their own usage with near-zero computing resource consumption. Why? They were programmed to do so. Don't think, consume, buy a new PeeCee whenever a new Faildows version gets released. What for? Who knows. A cog in the machine shouldn't ask questions. That's why those who still manage to get online from the Spectrum clones they soldered themselves deserve my utmost respect. Of course even AWK won't run there but I know something that could. Anyway, I think you get the point. --- Luxferre --- # Fri Jun 13 15:37:53 CEST 2025 > "A command/utility's bullshit is proportional to, at a bare minimum, > its number of flags/options." I hope the author of this sentence already has created a decent alternative for each utility with a lot of flags/options. Come on. This is just a way of talking to the program. One of many. The ssh command, for instance, allows putting almost all of them into the config or passing them through a control socket. Still, all of this is infinitely better than opaque GUI checkboxes and radiobuttons and sliders and endless input fields. I pity the users of PuTTY. --- Luxferre --- # Fri Jun 13 17:07:03 CEST 2025 "There is no reason why your personal program should run on a system from 1980..." I would reframe that and say, there is no reason why it shouldn't. I started programming proper when perl was in the ascendancy. Since then I've got caught up in a few language fads (PhP, Ruby, Obj. C). It took a while before I started to discover the basic tools that were already part of the base linux/unix environment and even longer to realize their power. There will always be something new that comes along that some will champion. But the question remains, does it solve my problem any better or any easier than what came before? If the answer is no, or marginally. Then I should rather consider investing the time learning to extract the maximum from the tools I already have. Just by virtue of being old does not make something bad. The Art of UNIX Programming => gopher://port70.de/9/books/unix/taoup.pdf IanJ # Fri Jun 13 17:54:04 CEST 2025 Btw, I also have read the previous board archive and an IRC related discussion caught my attention. IMO IRC is still bloated. I have something to show ya, but need to expose another port on the Orange and daemonize the server itself. No client necessary, chatting can be done with netcat. No state persistence or nicknames either (well, there are pseudonicknames, yeah, pseudopseudonyms, based on the IP but there's a way to override this with a prefix if e.g. several people are connecting from the same LAN). It even has a feature of aborting the last sent message with \\+Return if someone had posted something in the middle of your netcat typing. Interested? Just 43 SLOC of pure Tcl. --- Luxferre --- # Fri Jun 13 21:09:48 CEST 2025 No, thank you. Put your 43 SLOC Tcl in your ass ;/ morena # Fri Jun 13 22:30:03 CEST 2025 you may think that irc is bloated but it's a pretty slim protocol in comparison to many others right now i'm having trouble punching through to someone who's behind the libera.chat wall of chinese protection that's not what irc chat is meant to be about suck my dick let things be free and have people connect to each other in simple and pleasant ways without any intermediaries -- moth # Fri Jun 13 22:48:24 CEST 2025 the entirety of this chat could be an irc log served via nex bow chika bow wow - moth # Fri Jun 13 23:08:16 CEST 2025 Ye, that's true. A lot depends how one use it. Even HTTP can be relatively simple. Like I use just few lines of POSIX shell script as a web server. The same applies to IRC. Bloat is often on top of protocol. Protocol itself often does not matter, depends what you use, what you implement. IRC can still be used with netcat as client and as you made ircd already, I assume server part can be relatively simple too, if you don't implement bunch of nonsense and server to server side crap. But. It still smells of rot. Lot of noise, legacy garbage and scalability shit. Just very visible while maybe minor - username, nickname, realname. The fuck, why not add postal code and DNA diagram too. Where is that your ircd code? > the entirety of this chat could be an irc log served via nex Could, but something like this board, or forum or god knows what else exist, is not like real time communication, IRC. In chats like IRC there is ton of noise. Every breath is written. It's also invasive powerful time-waster ;/ If you know somebody else is just enter key far from you, you are tempted to communicate. But ye, IRC can be pretty powerful and used for many other tasks. It can practically even serve content instead of HTTP, NEX or Gopher. morena # Fri Jun 13 23:29:29 CEST 2025 maybe i do need to eventually release the code of my icrd formulating my goal would be that everyone has as much inpedendence as possible while still being part of a network where collaboration is not based on coercion but based on the realization that a shared protocol is in the mutual interest of everyone on the work my network has been hacked for a long while which was entirely unnecessary if the hackers would've collaborated with me we would've gone places - moth # Fri Jun 13 23:44:58 CEST 2025 the irc protocol doesn't have to be stinky old man farts a lot of difference can be made in terms of modern clients on top of the irc protocol which both requires old farts to move ahead and modern webshit princesses to look beyond web interfaces. - moth # Sat Jun 14 00:08:05 CEST 2025 Noble words. Those needed approximately the same time as copy those one or two files of C code to folder from which you serve blank page online. Maybe instead of "release" next time just copy those files and give the link. I have no idea how can be network hacked for a long time, but let's pretend it was like that ;/ Modern clients? Modern means good? Or modern like Rust, HTTP/3 and god knows what is today actual? What part of "modern" an IRC client needs to exchange plain text over network? NEX and NPS are more modern than IRC. New shiny kids, not from era of teletypes. Modern clients on top of the IRC protol sounds the standard way how whole software is made today ;/ Just sugar coat some typewriter so it looks like a smartphone. morena # Sat Jun 14 00:42:40 CEST 2025 if you knew anything about me my releases are a mere but a sh ./.c away i agree that projects should be just a simple file away i've given enough samples away but people tend to ruin it by pushing their egos into things modern clients are c based once you see the light i am there once and forever i will be yours meet me at the corner of the cafe - moth # Sat Jun 14 00:52:34 CEST 2025 not having been targeted by script kiddies is nice but also entirely unrealistic the truth that you want to be in is where you offer them a path that is meaningful for both sides -moth # Sat Jun 14 01:56:23 CEST 2025 We did a bit of experimenting with netcat for chat and had something like the following. Server: while read l; do echo "$(date -u '+%H:%m') $l"; done | doas nc -lk gopher.icu 4444 Client: while read l; do echo "$(date -u '+%H:%m') $l"; done | nc gopher.icu 4444 Only problem is it's just one to one. You can't have more than one client connected to exchange messages. I think it was inspired by 9gridchan: => https://cloud9p.org/doc/9gridchan.html IanJ # Sat Jun 14 10:32:58 CEST 2025 macgyver couldn't have come up with a more clever solution now we just need to organize and assign an hour of the day to each person during which they may connect and send messages in the tradition of time-shared unix machines -l'ora della falena # Sat Jun 14 11:19:31 CEST 2025 Command may looks simple, few things followed others. But. Running "chromium" looks also simple in command line. Depends what is behind the scene. In simple IRC client you handle usually networking. Here it is handled by netcat. Netcat includes some code too. Eventually something like this can be even more bloated than regular IRC client. And obviously, usability. Good think about simple code and shell scripts is user control. It's easy to adjust things even for no programmer. Extend or simplify, make some cosmetics for life quality or glue it with some other script. Like tail in one window, and input in other one, or deal with it over text editor and so on. So text is not mixed in the middle of typing. This freedom is good and it is inviting users to make some change and play with radable code. Compiled code is glued nonsense. morena # Sat Jun 14 11:25:05 CEST 2025 Time reservation opens possibility for premium - paid feature ;/ Don't wait in queue! Instant connection just for 0,99 EUR/hour. Premium subscribers can get even better client. Not one. But two lines of macgyver hash ;/ morena # Sat Jun 14 11:52:10 CEST 2025 The clockwork orange is up again. Don't be afraid of what you don't understand, and soon you'll find what you've been looking for. --- Luxferre --- # Sat Jun 14 11:56:27 CEST 2025 IanJ, Yeah, the problem is multiplexing the connections. This is where you have a choice: keep piling up crutches or switch to a language with first-class socket support, like Tcl or Perl. This support is pretty much the only thing I really miss in (POSIX) AWK, but again, it wasn't designed for that in the first place. And Perl... too many $p3c|@L characters for my taste. Only Rust looks uglier than that. --- Luxferre --- # Sat Jun 14 12:32:43 CEST 2025 Not sure if it's just me, but I'm having trouble seeing one post from the next. Maybe extend the date line to 70 characters so there is a clear separator between posts? # ############################################################ The above looks a bit heavy. Maybe __ ______________________ There is always hidden complexity. If you didn't abstract it then it would be very difficult to do anything, certainly to do anything quickly. IanJ # Sat Jun 14 12:59:17 CEST 2025 Yes, separation of posts is for eyes harder now than before when there was whole line separator like you mentioned. But that's just comfort. We are aiming for the truth not convenience. morena # Sat Jun 14 13:04:32 CEST 2025 Truth is that it's now harder to read ;) IanJ # Sat Jun 14 13:15:31 CEST 2025 Simplicity is the shortest path to truth. More things you add may be pleasant, comfortable. But they are noise between you and the truth. Even technically. You, your client can deal with this easier than with something "hardcoded" taking your attention. You can regex # ... and make it pink over 10 lines to separate posts. If there is just bare minimum, it gives you freedom to add anything you want yourself. No clutter. No bullshit. Ye, now you need slighty more focus. That's good. Thank me later ;/ morena # Sat Jun 14 13:21:11 CEST 2025 > Truth is that it's now harder to read ;) And that, my friend, was a verbal headshot ;/ morena # Sat Jun 14 13:22:50 CEST 2025 hear me out brosephs we mustn't just think harder we must think smarter as well there should be a word for it like smartder or hardsmarter # Sat Jun 14 10:25:32 CEST 2025 ye let's be hardsmarter now what if there was a language that's well suited to network sockets programming on unix like operating systems # Sat Jun 14 13:04:32 CEST 2052 ye like a first class citizen a de facto systems programming language with tight integration into the operating system itself that would let us do all of this and possibly even more in simpler ways and with fewer abstractions # Sat Jun 14 18:04:32 CEST 2025 shell script, awk, perl, rust... ye we're getting closer to the truth # Sat Jun 14 13:32:35 CEST 2025 Tcl is something that a non-programmer can get a grip on pretty quickly, as I said, a couple of days and you can do even GUI stuff. => nex://piratezeppel.in/brcd.tcl Here's my Barebones Relay Chat. Tcllib required but I don't remember a Tcl installation without it. I mean a usable one, not just for the sake of it. Have you heard a story of Darth Plagueis the... I mean the TRAC language? It's a very peculiar one. The author had described the entire parser and interpreter algorithm in the technical manual, essentially giving everyone the idea on how to create their own TRAC clones, and then spent the rest of his life in a nonsensical fight against free TRAC redistribution. The result? A brilliant scripting language that was way ahead of its time is almost fully forgotten nowadays. My nntrac port won't change a thing, alas. But why did I say "almost"? Because Tcl is one of its distant descendants. They even say this on their wiki. --- Luxferre --- # Sat Jun 14 13:42:12 CEST 2025 Why network socket garbage, special language? Check Plan 9. echo and cat your data to file. No shenanigans. Whole netcat thing is irrelevant there. Just directly sending data over TCP. morena # Sat Jun 14 13:47:59 CEST 2025 Yet you run this server on Alpine instead of Plan 9. Why? Last time I tried running 9front outside of a VM, it just crashed on boot for no apparent reason. Alpine worked as expected. --- Luxferre --- # Sat Jun 14 13:49:53 CEST 2025 > Yet you run this server on Alpine instead of Plan 9. Why? Wait until my day off Monday ;/ morena # Sat Jun 14 14:28:49 CEST 2025 HoHoHo, once more into the rabbit hole! IanJ # Sat Jun 14 14:31:04 CEST 2025 The last time! I promise. morena # Sat Jun 14 14:31:54 CEST 2025 impending morena.rip texts: * the supremacy of plan 9 * everything that is wrong with the world and alpine linux * whips & whimsy: master's bad hair day -moth # Sat Jun 14 15:06:06 CEST 2025 I'm of the opinion that with sufficient abstractions in the right places. You shouldn't have to be doing socket programming at all. Plan9 abstracted it so that you are reading from and writing to files. Like I believe inetd is a good thing as it saves reimplementing many of the same things every time you want to make a network service. This allows you to do a lot with fairly basic scripting languages. I found something interesting when I was playing with gawk to make an IRC client. I could connect using a filesystem path: > sc = "/inet/tcp/0/irc.gopher.icu/6667" > print "nick "NICK |& sc I'm not sure if this is portable. Link to the code is below, I didn't get very far with it: => gopher://gopher.icu/0/files/irc.gawk IanJ # Sat Jun 14 15:37:49 CEST 2025 Ohoho GNU fan was born. morena # Sat Jun 14 15:41:16 CEST 2025 So what are we cooking today? Tcl, GNU, Plan 9 and some mothism. Only what's need is good separator ########### morena # Sat Jun 14 15:43:19 CEST 2025 IanJ, this is just as portable as /dev/tcp in Bash, i.e. GNU only. This is, like I said, an attempt to build a mutant transformer based on AWK. Also, writing a client is not as hard as writing a realtime server. E.g. with an IRC or even BRC server, crutches like inetd won't get you very far anyway: you need yet another component to keep track of all connection descriptors and to broadcast messages across all the connected peers. This gets much easier if you keep track of them within the program itself, but that makes inetd useless. Maybe I'm missing something and there is a way of getting access to ALL sockets opened by inetd for a particular service, but I don't know of any. In which case, no realtime chat for ya. --- Luxferre --- # Sat Jun 14 15:49:31 CEST 2025 The minor question is just if one needs real time chat and if yes, what for. Questioning can save some fuckery before it starts to hurt. morena # Sat Jun 14 16:02:50 CEST 2025 Premium Message Separator (PMS!): echo "board" | nc morena.rip 1900 | sed -E 's/^# (.*)/__\/ \1 \\___________________________________/' | less 'Almost' Instant Notification feed: while true; do clear; echo "board" | nc morena.rip 1900 | sed -E 's/^# (.*)/__\/ \1 \\___________________________________/'; tail -50; sleep 30; done --- There has to be some mechanism that will provide that same functionality but on linux/unix. Probably we would need to use 9p? => http://9p.cat-v.org/implementations IanJ # Sat Jun 14 16:44:37 CEST 2025 Good example. That I was talking about. No noise, so you can create something on top of the thing and exactly how you like it. Freedom. You did it probably faster than to tweaking some shenanigans in random IRC client's config file. morena # Sat Jun 14 17:13:08 CEST 2025 why do we need instant messaging? without the ircd as my stage for a dramatic telenovela the council of nosy babushkas would've been bereft of a supply of hot gossip material -moth # Sat Jun 14 18:01:20 CEST 2025 " The best separator for text that arrives at specific times is whatever favorite characters plus an easily sortable timestamp, which in my mind is YYYYMMDDHHMMSS (with separator characters if you want). That guarantees the easiest numeric sorting/arranging should someone else want a different ordering. So: GOOD: # 20250614084652 # 2025-06-14-08-46-52 === 2025-06-14-08-46-52 === @@@ 2025-06-14-08-46-52 === etc. (where the timestamps are always UTC) BAD: # Sat Jun 14 15:41:16 CEST 2025 Why bad? Neither weekday nor month names aren't numeric or in time alphabetic order, and "CEST" means having to do more work to translate the time/date to one's locale. Ugh. " Brother, true true. But. I use just the simplest form and human readable "date" output, ctime. It's not for machines to play with it. It's for humans. Time in Slovakia is the standard time. No idea why rest of the world does not use it. Summer and winter time is obviously nonsense. So forget about UTC, always check what time is in Slovakia from now. You have to use correct time, so you are not late. morena # Sat Jun 14 18:26:54 CEST 2025 There was an error in my notification feed example, the ';' between sed and tail should be a pipe '|'. --- If people are the end target then I have no problem with any human readable date format. That being said I don't like a block of numbers for dates as it can depend if you are UK/US format and switching the day and the month, which isn't always obvious. I am a fan of UTC. If you are communicating/coordinating with people across timezones then it's helpful to use a common time, as the military and radio amateurs do. IanJ # Sat Jun 14 17:14:10 UTC 2025 UTC delivered. Military grade time ;/ morena # Sat Jun 14 17:37:15 UTC 2025 ye you have to wonder who the target audience is who are these dates really for and who's supposed to read the rest of the text, bruvver? machines, housewives, retirees? -moth # Sat Jun 14 18:00:07 UTC 2025 Target audience - organisms with functional apparatus between their ears. Do moths have ears? Zulu time! IanJ # Sat Jun 14 22:16:41 UTC 2025 --.. ..- .-.. ..- -- --- .-. . -. .- # Sat Jun 14 22:20:16 UTC 2025 Questions: * Does drawterm include the rc shell? * Can drawterm display images directly in a terminal window? .. .- -. .--- # Sat Jun 14 22:28:52 UTC 2025 Drawterm acts like local Plan 9 terminal. It has everything your system has. It also "auto-mount" your OS filesystem over 9p into Plan 9, whether OpenBSD, Linux or even Windows. It "emulates" like you run local Plan 9 terminal and connecting it into cpu Plan 9 server. morena # Sat Jun 14 22:33:21 UTC 2025 It doesn't work how I thought. It appears to be dependent on a plan9 cpu server, a bit like VNC needs a host to connect to. Without it the host there is nothing at all. IanJ # Sat Jun 14 22:36:14 UTC 2025 Ye, it's kind like ssh/vnc or similar shit. morena # Sat Jun 14 22:45:52 UTC 2025 For UNIX, so on OpenBSD too there is plan9port. Most Plan 9 user space including acme, sam, rc shell and so on. But on someting like OpenBSD it's practically bloat as OpenBSD has tons of own and UNIX like utils itself. morena # Sat Jun 14 22:56:56 UTC 2025 I was looking at those individual components earlier that are in the OpenBSD ports, rc shell, U9fs etc. The file-system/device sharing component is the most interesting part of Plan9 for me. If there was a way to get that functionality on OpenBSD I think I'd be fairly happy. IanJ # Sat Jun 14 23:17:51 UTC 2025 I assume you are missing some love from your GPU ;/ morena # Sat Jun 14 23:23:20 UTC 2025 Ye, 9p - universal protocol for everything. It is still ahead of everything else available today. GPU, CPU, filesystem, network, all crap over the same and simple interface. Not like in UNIX, that every little shit uses own petabyte of crap, hacks and layers to connect something and it's still unusable ;/ morena # Sat Jun 14 23:46:52 UTC 2025 From our brother in exile: " breathe, breathe in the board don't be afraid to hoard weave, but don't leave pee browse around, choose your read[er] the posts you give, and phrase you try comments arrive that make you cry all your screen portrays for "free" is just a mirror reflecting thee " morena # Sat Jun 14 23:53:23 UTC 2025 I installed libixp so that I can interact with a 9p. Currently testing out that gridchan. There are errors in the connecting instructions... Should be: > $ ixpc -a 'tcp!cloud9p.org!900' read chat & > $ while read l; do echo "$(date -u "+%H:%M") -> $l"; done | ixpc -a 'tcp!cloud9p.org!900' write chat IanJ # Sun Jun 15 00:04:36 UTC 2025 I would not expect something good from ircnow ;/ Interesting that libixp. So as they say it's client and server, are you able to use 9p to share crap from unix to unix? morena # Sun Jun 15 00:32:03 UTC 2025 I can't see anything but a client program unfortunately. Server was what I was going to look into next, to see if I can easily recreate that gridchan. Then, if I can mount some remote directory locally that would be very useful. Having to use scp to access file attachments from my server is annoying... IanJ # Sun Jun 15 00:57:47 UTC 2025 Looks like I need U9fs for the server side. => https://man.cat-v.org/plan_9/4/u9fs IanJ