Conversation with #inferno at Sat Mar 2 03:08:49 2019 on powerman@chat.freenode.net (irc) (03:08:49) #inferno: Topic for #inferno set by anth at 19:45:51 on 04/07/15 (03:36:54) henesy: yeah i saw that (03:37:01) henesy: and iirc they're even just using 9p2000.l (03:37:04) henesy: so even more meh (06:00:10) anth_x1 [~Adium@207.118.5.103] entered the room. (06:00:10) anth_x left the room (quit: Read error: Connection reset by peer). (08:26:49) rogpeppe1 [~rog@194.158.46.138] entered the room. (09:08:06) leg [~jorge@cpe90-146-131-224.liwest.at] entered the room. (09:09:20) rogpeppe1 left the room (quit: Ping timeout: 255 seconds). (09:42:14) rogpeppe1 [~rog@194.158.46.138] entered the room. (10:30:27) rogpeppe1 left the room (quit: Ping timeout: 245 seconds). (19:08:53) apache2: leetspete1: there's some 9p things in ocaml too, I believe also made by/for Docker (21:54:37) pbb left the room (quit: Quit: http://quassel-irc.org - Chat comfortably. Anywhere.). (21:55:13) pbb [~quassel@pbb4.pbb.lc] entered the room. (22:19:23) leg left the room (quit: Quit: Leaving.). (03:03:28) anth_x1 left the room (quit: Quit: Leaving.). (10:35:34) acmeuser [~acmeuser@h-228-166-220.A328.priv.bahnhof.se] entered the room. (10:35:41) acmeuser left the room. (18:33:06) anth_x [~Adium@207.118.5.103] entered the room. (18:36:00) anth_x left the room (quit: Client Quit). (19:41:49) leg [~jorge@cpe90-146-131-224.liwest.at] entered the room. (20:32:40) cybercafe: acme just never grew on me (22:00:36) leg left the room (quit: Quit: Leaving.). (22:32:16) anth_x [~Adium@207.118.5.103] entered the room. (23:08:06) rogpeppe1 [~rog@79-75-249-12.dynamic.dsl.as9105.com] entered the room. (23:26:33) anth_x left the room (quit: Quit: Leaving.). (01:01:17) rogpeppe1 left the room (quit: Ping timeout: 245 seconds). (03:37:40) leetspete1: apache2: OCaml is all right. (05:21:54) apache2: Yeah, I like it (05:22:43) apache2: it's got a lot of deficiencies for sure, but the (generalized) abstract data type system and the pattern matching is very nice to work with, and so is functors. (05:23:04) apache2: lack of unsigned integers sometimes makes me go a bit insane... (06:31:38) cybercafe: does anyone have experience with oberon here? (06:31:41) cybercafe: ive seen it compared with infenro (07:06:37) henesy: oberon is kinda fun (07:06:43) henesy: but shows its age a bit (07:06:54) henesy: i like acme quite a bit (07:07:19) cybercafe: henesy: hmm, any big picture thoughts about it? (07:07:27) henesy: oberon or acme? (07:07:31) cybercafe: i waded through its manual and then got kinda bored and moved on to something else (07:07:34) cybercafe: oberon (07:08:05) henesy: oberon isn't super interesting imo, but the amount of visual interactive features crammed into it with such a small space is kind of impressive (07:08:19) henesy: its historical significance is more interesting than actually trying to do anything with it (11:42:26) rogpeppe1 [~rog@79-75-249-12.dynamic.dsl.as9105.com] entered the room. (13:09:54) rogpeppe1 left the room (quit: Ping timeout: 250 seconds). (15:53:50) rogpeppe1 [~rog@79-75-249-12.dynamic.dsl.as9105.com] entered the room. (16:05:53) rogpeppe1 left the room (quit: Ping timeout: 245 seconds). (16:11:00) rogpeppe1 [~rog@79-75-249-12.dynamic.dsl.as9105.com] entered the room. (18:30:03) rogpeppe1 left the room (quit: Read error: Connection reset by peer). (21:55:44) leg [~jorge@cpe90-146-131-224.liwest.at] entered the room. (23:23:44) leg left the room (quit: Quit: Leaving.). (03:16:11) leg [~jorge@cpe90-146-131-224.liwest.at] entered the room. (04:06:08) leg left the room (quit: Quit: Leaving.). (10:21:11) rogpeppe [~rog@79-75-249-12.dynamic.dsl.as9105.com] entered the room. (18:21:23) leetspete1: Anyone know how to poke Sh->keepfds the right way such that I can persist an FD across invocations of a shell builtin? (18:21:44) leetspete1: rogpeppe: Sorry to bug you, maybe you would know? (18:21:55) leetspete1: keepfds might be the wrong thing. (18:22:12) rogpeppe: leetspete1: ha! it's a long time since I was asked an inferno shell question :) (18:22:16) leetspete1: But I am making a shell module, it is making a network connection. (18:22:42) leetspete1: rogpeppe: I figure you're the world's foremost expert on this shell. :) (18:22:49) rogpeppe: leetspete1: FWIW :) (18:23:31) rogpeppe: leetspete1: what are you actually trying to do here? (18:23:35) leetspete1: Incidentally, I've written a Redis client and this is the Last Bug before I inflict this on the world. (18:23:46) leetspete1: So I thought it would be very cool to be able to talk to it from the shell. (18:23:57) rogpeppe: leetspete1: why does this thing need to be a shell module rather than a command, for example? (18:24:07) leetspete1: So I added a builtin to connect, and a builtin to send commands to the server. (18:24:10) rogpeppe: leetspete1: (see the dial and listen commands for example) (18:24:55) leetspete1: Oh, it's also a command. I just thought this would be fun, and would also allow interspersing shell commands with calls to Redis. (18:25:28) rogpeppe: leetspete1: another possibility (and a more inferno-like one) might be to create a redis client that exports a filesystem (18:25:33) leetspete1: (It's actually a library but I expect to usually use the interactive client.) (18:25:42) rogpeppe: leetspete1: then create a command that talks to that (18:26:14) leetspete1: Might be the only way to do this. My connection drops between invocations. :P (18:26:32) leetspete1: But I thought if I argued with Context->keepfds, I could cheat. (18:27:16) leetspete1: But that appears to just be a temporary list for the sake of redirections. (18:27:40) leetspete1: You're right, of course, but my absurd stunt-hack has been ruined. (18:29:58) leetspete1: rogpeppe: Thanks! (Also I'm still using this shell as my primary shell.) (18:32:31) leetspete1: (And apologies for abusing the shell like I am doing right now. ☺) (18:40:41) rogpeppe: leetspete1: file descriptors always did mix a bit uneasily with limbo processes (18:41:03) rogpeppe: leetspete1: it's probably the least satisfactory thing about the shell (18:41:23) rogpeppe: leetspete1: very cool to hear that someone is still using it BTW :) (18:42:10) rogpeppe: leetspete1: i've always been quite happy with it - i'd really like to translate it to Go and port it to Unix some time... (18:42:22) rogpeppe: leetspete1: (but that's hard without proper dynamic module support) (18:43:31) leetspete1: rogpeppe: Dynamic modules and the whole environment. It's a really cool shell, but it fits really well with the system. Go would at least let it run on Plan 9. (18:44:04) rogpeppe: leetspete1: true, although much of the shell is still predicated on fully dynamic modules (18:46:24) leetspete1: Ha, maybe just start with a VM in Go, JIT shell commands to the VM's language, and expose enough primitives that you can still implement conditionals in a module. (18:46:47) rogpeppe: leetspete1: i *think* you might be able to do what you're after. (18:47:02) rogpeppe: leetspete1: i'm looking at the file2chan module (18:47:16) rogpeppe: leetspete1: which starts a persistent server (18:47:25) leetspete1: Ah, yeah. (18:47:29) rogpeppe: leetspete1: you might be able to do something similar (18:47:47) rogpeppe: gosh this code takes me back a bit :)( (18:47:49) leetspete1: rogpeppe: Spawning a little server? (18:48:00) leetspete1: That would work. (18:48:09) rogpeppe: leetspete1: you could spawn a server that accepts commands via a channel (18:48:29) rogpeppe: leetspete1: the channel would be in a global variable (18:48:42) rogpeppe: leetspete1: the server would keep its file descriptors open (18:48:44) leetspete1: I don't know why I didn't think to do that. In my defense, I've been up all night and have been writing man pages by hand for this. (18:49:16) leetspete1: I think writing them by hand fried me a little. That took longer than doing the Redis protocol. (18:49:38) rogpeppe: leetspete1: troff takes a while to get ahold of :) (18:49:51) rogpeppe: leetspete1: how did you get into this BTW? (18:50:23) leetspete1: rogpeppe: Presumably the server persists after an unload, so I guess I'd need to include a builtin to tell it to go away. (18:50:53) rogpeppe: leetspete1: you could probably mount it in the namespace somewhere (18:51:07) rogpeppe: leetspete1: not sure if that's a good idea or not :) (18:51:23) leetspete1: rogpeppe: This meaning doing a Redis client? I got tired of having to rcmd to talk to my box at home through a tunnel to run the (pretty nasty to run inside acme) default Redis client. (18:51:50) rogpeppe: leetspete1: "this" meaning inferno in general actually (18:51:51) leetspete1: So I scrawled out a basic command, turned it into a library, and figure I should release it. (18:53:11) leetspete1: rogpeppe: Oh, uh, it's been a while. I initially viewed it as a midpoint to Plan 9, and I was doing Erlang stuff for work and the Erlang stuff made the Inferno stuff click when I realized that Erlang was almost the same thing but with no Unix environment. (18:53:25) rogpeppe: ah, interesting (18:53:26) leetspete1: That would have been my second stint at AT&T, I think like ten years ago. (18:54:02) leetspete1: (Satellite company, ATTi, bought by SBC post-rebrand, which has since been sold off.) (18:54:35) leetspete1: I actually like Inferno a lot more but I think it gets less love than it ought to. (18:55:23) leetspete1: rogpeppe: So I started using it for work when I had to use a Mac, and it's been my primary environment for years, but I've also not gotten as much time to study the guts as I wanted. (18:55:48) leetspete1: I think someone sent you my lengthy blog post gushing about the shell. (18:55:58) rogpeppe: ah, that was you! :) (18:56:09) rogpeppe: i enjoyed that article (18:56:13) rogpeppe: (of course :]) (18:56:31) leetspete1: Thanks, I've enjoyed the shell! (18:56:48) rogpeppe: inferno was always underrated IMHO (biased opinion of course) (18:57:00) rogpeppe: it suffered from being in its own world (18:57:12) rogpeppe: no access to all the cool stuff that people were doing on other platforms (18:58:26) leetspete1: That is aan issue. I don't know what the licensing situation is like for VN, but for the public GPL release I think tossing in a lot of the newer cryptography libs would get https working again, which would make it easier to use it more often. (18:59:29) leetspete1: henesy uploaded a talk about it, there's been some interest recently. (19:00:44) leetspete1: (By the way, anyone that wants to attempt to use the next revision of the public grid and ping me about problems before I announce it should point a browser or a VNC client at tryinferno.rekka.io. The network has been enabled and a venti server added and a 'shortlink' facility.) (19:05:25) leetspete1: I probably should do a fileserver, but the shell builtin seems like so much fun that I am going to be unable to not do that, by whatever hacks are required. (19:14:21) leetspete1: rogpeppe: Thanks very much for the help! I've got to go to the office where I'll be using the Inferno redis client. (19:15:13) leetspete1: First place I've worked that tried to hire me *because* I yammered at the CTO about Inferno (and Forth and whatnot) for an hour at a party. (19:15:26) leetspete1: Usually the manic gleam is off-putting. (22:05:49) henesy: lol (22:05:51) henesy: sounds like a good time (22:06:19) henesy: leetspete1: is this hooked into mycroft's grid or is it another construct? (22:07:09) leetspete1: henesy: It is basically a public terminal. (22:07:22) henesy: right, i understand the vnc session (22:07:25) leetspete1: It is also hooked into mycroftiv's grid, though. (22:07:28) henesy: i meant your commend about the next revision of the public grid (22:07:30) henesy: oh neat (22:07:37) leetspete1: Just gridchat for now. (22:07:41) henesy: neat! (22:07:48) leetspete1: Oh, and the filesystems. (22:08:44) leetspete1: I've got some more plans for it. I'll be running a registry on the box, maybe do something that enables people to communicate with each other while they are on the system. (22:09:25) leetspete1: Also want to insert venti earlier in the process, so that when you connect you can just boot into Octopus. (22:10:57) leetspete1: I like that the entire UI state (nearly) can be serialized in Octopus, but it necessarily limits the UI stuff to Octopus-specific stuff. (22:11:15) leetspete1: And since it can be serialized, you can shove it into venti and pull it back out. (22:11:31) leetspete1: So a system like this is begging for cool stuff like that. (22:13:52) leetspete1: henesy: I saw your video, by the way. Very cool! (22:15:01) henesy: oh sick, that's really nifty (22:15:06) henesy: and thank you! (22:15:29) henesy: there are technically others, but they were done before we had better recording equipment, so they weren't salvageable (22:15:34) henesy: that was definitely the best of them, though (00:23:18) cybercafe: isnt it funny that so many people are still interested in inferno? (00:23:57) cybercafe: i read the mailing list but never post. never done anything too serious with inferno. all my limbo programs have been under 100 lines (00:30:26) leetspete1: Funny how? (01:04:44) cybercafe: its basically 20 years old and never really found "success" (01:26:48) leetspete1: Depends on what you consider success. I don't think 2019 is going to be the year of Inferno on the desktop. (01:30:13) leetspete1: It's interesting, it's cool, it's useful to a lot of people. I'm using it right now. (01:52:07) leetspete1: who my lil psyop (01:52:40) leetspete1: Errant paste, but let's just roll with it. (07:17:01) meltingwax [sid147732@gateway/web/irccloud.com/x-hnkvqjvprzxzvmxc] entered the room. (07:36:39) cybercafe: hey meltingwax ! (10:05:16) leg [~jorge@cpe90-146-131-224.liwest.at] entered the room. (13:18:35) qrstuv: i don't understand the connection between venti and starting octopus (13:26:50) leg left the room (quit: Quit: Leaving.). (14:56:36) The account has disconnected and you are no longer in this chat. You will automatically rejoin the chat when the account reconnects.