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