Conversation with #inferno at Tue Sep 25 21:25:32 2012 on powerman-asdf@irc.freenode.net (irc) (21:27:09) leetspete: Tekk_: Found it: http://kernel.org/doc/Documentation/binfmt_misc.txt (21:27:52) Tekk_: oh, that's actually a lot less complex than I thought it'd be (21:28:03) powerman-asdf left the room (quit: Ping timeout: 265 seconds). (21:28:07) Tekk_: I thought you were talking about a system like the BSD linux emulation (21:30:17) leetspete: Tekk_: You might be surprised, though; after a couple of months of doing Inferno, I started using it more often than my former go-to, urxvt/screen/vi/etc. (21:31:02) Tekk_: leetspete: but your old setup was almost perfect ;P (21:31:08) ***Tekk_ uses urxvt/screen/emacs (21:31:32) leetspete: haha (21:32:00) leetspete: They're almost identical; emacs has a better scripting language, but vi has a better vi-mode. (21:32:26) Tekk_: a faster one, at least. I don't know how well viper-mode emulates vi thouh (21:32:28) Tekk_: though* (21:32:44) Tekk_: anyway, what did you end up replacing those things with? just acme? (21:33:13) leetspete: Acme and Inferno sh. (21:33:39) Tekk_: does inferno have its own sh? I thought it just used rc (21:34:02) leetspete: It's (believe it or not) much cooler than rc. :) (21:34:03) Tekk_: okay, great. 9term converted to always use rc(it apparently doesn't like my tcsh line much) (21:34:48) Tekk_: how so? (21:35:14) leetspete: Loadable modules, for example. "load tk" and then you can run tk commands. (21:35:15) Tekk_: I mean, it doesn't really take much to be cooler than rc, it seems about as barebones as the original sh :) (which is the point, really) (21:35:38) Tekk_: oh, and I think that tk just plain didn't build properly for me (21:35:45) leetspete: tk, expr, regex, a host of string-manglers. (21:35:49) Tekk_: I actually tried dropping into wish and running some tk there and it still didn't work (21:36:21) Tekk_: are the modules actually any different than "source" with a path? (21:36:39) Fish [~Fish@88.164.188.181] entered the room. (21:36:48) leetspete: In the shell? The modules are actually an FFI into Limbo. (21:38:40) leetspete: I gushed about it for a while without quite doing it justice: http://debu.gs/entries/inferno-part-1-shell And there's rogpeppe's paper: http://www.vitanuova.com/inferno/papers/sh.html (21:40:18) leetspete: The main features that make it nice to use are the modules and the blocks. (21:40:25) rogpeppe: leetspete: it was nice to hear someone appreciating it! (21:41:09) rogpeppe: leetspete: the dynamic module loading is one of the things i miss most in Go. (21:41:17) leetspete: rogpeppe: Thanks for making it to begin with. I't sbrilliant. (21:41:56) rogpeppe: leetspete: it has its share of warts too :-) (21:42:18) leetspete: rogpeppe: That's an infelicity; I'd be more excited about Go if it were running on a sensible OS. :) (21:42:45) rogpeppe: leetspete: i'd be more excited if everyone used a sensible OS. :-) (21:42:56) rogpeppe: leetspete: sadly the real world doesn't use inferno or plan 9 (21:43:37) rogpeppe: leetspete: and it's nice to be out of the inferno sandbox - i was in there for a long time, and it's beautiful but not much happens unless you do it yourself. (21:43:48) rogpeppe: leetspete: and i don't have *that* much time :-) (21:44:11) Tekk_: interesting (21:45:10) Tekk_: the loadable modules thing is definitely cool, though it does seem to kind of invite my only complaint about limbo: the amounts of boiler plate you need (21:45:32) rogpeppe: Tekk_: there's not much really. (21:46:10) Tekk_: rogpeppe: it's not really a lot, but it's certainly there. you need to load at least 1 module(sys) before you can do anything, and you need 3 lines to import something which takes 1 in any other language (21:46:13) rogpeppe: Tekk_: it's a pity that the standard interface requires draw->Context (21:46:14) Tekk_: correct me if I'm wrong about sys, though (21:46:30) Tekk_: oh yeah, you need 2 includes to do anything, sorry (21:46:38) rogpeppe: Tekk_: no, you're pretty much right there. (21:47:02) rogpeppe: Tekk_: i have seen at least one version of Limbo which allowed a global import statement. (21:47:20) rogpeppe: Tekk_: dunno what happened if it was cyclic though (21:47:38) leetspete: rogpeppe: I'm real. :) I'm using Inferno at work, anyway. I've used Erlang at work some, compared to a VM like that, Inferno holds up very well for the same sort of tasks. (21:47:58) rogpeppe: leetspete: inferno is still a brilliant piece of engineering (21:48:22) rogpeppe: leetspete: but nobody wrote a decent web server module in it :-) (21:48:26) Tekk_: yeah, it's my favourite "modern" systems language aside from rust (21:48:32) Tekk_: from what I've tried (21:48:38) Tekk_: shame there's the bits of rot in the docs, though (21:48:47) rogpeppe: Tekk_: Go is in many ways an improved Limbo (21:49:00) Tekk_: yeah, that was the first impression I got when I saw it (21:49:04) rogpeppe: Tekk_: the type system is more coherent too (21:49:23) Tekk_: (I knew limbo existed, I'd looked at a bit of code, but never actually ran it, at the time) (21:50:26) leetspete: rogpeppe: I've been toying with that (and a couple of false starts at an awk implementation, and some network discovery stuff, and some odd filesystems, and 30 other things...). I think it'd not be hard to get very good performance out of it. (21:50:28) rogpeppe: it's interesting that VN's Limbo went the opposite direction from Go, in terms of polymorphism. i think Go's wins out actually. (21:51:13) rogpeppe: leetspete: yeah, you can easily get good performance out of it. but can you make it correct? serving http *correctly* is surprisingly hard. (21:51:28) leetspete: rogpeppe: At least, Inferno's httpd seems to outperform lighttpd and unicorn. Too many concurrent users made emu segfault, but I suspect that it's just because the pthreads stuff is newer. (21:51:35) rogpeppe: leetspete: and then bundling that up into a generically useful module is also hard (21:54:46) leetspete: rogpeppe: Ha, I can make it arbitrarily fast if it doesn't have to be correct. On the other hand, HTTP servers as a library are something I haven't seen done very well before. But a simple request parser could be easily done, and an "httpd" that parses requests and passes some tuples to a module based on the request path could be relatively simple and correct. (21:55:23) rogpeppe: leetspete: http server as a library is something that Go does well (21:55:43) rogpeppe: leetspete: that and parsing xml, json, all that crap that the modern computing world is filled with (21:56:17) leetspete: rogpeppe: I'd not tried the Go version. :) I had seen your rjson stuff, though. Very cool. (21:57:42) Fish left the room (quit: Ping timeout: 264 seconds). (22:05:06) leetspete: I'd done something like the httpd interface I described in Ruby, and it worked out well. It doesn't include a parser (it sits atop rack) but the path matching and resources-as-distinct-objects seem (I think) to fit HTTP semantics well. (22:07:55) leetspete: I've got to run to work, where I will be doing something terrible to computers but at least will be using Inferno for chunks of it. :) (22:11:13) `jpi: good luck in abusing computers (22:17:04) Aram: leetspete: what do you do for work so that you can use inferno? (22:19:11) Fish [~Fish@88.164.188.181] entered the room. (22:24:45) Fish left the room (quit: Ping timeout: 252 seconds). (22:26:43) Fish [~Fish@rue92-7-88-164-188-181.fbx.proxad.net] entered the room. (22:33:13) Fish left the room (quit: Ping timeout: 256 seconds). (22:37:54) Tekk_: any way to mount http? (22:38:21) Tekk_: trying to grab abaco, and ftpfs anonymous@*site* doesn't seem to work too well (22:39:34) Fish [~Fish@88.164.188.181] entered the room. (00:24:20) Fish left the room (quit: Quit: WeeChat 0.3.8). (01:12:58) raphaelsc left the room (quit: Ping timeout: 246 seconds). (01:13:23) raphaelsc [~raphaelsc@187-127-53-4.user.veloxzone.com.br] entered the room. (02:16:57) Aram left the room (quit: Quit: .). (03:16:17) raphaelsc left the room (quit: Quit: Leaving). (03:39:42) rogpeppe left the room (quit: Ping timeout: 264 seconds). (04:42:06) stockwellb [~stockwell@ip70-160-181-234.hr.hr.cox.net] entered the room. (04:43:14) stockwellb left the room. (04:50:26) bstockwell [~bstockwel@ip70-160-181-234.hr.hr.cox.net] entered the room. (04:51:35) bstockwell: I'm having trouble browsing folders with acme sac. I'm only in n\ how do I (mount?) my c drive or do whatever to see my files? (05:04:42) bstockwell: anyone using acme-sac? (05:22:04) bstockwell left the room (quit: Quit: Leaving). (05:37:09) leetspete: Aram: The product we're doing doesn't use Inferno; I just use it for all my dev work. (05:38:00) leetspete: bstockwell: You'll probably want to look into the '#U*' device. One second, I think I have seen some mention of how it handles Windows disks... (05:39:27) anth_x: leetspete: he left. (05:39:38) leetspete: bstockwell: Ah, fs(3). '#Uc:/'. (05:40:16) leetspete: anth_x: Ah, sorry for the noise, then. :/ My IRC client seems to have a bug about reporting joins/parts. (06:07:22) Tekk_ left the room (quit: Remote host closed the connection). (06:08:16) Tekk_ [~danny@gateway/tor-sasl/tekk/x-63005509] entered the room. (06:12:43) Tekk_: sorry to ask a really stupid question, but what's the regexp replace command in acme? I could've sworn it was "Edit *regex*" but apparently not (06:13:27) Tekk_: oh, dropping it in my bar makes it work, almost (06:13:49) leetspete: Tekk_: dropping it in the bar? (06:14:07) leetspete: This is a new thing to me. I would like to not have to type Edit for edit commands. (06:14:08) Tekk_: leetspete: yeah, I don't know a better word for it. the *filename* Del Snarf etc. area (06:14:35) leetspete: Oh, yeah. Right-clicking there will do a search. But replacing doesn't seem to work there. (06:14:49) leetspete: I think it's called the "tag bar". (06:15:05) Tekk_: well right clicking anywhere does a search (06:16:50) leetspete: Yeah. If there is a way to run Edit commands without having to type Edit, though, I would be highly interested. I mean, I know there's the mouse-chord thing. (06:17:11) leetspete: I'm just a little spoiled by sam, where there is a command window. (06:18:35) Tekk_: ah, no, I got it (06:18:42) Tekk_: I was using sed commands where sam is different (06:18:54) Tekk_: needed /search/c/replace/ not s/search/replace/ :) (06:19:46) leetspete: I believe the second works as well. At least, I've been doing a rename of a thing that has required some care, and I've been doing Edit s/item/slot/g. (06:19:54) doublec: is there a nice acme cheatsheet somewhere for those coming from vim/emacs worlds? (06:20:12) doublec: I felt completely lost last time I tried to use acme for a while (06:20:18) leetspete: doublec: I believe I have one. One second... (06:21:58) Tekk_: weird. when I execute the edit command with the normal way(highlight command, button2) it just runs the regex on the regex (06:22:06) Tekk_: and nowhere else (06:22:17) Tekk_: with "Edit s/Draw/ref Draw/g" (06:43:40) leetspete: doublec: Couldn't find the pdf I thought I had, then got lost looking through the 9fans archives, fell into a hole. (06:44:35) leetspete: Tekk_: That is weird. The edit command's in the tag bar, right? (06:45:06) Tekk_: no, while it was in the tag bar it didn't do anything, bringing it out of the tag bar caused that behavious (06:46:05) leetspete: Ah, that's because the s/// command operates on "dot", which in this case would be the highlighted text, which is your command. :) (06:46:15) Tekk_: ah (06:46:21) leetspete: It ought to work if you sweep with button 2. (06:46:42) leetspete: If you mean to do it globally, putting a comma before the s will work. (06:47:11) Tekk_: nah, I just fixed it manually already :) (06:47:14) Tekk_: thanks for the tip though (06:47:18) leetspete: No problem. (06:51:12) doublec: leetspete: not worries, I'll hunt around for tips (07:49:47) Gegemon [~ynv@mx1.airis.ru] entered the room. (08:20:28) acmeuser [~acmeuser@adsl-69-110-156-51.dsl.pltn13.pacbell.net] entered the room. (08:20:30) acmeuser left the room. (08:26:05) anth_x left the room (quit: Ping timeout: 246 seconds). (09:39:05) yshurik left the room (quit: Quit: Leaving.). (09:57:55) yshurik [~Adium@193.69.63.210] entered the room. (10:17:55) rogpeppe [~rog@host-92-30-143-236.as13285.net] entered the room. (12:02:00) Fish [~Fish@rue92-7-88-164-188-181.fbx.proxad.net] entered the room. (12:50:21) Aram [~aram@unaffiliated/aramdune] entered the room. (15:32:37) yshurik left the room (quit: Quit: Leaving.). (16:07:13) Gegemon left the room (quit: Quit: Leaving.). (16:13:33) yshurik [~Adium@161.223.34.95.customer.cdi.no] entered the room. (16:52:14) yshurik left the room (quit: Quit: Leaving.). (17:04:32) yshurik [~Adium@161.223.34.95.customer.cdi.no] entered the room. (17:25:24) Fish left the room (quit: Read error: Connection reset by peer). (17:34:37) Fish [~Fish@88.164.188.181] entered the room. (17:55:07) The account has disconnected and you are no longer in this chat. You will automatically rejoin the chat when the account reconnects.