00:15:23 -!- augur has joined. 00:22:16 -!- iamcal has joined. 00:40:38 -!- cal153 has quit (Read error: 113 (No route to host)). 00:43:02 -!- pikhq has quit ("Java user signed off"). 00:44:01 -!- augur_ has joined. 00:44:19 it seems my ability to stop the hiccups at will doesn't work when i'm drunk 00:44:59 -!- augur has quit (Read error: 104 (Connection reset by peer)). 00:47:09 -!- augur_ has quit (Read error: 104 (Connection reset by peer)). 00:47:16 -!- augur has joined. 00:55:11 -!- ehird has joined. 00:58:46 oklofok: but does your ability to stop drinking work when you're hiccuping? 01:02:39 actually that's exactly what happened :D 01:02:54 well, at least it was partly what happened 01:03:16 splendid. for science! 01:03:28 bars are boring, almost no girls try to hit on me 01:03:41 shocking! 01:04:09 indeed! 01:06:34 i mean clearly i still have my gorgeous boy looks, they even like totally carded me 01:06:47 Abilities to stop the hiccups at will sound nice. 01:06:55 usually i can do that 01:07:10 took quite a lot of training 01:07:43 but as i have probably mentioned i'm slightly wasted atm 01:08:48 -!- augur_ has joined. 01:09:01 hi augie 01:09:23 -!- augur has quit (Read error: 104 (Connection reset by peer)). 01:09:27 bye augie 01:09:49 "augie" 01:09:52 OK, I can dig it. 01:09:52 What's the drinking age over there? 01:10:00 65 01:10:02 yeah, kinda like you're greggie 01:10:03 18 01:10:53 Neat, I can almost drink over there. 01:11:54 yeah there's no way to drink until it's legal 01:13:18 anyway i don't see what the point of bars is, i'd just like you know orgies 01:13:41 what? 01:14:00 what? 01:14:20 Orgies ... for getting drunk. You need a better imagination. 01:14:21 oh I thought you were saying bars were like you-know orgies 01:14:26 which made no sense 01:14:30 ah 01:14:34 nono, i meant they should be orgies 01:14:44 Oh, bars should be. 01:14:49 Those are called bathhouses. 01:15:11 oh that's what bathhouses are 01:15:32 i wish finland was like your orgy country 01:16:33 Whoa; talking people. 01:16:58 yep, and even on-topic stuff 01:17:09 wait, what 01:17:29 bathhouses are on-topic now? 01:17:42 well just the orgy part 01:17:46 ic 01:17:54 mycroftiv: heyheyhey i'm gonna bother you some bits 01:18:10 * oklofok considers feeding 01:18:18 [01:11] Warrigal: Abilities to stop the hiccups at will sound nice. 01:18:19 if you can have that why not eliminate hiccups entirely 01:18:23 they're irritating 01:18:46 You can't just trade one ability for another. 01:18:55 what i mean is nobody mentioned that 01:18:59 usually i have one hic, then stop the, before the first up 01:19:02 if you're going to fantasise about abilities... 01:19:10 mycroftiv: how do you feel about the basic c file functions and stuff being implemented as simple wraps over 9p 01:19:15 *wrappers 01:19:20 (one issue is how the hell do you do 9p without file functions) 01:19:34 *them 01:22:06 I wonder what the Plan 9 assembler is like. 01:22:08 Let's find out! 01:23:19 http://doc.cat-v.org/plan_9/4th_edition/papers/asm 01:23:57 Interesting, it's a portable assembler of sorts. 01:24:02 They should call it C. 01:26:17 -!- augur has joined. 01:26:25 -!- augur_ has quit (Read error: 104 (Connection reset by peer)). 01:28:19 * oerjan read that as dog.cat-v.org 01:29:43 me too, took me quite a while to figure out it actually wasn't that 01:29:48 It's raining dogs, cats and -vs. 01:29:58 IT'S RAINING MEN 01:30:01 HALLELUJAG 01:30:03 *H 01:31:12 halleludig 01:31:18 "Emacs reimplemented in the browser" 01:31:18 Ah, there we go; the worst idea ever. 01:32:15 ehird: actually what you just said is something I've thought was a good idea for awhile - although there may be technical issues im not aware of 01:32:25 I want an automated proof assistant that has an editor that has a web browser that has a plugin that has Emacs. 01:32:29 -!- coppro has quit (Remote closed the connection). 01:32:34 mycroftiv: Here's one: You'd have to communicate the 9P through a non-file channel. 01:32:37 Uuuuuugly. 01:32:42 Warrigal: I want a pony. 01:32:47 but my question has always been: "why should the basic *nix style file operations be different from the 9p libraries?" 01:32:59 i've heard ponys are kinda gay 01:33:05 mycroftiv: Because the latter relies on the former. 01:33:10 yeah i understand that 01:33:21 oklofok: OH NO YOU DI'INT 01:33:25 ive studied how the kernel and the mount driver and that stuff works 01:33:53 ehird: totally i dood hear that 01:34:02 -!- bsmntbombdood_ has joined. 01:34:16 You summoned the dood! 01:34:32 don't you know past tense 01:35:04 Yeah, and it states that bsmntbombdood shall arrive whenever anyone says the word "dood". 01:35:26 oh lol right i mentally ignore most join 01:35:28 *ss 01:35:30 *s 01:35:44 except the ones i say 01:35:45 party, bsmntbombdood! 01:35:46 to 01:35:54 oh wait 01:36:04 that kinda of means i didn't ignore that one 01:36:07 THE ONE KNOWN AS THE B S M N T BOMB DOOD SHALT ARRIVE, WHENEVER IT IS SPOKEN BY ONE PERSON: DOOD 01:36:09 i'm being inconsistent. 01:36:17 maybe really the good 01:36:18 *food 01:36:19 —found on a stone tablet circa 30000000000000000000000000000000000000000002 BC 01:36:41 ehird: in which universe? 01:36:51 THIS ONE 01:37:01 i must've been badly misinformed 01:37:11 QUITE SO 01:37:17 quite indeed yes 01:37:24 -!- coppro has joined. 01:37:56 maybe the age is not in decimal 01:38:09 possible 01:38:15 okay 01:38:16 now 01:38:19 seriously 01:38:20 -> 01:38:30 a pointed retreat 01:39:40 -!- oerjan has quit ("POOF!"). 01:41:12 It's in base 1.0000000000000000000000000000000000000000001. It's pretty much 5. 01:42:24 Still, 5 BC. 01:51:25 -!- MizardX has quit (Read error: 54 (Connection reset by peer)). 01:52:31 -!- MizardX has joined. 01:54:28 -!- bsmntbombdood has quit (No route to host). 01:58:16 -!- augur has quit (Read error: 110 (Connection timed out)). 02:01:45 * ehird absent-mindedly tries to think what the most C-like way is to have a byte array that's 8-bit clean (allows \0) 02:04:13 struct { int len; byte[] data; } 02:04:32 ... or maybe char[] 02:04:46 unsigned char[] 02:05:21 MizardX: That's the obvious solution, but I'm not sure it's C-like. 02:05:44 You can't index it, for instance; abstracting a byte array seems un-C-like. 02:06:04 Either that or have a marker byte (\0) 02:06:09 MizardX: By the way, that'd be byte data[]; 02:06:13 "8-bit clean" 02:06:24 i.e., all values must be representable. 02:06:36 The only way to do this without abstraction is escaping. 02:06:59 For instance, \1\0 = \0, \1\1 = \1, \0 = EOS 02:07:36 Then you can't index it 02:07:36 -!- bsmntbombdood_ has changed nick to bsmntbombdood. 02:07:39 But a nice property of C strings is that you know that you're looping through the actual atomic values; escaping destroys that. 02:09:13 Maybe the answer is "it doesn't matter"; certainly, there is a large base of C code that manages fine without it. 02:09:43 char * is an odd beast, though; it's a byte array, not a string of text (Unicode and the general interface prove this) and yet you can't use it for arbitrary data. 02:11:06 (Interesting fact: Plan 9 stores Unicode characters as 16-bit, despite being the first implementation, and by the designers of, UTF-8. That's just in memory, though; UTF-8 is used everywhere else.) 02:11:11 I wonder how it handles non-BMP characters. 02:12:58 -!- MizardX has quit (Read error: 104 (Connection reset by peer)). 02:13:38 -!- MizardX has joined. 02:14:36 -!- Pthing has quit (Remote closed the connection). 02:21:00 -!- coppro has quit (Remote closed the connection). 02:21:30 -!- coppro has joined. 02:30:26 mycroftiv: do you know anything about the plan 9 c compilers? 02:30:41 specifically, when libraries include their own headers, surely the #pragma lib inside should make them try and link them with themselves? 02:30:46 or does that only happen when linking full programs? 02:35:56 ehird: i dont know how the preprocessor #pragma mumbo-jumbo applies to #pragma lib inside the library itself, since everything works, id assume it behaves sanely 02:36:08 gee, that's helpful :P 02:36:22 I guess the linker just ignores it if it's linking a library. 02:36:30 which means you can't have libraries that depend on libraries... 02:36:35 well, rather, you can 02:36:37 but not without dependencies 02:36:46 but then again you have to include dependencies with plan 9 headers too 02:36:48 so it's no great shakes 02:36:49 ill take a minute to glance at the documentation and some examples 02:37:05 and you can link libraries into a library, presumably; you just have to do it manually 02:37:18 the general idea of the plan9 preprocessor is to make it simple and rely on the programmer to follow a few sanity rules 02:37:33 Or maybe the linker ignores a link to a library which matches its output filename *shrugs* 02:39:11 Gregor: that would be stupid 02:39:14 ehird: are you talking about a #pragma lib "libbio.a" ? 02:39:19 (as an example) 02:39:20 it shouldn't depend on the name you give to -o 02:39:22 mycroftiv: yes 02:39:35 the implementation of libbio will presumably #include (or w/e the header file is) 02:39:39 and thus encounter that pragma 02:39:41 = ??? 02:39:53 * ehird wonders whether 02:39:53 puts(question); 02:39:53 print("%d", answer); 02:39:53 or 02:39:54 print("%s\n%d", question, answer); 02:39:54 is more Plan 9 C idiomatic 02:39:55 the manpage says that just tells the program needs be loaded with $objtype/lib/libbio.a, so you dont need to specify that during the lining phase 02:39:59 probably the latter, it's simpler 02:40:08 s/lining/linking/ 02:40:15 in that you're only invoking one routine, one kind of output, one way to format output 02:41:10 I love how putting names on a line after types lets you do /^foo(/ and /^bar=/ to find definitions (Plan 9 only does it for functions for some reason...) 02:41:40 huh i never thought of that implication of the convention 02:42:17 I'm pretty sure it's also so that your eyes can align to column 0 to find a function name 02:43:12 I'm not sure why Plan 9 has three lines, though (type, prototype and opening brace); it's more K&R-consistent to do type, prototype+opening brace, and the general argument for "separation" seems silly; the short type line would seem to suffice there. 02:43:29 ("usual" K&R where the type is on the same line benefits from the opening brace on a separate line, though) 02:43:47 yeah ive thought that single instance of opening brace on its own line isnt really consistent either 02:43:52 but i just try to follow the conventions 02:44:35 I wonder why Plan 9 bothers doing #pragma lib 02:44:38 it's not like #lib would break anything 02:47:59 mycroftiv: any ideas why plan 9 doesn't have a disassembler? just no need I guess 02:48:08 then again I'm also disappointed there's no 8i, i'm kind of an edge case 02:48:19 also probably the same reason it doesnt have a lot of things, shortage of developers 02:48:32 also, did you check to make sure nobody has one in their contrib? 02:48:34 It'd be interesting to use *i as a debugger. 02:48:45 mycroftiv: No; I don't have a method of accessing /n/sources right now. 02:48:50 Wait; does plan9port do it? 02:48:51 Probably. 02:49:11 it should 02:49:14 has u9fs 02:49:20 $ 9 mount contrib ~/contrib 02:49:20 top level name fuse in fuse.version is invalid 02:49:20 top level name macfuse in macfuse.version.number is invalid 02:49:21 9pfuse: dial contrib: unknown host contrib 02:49:22 mycroftiv: os x. 02:49:27 seems to be based on fuse now, though. 02:49:30 what's the host you give it? 02:49:31 wait 02:49:34 isn't there a separate cmd for it 02:49:35 ? 02:50:04 im not very good with the plan9port p9 stuff, since i have native plan9 and vms and drawterm, i can try to check tho 02:50:16 i use 9mount as a wrapper to the linux 9p2000 in linux 02:50:22 so not certain whats best in os x 02:51:25 $ 9fs 02:51:25 usage: 9fs sysname 02:51:27 That's it. 02:51:31 "9fs contrib" should do it. 02:51:36 srv: dial tcp!contrib!9fs: unknown host contrib 02:51:37 Eh. 02:51:40 What's the address of contrib? 02:51:57 sources.cs.bell-labs.com or something one sec while i verify... 02:52:10 did you try '9fs sources' ? 02:52:14 * ehird tries to figure out where "9fs sources" went 02:52:18 does sources include contrib? 02:52:18 thats the classic usage, contrib is part of sources 02:52:19 I forget 02:53:09 try 9fs sources 02:53:16 I did 02:53:19 i was right about specific address above 02:53:20 I don't know where it went 02:53:43 * ehird tries 9 man 02:54:04 since *nix has no real namespaces to speak of in the plan9 sense, p9p i think puts stuff in something like /tmp/user.ns:0 or something 02:54:15 "It then posts the resulting connection in the current name space (see intro(4)) as srvname (default address)." 02:54:16 plan9port, that is so not helpful to anyone who is using you 02:54:30 /tmp/ns.ehird._tmp_launch-MzTjdL_:0 02:54:37 I kinda wish it just put it in cwd. 02:55:11 $ 9fs sources; cd /tmp/ns.* 02:55:11 $ ls 02:55:11 sources 02:55:12 Hooray. 02:55:20 $ cd sources 02:55:20 ksh: cd: /tmp/ns.ehird._tmp_launch-MzTjdL_:0/sources - Not a directory 02:55:21 wat 02:55:32 yeah, thats like a srv you have to mount... 02:55:54 This cannot be done directly on Unix. Instead the servers listen for 9P connections on Unix domain sockets; clients connect to these sockets and speak 9P directly using the 9pclient(3) library. Intro(4) tells more of the story. The effect is not as clean as on Plan 9, but it gets the job done and still provides a uniform and easy-to-understand mechanism. The 9p(1) client can be used in shell scripts or by hand to carry out simple interactions with servers. 02:55:54 Netfiles(1) is an experimental client for acme. 02:56:05 Yet it's FUSE. 02:56:14 I guess I have to mount it indeed. 02:56:15 Wait, who put that irritating "don't ask to ask" in the topic? 02:56:28 And the "waah esoteric languages I can't handle a bit of fun" stuff. 02:56:30 Probably AnMaster. 02:56:34 -!- ehird has set topic: http://tunes.org/~nef/logs/esoteric/?C=M;O=D. 02:56:43 Voila, topic is instantly 100% less whiney. 02:56:45 i think you use the '9p' command to talk to the service you have no 02:56:55 s/no/now/ 02:57:06 Yeah, but I want to mount it and it did SOMETHING with FUSE. 02:57:25 oh right yeah thats the best thing to do probably 02:57:33 It's mount(1), I think. 02:57:38 top level name fuse in fuse.version is invalid 02:57:38 top level name macfuse in macfuse.version.number is invalid 02:57:39 kextload: /Library/Filesystems/fusefs.fs/Support/fusefs.kext loaded successfully 02:57:39 mount_fusefs: /Users/ehird/Junk/sources: No such file or directory 02:57:39 9pfuse: readfusemsg: Operation not supported by device 02:57:40 yeah 9pfuse addr mtpt 02:57:47 If I mkdir sources, methinks it should work acceptably. 02:57:51 mycroftiv: mount(1) for me. 02:58:14 $ 9 mount /tmp/ns.ehird._tmp_launch-MzTjdL_:0/sources ./sources 02:58:15 top level name fuse in fuse.version is invalid 02:58:15 $ cd sources; ls 02:58:15 [gigantic pause of unimaginable death-throws of hell] 02:58:18 Reassuring. 02:59:33 Argh, I can't get rid of ~/Junk/sourcse 02:59:34 *sources 03:00:11 Ah, there we go. 03:00:26 i see that rsc might have the droids you are looking for 03:00:53 simple 8086 assembler dissassembler and x86 interpreter 03:01:40 "9p ls sources" works, hooray 03:02:43 mycroftiv: gimme a filename in sources (not a dir) plz? 03:02:46 sorry, just need to test this :P 03:03:50 sources/contrib/rsc/8dis.c 03:04:05 is sources the root? 03:04:08 guess so 03:04:25 this link may be relevant to your interests also: http://plan9.bell-labs.com/wiki/plan9/Contrib_index/ 03:04:40 ok, I conclude that this works, just crawlingly slowly 03:05:20 for instance, "ls" is an undesirable operation 03:05:31 but it does work 03:07:42 mycroftiv: what would you say is the best way to an environment to play about with plan 9 under a conventional OS, with no regard to interoperability? 03:07:50 vxwhatever or a vm? 03:07:56 i think qemu actually 03:08:01 i thought so too 03:08:02 but not sure if its decent in os x 03:08:16 you know that i distribute qemu based plan9 images and tools? 03:08:18 it's... alright 03:08:20 mycroftiv: yeah, I know 03:08:30 I don't really see a reason to use them over the official image unless you're making a cluster, though. 03:08:41 * ehird downloads plan9.iso.bz2 03:08:43 well, they are built as a cluster out of the box 03:09:00 and avoids the annoying qemu long install and elaborate setup process to make a cpu server you can drawterm into 03:09:11 I don't really want a cluster, though 03:09:23 Right now I want to play around with the single-machine benefits of Plan 9, not its cluster aspect 03:09:33 as they are currently what interests me most 03:09:41 mycroftiv: are qemu's graphics really slow? 03:09:49 i mean, yeah, it was slow when I tried it 03:09:52 but is drawterm actually faster? 03:09:53 yeah, thats why i think drawterm in is so much better 03:09:59 hmm 03:10:00 much faster for me in linux distros 03:10:16 isn't it just a matter of setting a variable to not start the graphics stuff but start a drawterm server instead? 03:10:26 modulo anything qemu needs to let the port go through 03:10:55 from the base bell labs image? 03:11:45 Yeah. 03:11:51 http://www.plan9.bell-labs.com/wiki/plan9/Configuring_a_standalone_CPU_server/index.html 03:12:06 that is the walkthrough for making base setup into a cpu server 03:12:19 ugh 03:12:25 is there a way to have a drawterm-accepter without cpu server? 03:12:29 surely there must be 03:12:38 http://www.plan9.bell-labs.com/wiki/plan9/Drawterm_to_your_terminal/index.html 03:12:53 blah keyfs shit 03:12:58 isn't there a "let anyone in" option :) 03:13:32 anyway, does your project have an image that's a terminal that you can drawterm in to? say yes :P 03:13:34 um, iirc from looking at the cpu.c code, non-auth access might be possible but is commented out in the source 03:14:11 so maybe if you uncomment that bit and recompile it and use the undocumented flag (if im even remembering anything real) then you wouldnt need auth... 03:14:23 "I want to respect your software licenses!" 03:14:23 a strange wish 03:14:40 ehird: i have standalone installed qemu image ready to be drawterm'd in, yes 03:14:44 -!- BeholdMyGlory has quit ("Leaving"). 03:14:51 right but that has all the other stuff in it too :P 03:15:00 all what other stuff? 03:15:16 -!- BeholdMyGlory has joined. 03:15:44 "gridna", the other boot options, presumablly other stuf 03:15:45 http://sphericalharmony.com/plan9/ventigridserver.qcow2.img.tgz is a standalone qemu image of a fossil disk 03:16:20 thats just 60k or w/e of random code/scripts that you dont need to use and doesnt affect the standard preinstalled glenda user 03:16:24 -!- BeholdMyGlory has quit (Remote closed the connection). 03:16:41 but I'm trying to use plan 9; that means i'm a rabid purist nazi minimalist 03:16:43 :D 03:17:32 mycroftiv: rm -r /usr/gridna should remove that stuff, how do you remove the graphical-terminal to get just a cpu server 03:17:39 wait, neither of those are terminals with drawterm ability 03:17:41 you lied :( 03:17:57 you boot it as cpu server to drawterm in 03:18:06 you can still bring up the bitmap display on the cpu console if you want 03:18:07 which isn't actually what i said 03:19:03 theres no difference in booting the cpu kernel vs. the terminal kernel 03:19:33 it just forks whether termrc or cpurc is used at boot pretty much 03:22:13 meh :P 03:22:15 okay then 03:22:36 so rm -r /usr/gridna; is it just removing the terminal kernel to get stock-plan9-but-cpu-server-instead? 03:22:54 im not quite following the question 03:23:11 if you boot the image and tell it to be a cpu server, its a stock plan9 system with the wiki guide i linked earlier already done 03:23:17 and default password set up 03:23:29 I'm not referring to what bits are used, rather what bits are present. 03:23:52 if I nuke /usr/gridna and the terminal kernel, what differences are there from stock plan 9 apart from a default password and being set up for a cpu server instead? 03:24:37 pretty much just the stuff descibed in the wiki cpu server setup 03:24:48 some stuff refactored a bit between the different startup scripts 03:24:52 right 03:25:22 also your question is a bit weird, the terminal kernel 9pcf is provided by default, you compile the 9pccpuf kernel to use as a cpu server, which is already done and installed in the 9fat partion in the image i distribute 03:25:39 no reason not to have both 9pcf kernel and 9pccpuf kernel available in the boot menu 03:26:26 true 03:26:36 (this script redirects tcp ports 21, 23, 567, and 564 to high ports to allow qemu to use them without root privileges. You do not need to use all these ports if you do not wish - port 567 for auth is the only one that is really essential.) 03:26:42 oh. I don't know if OS X can do that. 03:26:55 well, you can run qemu as root and do straight across port redirection 03:27:09 or you can use the hostowner and not even have 567 forwarded, just 17010 03:27:11 i'm not about to run an os x graphical app as root 03:27:19 but only the hostowner bootes can login that way 03:27:21 doing so is a condition also known as "being out of your fucking mind" 03:27:23 other users need an auth port 03:27:42 or I could modify whatever config file I need to start auth on a different port 03:27:52 yeah but youd also have to modify drawterm then 03:27:59 but yes you could change the port for auth listener 03:28:24 the drawterm mod is just grepping for 567 and changing to whatever you want and recompiling 03:29:29 theres also the option of doing whatever the os x voodoo for giving qemu its own ip on a vlan or w/e 03:29:49 then you wouldnt be doing port redirs at all just dialing that ip 03:30:10 drawterm in as bootes is the easy option to at least test if stuff is working 03:31:21 drawterm doesn't accept a port? 03:31:26 all this shiiiiiiiiiiiiiit suuuuuuuuuuuuuuuuuuuucks 03:31:51 well plan9 doesnt believe you should have to be privileged to use ports 1-1024 03:32:03 that and not being able to mount as non root (as well as root itself) they got rid of 03:32:12 that's pretty irrelevant 03:32:13 so you are dealing with what plan9 regards as 'legacy unix garbage' 03:32:14 http://plover.net/~bonds/asdf.html 03:32:20 you should be able to customize ports 03:32:25 in case of collision or whatever 03:32:29 mycroftiv: drawterm is crappy for not allowing you to customise ports 03:32:39 okay, YES, in a perfect world ports would be strings and it wouldn't be a problem at all 03:32:42 well, its a 3 line patch to make it take a port as a parameter if you want 03:32:53 but we're stuck with a shitty system where we use integers so, uh, yeah 03:32:58 mycroftiv: that does not invalidate my criticism 03:33:01 even with strings, there's collision issues 03:33:02 i agree personally 03:33:09 its an annoyance for me as well 03:33:13 just less of them 03:33:14 coppro: but they're massively reduced, and customisation becomes mostly pointless 03:33:25 very true 03:33:28 "irc", for instance, is highly unlikely to collide 03:33:37 and we could represent SSL'd ports much more nicely 03:33:39 ssl/irc 03:33:45 or irc/ssl, whatever, it's just convention 03:34:07 obviously if you have like two irc servers irc/foo and irc/bar will suffice 03:34:15 Hmm... I just had an idea 03:34:25 it's such an obvious idea, using strings as ports; I wonder why the TCP designers didn't do it 03:34:30 probably some misguided idea of efficiency 03:34:34 probably 03:34:36 a 'port negotiation protocol' 03:34:43 oh, and it'd mean that the http in http://foo.com/ would actually be meaningful :P 03:34:55 Not that URIs are a particularly pleasant way of representing such things. 03:35:23 I like URIs 03:35:45 Well, I dislike URIs and DNS — their order is arbitrary. 03:35:55 that's true 03:36:10 DNS should be the other way around 03:36:18 The :// construction is strange and arbitrary, the reversed order of DNS names as opposed to the rest of the URI is strange and arbitrary, and the fact that the protocol is apparently above the computer is just WTF. 03:36:22 In the general sense though, URIs are correct imo 03:36:35 Oh, and the usage of a different separator for domains and paths after that domain is Wrong; see http://doc.cat-v.org/bell_labs/the_hideous_name/the_hideous_name.pdf. 03:37:10 // is not a fundamental part of URIs 03:37:18 It's part of the syntax. 03:37:24 Certainly the idea of a universal identifier is sane; the implementation isn't. 03:37:27 Something like /com/foo/http would be ideal if only it weren't necessary to have a point at which connection actually takes place. 03:37:33 So /com/foo/:http would win. 03:37:48 /org/cat-v/doc/:http/bell_labs/the_hideous_name/the_hideous_name.pdf 03:37:53 Looks strange at first, but I like it already. 03:38:24 not /:http 03:38:33 I don't see why not. 03:38:37 just /orc/cat-v/doc:http/ 03:38:42 No, no, no, no and NO. 03:38:47 I'll link this yet another time... http://doc.cat-v.org/bell_labs/the_hideous_name/the_hideous_name.pdf 03:38:53 One separator is *good*. 03:39:04 why? 03:39:05 It is a desirable property. Furthermore, your proposal is harder to read. 03:39:14 coppro: would you like me to copy and paste the whole paper to you? 03:39:19 I'd be happy to 03:39:30 but I thought a link would suffice to reference its contents as an argument 03:40:42 ehird: I have not read every word because I am busy. However, I've skimmed it, and it appears to fail to explain why inserting a slash before :http would be a good idea 03:41:22 Fallacious. It explains why a single separator for names, with uniform semantics among each separated string, is a highly desirable quality. 03:41:37 If you don't think so, well, you skimmed over the bits containing the actual argument. 03:42:15 but I would argue that : is not a true separator; it is a critical part of the name 03:42:32 it's pretty academic though 03:42:49 It is another component in the name; the /s represent going further down in the tree to the desired resource. 03:43:35 -!- coppro has quit (Remote closed the connection). 03:45:10 -!- coppro has joined. 03:45:25 / represents the entire internet; /org represents what we call ".org"; /org/cat-v digs down further in the hierarchy and represents a machine; /org/cat-v/doc digs down further and represents a machine; /org/cat-v/doc/:http digs down further and represents a certain port on the machine; 03:45:26 /org/cat-v/doc/:http/bell_labs/the_hideous_name/the_hideous_name.pdf digs down even further and represents the resource accessed by the hierarchical identifier "bell_labs/the_hideous_name/the_hideous_name.pdf" according to the rules of the server running on the port http on the server, but it is still, fundamentally, drilling down a hierarchy. 03:46:07 This uniform simplicity — a slash represents digging down further in the hierarchy — leads not only to simplicity in design, implementation and use; it leads to many useful properties and expressive power, as explained in http://doc.cat-v.org/bell_labs/the_hideous_name/the_hideous_name.pdf. 03:46:13 ehird: Okay, I see that argument. But what about information like username? 03:46:33 coppro: Well, I'd say it's a wart that authentication is handled by each individual protocol. 03:46:44 and yet a necessary one 03:46:57 No, I disagree. It's also necessary, in today's world, that ports are integers. 03:47:01 But ideally, simply untrue. 03:47:25 ideally, no 03:47:39 See: Plan 9. It does this, it works excellently and elegantly. 03:48:06 but even if you could redesign our entire world's net infrastructure from the ground up, having a single authentication system wouldn't work 03:48:19 Did I say single? 03:48:29 The server would handle how to interpret the authentication info; it'd just be above the protocol. 03:48:41 Just like encryption could be; should be. 03:49:00 ehird: What if you're going through two machines? 03:49:20 That is a separate, orthogonal issue to encryption and authentication, whatever Plan 9 made you think. 03:49:21 Erm. 03:49:24 Whatever ssh made you think. 03:49:27 Gawd my brain is muddled. 03:49:38 For instance, in Plan 9, you'd say /n/foo/n/bar. 03:49:45 That would be "the machine foo's /n/bar". 03:49:54 foo would interpret that as "the machine bar's /". 03:50:07 And thus, you'd get to what foo thinks is "bar", connected via foo. 03:50:22 right. So then both foo and bar would want to authenticate you 03:50:52 coppro: See, at this point we have to redesign the whole OS infrastructure, too. :) 03:50:56 A brief primer to explain this to you: 03:51:29 ehird: also, for the purpose of education, what does 'n' mean in those paths? 03:51:34 Net, I guess. 03:51:41 ok 03:52:54 In Plan 9, every process has a namespace, inherited from its parent process. This is what / is; not a collection of physical files with some magic ones — a namespace. Every process's /bin is separate; and you can bind namespaces to others. So, you can bind /foo/bin to /bin, and then you can access /foo/bin/blah as /bin/blah. (This is similar, but superior to, symlinks — the differences are not for this brief primer). Since every process, and thus every 03:52:55 has a separate namespace, my /n/foo doesn't have to be your /n/foo — just like my "my car" isn't your "my car". 03:53:09 *and thus every user, has a 03:53:14 Stupid badly-wrapping client. 03:53:30 Anyway, this means that both john and jane can have an /n/foo logged in as them. 03:53:48 (This also leads to a lot of the awesome wizardry, power and elegance of Plan 9; it's what the whole system is based around.) 03:54:00 ok, that is pretty very awesome 03:54:12 but doesn't answer the fundamental questions 03:54:15 Anyway, so when you say /n/foo/n/bar, it's just a matter of being logged into foo as you, and having your /n/bar be authenticated as you. 03:54:22 err problem 03:54:35 I think I've lost track of the fundamental problem. :) 03:54:59 which is that there will need to be metadata associated with steps along the way in any resource-location scheme 03:55:26 In Plan 9, this is done by having authentication information separate from the location identifier. 03:55:31 I think this is the correct thing to do. 03:55:42 (I don't hold this opinion too strongly, though.) 03:55:49 completely independently? 03:56:07 ok 03:56:12 for instance 03:56:14 * ehird digs up an example 03:56:38 sec 03:56:39 so, what I'd argue is that the path should contain "how" information as well; this should be encoded into each location 03:56:51 wait, wait 03:56:54 let me dig up an example 03:57:09 ok 03:58:20 well, I can't find an exact example 03:58:28 but basically, the connecting things just let you do basically -u user 03:58:30 and the like 03:58:33 ok 03:58:37 coppro: Aha, you have fallen into the trap! 03:58:49 and that trap is? 03:59:05 coppro: URIs are identifiers, yes? Their use as locators is a happy side-effect, and requires no extensions. The "how" of accessing a resource is not part of an identifier at all! 03:59:19 ehird: But I want more than just an identifier 03:59:22 Because there is no "how". The identifiers we use for identifying and locating are the same, and this is a desirable property. 03:59:37 It's desirable because it lets us use resources as identifiers and vice versa. 04:00:04 coppro: Authentication information is not part of the hierarchy; therefore, it does not belong in the hierarchical identifier. 04:00:16 ehird: ideally, I think it would be an identifier with accompanying but still-distinct information 04:00:24 coppro: Maaaaaaaaybe. 04:01:05 e.g. /org/cat-v/doc/bell_labs/the_hideous_name/the_hideous_name.pdf:3:protocol:http (yes, I'm aware it's ugly and verbose; I'm just trying to give an example) 04:01:11 To retain the hierarchy, something like /@/ehird:password/org/some-site/:http/ could work. 04:01:33 /@ meaning "users" (i.e. the hierarchy of each user) — just to be short, really. 04:01:42 Note that the password is not a descendent of the username. 04:01:57 The "login identifier" is the username and password (obviously, you're not allowed to ls /@ :-D) 04:02:20 I just used : because I already used :; no use introducing another token. And, well, the whole thing has a happy resemblance to HTTP authentication. 04:02:34 Anyway, that works nicely since it builds upon the fact that everyone's / is personal, so to speak. 04:02:43 or ...://p:http&u:ehird&s:password/// 04:02:49 /@/agent:password/ is a way to say "this agent's /". 04:02:55 coppro: DIE DIE DIE 04:03:01 lol 04:03:04 There is no reason not to have this as part of the upper hierarchy. 04:03:25 ehird: no, not as the upper hierarchy 04:03:28 a parallel hierarchy 04:03:49 But there's no reason, and this way is more elegant. /@/agent:password/ refers to that agent's /. 04:04:01 /org/cat-v/doc/bell_labs/the_hideous_name/the_hideous_name.pdf|///p:http//// would indicate to use the http protocol for step 3 04:04:04 So if you say /foo and you are that agent, that's the same as /@/agent:password/foo for another person. 04:04:13 This is elegant, simple, and builds upon the previous infrastructure. 04:04:16 That's how names should be done. 04:04:43 You're falling into a similar trap 04:04:45 coppro: ALSO 04:04:57 There is a GOOD REASON to allow nesting without special markers, which your system allows 04:05:00 May I present to you 04:05:11 HTTP over 9P (Plan 9's remote file protocol) to a separate machine 04:05:12 wait for it 04:06:12 /@/ehird:secret/ip/432/131/444/312/@/coppro:stolen/org/top-secret/:http/plans.txt 04:06:19 wait, forgot the protocol 04:06:26 /@/ehird:secret/ip/432/131/444/312/:9p/@/coppro:stolen/org/top-secret/:http/plans.txt 04:06:55 Wait, should probably make it 04:07:00 /@/ehird:secret/ip/432/131/444/312/:9p/internet/@/coppro:stolen/org/top-secret/:http/plans.txt 04:07:11 Yes, ladies and gentlemen, through the power of simple hierarchy, this logs into the 9P server at 432.131.444.312 as ehird with the password secret, and tells it to give us /internet/@/coprro:stolen/org/top-secret/:http/plans.txt 04:07:20 *coppro 04:07:26 ehird: urk 04:07:32 that's horrid 04:07:34 Since this server has the internet hierarchy mounted at /internet, it logs into top-secret.org as coppro:stolen and fetches /plans.txt via HTTP. 04:07:39 it's elegant, but horrid 04:07:41 coppro: It's ugly, sure, but that's just because it's verbose. 04:07:51 nah, that's not it 04:08:05 coppro: Let's say I'm already ehird:secret, since I would be. 04:08:07 it's because of the way the hierarchy is organized 04:08:09 And let's say we have an alias for the machine. 04:08:11 I give you: 04:08:54 (and let's say that there's an alias for the top secret machine too on the 9p) 04:09:01 because the way it's represented indicates that ehird:secret exists at the top level, even higher than the concept of IP 04:09:09 /foosrv/:9p/internet/@/coppro:stolen/topsecret/:http/plans.txt 04:09:13 coppro: Nope. 04:09:18 It's just that, remember, my / is unique to me. 04:09:20 if I wanted to follow that URI, I'd go to 432.131.444.312 and log in as ehird 04:09:26 /@/ehird:secret means "ehird's /". 04:09:34 Namespaces. 04:09:38 They're elegant and powerful. 04:09:53 ehird: and yet you're missing my objection 04:10:05 Anyway, if I was a dedicated snooper I'd just define an alias for /ip/432/131/444/312/:9p/internet/@/coppro:stolen/org/top-secret; call it snoop. 04:10:07 I don't start with 'ehird' as my base in my search 04:10:09 Then it's just /snoop/:http/plans.txt 04:10:10 Voila. 04:10:18 coppro: Ah, but that's the thing. 04:10:21 no, I completely agree with that 04:10:24 /@ DOESN'T represent authentication details, as such. 04:10:29 This is a subtle and important point. 04:10:33 It represents whose namespace it is. 04:10:39 Yes, names in my namespace are authenticated to as me. 04:10:55 but then you're encoding more than location 04:10:57 But the authentication info could, say, differ from what site it is (obviously) 04:10:59 coppro: No. 04:11:01 falling into the very trap you sought to avoid 04:11:15 how, pray tell, do I find which ehird? 04:11:16 In a relative namespace (namespace that isn't global), it's important to be able to reference other namespaces. 04:11:37 coppro: That's stored locally, naturally; or rather, it's entirely up to the connector. 04:11:48 -!- augur has joined. 04:12:39 ehird: /ip/432/131/444/312/:9p/@/ehird:secret/internet/org/top-secret/:http/@/coppro:stolen/plans.txt 04:12:49 Objection. 04:12:52 that represents the hierarchy in a more accurate manner 04:12:55 That is not what you mean at all. 04:13:03 but it is! 04:13:06 After /:http/, it's all up to the HTTP protocol. 04:13:11 Remember, coppro — whether it is your opinion or not — 04:13:18 in the terms of the fake reality we have agreed to — idealistic for me — 04:13:19 ok, fine. Switch those around then 04:13:25 Authentication is outside the protocol. 04:13:31 coppro: state it again; i'm slightly sleep-deprived 04:13:34 (fixed0 04:13:37 *fixed) 04:13:54 /ip/432/131/444/312/@/ehird:secret/:9p/internet/org/top-secret/@/coppro:stolen/:http/plans.txt 04:14:08 Earth-shatteringly gigantic objection. 04:14:11 That violates hierarchy. 04:14:24 /ip/432/131/444/312/:9p 04:14:25 /ip/432/131/444/312/@/ehird:secret/:9p 04:14:28 so does your example! 04:14:32 Absolutely not. 04:14:39 It REFERS TO ANOTHER NAMESPACE. 04:14:46 It doesn't define auxillary informatioin. 04:14:50 It's a VERY important point. 04:14:59 Your example is not equivalent in the slightest; it is much less powerful and expressive. 04:15:12 but the problem is you must locate the definition of such a namespace! 04:15:47 Untrue. 04:15:52 No semantics are given to the namespace. 04:16:03 then how is this at all uniform 04:16:39 In /@/blah, blah is opaque; all that is required is that /@/blah is alike /; i.e., there could be a / identical to /@/blah. 04:16:57 There is only the strong suggestion that when using it for authentication purposes, blah should take the format identifier:secreet. 04:16:58 *secret 04:17:00 hmm... I think this discussion would be better served by stopping here, thinking about things, maybe write things up more formally, etc. 04:17:28 i.e., the identifier for the agent to authenticate as, and then the secret used to prove the authority to be authenticated as that agent. 04:17:53 coppro: I think it'd be better served by me having a bite to eat to dig myself out of this slight haze. Then I'll think about that :P 04:18:28 I was referring to both of us, by the way 04:18:49 I know 04:18:54 I wasn't :-D 04:20:07 Things that are not desirable: Spilling a drink on your trousers 04:20:13 This is a complete list. 04:21:38 coppro: btw, I don't have much issue with DNS itself 04:21:45 it's reversed, but that has no consequence; it is otherwise uniform, too 04:22:03 I'm not sure I like DNS' resolving architecture, but that's an entirely different matter to the names 04:23:34 coppro: also, none of this has much actual consequence :-p 04:23:37 *:-P 04:24:16 coppro: I do think that string ports would be really nice, though 04:25:07 using an integer as an identifier for anything that is different in any way from any other integer that would be used (that is, r0—rN for registers is okay) should be grounds for capital punishment 04:25:16 THAT IS, YOU SHOULD HAVE TO TALK IN ALL-CAPS FOR A WHILE 04:25:21 THIS WAY NOBODY WILL LISTEN TO YOU 04:25:46 back 04:26:14 ehird: agree with most of that 04:26:21 ok, so I think I know what our fundamental prolem is 04:26:29 ESPECIALLY THE DRINK-SPILLING AND THE CAPITAL PUNISHMENT PARTS I HOPE 04:26:38 coppro: Pro lemma?! 04:27:01 I am most serious when I am most jovial. Discuss. 04:27:20 the mistake we're making is, once again, the fundamental trap 04:27:40 we're assuming that somehow, the method is part of the indicator 04:27:48 when really, it's simply another resource 04:28:10 altogether 04:28:24 the concept of 'nesting' is unecessary; it's more like chaining 04:28:24 coppro: I think I avoided that with my /@ proposal 04:28:29 as it referred to another namespace 04:28:35 however, in practice, 04:28:39 it'd always be used for authentication details 04:28:41 so yeah, it fails, I guess 04:28:57 ehird: you were close, but you got it backwards imo 04:28:59 coppro: I don't think combining the authentication and identifier strings is productive 04:29:17 as in, I don't think there's actually a case where having them as one string is beneficial enough for the break in consisstency 04:29:26 — within this idealised world 04:29:45 hang on, I didn't say I was right either 04:29:58 For instance, suppose there's a book you want, ISBN X-XXXX-XXX-XX 04:30:21 the book might be located /numbers/isbn/X-XXXX-XXX-XX 04:30:26 Wait wait wait. 04:30:28 /numbers? 04:30:33 Why oh why? 04:30:46 fine, take that part out, it's irrelevant 04:30:56 let's say you want to view that book with Google Books 04:31:17 Let me just note that I'm kinda dubious about isbn:. 04:31:31 Theoretically it's nice, but in practice I always just grumble that an Amazon link wasn't provided. HOWEVER 04:31:35 Since this is the perfect world 04:31:43 There would be a plumber(4) rule or whatever to handle it nicely 04:31:46 So I'll shut up; continue. 04:31:51 plumber(4)? 04:31:53 Although don't say Google! Say book(1) or something. :P 04:32:08 ok, fine, book(1) will display the book 04:32:10 coppro: Plan 9's plumber — give it a file, it'll view/whatever it in the most appropriate way. 04:32:22 or amazon will load up an amazon page 04:32:31 :P 04:32:35 It's how you can right-click ("open", basically) a .ps in acme and it'll open it instead of giving you garbage in acme. 04:32:37 what you really have is two distinct resources here 04:32:44 It's basically a centralised run-the-appropriate-program service. 04:32:47 so encoding them into one URI is wrong 04:32:50 (with user-specific preferences) 04:32:57 coppro: you mean 04:33:03 the amazon identifier 04:33:05 and the isbn identifier? 04:33:07 right 04:33:11 I think the language to be used is: 04:33:19 the amazon identifier is-a-resource-of the isbn identifier 04:33:34 ah, but it's not, see 04:33:39 (Yes, it's an identifier too, but when you look it up from an /isbn, it's acting as an appropriate resource) 04:33:50 amazon is a just a method of accessing a resource 04:33:59 like book(1) or your local library 04:34:02 Irrelevant. 04:34:07 Totally relevant! 04:34:15 The identifier represents "the book foo on Amazon". 04:34:26 It so happens that that identifier is an appropriate resource for an /isbn identifier. 04:34:31 Even though they do not identify the same thing. 04:34:34 I say it should be represented as /com/amazon|/isbn/X-XXXX-XXX-XX 04:34:48 What? That's ridiculous. That makes no sense. 04:35:14 the book resource and the amazon resource together get you the web page to buy an amazon book 04:35:23 since you are accessing the book via amazon, amazon comes first 04:35:30 See, wait. 04:35:39 but it's clear that the book is a distinct resource that could be accessed through a different method 04:35:42 WAIT. 04:36:04 coppro: This is wrong because the identifier for "the isbn XXX on amazon" is different from the identifier you use to access the resource, which is :http/fgdfgkldjfgldkfjgdfg or whatever. 04:36:16 ehird: They're eqiuvalent! 04:36:16 I think we already agreed on the Rightness of having them be the same. 04:36:25 coppro: Okay, too radical, too radical. 04:36:30 This is like a computer-wide plumber(4). 04:36:39 Dispatching the identifier /isbn/foo to the http server. 04:36:46 ...and, actually, you know what? 04:36:47 I like it. 04:37:03 I like it a lot. 04:37:21 too bad it's completely impractical :( 04:37:29 On today's internet, yes. 04:37:41 But in and of itself, there's nothing impractical to it. Well, apart from the impossibility of standards. 04:37:50 right. 04:38:55 you only need one additional extension to make that work, which is a means of converting from one resource indicator to another 04:38:59 "The entire system, including the default program that runs in the window — the equivalent of xterm [Far89] with ‘cutting and pasting’ between windows — is well under 90 kilobytes of text on a Motorola 68020 processor, about half the size of the operating system kernel that supports it and a tenth the size of the X server [Sche86] without xterm." 04:38:59 Ah, an era where the X server was only 900 kilos. 04:39:11 Also known as the stone age. 04:39:34 coppro: actually, I suggest just handing it to the port "plumber" 04:39:42 the identifier /isbn/foo, in specific 04:40:13 coppro: hmm 04:40:14 ehird: yeah, that's the idea. /com/amazon would be a plumber, which would see the isbn number 04:40:19 coppro: it needs one more bit of information 04:40:23 coppro: what protocol you want back 04:40:32 add it in as another resource 04:40:32 the operation we want is "give me the appropriate http connection for /isbn/foo" 04:40:40 see what i mean? 04:40:47 /protocol/http|/com/amazon|/isbn/book 04:40:47 otherwise it's useless; you just get a connection back and have no idea wtf it is 04:40:58 coppro: can i reformulate that to be a proper hierarchybob? 04:41:08 Never! 04:41:29 /com/amazon/::http/isbn/book 04:41:42 which is shorthand for 04:41:52 /com/amazon/:plumber/http/isbn/book 04:42:04 but with that, you cannot simply extract the '/isbn/book' identifier as referring to a book 04:42:10 erm, explain 04:42:27 like, here's the way I think of things 04:42:39 how you get to a resource is a chain of means of access 04:42:49 "Haskell, a language usually reserved for big commercial applications" 04:42:49 Finally, Haskell has made it. 04:42:58 to get to that book, you are accessing /isbn/book via /com/amazon via /protocol/http 04:43:16 coppro: This is all fine for an implementation, but pollutes the mind when trying to create an efficient identifier. 04:43:24 If it's representable by an efficient hierarchy, it's probably best to go with that. 04:43:40 What can you do with your ABOMINATION AGAINST NATURE :P that you can't do with /com/amazon/::http/isbn/book? 04:43:48 Know that /isbn/book is an identifier? 04:43:50 I might also access /isbn/book via /libraries/calgarypublic via /me/walking 04:44:01 Yes you can; :plumber/protocol/identifier is the syntax. 04:44:12 And since ::protocol/identifier is sugar for that, you know that identifier, well, is. 04:44:22 but your syntax doesn't keep the pieces distinct 04:44:22 coppro: can you give me an internet example so i can translate it? 04:44:38 coppro: I'm not delighted by the prospect of inventing an identifier scheme for everything ever 04:44:58 coppro: how about accessing /isbn/book via /com/amazon via /org/proxy? 04:45:12 ehird: right, so then you just sub out the first component of the path 04:45:17 to make things fun, let's say /org/proxy is based on a 9P server with these identifiers on /internet 04:45:40 /org/proxy/:9p/internet/com/amazon/::http/isbn/book 04:45:46 coppro: I get where you're coming from 04:45:53 have authentication and all other methods of access be specified in one way 04:46:01 I just think that it has no benefits over a hierarchy and is more complex 04:46:05 and 04:46:18 I don't think that plumbing an identifier ISN'T part of the hierarchy 04:46:32 I'd say that, since amazon isn't simply a resource for the book, it's a resource for amazon's stuff on that book, 04:46:40 they are definitely separate identifieeeees 04:46:41 right, I think that's our fundamental disagreement 04:46:44 (things that are identified) 04:46:49 Authentication doesn't count as this 04:46:50 it depends on what your definition of a resource is 04:46:55 but amazon's page for a book doeos 04:46:56 *does 04:47:06 coppro: it doesn't make sense to define a resource for an /isbn 04:47:15 this is actually why I wanted an online viewer, rather than Amazon, it makes more sense 04:47:16 because everything an /isbn identifies has infinite facets 04:47:24 amazon takes some of them, mostly metadata 04:47:27 a /isbn is the abstract concept of the book 04:47:27 and adds purchasing, reviews etc 04:47:30 it's definitely distinct 04:47:45 /mylibrary/items/34296532 might be a concrete instance 04:47:50 and yet, it SHOULD be the result of asking amazon "what have you got for /isbn/foo?" 04:47:57 thus, /com/amazon/::http/isbn/foo is correct 04:48:08 and 04:48:20 we can then inverse-of-generalise this to the more direct case of a book viewer 04:48:40 btw, isbns are real URIs 04:48:45 I know 04:48:47 /org/bookpiratesyarr/::http/isbn/foo 04:48:53 coppro: ok, wait, i have some fun challenges 04:49:00 that apply to both our suggestions 04:49:02 ok 04:49:34 coppro: what is the client supposed to pass as the path to http? "GET " what? /isbn/foo is incorrect, there could be a distinct /com/amazon/:http/isbn/foo 04:49:39 i'm not sure the other challenge is in fact one 04:49:43 but i'll pose it anyway 04:49:55 ehird: I'm thinking in the abstract 04:49:56 coppro: what if there are multiple possible URIs for it? how does the client disambiguate what "kind" of uri i want 04:50:00 that's why I said it's unimplementable 04:50:04 like if amazon goes into the book-piracy business 04:50:18 how do we tell amazon we want the book-pirate URL and not the book-purchaser URL? 04:50:32 coppro: not unimplementable, you could redesign every protocol 04:50:36 and http is annoyingly real-world 04:50:37 but 04:50:43 interacting with protocols is important even in an ideal world 04:50:47 abstraction, encapsulation 04:50:49 all that shizz 04:50:51 ehird: then /com/amazon would have to serve in one manner. /com/amazon/piracy might give you the illegal version instead 04:51:08 coppro: ok, that's workable 04:51:15 what about my first challenge? 04:51:47 coppro: you know how you said plan 9's per-process namespaces are awesome? want me to tell you an awesome thing built on them? 04:51:55 sure 04:52:15 ehird: /protocol/http would be responsible for deciding how to access /com/amazon. Remember, ideal, not practical 04:52:38 it might be amazon.com/?id=/isbn/book 04:52:44 as long as it was consistent 04:53:31 coppro: rio, the plan 9 windowing system/terminal (trust me, it's reasonable to have these combined). It serves/handles/whatever /dev/{cons,mouse,screen}. So, if something writes to /dev/cons that rio spawns, rio gets it. If it writes to the screen, or tries to access the mouse. And rio handles this and multiplexes it. So, you can literally run rio in a rio window with no jiggery-pokery: rio thinks it's writing to the real screen and accessing the real mous 04:53:32 the top rio lets it delude itself into thinking this. 04:53:58 that's epic 04:53:59 A rio window just displays /dev/{cons,screen} and handles input to /dev/cons and multiplexes the mouse, blah blah blah. 04:54:01 It's pretty damn awesome. 04:54:22 ehird: okay, now I've got a challenge for you. Suppose you have an identifier for the amazon page for a book over HTTP. How do you write an identifier to access it via HTTP 04:54:25 err 04:54:29 with Firefox 04:54:39 Mu. 04:54:43 Firefox should not be specified.. 04:54:45 *specified. 04:54:54 If you want to do that, do "firefox /...". 04:55:02 ah, but mine allows you to say that you want to access the page via firefox 04:55:05 just prepend it as an access method 04:55:08 It is one client; there are many others. Which to use should never be enforced. 04:55:14 coppro: That is an antifeature. 04:55:42 ehird: the same argument could apply to Amazon 04:56:01 why force you to use my bookstore? 04:56:03 But it doesn't, tbh. 04:56:06 Meh. 04:56:23 coppro: In one, two, or three steps this will turn into an ontological debate about the specification and categorisation of everything. 04:56:25 We Are Doomed. 04:56:35 and living in #esoteric 04:56:47 note: this is a subset of Doomed 04:57:04 coppro: also interesting fact: 04:57:46 How do you create a window in rio (without the UI, that is)? Simple. Bind rio's directory to /dev, put something in /dev/label to give your window a label (title), and exec something < /dev/cons > /dev/cons >[2] /dev/cons. 04:58:02 (Those redirections are because you're already outputting/receiving from your /dev/cons, before you rebound /dev/cons.) 04:58:03 indeed, that is awesome 04:58:18 (So it needs to be explicit to not go into your input/output stream, the old /dev/cons.) 04:58:20 I am already a fan 04:58:52 I'm pretty sure you could use that to achieve X-style remote programs 04:59:21 just get /n/foo/bin/theprog to run in an environment that has your rio in /dev, I think 04:59:48 since it's basically pixel-pushing, though, that will probably be glacial 05:00:14 yeah 05:00:15 coppro: oh, technically window(1) doesn't use that method of creation any more; I'm not sure why 05:00:21 :( 05:00:27 it writes to /dev/wctl, which is rio's control file; there's probably a good reason 05:00:31 coppro: the old way still works, though 05:00:37 and 05:00:38 bind -b $dir /dev 05:00:43 it still does the crucial "bind rio to /dev" line 05:00:55 wait 05:00:56 I'm mistaken 05:01:01 it's exactly the same 05:01:03 just a minor change 05:01:06 stop worrying :-D 05:01:12 lol 05:01:20 also, Agora 05:01:27 yeah, i have so many unread agora emails 05:01:43 your proposal failed :( 05:01:49 yeah, I'm sad 05:02:00 it would have passed if it was AI=1 05:02:06 some voted against it due to the danger of AI=2 05:02:12 and it was at VI 0.8 or something now 05:02:22 coppro: incidentally, plan9's rc shell utterly solves the problem of escaping 05:02:34 oh? 05:02:37 yep 05:02:48 how, if I may ask 05:02:53 (it's by tom duff too!) 05:03:05 (famous as being a contributor to our wiki. also, he did some sort of device thing.) 05:03:15 coppro: some context: instead of "every variable is a string", it's "every variable is a flat list of strings" 05:03:34 if you do $foo, it's ALWAYS one entity, always; it never spills over 05:03:34 ok 05:03:43 incidentally, the list thing means that you get path=(foo bar) 05:03:47 actual elements 05:03:51 yeah, I always hated that about bash 05:03:59 coppro: 'foo' is always completely quoted 05:04:11 but is that all it solves? 05:04:11 (escaping is ''; this saves having to have an escape-the-escape-char thing) 05:04:14 coppro: nope 05:04:20 it has the concatenation operator 05:04:27 anyway 05:04:33 coppro: one thing I missed, sorry for slipping 05:04:34 if you do 05:04:36 foo='a b c' 05:04:36 what if I want to pass "foo bar" as one argument 05:04:39 that's the same as 05:04:41 foo=('a b c') 05:04:43 so 05:04:45 echo $foo 05:04:46 is 05:04:47 echo 'a b c' 05:04:48 BUT 05:04:54 if you have foo=('a b c' 'd e f') 05:04:56 that's 05:04:58 echo 'a b c' 'd e f' 05:05:02 neato 05:05:03 ehird 05:05:07 first class types. 05:05:07 all lists flatten, and quoting remains 05:05:13 augur: stfu, busy explaining 05:05:15 coppro: now 05:05:22 you can also do $foo(1 2 3 1) 05:05:27 which is the same as $foo(1) $foo(2) etc 05:05:29 augur: biggest problem with first-class types: are they mutable? 05:05:30 (just indexing) 05:05:31 but 05:05:38 coppro: ofcourse not! 05:05:50 ok, good 05:05:53 coppro: since if we read e.g. a file into lines we have (line line line) 05:05:57 actually 05:05:58 coppro: what if we want to pass it all as one argument? 05:06:01 that sounds like an esoteric language 05:06:05 coppro: Simple! $"var 05:06:09 nice 05:06:12 That's all the elements of var with $ifs (a list) in between 05:06:16 hmm, I think ifs is a list 05:06:17 dunno 05:06:22 prolly picks the first element if it is 05:06:23 Anyway 05:06:29 that means we can do simple concatenation with 05:06:32 ifs='' $"var 05:06:47 coppro: now, we have the concat operator 05:06:54 foo^bar^baz = foobarbaz 05:06:59 nice 05:07:06 'foo'^$x^'blah' where x=x → fooxblah 05:07:24 (a b)^(b c) → (ab bc) 05:07:24 what the hell does first-class mean 05:07:28 (↑↑↑ totally awesome) 05:07:45 (a b)^b → Error you are stupid (I wish this was different, but it rarely comes up; just do $"var) 05:07:54 now 05:08:17 foo$a.$b DOES work 05:08:27 foo$bar.x where bar=(a b) → fooa.x foob.x 05:08:37 it's just implicit ^, pretty much, if you mention a var in an unquoted string 05:08:48 here's an example of using the ifs trick 05:08:50 augur: now that I think about it, isn't Python's type system pretty much like that? 05:09:01 though a bit prototype-based 05:09:02 coppro: what? no. what? 05:09:30 * coppro tries to remember what he was thinking about when he said that 05:09:59 hmm, I think I'm mistaken about ifs bring strictly used for $"foo 05:10:23 oh, whatever 05:10:23 coppro: anyway, the point is, the approach of using lists 05:10:23 and the lists-flatten-but-quotes-stay 05:10:23 yeah, I like that 05:10:23 basically solves all quoting problems 05:10:23 augur: Python's types are pretty first-class 05:10:25 coppro: oh, and rc is the first shell to have sane control structures, ever 05:10:54 `if(cond) cmd` checks cond and executes cmd if it's true. Since commands can be {cmd;cmd;cmd}... it just works. 05:10:55 No output. 05:11:21 for(x in a b c) works, for(x) is implicitly "in $*" (args) 05:11:47 One thing is that to do an else, you do "if not cmd" after an if. 05:11:49 * coppro thinks augur's off looking at Python 05:11:55 You might consider this a wart, but there's no race conditions to think of, so. 05:12:01 It works well enough. 05:12:12 * augur is off looking at Hagit Borer's Structuring Sense 05:12:25 Oh, and while() echo y is yes, simply because you can do while(a;b;c) echo y 05:12:30 and an empty command is true 05:12:56 there's also switch, you know, just for flavour; [[Rc captures command exit status in the variable $status. For a simple command the value of $status is just as described above. For a pipeline $status is set to the concatenation of the statuses of the pipeline components with | characters for separators. 05:12:56 Rc has a several kinds of control flow, many of them conditioned by the status returned from previously executed commands. Any $status containing only 0’s and |’s has boolean value true. Any other status is false.]] 05:13:02 that's just for plan 9 statuses, really 05:13:15 <{foo} <{bar} is like bash's <(foo) <(bar) 05:13:21 i.e. give filenames to these spawned processes 05:13:33 `{foo} is command substitution; comes back as a list split on $ifs 05:13:33 No output. 05:13:37 ehird: Is it just anything other than nice shell? 05:13:57 $#foo is length, >f [2]f is fancy redirection, and * globbing works 05:13:58 coppro: yes! 05:14:10 oh, I forgot; ~ is useful for regexing 05:14:12 ~ thing pata pat pat 05:14:20 and sets $number and the like 05:14:22 so far all you've done is tell me how it's a nice shell language 05:14:23 *pat 05:14:29 coppro: the thing is 05:14:41 and, while I like learning new languages, now is not the time 05:14:47 coppro: because of its quite sparseness, and the rich abundance of simple commands on plan 9 05:15:02 coppro: and its nice syntax and high adeptness at handling unix-esque programming, 05:15:09 coppro: rc is actually a viable language to write full programs in 05:15:15 btw, sponge is awesome 05:15:42 neat 05:15:42 for instance, there's an entire minimalist-sorta-CMS-sorta-web-framework thing (not nearly as crappy as it sounds) written entirely in rc, and it isn't strained at all 05:15:42 (http://werc.cat-v.org/) 05:15:55 http://hg.cat-v.org/werc/file/7b4a30e1feb9/bin/werc.rc#l1 05:16:05 * coppro does some homework 05:16:07 you can see that it reads mostly like an eccentric programming language 05:16:29 so, yeah, rc solves all the problems shells faces and then goes and solves the problem of a lightweight glue language that you can still write big stuff in. 05:16:42 then it eats your grandmother for breakfast and runs under rio. 05:16:58 lies. nothing will ever replace perl 05:17:00 not even perl 05:17:26 One tool for one job: "Those days are dead and gone and the eulogy was delivered by Perl." —Rob Pike 05:17:41 Funny how opposites can be so alike in a sense. 05:18:22 * coppro is ashamed to admit he uses perl 05:18:50 just think of yourself as a soldier in the trenches of modern unix 05:19:02 * coppro awaits ehird to say 'And you aren't ashamed of using C++?!' 05:19:05 a land made entirely out of faeces piled on top a shimmering diamond of spacewars 05:19:07 hmm... bad grammar 05:19:13 coppro: I was about to say that, in fact, I'd rather you used Perl and not C++ 05:19:16 ehird: hence my comment about sponge 05:19:24 heck, Perl is easier to defend than C++ 05:19:27 which says something about C++ 05:19:32 not really 05:19:41 is sponge that, gluing tool thing? 05:20:03 the http://kitenet.net/~joey/code/moreutils/ one or that other, one 05:20:07 that other one, thing 05:20:08 the moreutils one 05:20:26 very Unix 05:20:40 wait, is the point of sponge just to write to the file except without wiping it first which is why you can't use >? 05:20:46 yep 05:21:03 that doesn't seem very unix, that seems like a crutch for a flaw in file redirection 05:21:10 admittedly, a hard-to-resolve flaw 05:21:15 and sponge seems nice 05:21:24 it is a crutch for a flaw in file redirection, but it's a simple elegant solution to the problem 05:21:30 but i wouldn't call it an example of very Unixy design rather than a very Unix-culture-esque kludge ;-) 05:21:41 it does one thing and it does it well 05:21:50 it's annoying that it's necessary, but as long as it is, it has a purpose 05:22:31 "tmp 05:22:31 puts stdin into a temp file and passes it to the specified program" 05:22:42 They should call that one thisStupidFuckingProgramCan'tHandleStdinItShouldDie. 05:23:06 [[In the same spirit as 'pee', but much more powerful.]] 05:23:07 "I present: semen(1)!" 05:23:18 It reproduces and so much more! 05:23:38 lol 05:23:40 Wait. 05:23:42 "connect 'cmd1' op 'cmd2' ... -- connects fd's of commands together, etc" 05:23:48 And looking at the examples... 05:23:52 Yeah, they just invented shell redirection. 05:23:54 Congraaaaaaaatulations. 05:24:11 yeah, a lot of those aren't really needed 05:24:15 but sponge is pretty awesome 05:24:50 mispipe is fun 05:24:52 coppro: btw, I'd just s/sponge/tee/ most of the time, since I don't care whether I see a copy of the file afterwards 05:24:55 or, wait, does tee work there? 05:24:56 hmm, maybe not 05:25:05 don't think so 05:26:10 nope, it doesn't wait 05:26:27 Aww. 05:27:36 [[ 05:27:36 WalterBright, WalterBright, 05:27:36 First * in C tonight, 05:27:36 I wish I may, I wish I might 05:27:37 Know Tango or Phobos: which one is right? 05:27:37 ]] 05:27:38 — on reddit, a response to Walter Bright plugging his language (D, that is) as always 05:28:53 lol 05:29:51 hrm. I wanna get some work done, but I'm not sure what to do 05:29:53 coppro: i have a question about — oh, the shame — C++ vtables 05:30:00 coppro: I suggest answering my question! 05:30:18 ehird: Okay. The answer is they're evil and vtables should never be used in any language ever. 05:30:22 :P 05:30:37 coppro: Congratulations. You just condemned dynamic dispatch. 05:30:42 I'm in awe at your ignorance. 05:30:46 ehird: I know. I'm great, aren't I? 05:30:54 So, what's your question? 05:31:11 coppro: How are the entries in a vtable ordered? 05:31:14 Alphabetically? 05:31:25 That is, how do you know that index N in a vtable represents the method M? 05:31:31 ehird: Depends on the ABI, I believe 05:31:32 There needs to be a well-defined ordering. 05:31:34 coppro: >_< 05:31:38 What's the most common thing? 05:31:39 Rephrase. 05:31:41 What does GCCC do? 05:31:43 *GCC 05:31:49 GCC follows the Itanium C++ abi 05:31:52 Which does 05:31:52 1 sec, I'll find a link 05:32:00 I don't know it by heart 05:32:12 http://www.codesourcery.com/cxx-abi/abi.html 05:32:33 coppro: And, just to check that I'm sure on how vtables are done, it's obj[vtableindex][methodindex](), isn't it? 05:32:35 Essentially. 05:32:48 We know what index the method will be at, and vtables are always at a certain place in an object. 05:33:01 So the overhead is two indexings more than a regular method call. 05:33:07 nah, it's more like (*obj[vtableindex])[methodindex]() 05:33:14 there's only one vtable per type 05:33:19 and the object only stores a pointer 05:33:21 Well, yes. 05:33:27 I was simplifying. 05:33:30 coppro: Anyway, why are they evil? 05:33:39 ehird: Because they're in C++ :P 05:33:39 I realise that C++ almost certainly fucks them up. 05:33:48 But they're the simplest way to implement dynamic dispatch, no? 05:33:49 I was just ribbing you 05:33:54 absolutely 05:33:54 coppro: I suspected that. 05:34:02 http://www.codesourcery.com/public/cxx-abi/abi.html#vtable 05:34:14 C++ doesn't have multiple dispatch because it is not trivial to implement 05:34:25 particularly not without overhead 05:34:28 dynamic dispatch is just dispatching methods at runtime 05:34:31 instead of resolving at compile-time 05:34:35 nothing to do with multiple dispatch 05:34:36 pretty much 05:34:43 "A virtual table consists of a sequence of offsets, data pointers, and function pointers, as well as structures composed of such items." 05:34:44 ah, I see. 05:34:44 yeah, multiple dispatch is far more complex 05:34:47 C overcomplicates the world yet again. 05:35:05 i mean, seriously, all you need is a well-defined ordering of pointers 05:35:07 that's it. srsly. 05:35:27 if you have a sane language, they'll only be used for calling functions of an interface of some sort 05:35:34 so a well-defined ordering of function pointers, that is 05:35:41 ehird: according to that, the order of the functions is declaration order 05:35:50 coppro: >_< 05:36:03 coppro: Nice dependence on the lexical ordering of the source code, there. 05:36:10 So brittle. 05:36:14 Anyway, I'm just pondering adding Go interfaces to my sideset of Plan 9 C. 05:36:14 ehird: indeed :/ 05:36:33 Plan 9 C already has Go composition (= if you have an unnamed struct, the fields expand in and you can use it as a pointer to the includee) 05:36:40 so adding Go templates would be quite easy 05:36:46 erm 05:36:47 Go interfaces 05:37:32 interface foo { 05:37:33 void frobnicate(); 05:37:33 int swizzle(char *poop); 05:37:33 }; 05:37:41 well, actually, it should be 05:37:43 Adding C++ interfaces is best done through C++'s existing mechanism 05:38:02 interface foo { 05:38:03 void frobnicate(interface foo *blah); 05:38:03 int swizzle(interface foo *blah, char *poop); 05:38:03 }; 05:38:11 coppro: Not C++ interfaces. 05:38:14 Go interfaces. 05:38:20 Anything that has those methods complies. 05:38:24 It's static duck typing,. 05:38:25 *typing. 05:38:27 It's nice. 05:38:53 ehird: I know. But you were talking about C++ vtables, weren't you? 05:38:56 Yes. 05:39:05 * coppro is confused 05:39:37 I'm just making sure I understand how to do a vtable. 05:39:57 ehird: yeah, it's pretty straightforward. C++ does more funky things because there's more funkiness to deal with 05:40:51 like virtual bases 05:41:42 although I suppose Java still has to deal wit hthat 05:41:44 *with 05:42:11 Okay, one issue is that without namespaces, C can't really do the has-a-function-of-this-name-and-type thing. 05:42:16 Meh. 05:42:37 coppro: what do you think of intbig as a bignum type name? 05:42:42 it fits in with int64 and the like 05:42:44 but is kinda ugly 05:42:51 ehird: int* :P 05:43:02 coppro: lawls. 05:43:05 coppro: intInfinity 05:43:12 intBitsOfMemory 05:43:14 the name would actually be good if it weren't taken 05:43:19 intBitsOfMemoryNotUsedByOtherThings 05:43:22 lol 05:43:28 intBitsOfMemoryNotUsedByOtherThingsMinusSomeBitsUsedForOverhead 05:44:57 actually, an intbig type that lets you do a+b worries me, I think 05:45:08 those things should be constant-time, or near it (e.g. emulating int64 on 32-bit) 05:45:22 but with a bignum they might fail, or take eons, etc 05:45:25 might allocate memory 05:45:47 I take it you're not a fan of operator overloading 05:46:06 Not a huge fan. But that's irrelevant; the question is keeping in the design philosophy of C. 05:46:26 ah 05:46:44 if you're keeping in the design philosophy of C, I don't think a bigint type is appropriate 05:46:51 yeah 05:47:05 I find that bignums are rarely needed, anyway 05:47:17 a rational type > a bignum type 05:47:23 int32 works a surprising amount of the time, and int64 almost everything else 05:47:49 coppro: types aren't rational! forth uber alles! :P 05:47:59 :P 05:48:03 C99 introduced complex numbers as an intrinsic type 05:48:07 which feels wrong, definitely 05:48:14 it's really two numbers stuck together, that's called a struct 05:48:16 not an atomic value 05:48:17 btw, remember to name all your new keywords something like _PREVENT_USERS_FROM_NAME_CLASHES_keyword 05:48:18 it's creepy 05:48:36 coppro: New keywords like what? 05:48:39 I can't think of any I'm introducing. 05:48:42 ehird: I don't know 05:48:47 coppro: But, uh, no. :P 05:48:50 I'm just trying to poke fun at the C committee 05:48:54 Indeed 05:48:55 _Bool! 05:49:00 _False! 05:49:16 Personally, I'd rather type "int" and "0". :P 05:49:41 yeah 05:50:00 but if you #include , we've got THREE MACROS to fix things for you 05:50:36 http://chaos-pp.cvs.sourceforge.net/viewvc/*checkout*/chaos-pp/order-pp/example/bottles.c?revision=1.10 05:50:37 Oh my word. 05:50:54 speaking of macros and cpp, I think I'll have #include foo 05:51:02 with #include "foo" and #include being supported for backwards compat 05:51:09 and .h files still exist 05:51:20 they must only contain declarations, #include and #lib 05:51:35 and thus, all the inefficiency of the C preprocessor is avoided 05:52:02 ehird: You may want ot see if the C guys have taken any steps towards modules 05:52:17 (#lib leaves a note to the linker telling it to link in the specified library to the resulting program. it goes in the library's header file. this is why in plan 9 you don't need to specify the libraries you used) 05:52:25 coppro: The C guys did Go. :P 05:52:31 Which has proper modudles. 05:52:33 *modules 05:52:42 ehird: I mean the C committee guys 05:52:58 Oh, you mean The Authors of C99. 05:53:02 I'm, uh, skeptical. 05:53:20 me too 05:53:24 Anyway, mine is more a replacement for cpp's arbitrary inclusion than a module system. 05:53:36 I'm of the opinion that the C committee is nuts 05:53:43 even more than the C++ committee 05:53:50 Not nearly as much as the C++0x committee, come on now. 05:53:51 but it might still be worth checking out 05:53:54 Have you READ that thing? 05:54:01 http://www.google.com/search?client=safari&rls=en&q=c+committee+module+system&ie=UTF-8&oe=UTF-8 05:54:05 Welp, that's enough looking for me. 05:54:16 ehird: Yes. I've even submitted some issues 05:54:18 It's the webpage equivalent of tumbleweed. 05:54:43 heck, I've implemented part of it 05:54:57 coppro: "Issue: Holy fuck you are all out of your minds. Take a step back and look at your draft. No, I mean, really, really look at it. Step further back. Clear your mind. Look at it. Holy shit. I mean. Fuck, right? Fuck." 05:54:58 and yet, the C++ committee is not fundamentally as nuts as the C committee 05:55:27 I guess C++ is at least continuing the tradition of C++. 05:55:54 like, the C++ committee redefined the meaning of auto. 05:55:57 coppro: also, cool thing: Go's concurrency model is basically a typed pi-calculus 05:56:22 -!- oerjan has joined. 05:56:31 if the C committee tried to do that, they'd instead decide the old meaning was integral to the language and instead use _Infer, with to #define infer _Infer 05:56:59 you mean _Auto 05:57:03 with #define auto _Auto 05:57:08 and 05:57:08 ehird: but auto is already a keyword 05:57:10 get your insanity right 05:57:12 coppro: So? 05:57:16 cpp can override it. 05:57:17 :-D 05:57:26 ehird: it's illegal to do so 05:57:36 what if a standard header said "auto int = 3;" 05:57:38 coppro: Guess who says it's illegal? 05:57:40 The C committee. 05:57:41 >:) 05:57:45 coppro: That one's easy. 05:57:55 stdinfer MUST be included after all other standard headers. 05:58:06 oh ok 05:58:12 Otherwise, undefined behaviour! 05:58:14 yeah, that sounds pretty C committee is 05:58:16 *ish 05:58:28 This also means that your header files cannot include standard header files themselves (a good practice, but only in idealist lands like Plan 9). 05:58:33 Or, at least, they have to say _Autot. 05:58:35 *_Auto 05:59:03 someone should actually propose getting rid of C auto and see how many people object 05:59:15 if the number is not 0, there is a problem 05:59:58 I tried to immediately take the opposing opinion (my brain does that) and my brain rejected it. 06:00:01 That was painful. 06:00:04 Like, it didn't even get to my mind. 06:00:28 There was a confused flurry of bad half-justifications but I didn't really think them, they were just side-effects of my brain expunging it immediately. 06:00:30 it stopped at the splanch 06:00:43 I've got an idea. They should add a new keyword called _Ignore which does absolutely nothing, and could be put anywhere. It would have some effect on macros or something 06:00:49 It's 6am; I should sleep soon but I'm not very tired. 06:01:00 coppro: _Underscoreless 06:01:18 Every identifier of the form _[capital letter]* is aliased to [lowercase letter]*. 06:01:22 As a macro, naturally. 06:01:25 cpp processes it. 06:01:27 I hate underscores at the beginning and end of identifiers 06:01:52 btw, anyone who likes string processing and... stuff... should read http://doc.cat-v.org/bell_labs/structural_regexps/se.pdf 06:02:55 ehird: weren't you on about this earlier? 06:03:02 on about as in linked to, yes. 06:03:39 on a boat 06:04:00 I've got a structural regexp-themed finger .plan. 06:04:07 *finger(1) 06:04:28 I'm kind of ashamed for knowing that reference. 06:07:02 "Ken was the man responsible for UNIX and the fact that I don't have to pay 8000 dollars for a copy of Windows since MS has some competition now" 06:07:02 ok, who wants to tell this moron? 06:07:38 email a link to Stallman 06:07:53 no, stallman is who you call for GNU/Kernel 06:08:06 wait, wait 06:08:12 maybe this guy actually experiences time backwards 06:08:14 yep, that'd explain it 06:10:30 http://gcc.gnu.org/onlinedocs/gnat_ugn_unw/Style-Checking.html#Style-Checking 06:10:31 Holy shit. 06:11:32 O_O 06:12:14 That's Ada for you... 06:12:34 coppro: i want a flamewar 06:12:50 Spaces or tabs for indentation? (let's assume C; in Python using tabs is like, uh, shitting on someone) 06:12:53 I say tabs. 06:13:22 I say tabs if and only if you can convince everyone about the correct way to use them (note: not possible) 06:13:51 actually, nah, i like spaces better 06:13:57 Actually, people who have actually thought about it and use tabs in practice rationally arrive at the only logical conclusion: tabs indent, spaces align (personal opinion: but alignment is generally bad). 06:14:31 It's the only way that works for all sizes of a tab, it's semantic in its denotion of indentation, etc. 06:14:32 -!- quantumEd has quit ("Leaving"). 06:14:34 It's rather obvious, really. 06:14:38 yeah 06:14:46 Rumours of the great tab ambiguity are greatly exaggerated, and plenty of projects get along fine like this. 06:15:22 let's agree that emacs-mode neds to die 06:16:03 only ais523 disagrees with that, and when entering a discussion on indentation, he turns into an idiotic moron :P 06:16:15 indeed 06:16:18 *needs 06:16:53 coppro: /-mode/d 06:16:57 I still agree! 06:17:31 what is emacs-mode 06:17:40 oerjan: basically 06:17:42 it's space-indentation 06:17:45 but it replaces every 8 spaces 06:17:48 with a tab 06:17:55 oh 06:18:01 thus breaking everything for people who set tabs to something else, and generally being an unmanagable fuckfest of idiocy 06:18:23 coppro: another cool thing about rio! /dev/screen is actually in the plan 9 image format, so you can screenshot just by running topng on it 06:18:33 (and /dev/window is the same but it's the window's /dev/screen, basically) 06:18:38 awesome 06:28:46 coppro: incidentally, plumbing goes beyond just passing it a file 06:29:02 for instance, you can plumb "foo.c:42:" (from a c compiler error) and it'll open foo.c on line 42 06:29:08 neat 06:29:09 well, assuming there's a rule for that; I believe there is by default 06:29:12 it just sends a string 06:29:22 can it do file(1)-type checks too? 06:29:44 coppro: be more specific 06:30:01 ehird: like, based on contents and not name 06:30:15 Yes, I'm pretty sure. 06:30:54 e.g. cat foo.odt | file - gives "/dev/stdin: OpenDocument Text" 06:31:44 There's a separate file(1) (because plumbing just handles sending to another program; and doesn't just do files). But indeed; I doubt it analyses file extensions! 06:31:58 And plumbing a .ps and a .pdf works, presumably regardless of their name. 06:32:07 Unix is a land of in-stream type tags. 06:32:09 while if it knew the name, it would clearly have seen that it was cat food 06:32:15 http://plan9.bell-labs.com/sources/plan9/usr/glenda/lib/plumbing ;; time to chase down whatever basic is :P 06:32:47 ehird: You know what was entertaining once? Okular doesn't care about extensions, and there was this link posted that was actually a jpg but said .pdf. I was the only one who could see it 06:33:01 Windows is a land of dumb extension obedience. 06:33:10 In Unix/Plan 9, file extensions are just hints for the user. 06:33:36 yep 06:33:44 http://plan9.bell-labs.com/sources/plan9/sys/lib/plumb/basic 06:33:57 And also http://plan9.bell-labs.com/sources/plan9/sys/lib/plumb/fileaddr, which I don't know what it does. 06:34:21 "type is text"; hmm, I guess you can plumb things other than strings. 06:34:23 That's cool. 06:34:34 [[ 06:34:35 # start rule for microsoft word documents without .doc suffix 06:34:35 type is text 06:34:35 dst is msword 06:34:35 plumb to msword 06:34:36 plumb start wdoc2txt $file 06:34:37 ]] 06:34:41 Looks like it's looking at the file contents there. 06:34:44 yep 06:37:13 It may seem odd that there are two matches rules in this example. The reason is related to the way the plumber can use the rules themselves to refine the data in the message, somewhat in the manner of Structural Regular Expressions [Pike87a]. For example, consider what happens if the cursor is at the last character of 06:37:14 % make nightmare>horse.gif 06:37:14 and the user asks to plumb what the cursor is pointing at. The program creating the plumbing message—in this case the terminal emulator running the window—can send the entire white-space-delimited string nightmare>horse.gif or even the entire line, and the combination of matches rules can determine that the user was referring to the string horse.gif. The user could of course select the entire string horse.gif, but it’s more convenient just to point in 06:37:15 general location and let the machine figure out what should be done. The process is as follows. 06:37:38 s/point in general/point in the general/ 06:37:42 That's just cool. 06:38:01 It seems it does use file extensions; I guess since it's just a UI it's no big shakes. 06:38:18 I mean, it's not like the programs it spawns look at the extension. 06:38:19 -!- zzo38 has joined. 06:38:57 [[Here for instance is a rule that, given the process id (pid) of an existing process, starts the acid debugger [Wint94] in a new window to examine that process:]] 06:39:01 * ehird explodes with coolness 06:39:05 * oerjan gives zzo38 the finger 06:39:11 Gem from that: arg isdir /proc/$0 06:39:13 oerjan: why? 06:39:24 07:43 zzo38 [n=zzo38@h24-207-48-53.dlt.dccnet.com] requested unknown CTCP FINGER from #esoteric: 06:39:31 Ah 06:39:38 i/./ 06:39:44 oerjan: If you want to give me the finger, please do so correctly with the CTRL+A FINGER otherwise you won't get a proper response, please. 06:39:47 Oh boy, I'm correcting my messages with sam(1). 06:39:59 zzo38: tee hee 06:40:09 oerjan you are a bad person 06:40:16 zzo38: i don't know that protocol 06:40:50 Just use whatever menu or command your IRC client uses for that. The CTRL+A ACTION command isn't used for this purposes 06:41:07 I said "i/./"; I meant "a/./" 06:41:10 a/./ 06:41:25 i sort of expect the "unknown CTCP FINGER" means irssi has no clue about it 06:41:50 I use it to mass-check idle times on the channel 06:41:55 there's probably a script somewhere, but i don't care that much... 06:47:41 Ah 06:47:41 a/./ 06:47:41 i/; but are you sure really that will work?/ 06:47:43 Erm 06:47:44 Make that 06:47:51 Ah 06:47:51 a/./ 06:47:51 i/; but are you sure really that will work?/ 06:47:51 /\./d 06:47:52 /sure / m/really / 06:47:55 Bringing us to the final result of 06:48:01 Ah; but are you really sure that will work? 06:48:04 sam is awesome. 06:48:11 I wrote some parts of a operating system kernel codes, using 888ASM. Next time I can write a bit more. 06:48:15 zzo38: Cool. 06:48:19 What does it do? 06:48:23 Multitasking? Filesystem? 06:48:31 Interprocess communication? 06:49:39 I wrote the MBR codes using plain machine codes, also. What it does, is, a unreal mode Forth system. It will have a simple file system, too 06:50:05 Processes? 06:50:41 (I'd suggest just making a word SPAWN so that you can do `: hello ." Hello, world!" ; spawn hello` and that makes a hello world process.) 06:51:20 It'd basically just be multitasking a list of executing words. 06:52:01 The process way is I am planning, is a word MODULE to save the HERE and dictionary address, and then restore it afterward. After the dictionary is restored, the next restore would restore the older MODULE and so on... 06:52:35 How does that let the system automatically switch between a list of executing words at a given interval, i.e. multitasking? 06:54:47 That doesn't do multitasking. The dictionary is only used during compilation and interpretation, not during execution, so, as long as only the last process has to allocate memory, you could have some limited multitasking. This system is not designed for multitasking for you can do something similar like I described 06:55:54 What use is an operating system that can't multitask? 06:57:36 ehird: obviously each core runs one instance 06:57:48 I somehow doubt zzo38 has a multi-core computer. 06:58:02 I've got myself thinking about a multi-tasking Forth system, though... 06:58:09 using stacks for IPC? CONSIDER ME INTERESTED 06:58:20 The filesystem is, the entire track zero is sector 1 is the MBR code and sector 2 to 63 is kernel codes. Other than that, it is grouped into pages, where each page is three sectors long. The last 16 bytes of each page is data such as next page, prev page, etc. The first page (other than the boot/kernel) is the allocation page, one bit for each page. 06:58:50 That's not a filesystem, that's a block serialisation device. 06:58:58 The variable called DISK select the drive. The word {{ loads the file-names dictionary, and a name of a directory in a file-names dictionary causes it to load the file-names dictionary of that directory. 06:59:15 Why have a variable DISK? Why not include the disk in the filename? 06:59:21 Just being devil's advocate here :) 07:00:10 Pages can be added or removed by changing the prev/next fields in the 16 bytes at the end of each page. 07:00:13 Actually, I'm not sure why you need files, when you could store words and variables on disk instead... 07:00:48 The file consists of any number of pages 07:01:39 mycroftiv: how much RAM do you recommend I give Plan 9 in qemu? 07:01:52 I have 2.5 GiB, but a lot is eaten by bloated OS X. 512 MiB? 07:04:48 Storing words and variables on disk instead, without files, is one way, but is clearly not the only way. Of course, even the way I described, filenames and directory names are not even supported directly by the filesystem, it is something you add-on, but in Forth you can do like that 07:05:08 ehird: How much of memory does OS X uses? 07:05:15 augur: Now I want a language where you can redefine the types of objects that actually exist 07:05:20 The kernel? Uh, not much more than your average BSD. 07:05:23 The applications? 07:05:25 and not python-style 07:05:25 Holy crap. 07:05:46 Safari, the web browser, uses a load of memory. 07:05:49 coppro: wut 07:05:55 Like a gigabyte of physical RAM used to have 20 tabs open. 07:06:08 yes ehird. 07:06:15 augur: e.g. all ints are now void*s 07:06:18 The assembler 888ASM is much more simpler and it doesn't have all the bloated stuff of other programs 07:06:19 .. 07:07:05 coppro: And what do you mean by "all ints are now void*s", exactly, in that context, anyways, please 07:09:26 zzo38: exactly what I said 07:09:34 Have you ever used the BBL/Abundance database system? It is an extremely old system. But I am using it for a database at the religious education at the church. (That's the only thing I do there, other than help with sometimes help candy packing and/or read books) 07:10:10 BBL/Abundance license says you can do anything you want with it, except for military usage. 07:10:21 It is a complex system and I still have not learned everything about it yet 07:10:38 And they still don't have the printer switch, or a printer. 07:10:59 Do you know how to disable the mouse driver on FreeDOS? 07:24:55 ehird: UTF-8: agree or disagree? 07:25:00 coppro: Agree. 07:25:17 ok 07:25:25 coppro: Come on, it was done by the Plan 9 guys, implemented days later in Plan 9, and it's stupidly simple. How could I not love it? 07:25:31 coppro: ah, doing remote rio programs is even easier than I thought 07:25:41 $wsys 07:25:41 ehird: I didn't know that bit of history :) 07:26:30 Technically, it was just Ken Thompson who did it. 07:27:00 The X/Open guys wanted Ken and Rob (Pike) to check their UTF design, and they went "aha! if we do our own shit quickly will they used it" and they went "okay". 07:27:10 So later that day they called them with UTF-8. 07:27:24 Ken did it all, though. 07:27:51 Oh, and then they asked them how fast they could implement it; this was Wednesday night or so. 07:27:58 They wanted a running system on Monday. 07:28:04 Plan 9 was running solely on UTF-8 by Friday. 07:28:09 Hardcore. 07:28:43 anyway, as I was saying 07:28:44 man, why is clang so awesome 07:28:49 $wsys is expected to point to the rio-directory 07:28:55 coppro: not as awesome as *c! 07:29:02 hmm, actually, make that ?c 07:29:09 huh? 07:29:10 it's hard to come up with a good name to reference the plan 9 toolchain 07:29:11 ? should do 07:29:12 oh 07:29:14 coppro: 8c and friends 07:29:31 what makes them particularly awesome? 07:29:34 other than the custom brand of C 07:29:48 they're fast, they're simple, and they cooperate with the linker 07:30:01 (e.g. #pragma lib "foo" makes foo get linked in by the linker; goes in library headers, no more -l headaches) 07:30:10 oh, and cross compiling = normal compiling 07:30:25 which is why they're separate names: in a cluster, you can't rely on homogenosityery 07:30:39 what does "cc" do on a system with 3 architectures? 07:31:24 so, with no cross compilation setup, just compiling the relevant programs, I can compile, link and interpret (=emulate) a Plan 9 MIPS program on any other supported architecture 07:31:32 that's more a property of the toolchain than the compilers i guess 07:31:32 meh 07:31:58 -!- augur has quit (Read error: 110 (Connection timed out)). 07:34:37 ehird: clang, due to being LLVM, allows you to specify a target architecture or you can have the output be left in LLVM's bytecode 07:34:48 no special setup neede 07:34:50 *needed 07:34:53 that's not the same thing at all 07:35:02 the point is that it's an additional step for non-nativeness 07:35:07 there IS a default 07:35:12 it IS a switch it flicks 07:35:17 with plan 9, it's completely agnostic 07:35:25 it really doesn't care what cpu is executing the compiler or linker 07:35:27 it just runs 07:35:44 it's partly cultural in the impression it gives, but still 07:37:04 ehird: ok, that's fair 07:40:38 -!- coppro has quit (Remote closed the connection). 07:41:02 -!- coppro has joined. 07:43:47 fair and balanced 07:47:22 like fox news 07:49:53 *ding* 07:53:18 Jesus christ, Code2000 is huge. 07:53:20 Like really huge. 07:57:48 coppro: am I a bad person because I dismiss the internationalisation of programs as there being nothing wrong with knowledge of english being a dependency of using a computer? 07:58:05 ehird: yes 07:58:22 i think that's a, my laziness, b, my aversion to stuff that you have to put everywhere and it all breaks on edge-cases and ugh and c, my utopianism (there's no need for the fragmentation of communicaiton) 07:58:26 *communication 07:58:28 ehird: YES! -----### 07:58:35 also, d, everyone who'd use my stuff would know english anyway 07:58:43 you're all just trying to hurt me because you hate me :P 07:59:14 no no. hate the sin, love the sinner! 07:59:21 god will sort it out! 07:59:44 Interesting fact: Plan 9 doesn't handle characters not in the BMP; a Rune (the in-memory representation of a codepoint) is 16 bits. Why? 07:59:45 Because Unicode was 16 bit when Plan 9 started using it. 07:59:51 Even when UTF-8 was designed. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:00:31 god, /n/sources is so slow 08:00:31 16 bits should be enough for everyone 08:00:42 If you program assembly codes, which assemblers do you use? 08:01:01 Why, the Plan 9 assemblers, of course. 08:01:03 Which do you think are more faster, slower, feature, etc? 08:01:07 (My stereotypicalness never ends.) 08:01:12 An assembler isn't much. It shouldn't be much. 08:01:20 I found a article http://webster.cs.ucr.edu/AsmTools/WhichAsm.html 08:01:26 There's an odd sort of community/cult around assemblers that considers them to have features and the like. 08:01:46 eh, just code in hex 08:01:46 If you can name features of your assembler and not sound forced, you've not written an assembler, you've written a piece of bloatware. 08:02:08 or GNU software 08:02:10 I also think it shouldn't be like too much, so I wrote 888ASM. It is very fast in my experience, faster than any other program I have used, at least. 08:02:18 Assemblers are for easing the pain of writing machine code; mnemonics, minimal shorthand, etc. They are not the place for strange low-level languages that nonetheless don't map to machine code directly. 08:02:34 It's easy to write fast code, it's just that people don't. 08:03:12 I have code in hex, too. I wrote a MBR code in plain machine-codes in hex, without assembler 08:03:23 Yes, well, you're insane, with all due respect. :P 08:03:53 Yes, I am insane 08:04:08 I think you just proved you're... not... insane? 08:04:11 My head hurts. 08:04:40 No, actually I am insane, and I am also not insane in some ways 08:05:21 You are poking my brain with the rusty fork of confusion. 08:05:52 O! 08:06:17 Well, do *you* think 888ASM is good? Or is better/worse or same as good as any others? Or, etc.? 08:06:39 Some people said 888ASM was a heart attack? 08:06:59 Well, it will surely be a glorious day when perfect knowledge of everything you create is instantly transplanted into my mind immediately, but I'm afraid you've just started talking about it today and I have no idea where it is, let alone used it. 08:07:14 Now, I've never heard "heart attack" being used as criticism of some software before. 08:07:20 That's a new one. That is a new one. 08:07:20 http://zzo38computer.cjb.net/prog/888ASM/888asm.c 08:07:46 str_find is !strchr, btw 08:07:58 O, sorry. 08:08:03 instead of if(str_find(s,c)) you can do if(!strchr(s,c)) 08:08:13 it's in string.h 08:08:41 zzo38: in asm_type, I don't think a lot of ifs is the fastest way to do that (but then again, if it's very fast, no point in worrying) 08:08:50 Well, this software is public domain. Do whatever you want with it, including to build a atom bomb to destroy the entire Earth, etc 08:09:02 Don't give me ideas! 08:09:08 What is the fastest way if a lot of ifs isn't that way? 08:09:23 Probably a hashtable or something, but that's a pain. 08:09:31 What file format does it writet in? 08:09:33 *write in 08:09:45 Any object format? ELF or whatever? Or is it just raw machine code? 08:09:46 I don't recomend you built a atom bomb with this software, I just mean that is public domain and has a not license restrictions 08:10:00 No, just raw. 08:10:09 is it intended for any particular os or just general posixy things 08:10:11 I didn't need everything else that other programs does 08:10:16 only skimmed through 08:11:05 It is not intended for any particular OS, just anything that can run this program will run this program. 08:11:53 what did you develop it on? i know you were gonna make your own linux everything from scratch 08:12:20 I wrote it in C, of course. I compiled it using gcc 08:12:28 i meant os :P 08:12:36 btw you'd probably like tcc (tinycc) as opposed to gcc 08:12:42 http://bellard.org/tcc/ 08:12:44 Now anyone who has C can use it 08:12:56 tinycc probably is faster, it would seem to be. 08:12:59 yeah, was just curious what os you used to develop it 08:13:04 faster and simpler 08:13:11 I just have gcc because I require it to compile MegaZeux and a few other programs 08:13:11 and smaller 08:13:25 zzo38: they might work with tcc; the linux kernel can compile with tcc, admittedly with patches, but still 08:13:37 I am currently using Windows XP, but one day I will use Linux as my main operating system instead 08:13:46 oh, cygwin then or something? 08:13:54 MinGW 08:14:26 MinGW is what MegaZeux compiles in, so I just use it for other stuff too, now that I have MinGW 08:14:49 any example 888asm code anywhere? 08:14:58 -!- puzzlet_ has joined. 08:16:05 There's one example: http://pastebin.com/m14772763 08:16:23 why allcaps? 08:17:01 There's another example: http://pastebin.com/m2ef3fb26 08:17:25 It is case-sensitive and has to be allcaps for built-in commands 08:17:44 Why? 08:17:56 JUST SEEMS HARDER TO READ TO ME LIKE SHOUTING :P 08:18:16 Because that's how I wrote it, of course! (Comments don't have to be allcaps and usually aren't) If you don't like it, you can change it 08:18:30 I'm just curious why. 08:20:14 The following prefix commands can be used: ADS OPS REP REPZ REPNZ DS ES FS GS CS SS TIMES = 08:20:36 The * sign means R/M byte pointing to memory 08:20:54 The @ sign is used for some 32-bits stuff 08:21:09 And $ is for named constants. 08:21:16 no reasoning for the allcaps thing? :p 08:21:57 It is just because that's how I do it, that's all. 08:22:58 * oerjan has read that people do things first and rationalize them afterwards, so reasons are usually lies anyway. 08:23:22 oerjan: then I'm clearly broken; I do it the other way around. 08:23:28 i cannot recall whether i've read it in a reliable source, though 08:23:42 BUT I THINK YOU CAN MAKE A RATIONAL ARGUMENT FOR CAPS/NOCAPS; I POSIT THAT ALLCAPS WRITING IS LESS READABLE 08:23:54 It's not like we developed lowercase letters and other typography for no reason. 08:24:01 It depend the font used, too 08:24:15 Some font is easier to read allcap but some is hard 08:24:26 ehird: surely it was to torment schoolchildren by making them have to learn everything twice? 08:24:44 No. 08:24:44 One times two is two. 08:25:01 I think there is a different reason, having to do with writing the letters by hand 08:25:19 I don't think it originally had anything to do with reading. 08:25:37 possibly 08:26:46 -!- puzzlet has quit (Read error: 110 (Connection timed out)). 08:40:37 -!- zzo38 has quit ("Error: This operation has completed successfully."). 09:03:24 -!- kar8nga has joined. 09:13:14 -!- Cerise has quit (Read error: 110 (Connection timed out)). 09:21:16 -!- Asztal^_^ has quit (Read error: 110 (Connection timed out)). 09:31:14 -!- kar8nga has quit (Remote closed the connection). 10:11:02 -!- oerjan has quit ("leaving"). 10:12:49 "I have proper *process* and thread creation (no silly fork/exec(ve))." 10:12:49 The pompous ignorance astounds. 10:12:54 Erm 10:12:58 transcribed the italics wrong 10:13:03 "I have *proper* process and thread creation (no silly fork/exec(ve))." 10:13:03 The pompous ignorance astounds. 10:17:57 -!- MigoMipo has joined. 10:30:15 -!- Cerise has joined. 10:30:43 -!- Cerise has changed nick to Guest91626. 11:30:21 -!- Guest91626 has changed nick to Cerise. 11:30:50 -!- Cerise has changed nick to Guest94377. 11:54:16 "What about making a PHP OS, for net books so that 100% of the net books processing power is used for web browsing, and so that all the memory is stored on a server?" 11:54:16 * ehird promptly commits suicide 11:59:59 -!- ehird has quit. 12:23:57 that must have been joke? 12:24:02 been a* 12:27:57 -!- Slereah_ has joined. 12:38:20 -!- Slereah has quit (Read error: 110 (Connection timed out)). 13:27:20 -!- oerjan has joined. 13:35:36 -!- BeholdMyGlory has joined. 14:00:23 AnMaster: D&D XD 14:00:39 -!- kar8nga has joined. 14:09:00 "XD"? that's a bit much from you 14:09:18 hmm, actually you may have used it before for similar purposes 14:10:03 * oklofok tries to imagine fizzie say that 14:12:06 oerjan, indeed 14:19:03 -!- puzzlet has joined. 14:30:51 -!- puzzlet_ has quit (Read error: 110 (Connection timed out)). 14:59:27 -!- Pthing has joined. 15:29:17 -!- quantumEd has joined. 15:52:23 -!- pikhq has joined. 15:53:45 * pikhq waves 15:55:15 * oerjan particles 15:55:24 Teehee. 15:55:37 Back on to the dorm. Got my desktop available. :) 16:42:56 -!- _MigoMipo_ has joined. 16:57:35 -!- oerjan has quit ("Good night"). 16:59:51 -!- MigoMipo has quit (Read error: 110 (Connection timed out)). 17:00:38 -!- _MigoMipo_ has quit. 17:00:51 -!- MigoMipo has joined. 17:05:08 -!- MALDEK has joined. 17:05:50 -!- MALDEK has quit (Client Quit). 17:16:14 -!- Asztal has joined. 17:59:48 -!- kar8nga has quit (Read error: 110 (Connection timed out)). 18:00:31 -!- kar8nga has joined. 18:32:15 -!- Warrigal has changed nick to uorygl. 19:12:55 -!- BeholdMyGlory has quit (Remote closed the connection). 19:15:51 -!- BeholdMyGlory has joined. 19:25:04 -!- upbeatsarcastic has joined. 19:28:03 -!- upbeatsarcastic has left (?). 20:12:41 -!- quantumEd has quit ("Leaving"). 20:14:11 -!- quantumEd has joined. 20:15:05 -!- quantumEd has quit (Client Quit). 20:16:53 -!- BeholdMyGlory has quit (Read error: 54 (Connection reset by peer)). 20:28:54 -!- BeholdMyGlory has joined. 20:40:47 -!- quantumEd has joined. 20:46:22 -!- ehird has joined. 20:48:44 yyyyyyyyyyyyyo 20:48:52 i'm bakkk. ba ku klux klan. 20:51:07 08:21:09 quantumed....i dont know...i was looking for a real esoteric chat...is this one? 20:51:07 08:22:07 yes 20:51:07 08:26:53 like the secret of the cube and fractal character of nature and no one mocks me? 20:51:07 "Can anyone direct me to a place where easily-fooled, irrational morons can be easily-fooled, irrational morons?" 20:52:41 08:52:49 btw...pthing...if i had to write a program for "world" it would be a cube...space/orientation/balance of opposite powers...how can you say that there is not much there if you havnt spend some time thinking & drawin? 20:52:42 you're just a markov chain bot, aren't you 20:52:46 we did those last year. 21:03:31 i should look into that esoteric stuff, those guys seem to be onto something 21:04:43 which one 21:06:17 what's the secret of the cube 21:06:21 quantumEd: the other one 21:06:47 tell me what you find out about esoterics 21:07:19 i warn you that oklofok is crazy 21:08:08 ehird and his silliness 21:09:36 the secret of the cube is the number 6 21:09:47 i don't get it please elaborate 21:10:08 there is nothing, that's all 21:10:46 all this theorethical philosophy is making my head dizzy 21:10:51 *theoretical 21:16:47 E=hf is the true einstein equation, if you think E=mc^2 you are educated evil 21:17:02 i don't believe in physics 21:17:17 take that, society 21:17:29 that's radical 21:17:55 that's what they call em 21:17:58 *me 21:18:01 -!- MigoMipo has quit. 21:18:10 i don't believe 21:18:15 that's a complete sentence 21:18:18 (that was two sentences) 21:18:29 should prolly try this punctuation thing 21:18:36 hear it lets you do stuff like that in-band 21:18:40 "that's a complete sentence" is two sentences? 21:18:46 no 21:18:49 i don't believe. 21:18:51 that's a complete sentence. 21:18:51 vs 21:18:55 i don't believe that's a complete sentence 21:19:18 yarr 21:19:42 can't find a way to split "that's a complete sentence" in two 21:20:00 don't have to 21:20:07 don't have to, want to 21:20:52 these peas hurt my teeth 21:21:04 you're mean to cook them first 21:21:27 or cock them first 21:21:33 oh haha peacock 21:21:35 no i think i'm just supposed to put them in the fridge for a few hours before eating 21:21:35 damn i'm witty 21:21:42 09:06:08 what is wrong is not listening to other people who have 21:21:43 09:06:21 you needlessly and pointlessly cripple yourself 21:21:43 09:06:41 because i CAN....thats why we have a mind 21:21:46 xD 21:21:57 yeah, he was just sad 21:22:54 what was that about 21:23:41 that's the esoidiot 21:23:47 yay, i just solved two problems by dropping my peas in my too warm juice 21:23:52 i know 21:23:57 09:09:15 by the way: you know a funny paradox? the peace-nobel-prize....thats how the human world is 21:23:57 i don't think you know what a paradox is 21:23:58 just asking what he meant 21:24:09 he has a mind, therefore he doesn't have to listen? 21:24:25 SOme people when encountered with a problem, put their peas in their too warm juice: Now they have no problems. 21:25:58 09:15:40 there's no point in despising it because people get paid to do it 21:25:58 he's probably homeless and trying to rationalise (well, er, not RATIONALise per se...) it 21:26:10 oklofok: 21:26:10 09:06:52 You can what 21:26:10 09:07:22 i can think for myself 21:26:18 so, yeah, he doesn't have to listen 21:26:24 because he can think every thought uniquely without relying on anything 21:26:26 wonder what his axioms are. 21:26:39 ah 21:26:47 09:29:05 6 is 3 dualities balanced by 90 degree offset...creates the room and the stabelizing powers that something can grow in it 21:26:48 (seconds earlier: 09:25:40 sorry...i am a bit confused....the leftovers of pthing-talk) 21:26:58 i like how the above is post-recovery 21:27:02 from confusion 21:28:06 :D 21:28:28 seriously that's so awesome 21:28:32 09:31:01 or any kind of materia 21:28:32 09:31:26 what is materia 21:28:33 09:31:45 pthing...are you some kind of mind-officer? karma police?lol 21:28:37 "HOW DARE YOU CHALLENGE ME" 21:28:47 xD 21:28:57 ARE YOU SOME KIND OF MIND-OFFICER 21:29:02 09:33:52 brb.....materia coming on a plate=food=energy...lol 21:29:02 09:34:03 oh, so materia is matter? 21:29:02 09:40:26 back...materia comes from mater, latin for mother....its the desciption for focused and stable energetic "cluster" 21:29:02 09:40:46 well okay but you can describe matter in the same way 21:29:03 09:40:58 so why aren't you talking about matter 21:29:11 "Because matter is science and materia is esoteric!" 21:29:31 maybe if he was any good at this mysticism stuff he could just energise his materia from the area around him 21:29:36 and not need food 21:29:40 don't, there's no point 21:29:42 it's just sad 21:29:53 Pthing: i know, but i have to get cheap laughs from somewhere 21:30:03 09:41:23 MALDEK, err I think you are confused about what this channel is about. It is esoteric *programming* languages 21:30:03 not this again 21:30:27 i wish i was that insane 21:30:27 see now if he'd asked whether *AnMaster* was a mind-officer i'd be half-tempted to agree :) 21:30:59 09:45:57 --- quit: MALDEK ("http://irc2go.com/") 21:30:59 you ruined our fun for a few minutes, jackass :P (okay so he came back) 21:30:59 yeah AnMaster is a total mind-officer 21:31:20 i'm always confused why people care what we're talking about if nobody has esolang talk to do 21:31:30 any why doesn't he do "err this channel is about esolangs, not physics", he's talking about physics now 21:32:41 well wolfram said physics is actually just macroPHILIC study of CA's 21:32:49 06:10:03 * oklofok tries to imagine fizzie say that 21:32:49 fizzie says "xD" 21:32:52 iirc 21:32:53 sometimes 21:32:56 ... 21:32:57 no 21:33:00 no he doesn't 21:33:05 very rarely 21:33:06 he has once 21:33:10 :o 21:33:11 oklofok: shut up or i'll grep to prove it 21:33:16 having said that 21:33:16 oklofok, do you know a summary of wolframs thesis? 21:33:18 do do 21:33:18 i'm grepping anyway 21:33:19 so 21:33:31 i only have august to yesterday downloaded atm 21:33:33 will try those first 21:33:36 oklofok, I've been trying to find one for ages, all I get is people complaning that he didn't use enough citations 21:33:38 quantumEd: no, i don't 21:33:45 use citations where? 21:33:46 "stephen wolfram is the smartest guy in the room" 21:33:50 is the thesis generally 21:33:52 in NKOS 21:34:08 Pthing not really what I am looking for 21:34:13 thanks anyway 21:34:21 but which one 21:34:23 did you mean his like 21:34:28 principle of computational equivalence 21:34:40 nothing in the last few months 21:34:40 meh 21:34:54 ehird: and nothing never also as well. 21:35:01 *last few 21:35:03 oklofok: ask him ffs 21:35:11 ... Huh. 21:35:12 Pthing: are you saying that that's his thesis 21:35:14 or do you actually think that 21:35:15 pikhq: wat 21:35:17 In GNU C, sizeof(void) is 1. 21:35:23 it's one of his big theses, at least 21:35:28 I don't know if it's the one you had in mind 21:35:42 X[vi]D 21:35:42 Pthing: i mean do you actually think he's the smartest guy in the room 21:35:45 Because GCC allows pointer arithmetic on void*. 21:35:51 pikhq: kill me 21:36:07 but I think in Stevie's Big Book of How Clever I Am, he says he thinks that the principle of computational equivalence is central 21:36:07 "The first usable version will be released on Dec 1 2009. Watch out! ;)" -sta.li 21:36:09 sizeof(any function type) is also 1, for the same reason. 21:36:10 i'm scared 21:36:13 ehird, some rooms 21:36:17 quite a lot of rooms, probably 21:36:26 such as ones only he is in 21:36:41 no, in each room I am placing a test wolfram 21:37:07 computational equivalence isn't really wolfram's work, just what turing said a few centuries ago sans math; after getting that out of the way the other half of NKOS is informal study of different sorts of CA's, and their properties, lots of interesting stuff, but not all that educational. 21:37:11 well, ok, he's smart 21:37:14 but he's not clever 21:37:14 but then I'm the smartest guy in a lot of rooms and so are you and so is everyone else here probably 21:37:17 so it's no big deal 21:37:25 he's a fool and an egotist, which basically invalidates the use of his intelligence 21:37:32 not really :| 21:37:39 it's not like 21:37:45 there's a big budget sheet somewhere 21:37:49 yes really, his books are worthless and Mathematica isn't even mostly his work (and sucks) 21:38:14 Pthing: if you doubt me, read http://groups.google.com/group/comp.lang.lisp/msg/f3b93140c2f2e922?dmode=source&output=gplain 21:38:21 he's never changed 21:38:49 i don't doubt he's an arse 21:38:57 it's not about him being an arse 21:39:00 i just don't think being an arse "invalidates the use of his intelligence" 21:39:03 did you actually read it or are you avoiding third-party knowledge too 21:39:20 c'est a rire 21:39:28 i got distracted a sentence in, 21:39:37 i'll read it before i say anything else here, though, i swear 21:40:00 i mean okay it is about him being an arse, but it has more implications than that 21:41:11 okay, read 21:41:12 explain! 21:41:40 see for instance paragraph two 21:41:52 what about it 21:41:57 such a failure in rationality does indeed have a massive blow to any "raw intelligence" 21:42:27 intelligence has to be harnessed rationally to be useful, and wolfram is completely incapable of this; he runs on his ego alone 21:42:40 i agree with you about raw intelligence 21:42:55 i would say that his being an arse does *get in the way* of the use of his intelligence 21:43:07 he could do better if he weren't an arse, but it doesn't invalidate it 21:43:15 "a new kind of science" isn't just autofellating, it's been criticised on its technical aspects many times (inc. people with fields medals), and he just says that he's right, history will prove you wrong, QED 21:43:27 he also cites the history! 21:43:33 (also available in paperback) 21:43:36 i honestly don't think wolfram himself has EVER produced something of value on itself 21:43:40 (wherever good books are sold) 21:43:47 *value in and of itself 21:44:03 mathematica is shit. yes, it's fun to play around with, but he didn't add the bits that made it 21:44:14 that's a hard thing to say about a person 21:44:25 ANKoS is meaningless, not rigorous and has been criticised many times; and doesn't really have much of value or anything unique 21:44:30 *rigourous 21:44:47 in spirit then it's broadly true, with the proviso that the standard you are using of "something of value" is the one he *talks about* 21:44:48 wolfram alpha, nope, not his, he doesn't do shit, he just stands around 21:45:04 "He wrote a widely cited paper on heavy quark production at age 18." 21:45:04 ok, let's give him one point 21:45:09 okay 21:45:11 "His work with Geoffrey Fox on the theory of the strong interaction is still used today in experimental particle physics." 21:45:12 two points 21:45:16 ok, so he did two valuable things in physics 21:45:18 i will happily give him a handful of points 21:45:22 fair enough 21:45:26 but that's just in his past 21:45:27 and he did some good business, too 21:45:29 nobody knows him for that 21:45:35 i think of him as a businessman 21:45:40 rather than a scientist 21:45:41 that's the thing 21:45:44 he doesn't think he is 21:45:51 you can see in ANKoS that he thinks he's a scientist 21:45:52 plus 21:45:57 he takes credit for everything wolfram research produces 21:46:04 so did edison 21:46:04 heck, he took credit for ais523's proof of the turing thingybob 21:46:09 i mentioned to one of our CA profs i'd read NKOS and he was like "oh dear..." 21:46:09 Pthing: and edison was a jackass. 21:46:14 oklofok: :D 21:46:16 that's pretty standard practice for businessmen-who-think-they're-scientists, though, is my point 21:46:20 they're also jackasses 21:46:20 oflofok :( 21:46:21 I think it clear that Wolfram is a businessman who thinks himself a scientist. 21:46:35 Pthing: i don't think edison was as blatantly egotistical and smarmy, though 21:46:37 he was just evil. 21:46:48 wolfram doesn't have the power to be evil 21:46:48 did he elaborate? 21:46:59 and i think edison was evil in a cunning way, which requires intelligence 21:47:02 wolfram just lumbers about 21:47:11 edison was in the second industrial revolution 21:47:17 he was literally giving power to people 21:47:21 He appears to know enough to perhaps *be* a scientist. Wolfram just... Doesn't. 21:47:25 wolfram isn't 21:47:31 He prefers wanking about how cellular automatons are the shit. 21:47:35 wolfram is just giving people a slightly better calculator 21:47:36 wolfram could probably have been a physicist if he hadn't gone into CA 21:47:38 from reading his wp page 21:47:42 it doesn't really compare to electrifying the united states 21:47:42 how can you say this pikhq that is so arrogant 21:47:43 Pthing: no, wolfram research is 21:47:54 quantumEd: He said nothing arrogant. 21:47:56 quantumEd: Is it false? 21:47:58 ehird, then that is the wolfram I meant obviously 21:48:03 the fact they are so easily confusible is entirely coincidental 21:48:05 entirely 21:48:08 Pthing: heh 21:48:11 * Pthing coughcough amalgamated edison 21:48:12 I don't know but I assume you know Wolfram just as well as I do 21:48:34 the people directly below wolfram in wolfram research are like three times as smart as him and five billion times less egotistical 21:48:42 quantumEd: I don't intend to demean his work: Mathematica, for example, is a decent bit of work. Wolfram just has a highly inflated ego. 21:48:52 quantumEd: we know quite a bit about the guy, prolly cause of ais523 winning that prize of his 21:48:53 And he honestly doesn't do that much scientific or mathematical. 21:48:58 or because he's hilarious 21:49:00 also i don't know how much work wolfram did on like 21:49:04 the early versions of mathematica 21:49:13 A lot, but it was quite boring then. 21:49:18 Pthing: That is, in fact, entirely his work. 21:49:20 well you are having a lot of ego to say he is wanking about CA and doesn't know enough to be a scientist 21:49:28 I think that is a rude thing to say 21:49:28 and that was good enough to sell 21:49:28 Not as good as Macsyma, didn't have any of the nifty features that make modern Mathematica fun for tinkering (tinkering ONLY). 21:49:37 quantumEd: I never said he doesn't know enough to be a scientist. 21:49:41 quantumEd: There is no ego involved in that. 21:49:46 That is not what ego means. 21:49:47 quantumEd: I did, in fact, say the exact opposite of that. 21:49:48 well I misunderstood this: 21:49:48 He appears to know enough to perhaps *be* a scientist. Wolfram just... Doesn't. 21:50:03 I read that as Wolfram doesn't know enough to be a scientist ? 21:50:07 oh, consolated edison 21:50:13 I meant to say that he just doesn't do science. 21:50:18 ok 21:50:31 Several places have been named after Edison, most notably the town of Edison, New Jersey. 21:50:36 that's a good difference 21:50:43 Wolfram is never going to have a city named after him 21:50:52 ASSOCIATED STEEL 21:51:01 I don't really know what he does, but I'm sure he knows everything you learn in a university mathematics course, for a start 21:51:06 WHO IS JOHN GALT WHO IS JOHN GALT *gets bludgeoned by a bloody hammer of penetrating hell* 21:51:30 quantumEd: You realise I'm a math major, right? :P 21:51:37 wait you're a math major 21:51:41 so calling him a wanker that only wants to fuck gliders is probably not correct 21:51:52 oklofok: Dual majoring. 21:51:53 a university mathematics course, gosh 21:51:54 you mean 21:51:54 I don't know what you being a math major has to do with it 21:51:56 the famously known 21:51:59 "ANTI-WANKER" 21:52:12 I wouldn't trust a math major, only a 4-star math general 21:52:15 a siphon of pure, worthwhile, unadulterated genius which negates your ability to ever be a wanker 21:52:25 mycroftiv: haha never die please, you're too entertaining to die 21:52:37 pikhq: was this second year? 21:52:58 quantumEd: He's qualified in physics, not math. ... Granted, the only field that uses math more than physics is, in fact, math... 21:53:09 oklofok: More like first. Things got... Weird last semester. 21:53:10 econometrics 21:53:22 yeah I'm sure he knows at least everything you learn in a university level physics course too 21:53:31 Pthing: you should pick through mycroftiv's http://sphericalharmony.com/, that'd be amusing 21:53:32 pikhq: define weird if it's not too private 21:53:33 quantumEd: No shit. He's got a doctorate in it. 21:53:33 and he probably knows as much computing as any of us 21:53:36 personally i can't even figure out how to navigte 21:53:38 *navigate 21:53:47 oklofok: Rather not talk about it. 21:53:52 pikhq: shame 21:53:52 ehird, wat 21:53:58 Pthing: http://sphericalharmony.com/ is mycroftiv's site 21:53:58 quantumEd: ... "Knows as much computing as any of us"? 21:54:21 wolfram probably is well-educated in computing 21:54:22 oh maybe I mixed him with chaitin 21:54:27 but he couldn't innovate in it 21:54:34 I was thinking he was publishing computing papers at 18 but that's not true is it 21:54:36 a couple of us here probably could, because, well, this channel is about computation 21:54:36 looks boring 21:54:37 You are aware that one of our number devised a proof that Wolfram himself admitted he could not figure out, right? 21:54:37 (ais523) 21:54:45 Oh, and that we know a *lot* of computing. 21:54:50 Pthing: i have this idea that the mathematical structure of music has a meaningful metaphorical relationship with modern physics - I am competent on the music end, less so on the math end despite a lot of effor 21:54:52 ok, don't get too egotistical 21:54:52 :) 21:55:03 ehird: Heheh. 21:55:04 pikhq yeah I retract that, I was mixing up two people 21:55:14 quantumEd: Mmkay. 21:55:19 ais's proof is especially impressive in that he doesn't study computation 21:55:22 what? 21:55:46 mycroftiv, of good music or bad music 21:56:29 i'd be inclined to take sphericalharmony.com more seriously if it wasn't called that and didn't make me feel like i was on a bad acid trip with the design 21:56:33 Pthing: pretty much any music that is constructed from rhythmic time cycles on multiple levels, which is basically every kind of music except stuff with no tonality or regular rhythm 21:56:49 ehird: its a tribute to TIMECUBE 21:56:54 oh 21:56:56 mycroftiv: no, it's awful is what it is 21:56:59 my eyes hurt 21:57:04 that's boring, anyone can do that 21:57:09 you need to work good music into it more 21:57:20 good music is music without rhythm? :) 21:57:31 more like 21:57:51 "rythmic time cycles on multiple levels" is mostly beep boop algorithmic shit 21:57:52 well my particular field of study is the standard western european canon, so my actual work on this tends to use Beethoven's piano sonatas as a proving ground, like everyone else's theory work 21:57:54 and not so much good music 21:58:15 Pthing: no, any steady pitch is a fast rhythm, percussion is a slow rhythm 21:58:26 a=440 means that a is a rhythm of 440 beats per second 21:58:44 Pthing: erm as far as i can tell that describes most music 21:58:47 all steady pitch is inherently rhythmic, musical harmony is simple ratios of said rhythms 21:59:12 ehird, yes exactly 21:59:14 I don't think I've said "xD" (well, I have, now), but I could be wrong. 21:59:22 fizzie: oh :/ 21:59:28 what ecks dee do you do, have you ever done 21:59:48 Pthing: no i mean even like, i don't know, whatever long-dead composer you enjoy 21:59:58 fizzie does not use emoticons 21:59:58 because he does not have emotions 22:00:07 he is a bot programmed by fungot 22:00:08 oklofok: almost everywhere you can go to the gym 22:00:20 ehird, two words: music space 22:00:23 i used to call emoticons/smilies just emotions 22:00:24 fungot: yes yes 22:00:25 oklofok: i think some little roses or something and you know we're pretty fnord about that because 22:00:34 i didn't realise you spelt it differently 22:00:39 fungot, style 22:00:39 quantumEd: i think that they're more like they're doing a survey on how people feel about it 22:00:47 Pthing: two words: potato wingdings 22:01:44 Oh, that's the Fisher telephone speech corpus style in fungot now; I think I set it, I wanted an example out of it. 22:01:45 fizzie: oh i see so it they have a rebate program too every month or every year when you go and undo all the hard work afterwards ' cause you 22:02:07 ^style 22:02:07 Available: agora alice c64 ct darwin discworld europarl ff7 fisher* ic irc jargon lovecraft nethack pa speeches ss wp youtube 22:02:13 ^style ss 22:02:14 Selected style: ss (Shakespeare's writings) 22:02:17 fungot: Lo! 22:02:17 ehird: sp. let me see my sonne antipholus and dromio againe. 22:02:21 fungot: No. 22:02:23 ehird: iust. wel, heauen send anne page, and pistoll. peto. good morrow foole ( quoth i) ' twas i wonne the wager, to lucentio. though you hit the white, a thousand groans but thinking on thy face, so he does to lady vanity; but we have no other comfort haue. but tell me, hubert. 22:02:42 -!- ehird has set topic: but tell me, hubert. http://tunes.org/~nef/logs/esoteric/?C=M;O=D. 22:03:05 -!- kar8nga has quit (Connection timed out). 22:03:54 fungot: You still have some way to go before you quite manage to surpass the original. 22:03:55 fizzie: adam. is old dogge my reward: most true, forsooth; and, i think some kind of peace has more hidden fnord, and make itself a pastime to harder bosoms! looking on the lines of my boy's face, fnord cannot tell how: but i had not been. 22:05:00 Make itself a pastime to harder bosoms. 22:05:11 :D 22:08:06 mycroftiv: does plan 9 actually have drivers as such or is it just privileged processes 22:08:14 like a process talks to the keyboard and exposes /dev/kb 22:08:16 yup it has drivers 22:08:16 via 9p 22:08:21 lame 22:08:28 not purist enough :P 22:08:40 yeah that relates to what i was saying about making 9p more thoroughly integrated 22:09:44 is it just for efficiency? 22:09:49 and to avoid being a microkernel :P 22:10:07 i think its pretty much because making a traditional kernel was the easy thing to do 22:10:40 mycroftiv: how do you feel about, in a plan9-alike os, having a process be just a goroutine/plan9 thread, and having IPC be done with files used as go/plan9 channels 22:10:48 or, i don't know, something 22:11:01 mycroftiv: i don't think you need the keyboard to boot at any point :P 22:11:08 all you need is a disk driver, really 22:11:20 once you can read from disk, you can get yourself to the point where you can run processes 22:12:37 yeah what you described is fairly isometric to my fantasies of a plan9 type environment where everything is an independent synthetic file server 22:13:37 why have more than one file server? 22:13:55 mycroftiv: actually i have to admit, I'm skeptical about having a separate file/cpu server in this day and age 22:14:00 in the 90s, when processing power was limited, ok 22:14:06 nowadays? come on, filesystems are kiddie shit to run 22:14:07 every 9p fs is a file server, that is the context i meant 22:14:21 mycroftiv: why not the other way around 22:14:38 incidentally does plan9 have separate tmpfs and memfs? 22:14:55 tmpfs is on disk (so you can put huge shit there) but gets removed on shutdown/boot 22:15:05 (basically just a dir that you rm -rf in the scripts) 22:15:12 memfs is an fs in memory 22:15:20 nothing really seems to make that distinction, which is puzzling 22:15:55 well /tmp is only treated specially in not being archivally snapshot by fossil on disk, and the ramfs stuff isnt used that much 22:16:11 maybe im missing the real question you are asking though 22:16:36 well, often there isn't a clear distinction between 22:16:49 a temporary directory (one that gets cleaned regularly but is on disk) 22:16:53 and an in-memory filesystem 22:17:01 well in plan9 its pretty clear i think? 22:17:08 hmm, I missed a lot here 22:17:19 mycroftiv: does it have a ramfs, then? 22:17:20 everything is synthetic or kernel provided or comes from a userspace program that does disk operations 22:17:25 does plan 9 have swap space? 22:17:31 swap space is kinda useless nowadays i think 22:17:32 there is a ramfs program (actually 2) but its rarely used 22:17:39 you can set up plan 9 with swap, yes 22:17:42 and malloc() failing should probably happen more than never 22:17:44 mycroftiv: common? 22:17:48 thats just handled by the kernel though 22:18:12 guys 22:18:16 losethos has gone totally off the deep end 22:18:19 i dont use swap in plan9 really, but i think its often standard to configure disks that way 22:18:19 i mean utterlly 22:18:24 it wasnt before? 22:18:34 him 22:18:35 the guy 22:18:44 yes, he was insane and had that random-word-god-talking crazy s hit 22:18:46 but 22:18:46 *shit 22:19:06 http://www.reddit.com/r/systems/comments/a8c03/ohh_you_must_want_to_talk_to_god/ 22:19:07 http://www.reddit.com/r/systems/comments/a8c58/gestappo_duart/ 22:19:07 http://www.reddit.com/r/systems/comments/a8c9h/youre_fucked/ 22:19:07 http://www.reddit.com/r/systems/comments/a8is3/masterslave_multicore/ ;; lol, a normal post in the middle 22:19:07 http://www.reddit.com/r/systems/comments/a8iyo/maybe_i_didnt_make_it_clear_you_want_god_to_fuck/ 22:19:39 pikhq: https://staff.aist.go.jp/y.oiwa/FailSafeC/index-en.html you'll like this 22:20:24 "You should be so lucky for God to be RS232 or something. Look-out, if I'm not programming I'm praying. Yes, take that as a threat." 22:20:29 "Look -- evolution on the brain is not health and is childish. It's like porn. It's seductive. Resist. Porn is creepy. Evolution on the brain is creepy. You will die-off." 22:20:30 that is an amazing quote 22:20:59 heh 22:21:27 the nicest thing about making an OS is that you get to name thiings 22:21:29 *things 22:21:36 the installer's disk geometry detection tool? 22:21:39 meet euclid(1) 22:21:49 heh 22:22:19 mycroftiv: does plan 9 handle distributed computing, btw? 22:22:25 that is, non-local clusters 22:22:30 when you said "off the deep end" i didn't expect that you meant "full schizo rambling crazy" 22:22:38 can you just add a computer from the internets to a cluster 22:22:42 Pthing: well, he was that before 22:22:47 ehird: Fail-Safe C, eh? 22:22:52 but now he's that, spamming, and making inexplicable threats 22:22:55 plan9 is a great architecture for distributed computing for several reasons, but there isnt a single-system image model for it or anything 22:22:59 he seemed reasonably sane in the videos on his website 22:23:10 Pthing: click the name on those submissions, scroll down for a bit 22:23:12 as sane as anybody who wrote that can be expected to be 22:23:13 bring popcorn 22:23:31 this website has the worst interface ever 22:23:36 mycroftiv: what i mean is, do you haev to set it up specially, like 22:23:42 a cluster is just a list of local hosts, basically 22:23:42 i mean 22:23:44 more set up obviously 22:23:46 but they are host 22:23:47 s 22:23:55 s/\ns/s/ 22:23:56 right? 22:24:06 so you could just pop in one from across the globe and set it up on both ends, theoretically 22:24:13 would the scheduler handle that? 22:24:48 as i said, plan9 doesnt have kernel level cluster scheduling as an intended feature 22:24:57 what, even for local clusters? 22:25:00 instead, the model is that any resource can be presented as a network transparent fs 22:25:09 no, not at all, whole different paradigm 22:25:41 well, ok 22:25:45 but my main point is 22:25:55 you could, theoretically, wire up a machine across the globe into a plan 9 network/cluster/whatever 22:26:02 and it would be just like on the local network, except slower 22:26:03 right? 22:26:04 the model is that since each process has independent namespace, and anything that is presented as a filesystem (in other words, everything) is network transparent, you can have multiple processes on a single machine seamlessly making use of resources from anywhere on the network 22:26:09 yes 22:26:47 "Note: PAE used to be limited to 36-bit physical addressing, but on 64-bit CPUs PAE has been extended to works with "however many physical address bits the CPU supports" (the same limit as long mode)." 22:26:49 ↑ cool 22:26:50 mycroftiv: cool 22:26:53 mycroftiv: would this be feasible? 22:27:01 i'm thinking lots of little clusters with fast internet connections 22:27:02 wired up 22:27:22 ehird, ohhh 22:27:27 that's why his OS has that... 22:27:28 64-bit CPUs extend PAE even in protected mode? 22:27:30 Huh. 22:27:30 Pthing: has what 22:27:31 huge word database 22:27:35 Pthing: heh 22:27:40 he uses it to get messages from God 22:27:42 Pthing: well you probably have /usr/share/dict too 22:27:46 sure in theory but remember speed of light is a pretty serious barrier for computational clustering on the wide scale no matter how cool your design is 22:27:48 Pthing: his god-talker is literally 22:27:49 There goes a decent chunk of the advantage of long mode. 22:27:51 yeah, yeah, but 22:28:04 for n = 0 to length { print rand(words) } 22:28:07 literally 22:28:10 no extra algorithm 22:28:23 mycroftiv: eh 22:28:27 as awesome as the 9p protocol is, it has quite a bit of latency on stuff on WAN because there is a lot of ping-pong messages back and forth constantly 22:28:39 ah 22:28:40 i think the KJV is the source of most of his words too 22:28:45 i was about to link to http://rescomp.stanford.edu/~cheshire/rants/Latency.html 22:28:45 so there's a jesusy flavour to it 22:29:04 theoretical minimum latency from stanford to boston and back is 43.2ms 22:29:06 which isn't too ba 22:29:10 a/d/ 22:29:21 if you have a cluster in each location, then they can get work done even while waiting 22:29:39 im not trying to be discouraging, im the worlds biggest fan of ad-hoc wide area plan9 gridding 22:29:40 i mean, i'm assuming that these things have decent internet connections 22:30:01 but even a 43.2 ms latency adds up fast if you are bouncing a lot of messages back and forth for every operation 22:30:01 ehird: ... "God-talker"? I presume you're talking about that silly crazy OS that has no memory protection? 22:30:12 pikhq: Part of Losethos, yes. Or at least, it's the same guy. 22:30:16 pikhq: Did you click my links? 22:30:27 [22:24] ehird: http://www.reddit.com/r/systems/comments/a8c03/ohh_you_must_want_to_talk_to_god/ 22:30:27 [22:24] ehird: http://www.reddit.com/r/systems/comments/a8c58/gestappo_duart/ 22:30:28 [22:24] ehird: http://www.reddit.com/r/systems/comments/a8c9h/youre_fucked/ 22:30:28 [22:24] ehird: http://www.reddit.com/r/systems/comments/a8is3/masterslave_multicore/ ;; lol, a normal post in the middle 22:30:28 [22:24] ehird: http://www.reddit.com/r/systems/comments/a8iyo/maybe_i_didnt_make_it_clear_you_want_god_to_fuck/ 22:30:30 Which? You've given several. 22:30:31 He's finally lost the last vestige of his sanity. 22:30:32 Ah, those. 22:30:35 No, I didn't. 22:31:38 God, Losethos... 22:32:15 Here's some help for the psychologists to unravel. I was born Catholic, got A's in school and a 1440 SAT. I loved computers. I had an older brother who got me into rock music and stoned a few times. Became an atheist just like all you computer nerd atheists at age 19. About 6 years lader, noticed crazy spiritual shit that definitely meant atheism wasn't the answer. Got scared and returned to Catholicism. developped a ha 22:32:15 bit of what might seem occult or pagan -- cracking-open my bible randomly and getting responses. I decided this is how people in the Bible talked with God -- ouijii boards essentually, but they're kosher -- it's basically what Christians call tongues, being puppeted and nothing pagan. 22:32:37 mycroftiv: does plan 9 have a raw /dev/keyboard, or is /dev/cons the only way to get at it? 22:32:59 you can turn 'rawmode' on and off 22:33:00 The worst part about Losethos is that the guy is plainly quite smart -- just crazy. 22:33:05 mycroftiv: yeah, ok 22:33:19 but the plan 9 keyboard is '#c' the console device, a file tree provided by the kernel which gets bound to /dev/cons 22:33:24 mycroftiv: i was thinking i'd multiplex /dev/kb, but then i realised that's basically what rio does with /dev/cons 22:33:27 mycroftiv: see, i dislike that 22:33:37 (it's not like someone who's stupid is going to write an OS with its own compiler for its own language, after all...) 22:33:41 imo, / should start off as an empty, immutable namespace 22:33:44 well, not immutable 22:33:46 anyway 22:33:52 it does, but the kernel builds the early stages of it 22:33:53 then you bind stuff and run 9p servers 22:33:58 to get /dev/thedisk 22:33:59 then you do 22:34:09 thefs /dev/thedisk / 22:34:11 and it binds it to / 22:34:13 look at 'ns' the only reason that the kernel device tree '#c' is /dev/cons is because it got bound there 22:34:15 you get what i mean 22:34:21 no need for the # magic at all 22:34:35 i agree, thats just a consequence of drivers being inside the kernel more or less 22:34:42 mycroftiv: do you think combining keyboard and... output is sane? 22:34:45 it's elegant i guess 22:34:50 you can read and write from /dev/cons because of that 22:35:39 mycroftiv: okay, i'm scared; my kernel is going to end up as a multitasker, namespace handler and hardware mediator (plus maybe some stuff with users) 22:35:42 sounds like a microkernel to me 22:35:42 aieeeeeeeeeeee 22:36:01 ehird: yeah actually when playing with plan9 ideas and deciding the kernel should be more module you can kind of end up with the hurd 22:36:08 s/module/modular/ 22:36:14 any idiot can make a programming language though 22:36:17 no way, plan 9 could never shit itself into the HURD 22:36:29 mycroftiv: does plan 9 implement users as processes? 22:36:30 like 22:36:48 permissions are done by having the user-login process, parent of all that user's processes, having a namespace in accordance 22:36:49 or whatever 22:36:52 I suspect any idiot can make an OS too but I haven't tried, so I can't confirm 22:37:02 mycroftiv: The problem with the HURD is not the microkernel & everything is a file approach. 22:37:13 quantumEd: no, they can't 22:37:20 you have to do quite a lot of fucking with the hardware 22:37:36 ehird: its traditional unix, but there is no root, processes have an owner, and yes namespaces are inherited between processes depending on how you rfork 22:37:42 The problem with the HURD is that there's a lot of dumb design decisions done in it for no good reason. 22:37:45 not sure if that answers everything you asked 22:37:50 quantumEd: Writing an OS is freaking hard. 22:37:51 the problem with the hurd is t hat it sucks 22:37:54 *that 22:38:07 pikhq: well, it's not that hard once you get to writing disk drivers and stuff 22:38:12 it's mainly the gdt and all that shit at the start 22:38:13 ehird: The dumb design decisions are why it sucks. 22:38:19 disk drivers aren't easy, certainly 22:38:23 but they're more tedious than hard 22:38:52 From 2004 onward, various efforts were launched to port the Hurd to more modern microkernels. The L4 microkernel was the original choice in 2004, but progress slowed to a halt. In 2005, there was a discussion of whether to change to L4.sec (a different L4 microkernel) or to Coyotos (EROS successor).[13] 22:38:52 Although no formal decision was made, most of the Hurd developers' time has gone into thinking about Coyotos,[14] especially since 2006. The lead developer of Coyotos announced that work on that project ceased some months before April 2009. 22:38:52 One of the outcomes of the initial attempt to port Hurd to the L4 microkernel was an effort to make Hurd more microkernel independent, rather than relying solely on the Mach interfaces.[15] 22:38:53 lol 22:38:58 really 22:38:58 hurd was mostly worked on for coyotos? 22:38:58 ? 22:39:07 quantumEd: well, let's say it's IDE 22:39:09 instead of SATA 22:39:11 Just one (very very small) example is how they deliberately chose to make Hurd's libc incompatible with Linux libc. 22:39:11 for simplicity 22:39:17 http://www.colorforth.com/ide.html 22:39:20 chuck moore's ide diisk driver 22:39:24 five words 22:39:29 in Forth (well, ColorForth) 22:39:30 You actually have to make major efforts to port to Hurd. 22:39:34 (chuck moore = inventor of forth if you didn't know) 22:39:39 anyway, it's mostly pushing and reading bits from hardware 22:39:42 with a tiny bit of control flow 22:39:47 that's slow but workable 22:39:52 then a filesystem is just whatever structure you put on disk 22:39:58 Rather than "well, it's got glibc and GCC; not likely things will break." 22:40:02 pikhq: really? you can run GNOME on HURD 22:40:04 CF is rather interesting 22:40:06 with debian 22:40:11 ehird: Yes, but it takes *porting*. 22:40:22 hurd has a list of groups instead of users doesn't it 22:40:28 Under Unix every program running has an associated user id, which normally corresponds to the user that started the process. This id largely dictates the actions permitted to the program. No outside process can change the user id of a running program. A Hurd process, on the other hand, runs under a set of user ids, which can contain multiple ids, one, or none. A sufficiently privileged process can add and remove ids to another process. For example there is 22:40:28 Yeah. 22:40:28 password server that will hand out ids in return for a correct login password. 22:40:29 yeah 22:40:30 kinda stupid 22:41:00 mycroftiv: i'd say that glenda is pretty close to root 22:41:06 there's not really anything you can't do as glenda :) 22:41:10 but yeah, not absolutely privileged 22:41:12 um, I think gnome has re-invented the permissions server idea at least once 22:41:13 They should have at the very least made Hurd expose an perfectly UNIX API. 22:41:23 Rather than UNIX-esque. 22:41:23 thats because when you boot in terminal mode as glenda you are the hostowner, and in fact hostowner is a lot like root 22:41:26 With porting required. 22:41:29 pikhq: s/an perfectly/a perfectly/ 22:41:32 on a cpu server, it is conventional for 'bootes' to be the hostowner 22:41:40 mycroftiv: oh yeah all that stuff 22:41:47 the cpu/terminal/file server stuff having such different semantics 22:41:49 confuses the fuck out of me 22:41:51 i don't think i like it 22:42:04 its not as different as the names imply actually haha 22:42:04 i think there should be one kernel and it depends on what processes you run for what it does 22:42:09 i know, but still 22:42:14 man 22:42:18 it's spooky how where you're logged in from changes what a user can do and the like 22:42:19 the terminal and cpu kernels are basically identical, and what you said is correct 22:42:22 he really hates linux "hobbiests" 22:42:34 Pthing: they're darwin atheist nazi sickos who are wrong in the head. 22:42:52 ehird: if you take the time to study the system a bit more, you will see that things are actually more free-form than they appear, they have just made the choice to have the system create these semantics perhaps in misguided imitation of traditional style systems 22:42:55 Spirits can puppet people or animals. Ever seen a pet with an expression around the eyes like someone you know? I think that's where witches legends came from. 22:43:11 why is writing an OS hard? 22:43:11 -!- adam_d_ has joined. 22:43:14 mycroftiv: i think consistency is important, and local access should just be remote access bound to the local hardware, essentially 22:43:17 quantumEd: because hardware sucks 22:43:20 and you have to jump through its hoops 22:43:23 you have no standard library 22:43:25 not enough infrastructure for that 22:43:29 you have to write bare-metal asm and C 22:43:35 with no library functions, at all 22:43:45 just pointers, arithmetic, and some inline asm for talking to the hardware 22:43:59 Hurd also doesn't define _POSIX_ARG_MAX. 22:44:02 until you get into protected mode, set up the gdt table, do crazy jumping 22:44:02 ... For no good reason. 22:44:04 ehird: thats the way things are really, you can boot a cpu server and have it bring up bitmap display and login as a user, etc 22:44:04 set up all the interrupts 22:44:09 OOPS YOUR OS TRIPLE FAULTED 22:44:10 time to debug it 22:44:13 etc 22:44:24 mycroftiv: yes, so I'm arguing against the semantics of the terminal, basically 22:44:35 if you're looking at a rio session as glenda, that should have the same semantics no matter where it is 22:44:36 (because "The max number of arguments is limited by memory".) 22:44:49 ehird: well, to a large extent this is historical and a consequence of a multiple machine design model 22:44:54 pikhq: yep, that sure is a useful feature; not 22:44:55 (Linux has the same feature. However, they define _POSIX_ARG_MAX to SIZE_T_MAX) 22:45:06 so worth the massive amount of code and the like, you know, all that memory handling 22:45:09 when you could just do 22:45:19 the very first versions of plan 9 in the late 80s actually DID have very different fundamental OSes running on the different machines - terminal, cpu, and file server 22:45:20 char *argv[65536]; 22:45:39 however, plan9 evolved in the correct direction of making all of those differences just a matter of userspace programs 22:45:40 ehird: The main problem with it, IMO, is not defined that damned constant. It breaks a lot of freaking code. 22:45:45 but then, that'd take 64 kilobytes 22:45:47 oh nooooooooooooooo 22:45:53 all gnu shit takes way more than that :P 22:46:06 pikhq: yeah, but it's funny how that breakage is because of a typical gnu non-feature 22:46:14 mycroftiv: yeah, i know that piece of history 22:46:18 however, the system retains the architectural idea that you want to have separate machines providing different functions (which is actually great if you choose to do so) and consequently there is a lot of 'preconfiguration' done in that vein 22:46:20 mycroftiv: but i still disagree with the semantics of logging in from a terminal 22:46:25 giving you elevated permissions 22:46:32 nooooooo 22:46:35 ehird: If they just defined the constant to SIZE_T_MAX, it would at least *not break shit*. 22:46:38 that doesnst happen at all 22:46:40 pikhq: yeah 22:46:46 mycroftiv: well, what does happen? 22:46:49 Amusingly, most of what breaks is glibc. 22:46:51 if you are the physical person who boots a machine, you have elevated permissions 22:47:22 and booting in 'terminal mode' simply assumes purely on that local machine that the user you log in as is the physical hostowner 22:47:29 * ehird wonders how to usue the disk driver to run the kernel in the bootloader 22:47:34 after all, there's no kernel running 22:47:55 mycroftiv: well, right, i'm arguing against the physical thing 22:48:01 that shouldn't be true, IMO 22:48:06 ehird: well that is a valid criticism, perhaps 22:48:16 network transparent should mean networkly... uniform 22:48:23 the same from across the network as locally, so to speak 22:48:45 http://linuxgazette.net/issue77/krishnakumar.html looks easy 22:48:58 quantumEd: Stop blabbing about things you don't know about. 22:48:59 well, there is a level of physical reality in the sense that the person who physicall is at the machine has physical control over it and the pragmatics of giving that person control over the hardware seems kinda sensible 22:49:00 That's a boot sector. 22:49:08 Useless for actual OS purposes. 22:49:24 Real mode, very very very limited in size. 22:49:30 Of course THAT'S easy. 22:49:38 quantumEd: But could any fool do it? No! You have to know assembly. 22:49:58 mycroftiv: I think of it the other way around: you could be able to manage the machine remotely, too 22:50:05 as in, always elevate the privileges, but perhaps protect them more 22:50:09 And making something that does more is still difficult. 22:50:11 instead of never elevating it 22:50:17 you are able to manage the machine remotely if you do authentication as the hostowner user 22:50:24 Even if you make it like DOS, you have to at least know how to write a decent interrupt handler. 22:50:29 mycroftiv: yes 22:50:30 but if you do it locally 22:50:31 i manage all my cpu servers headlessly, i never use the physical keyboard or display 22:50:32 And a lot of utility programs. 22:50:33 you can do it as any user 22:50:35 and i consider this wrong 22:50:39 no, you cant 22:50:43 well, as glenda 22:50:54 i'm not plan 9 experienced, munge my minor errors plz 22:51:02 only if glenda is the user you boot the machine as 22:51:21 if you boot the machine as 'fred' and fred is the hostowner, glenda has no privileges, even on the physical machine 22:51:37 yes, I know 22:51:39 you know what i mean 22:51:43 i disagree with what it does 22:51:48 it should be the same locally as over a network 22:52:01 what exactly is different though 22:52:40 as a practical matter youd have to apply default encryption then demand credentials at boot to make things different in practice 22:52:48 simple 22:53:02 remove the code that elevates the permissions of the user you boot the machine as 22:53:20 ok, how do you get access to the physical devices then? 22:53:43 well, instead you configure a user as the hostowner separately 22:53:50 ok, marginally like root but so is the current behaviour 22:53:54 it just chooses who is root at runtime 22:54:05 God talks to me. Hasn't said much on homos except smelling farts is "Sodom". 22:54:14 well, you can certainly get the kind of behavior i think you want just by how you set up your boot scripts and users 22:54:43 i understand that the model of 'trust the person with physical access to the hardware' is considered outdated for some good reasons 22:54:57 Pthing: xD 22:55:00 losethos quote i assume 22:55:00 oh christ 22:55:02 "I don't want to spend my life reinventing browsers, etc. Instead, I like physics in video games. That's my interest. 22:55:02 " 22:55:03 and i also agree that the default configuration of plan9 as represented by the bell labs distribution is incomplete 22:55:06 video game physics 22:55:08 what is it 22:55:14 Pthing: LOSETHOS HAS A FLIGHT SIMULATOR 22:55:14 with crazy people and video game physics 22:55:19 yeah, i saw it 22:55:22 it uses all 8 cores and gives you laggy 640x480 22:55:24 16-colour graphics 22:55:27 WITH 12 GIB OF RAM 22:55:34 it is amaaaaaaaaaaaaaaaaaaaaaaaaaazing. 22:55:46 i saw the video where he put a cockpit on the display 22:56:01 mycroftiv: do you agree with me that rio's UI is suboptimal? 22:56:04 moving and resizing windows is a pain 22:56:16 and having to draw new windows is more annoying than not 22:56:17 there is a great trick for resizing 22:56:36 if you hold down the button on the rio background, and drag the pointer over a window edge, it 'grabs' it 22:56:42 can do this with corners also 22:56:49 this makes resizing very nice and graceful 22:57:00 i don't get it, let me test 22:57:03 i agree the plan9 gui is very very suboptimal 22:57:09 mycroftiv: but i still think acme is a better ui in general 22:57:16 however i dont regard standard desktop environments as 'optimal' either ;) 22:57:18 entirely separate from its editorness 22:57:36 mycroftiv: let's put it this way — managing windows with rio is more tedious than in os x, and that's saying something 22:57:39 for me, at least 22:57:43 but with acme? 22:57:44 zoom 22:57:45 i fly 22:58:00 -!- MizardX- has joined. 22:58:05 can't replicate your grabbing behaviour 22:58:07 please elaborate 22:58:14 oh 22:58:15 i see 22:58:19 got it? 22:58:27 -!- MizardX has quit (Read error: 104 (Connection reset by peer)). 22:58:49 -!- MizardX- has changed nick to MizardX. 22:58:52 haha it sucks, the mouse acceleration makes it jump over the border most times 22:58:58 and the corner is to small to grab, only the edges are feasible 22:59:00 *too 22:59:32 -!- adam_d has quit (Read error: 110 (Connection timed out)). 22:59:45 i like the behavior of 'sweeping out' new windows a lot, i miss that in other environments now 22:59:55 i hate the scroll bars though 23:00:19 the scroll bars are the #1 thing i would change, make them behave as standard 'draggable' scrollbars 23:00:24 btw moving is still a bitch 23:00:38 mycroftiv: scrollwheel and remove the scrollbar 23:00:39 problem solved 23:00:48 (note: unfortunately mice with three buttons AND a scrollwheel are rare) 23:00:52 what? 23:00:58 i use the scrollwheel fine, and it works as a button 23:01:01 perhaps even non-existent 23:01:07 mycroftiv: yes, but that's ergonomically awkward 23:01:11 i agree, it sucks 23:01:26 three buttons and then a scrollwheel, like, on the side 23:01:27 for your thumb 23:01:30 would be ideal, I think 23:01:31 maybe 23:01:32 who knows 23:01:38 all I know is that i want a scrollwheel but i want three separate buttons 23:01:45 yeah, i agree 23:01:50 mycroftiv: anyway, I'd just completely hide the scrollbar 23:01:56 make it appear when you scroll with the wheel 23:02:04 then disappear about ~0.5s after you stop 23:02:09 for huge windows though the scrollwheel just isnt fast enough 23:02:17 mycroftiv: scrollwheel acceleration 23:02:19 os x does it, it rocks 23:02:21 it rocks off my socks 23:02:27 totally intuitive and fluid 23:02:36 i cant stand the os x ui personally, i think its worse than the old mac UI pre os x 23:02:49 it's usable as a host for doing more interesting stuff 23:02:55 it gets some things right, too. scroll wheel acceleration is one 23:03:15 i used os x for a long time and never even noticed scroll wheel acceleration, im pretty UI indifferent overall 23:03:24 I can scroll at a leisurely pace while reading an article, and I can sweep through one of those gigantic mozilla bugzilla reports that have had arguing for the past nine years in ~5 sweeps 23:03:42 mycroftiv: you don't notice it normally, it only appears when you move the wheel quickly 23:03:46 i dislike docks however and the idea that having only one menubar at the top of the screen is even vaguely acceptable for a menu based interface 23:04:06 the dock is crappy 23:04:15 but the menu bar at the top is preferable for an application-based menu interface 23:04:18 per fitts' law 23:04:24 note that os x menus don't change 23:04:29 there is one menu per app, that's it 23:05:35 the thing about fitts law is that i dont think its the bounding factor - for me, my brain is always much slower than my hands - im limited by my perceptual speed, and hiding information makes me slower 23:05:36 Pthing: 23:05:36 [[I think your attempt to silence me comes a little late. I'm sure they read the article. Why do you want to silence? Are you a shill guilty and wanting to hide from the light of truth? Your evil deeds will be made known. 23:05:36 Pathetic attempt at censorship. 23:05:37 You sound Indian? Just guessing. No so swift on big picture things and have a problem taking thing literally.]] 23:05:48 mycroftiv: in os x you work with one app at a time 23:05:55 yes it's bad if you switch between apps, that is not os x's paradigm however 23:05:55 ehird, wat 23:06:00 Pthing: http://www.reddit.com/r/programming/comments/9xlu5/some_poorly_chosen_programming_words_that_annoy/ 23:06:08 yes, wat 23:06:48 "I'm not gay. All gays are atheist." —losethos 23:07:20 mycroftiv: i'm having real problems with the plan 9 ui with trackballs 23:07:22 they're not really suited 23:07:29 ah, i can imagine 23:07:55 maybe slow the speed down if possible? 23:08:11 [[Reminds me of ther dude who said, "How could a compassionate all loving God not cause the invention of anesthetics centuries earlieer". 23:08:11 Umm... 23:08:12 Moses murdered a dude!]] 23:08:13 mycroftiv: nah, not that 23:08:19 it's just that slinging the ball isn't very effective 23:08:21 e.g. to move things in acme 23:08:30 and positioning it to the quite small text can be a pain 23:08:31 however 23:08:37 you can change your acme font size 23:08:38 i have 11 years of experience using a mouse 23:08:46 and about three weeks of using a trackball 23:08:58 mycroftiv: yeah, but i don't want to :) 23:08:59 mycroftiv: btw 23:09:10 mycroftiv: you know the regular text font you get from man -P? think it's some form of lucida or whatever 23:09:14 i wish that was available as a non-postscript font 23:09:18 my experience using a trackball is pretty much limited to Missile Command and Centipede back in the awesome days of 80s arcades 23:09:19 it's really pretty and i want it as my plan 9 font :( 23:09:56 that is page doing rendering using postscript or something, not available as screen font in any way i know of 23:10:04 yeah :( 23:10:05 however there are some nice subpixel hinted fonts you can get from sources 23:10:17 nah, only os x gets subpixel right 23:10:25 all the others do it uglily 23:10:27 actually, i find pretty much everything about the output of man -P aesthetically pleasing 23:10:55 it's sparse and minimalist, it uses whitespace nicely, it gets the typography right (well, a bit more line height might help; not sure) 23:11:08 the organisation is good, the formatting of the synopsis is good 23:11:10 indeed, one of the satisfactions of writing plan9 software is that if you use the troff manpage macro package you can get manpages that look so nice 23:11:38 I don't use man -P normally, though; it's too slow 23:12:05 reading through postscript... 23:12:27 yeah i think it's the postscript rendering that's slow 23:12:37 although the conversion to postscript seems to take a while too, it certainly shouldn't need to 23:13:08 the backend for page is usually ghostscript which is a port obviously 23:13:31 and a notorious pain to compile with static linking bwahaha 23:13:39 uses up something like 800mb+ of ram 23:13:49 maybe the error is using postscript 23:14:03 maybe page(1) should have a troff renderer that gives the same results 23:14:06 like proof(1) but less shitty 23:14:21 which is still sloow, but eh 23:14:47 if it got the whitespace right and had less hideously awful typography (shitty font rendering, and letter spacing is fucked up), it'd be better 23:16:51 mycroftiv: btw do you know why some stuff is in /prog with stuff bound to /bin and the like and some stuff is just scattered about? 23:16:54 seems silly. 23:17:07 um, /prog? 23:17:36 more precision/an example please? 23:18:29 /acme 23:18:36 well ok only acme is like that i guess 23:18:54 ok, right - i guess thats just because acme is 'so important' it was given its own directory 23:19:04 otherwise id say the system is fairly clear 23:19:22 but in general, the idea is that you can make a bin subdir of anything, anywhere - and it 'makes sense' to bind that to /bin 23:19:23 i wonder why there isn't more /prog stuff 23:19:29 yeah 23:19:33 i just wonder why it isn't more widely applied 23:19:38 i guess for dir clutter 23:19:54 wow, the 9gridchan image is 6 gig in the vm 23:19:57 6 gig of used space that is 23:20:07 what? how can that be, you are using qemu? 23:20:22 yes i am 23:20:24 it expands to something like a 512mb file? 23:20:28 yes 23:20:29 after you tar xzf it... 23:20:42 and the image maximum size is capped at 2gigs of total storage i believe 23:20:48 term% du -sh / 23:20:48 (blah blah you can't access mail boxes) 23:20:49 6.293838G / 23:21:01 i've installed one or two things i think 23:21:02 nothing much 23:22:33 wow, abaco is slow. 23:22:40 hm maybe i set the image max size to 8gigs 23:22:47 (why isn't abaco implemented in acme?) 23:22:53 it sort of is, but acme doesnt do bitmaps 23:22:57 can acme not do varying formatting 23:22:59 so abaco hacks that in 23:23:09 is it really sort of? it seems to be subtly different to me, but ok 23:23:12 abaco is actually fast on native hardware/native graphics 23:23:23 does it... render directly to screen or something? 23:23:37 in plan9 most stuff renders directly to the screen pretty much 23:24:04 i think pleasant web browsing in plan 9 is a pipe dream tbh 23:24:15 sure you could make a webkit port with... well, not COLOSSAL effort 23:24:15 the links port is decent for simple sites 23:24:16 but still loads 23:24:19 but 23:24:22 it wouldn't have the plan 9 feel 23:24:24 abaco is also usable for some things 23:24:30 and abaco has decent integration into plan9 23:24:39 links is in contrib? 23:24:41 but in many ways the plan9 dream is of a world that isnt http centric 23:24:56 yes, and its also already on the qemu image i distribute if you are using that 23:25:25 the plan 9 dream is irrelevant, it will be a research os forever 23:25:52 the simple truth is... you need to have your other OS booted running a browser, really 23:26:01 i agree it is not a desktop os 23:26:08 i think it has a future in more than just research and hobby though 23:26:23 ugh, I'm being reminded of how weird links' graphical interface is 23:26:24 mycroftiv: maybe. 23:26:26 but not much 23:26:31 not in and of itself 23:26:32 maybe a derivative 23:26:51 yar, the links port is unusable for reddit, thus i dismiss it too 23:27:05 also, it has its own scrollbars and shit. 23:27:16 yes, its very much a port-port 23:27:34 i dont do web browsing from inside plan9 myself 23:27:55 people who use plan9 as a desktop either tend to use linuxemu or vnc to different machine 23:28:01 wonder where it stores its config 23:28:09 links? no clue 23:28:25 not hard to find out though im sure if you actually care 23:28:51 plan 9's vfork and ndb are probably the only areas where it's actually more complex than the done thing 23:29:10 vfork? you mean rfork? 23:29:41 plan9 definitely tries to be simpler in as many ways as possible 23:30:11 fossil+venti is pretty complex though, that might be another exception 23:30:56 er rfork yeah 23:31:16 fossil is the filesystem right? and venti the long-term storage 23:31:20 WHICH BY THE WAY IS TOTALLY FUCKING BACKWARDS 23:31:34 haha yeah fossil and venti are also terrible names basically 23:31:43 it's the opposite of what you'd guess 23:32:09 i've got to say, fossil's archiving feature — is it really insanely useful? 23:32:11 yes, heretic, I know 23:32:12 venti is a deduplicative block level data server that knows nothing about filesystems, it just stores and indexes data blocks 23:32:20 I just don't read anything about people utilising it 23:32:37 fossil is a file server that knows how to both make file trees and store/retrieve them from venti 23:32:58 fossil and venti are amazing when used correclty, but they are rarely really used correctly imo 23:33:10 yes, I know 23:33:13 but the snapshoting/archiving 23:33:13 because the all-in-one standalone system with venti backing fossil is ok, but unfortunately fragile 23:33:17 *snapshotting 23:33:22 i don't see it being used in practice 23:33:23 like 23:33:25 i literally 23:33:27 don't see people using it 23:33:30 not don't think people will use it 23:33:33 i just never hear about it 23:33:35 when do you see people using plan9 at all? 23:33:45 and its automatic, so if you are using fossil+venti in default config, its in operation 23:33:46 i mean in plan9-ike things 23:33:47 aw whatever 23:33:49 mycroftiv: i know 23:33:51 i'm just saying 23:33:55 is it actually all that useful, is the question 23:34:00 i use it heavily, but thats anecdotal evidence 23:34:08 its almost like a free version control system 23:34:26 and you can use it to do pretty amazing stuff 23:34:41 like run a subenvironment of 'your machine in the past' in a subrio inside your updated machine 23:34:55 it's not as good as a vcs 23:35:00 its different 23:35:03 it's centralised, it doesn't handle merging... 23:35:20 so as a vcs for multiple people—or even people who just, you know, do branches and stuff— 23:35:21 useless 23:35:43 i mostly agree but it has no problem with branching between multiple users 23:36:22 you use vac/vacfs along with the basic snapshotting but no, its not anything like a substitute for git or hg 23:36:38 i wonder if emulation is fast enough to use as the basis of a debugger 23:36:40 the ?i series 23:37:05 mycroftiv: see, git is kinda like a user-space filesystem, I assume you've read the relevant blatheer 23:37:07 *blather 23:37:11 of course 23:37:12 if fossil+venti was like 23:37:24 a non-user-space (well, "real fs") git 23:37:26 that would be exciting 23:37:33 it has other advantages though that make it different 23:37:35 mycroftiv: would it be fast enough for amd64, though? 23:37:42 besides, I bet a 6i would take mountains of effort 23:37:49 i have no clue about your question about making an amd64 debugger 23:37:50 i mean 23:37:53 just as an example 23:38:02 mycroftiv: i just meant, would it be feasible to make a debugger based on the ?i suite 23:38:08 i have no clue 23:38:10 -!- adam_d has joined. 23:38:16 lawls 23:38:43 i barely understand how to use debuggers for anything but kindergarten level stuff, much less what the development of them involves 23:39:35 you played with acid much yet? 23:41:00 out of context = lol 23:41:07 nope, is it part of the core distro? 23:41:10 absolutely 23:41:12 i think debuggers are mostly useless 23:41:23 erm, i have to disagree 23:41:36 just on the basis of even not knowing how to really use it, it helps me fix bugs in my code 23:41:39 The most effective debugging tool is still careful thought, coupled with judiciously placed print statements. —Kernighan 23:41:47 yeah i agree with that also 23:41:54 -!- adam_d has quit (Client Quit). 23:42:03 but attaching acid to a broken process and doing lstk() has still also been very informative 23:42:12 my experience with programming errors (extensive, I might add; I am rather bad at getting things right the first time) tells me that debuggers take more time to use than it does to find the bug with print statements and some reasoning 23:42:20 therefore, i conclude that they are — mostly — worthless. 23:42:24 mycroftiv: stack traces, yes 23:42:30 are useful 23:42:35 do a stack trace once 23:42:35 thats all i ever use acid for really 23:42:37 to find the position of the error 23:42:41 then add print statements and reasoning 23:42:51 in fact, imo a tool that just prints the stack trace of a process would be better 23:42:54 as it'd be quicker to use 23:43:30 btw, is it just me 23:43:31 http://doc.cat-v.org/unix/pipes/ 23:43:32 takes me 3 seconds to do that with acid, could be scripted i guess 23:43:36 or is McIlroy really bad at english 23:43:46 i find it really hard to read that, it's very awkward 23:43:49 and has several errors in 23:44:28 mycroftiv: yeah, but i mean 23:44:29 uh, well, i think the context it was written in was jotting some quick notes 23:44:33 i don't see much reason for the debugger to exist 23:44:45 so I'd just write a separate prog for it and ditch the debugger 23:44:49 mycroftiv: it seems awkward for thatt 23:44:57 like, he seems to be trying to explain the ideas to another audience 23:44:58 but badly 23:45:00 *that 23:45:36 well, if anyone collects everything you say in this IRC and then publishes it in 45 years to examine the origins of your operating system, you may not look as smart as you'd hope, either 23:45:42 * would be a fun editor command, "check distance of each word used with the few most recent text entries, swap words as needed then replace" 23:46:01 i/hello world are how you today i fthinr that that is cool/ 23:46:01 *how are 23:46:01 *think 23:46:12 mycroftiv: i'm not criticising the guy 23:46:17 i'm just wondering why it reads so awkwardly 23:46:42 well as knuth said about why literate programming never quite caught on, a lot of programmers actually dont have very high verbal skills 23:47:11 i just try removing words until removing any more would result in overly-loquacious twaddle, then i stop 23:47:18 not on IRC of course 23:47:43 -!- MizardX has quit (Read error: 104 (Connection reset by peer)). 23:47:43 -!- MizardX has joined. 23:49:06 -!- MizardX- has joined. 23:49:17 "Just finished up the wadfs, this exports WAD game content as a filetree or service. This allows anyone to overlay static content with another PWAD or even custom files." 23:49:18 this port of doom to plan 9 is the best thing ever 23:49:44 mycroftiv: btw does plan 9 have a "vis" (like cat -v as in the cat -v paper), or are you just meant to look at the chars with r io or an editor because they display fine 23:49:47 -!- MizardX has quit (Read error: 131 (Connection reset by peer)). 23:49:53 and have glyphs 23:49:55 *rio 23:50:03 well 23:50:09 a lot of them show up as [?] tbh 23:50:43 I find the behaviour of rio where it doesn't let the program finish outputting and continue until you scroll there infuriating 23:50:51 i have to set scroll all the time when i just want to run a batch command 23:51:08 -!- MizardX- has changed nick to MizardX. 23:51:26 ehird: change your profile so that it starts rio -s 23:51:37 that will make everything scroll always by default unless you change it 23:52:00 there is an xd program for hex, octal, decimal, ASCII dump 23:53:27 mycroftiv: that isn't what i'm complaining about 23:53:34 it should continue and just add for later when not scrolling 23:53:40 that is how scrolling works, intuitively and rationally 23:54:11 -!- adam_d_ has quit (Read error: 110 (Connection timed out)). 23:55:23 evil games/mahjongg, resizing my window! evil! 23:56:19 ehird: well, the idea that the program pauses its execution is very much intended as a feature with positive benefit 23:56:37 i have seen not one positive benefit 23:56:38 and actually i think you are mistaking convention for intuition and rationality 23:56:41 -!- oerjan has joined. 23:57:10 if we define scrollbar as "the selector which defines what position we are viewing in a window of text" 23:57:21 the idea that a program might 'run out of room' in the window it is running in and be 'stuck' until you give it more room is actually an impressively 'intuitionistic' idea i think 23:57:27 and a text program as having the attribute "continually appends to the text of the window" 23:57:38 then moving the scrollbar up pausing the program is arbitrary 23:57:43 and does not follow from these definitions 23:58:24 well, the core idea of how rio wraps a shell is not based on those principles, have you read rob pike's paper on the blit ? 23:58:46 i think i have 23:59:25 most people, myself included, change rio to autoscroll by default, so i agree that the non-scrolling, execution pausing behavior has not really proved itself as valuable in most peoples usage