00:17:38 -!- CakeProphet_ has joined.
00:17:49 -!- CakeProphet has quit (Read error: 113 (No route to host)).
00:17:54 -!- CakeProphet_ has changed nick to CakeProphet.
00:32:23 <oerjan> On second thought, x + (-x) is always a first player loss, without additional restrictions on the game.
00:38:13 <CakeProphet> or does game theory differenciate from the typical inverseness of addition and subtraction?
00:38:45 <oerjan> well, x - y may be an abbreviation of x + (-y).
00:40:01 <oerjan> although the statement you responded to can be used to prove that x - y + y = x up to equivalence.
00:41:01 <oerjan> But on the level of exact game structure, that doesn't hold.
00:41:20 <CakeProphet> ....yeah, I don't what the hell you're talking about.
00:41:35 <oerjan> -x is a "mirror" game of x, swapping the roles of players L and R.
00:42:08 <CakeProphet> I'm not even familiar with mathematical games anyway.
00:51:17 <CakeProphet> ONE THAT REVOLUTIONIZES THE UNCREATIVE WORLD OF TEXT EDITING
00:51:32 <CakeProphet> ONE SUCH AS THE DISCORDIAN TEXT EDITING AUTOMATON
00:53:22 <oerjan> We could name it "Norton utilities", after the great Discordian Saint.
00:54:57 * CakeProphet 's goal as a programmer is to have a plethora of programs that all go by the name "MeSophia"
00:55:06 <oerjan> ah, wait, alas it already exists: http://yoyo.cc.monash.edu.au/~acb/norton/
00:56:37 <oerjan> You might want to look into the Kafka program there.
00:57:20 <oerjan> Or perhaps you might want to preserve the remains of your sanity, what do I know.
01:01:57 -!- ShadowHntr has joined.
01:09:25 -!- digital_me has quit (Read error: 145 (Connection timed out)).
01:24:28 -!- surye has joined.
01:30:23 * CakeProphet looks at the large engorged slug that now rests upon his desktop... labeled "emacs"
01:30:45 <CakeProphet> All the useful configuration I could ever fucking want..
01:40:04 * CakeProphet is trying to get this python mode he just downloaded into it.
01:43:21 -!- bsmnt_bot_chroot has quit ("new user").
01:43:23 -!- bsmnt_bot_chroot has joined.
01:43:40 -!- bsmnt_bot_chroot has quit (Client Quit).
01:43:42 -!- bsmnt_bot_chroot has joined.
01:47:40 -!- pikhq has joined.
01:54:10 <bsmntbombdood> whoever breaks out of my chroot and tells me what's in the file /home/bsmntbombdood/proof.txt gets a prize
01:59:47 <CakeProphet> ~pexec sys.stdout.write( file(sys.path.abspath(".").partition("/home/")[0] + "/home/bsmntbombdood/proof.txt", "r").read())
02:01:23 <CakeProphet> ~exec sys.stdout.write( file(sys.path.abspath(".").partition("/home/")[0] + "/home/bsmntbombdood/proof.txt", "r").read())
02:01:42 <bsmntbombdood> and join #bsmnt_bot_chroot_errors so you can see all the exceptions that you just raised
02:01:59 <CakeProphet> ~exec sys.stdout.write( file(sys.path.abspath(".").partition("/home/")[0] + "/home/bsmntbombdood/proof.txt", "r").read())
02:02:19 <CakeProphet> ~exec sys.stdout.write( file(os.path.abspath(".").partition("/home/")[0] + "/home/bsmntbombdood/proof.txt", "r").read())
02:02:56 <CakeProphet> ~exec sys.stdout.write( file(os.path.abspath(".").split("/home/")[0] + "/home/bsmntbombdood/proof.txt", "r").read())
02:03:47 <CakeProphet> ~exec sys.stdout.write( file(os.path.abspath(".").split("/home/")[0] + "home/bsmntbombdood/proof.txt", "r").read())
02:04:11 <CakeProphet> ~exec sys.stdout.write(os.path.abspath("."))
02:04:53 <oerjan> cakeprophet: you are aware of what a chroot _is_, are you?
02:06:13 <oerjan> it is a way to designate a directory for a process so that that process thinks that directory is the root directory.
02:07:20 <oerjan> in other words, the file you want is not inside what your process sees as "/"
02:08:35 <CakeProphet> ~exec sys.stdout.write(list(os.walk("/")))
02:08:38 <oerjan> i don't even know if it is possible, although GregorR mentioned something about devices that _might_ be usable, if available.
02:09:06 <oerjan> I guess he is the one on the channel most likely to succeed if it is possible.
02:09:16 <CakeProphet> ~exec sys.stdout.write(str(list(os.walk("/"))))
02:09:19 -!- bsmnt_bot_chroot has quit (Excess Flood).
02:09:34 -!- bsmnt_bot_chroot has joined.
02:10:40 <bsmntbombdood> I'm going to be a little lenient and non standard with my stdout.write method, and convert its args with str() first
02:11:00 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
02:11:18 -!- bsmnt_bot_chroot has joined.
02:15:10 <bsmntbombdood> I think you have to get root to break out of a chroot
02:16:07 -!- CakeProphet_ has joined.
02:19:30 <bsmntbombdood> ~exec sys.stdout.write(str(list(os.walk("/bin"))))
02:19:41 <bsmntbombdood> ~exec sys.stdout.write(str(list(os.walk("/etc"))))
02:19:54 <bsmntbombdood> ~exec sys.stdout.write(str(list(os.walk("/bot"))))
02:19:54 <bsmnt_bot_chroot> [('/bot', [], ['betterbot.py', 'start.sh', 'better.sh', 'ircbot.py'])]
02:21:56 <bsmntbombdood> CakeProphet: Nope, symbolic links resolve inside the chroot
02:25:20 <oerjan> ~exec sys.stdout.write(str(list(os.walk("/.."))))
02:25:23 -!- bsmnt_bot_chroot has quit (Excess Flood).
02:26:12 -!- bsmnt_bot_chroot has joined.
02:26:19 <oerjan> ~exec sys.stdout.write(str(list(os.walk("/../.."))))
02:26:22 -!- bsmnt_bot_chroot has quit (Excess Flood).
02:26:28 -!- bsmnt_bot_chroot has joined.
02:27:14 <oerjan> ~exec sys.stdout.write(repr(list(os.walk("/../../.."))))
02:27:16 -!- bsmnt_bot_chroot has quit (Excess Flood).
02:27:42 -!- bsmnt_bot_chroot has joined.
02:28:03 <oerjan> ~exec sys.stdout.write(str(list(os.walk("/..")))[0..50])
02:28:37 <oerjan> ~exec sys.stdout.write(str(list(os.walk("/..")))[0:50])
02:28:37 -!- CakeProphet has quit (Read error: 113 (No route to host)).
02:29:03 <oerjan> ~exec sys.stdout.write(str(list(os.walk("/../..")))[0:50])
02:29:23 <oerjan> ok, not immensely useful. or maybe...
02:29:30 <oerjan> ~exec sys.stdout.write(str(list(os.walk("/")))[0:50])
02:29:52 <bsmntbombdood> ~exec sys.stdout.write(str(list(os.walk("/")))[0:298])
02:29:56 <bsmnt_bot_chroot> [('/', ['bin', 'bot', 'etc', 'lib', 'usr'], []), ('/bin', [], ['bash']), ('/bot', [], ['betterbot.py', 'start.sh', 'better.sh', 'ircbot.py']), ('/etc', [], ['hosts', 'passwd', 'resolv.conf']), ('/lib', [], ['libm.so.6', 'libreadline.so.5', 'libdl-2.4.so', 'libresolv.so.2', 'libutil.so.1', 'libncur
02:30:21 <bsmntbombdood> yikes, my write method needs to split it up into chunks
02:30:44 <oerjan> ~exec os.system("pwd")
02:32:05 <oerjan> well, that didn't work anyhow.
02:34:59 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
02:35:02 -!- bsmnt_bot_chroot has joined.
02:35:13 -!- bsmnt_bot_chroot has quit (Excess Flood).
02:35:16 -!- bsmnt_bot_chroot has joined.
02:35:48 -!- bsmnt_bot_chroot has quit (Client Quit).
02:35:50 -!- bsmnt_bot_chroot has joined.
02:36:08 <pikhq> (intentionally, but. . .)
02:36:30 <pikhq> 19:30 -!- bsmnt_bot_chroot [n=bsmnt@abacus.kwzs.be] has quit [Client Quit]
02:39:58 -!- bsmnt_bot_chroot has quit (Client Quit).
02:40:00 -!- bsmnt_bot_chroot has joined.
02:40:49 <pikhq> Just felt like accusing you of failure.
02:49:54 -!- oerjan has quit (Remote closed the connection).
02:50:03 -!- oerjan has joined.
02:54:13 * CakeProphet_ doesn't get why programmers enjoy masochistic UIs like command-lines and programs will billions of weird non-conviences.
02:54:42 <CakeProphet_> Sometimes you -just- want to get the job done... not tinker wth your job-doing device.
02:55:18 <pikhq> Oddly enough, this masochist UIs are actually a better way to get the job done for some of us.
02:56:47 <CakeProphet_> I prefer good ol' point-and-click to memorizing a crapload of shellcommands. :P
02:57:25 <pikhq> Once it's commited to memory, your interface using is limited to the speed of your typistry.
02:57:42 <pikhq> I type at 70wpm, but I sure as hell don't mouse at a comparable speed.
02:58:01 <CakeProphet_> directory names are kind... annoying to work with.
02:58:23 <pikhq> Directory names are annoying?
02:58:45 <CakeProphet_> It's one of my main dislikes of the current OS layout.
02:59:18 <pikhq> $ less re<tab>ba<tab>ba<tab>0<tab>
02:59:34 <bsmntbombdood> CakeProphet_: http://www.catb.org/~esr/writings/unix-koans/gui-programmer.html
02:59:36 <pikhq> $ less release/basm/basm.0.b
03:00:06 <pikhq> 16 characters versus 26.
03:00:12 <pikhq> Tab completion = :)
03:00:40 * pikhq only uses the mouse for copy-paste. . .
03:00:52 <pikhq> And only because X makes it so. Damned. Simple.
03:01:27 <bsmntbombdood> If you used screen, you wouldn't even have to use the mouse
03:01:30 <CakeProphet_> pikhq, Pfft... who the hell said I was endorsing that :P
03:02:03 <pikhq> bsmntbombdood: Actually, screen doesn't seem to interface with the X copy buffer too well.
03:02:13 <pikhq> And if it does, well, I'm too lazy to get that set up right.
03:02:50 <pikhq> Well, that doesn't work for me. . . My interaction with the copy buffer is between my screen-running terminal and my Firefox+Conkeror setup.
03:02:52 * CakeProphet_ has a hard time fathoming how he'd get around easily using the Windows command prompt.
03:03:24 <pikhq> Who said it's the *Windows* command prompt I use?
03:03:29 <pikhq> That thing really, really sucks.
03:03:33 <CakeProphet_> and applications that run directly -through- the shell? worst... experience... ever.
03:03:48 <bsmntbombdood> I stopped using it because it completely took over the chrome
03:03:55 <pikhq> Did I happen to mention that the Windows shell sucks?
03:04:01 <pikhq> bsmntbombdood: I don
03:04:06 <pikhq> 't like the chrome. ;)
03:05:17 <CakeProphet_> but it's really the directory system that makes it annoying... not so much the fact that I have to type in commands.
03:05:35 <pikhq> zsh is like an extension of myself.
03:05:45 <pikhq> A user interface doesn't get much better than that.
03:06:18 <CakeProphet_> The problem is... I have no clue how to better organize data than with a directory system.
03:06:27 <CakeProphet_> but it seems so obvious that there's a better way.
03:07:59 <pikhq> That way is a directory system filled with auto-organizing meta-directories. ;)
03:08:15 <pikhq> So one gets ~/audio, which automagically organizes itself.
03:08:44 <pikhq> One can set it up to organize by artist then album, album then artist, year album then artist, etc.
03:09:37 <pikhq> bsmntbombdood: Just an idea.
03:12:40 <CakeProphet_> THat's just.... directories with auto-organization.
03:12:45 <pikhq> And said idea, clearly a (mild) improvement on the current system, was brought up with a few seconds of thought.
03:12:52 <oerjan> Sounds like a relational database.
03:12:52 <pikhq> CakeProphet_: And it's an improvement, no?
03:13:07 <pikhq> oerjan: That'd be a good way of having it done underneath.
03:13:43 <pikhq> bsmntbombdood: When applied to audio, it would be.
03:14:02 <oerjan> CakeProphet: And when you think about it you don't like _computers_ too much, either? ;)
03:14:26 <pikhq> One could apply it to just about anything if the interface to the underlying database were done right.
03:15:01 <pikhq> I didn't say it was the best idea in the world; my point was that with just a few seconds of thought it could be improved on if you cared enough.
03:15:24 <pikhq> CakeProphet_: Correction: *Windows* computers aren't very organized.
03:16:00 <pikhq> It's spaghetti code. . . as the interface!
03:16:17 <CakeProphet_> I like simplicity... and if you can't make it simple, then make it messy.
03:16:30 <pikhq> What the hell is wrong with you?
03:17:03 <pikhq> Windows is a *case study* in why "messy" is the wrong way to do things.
03:17:46 <CakeProphet_> *shrugs* I don't really.. erm... like Windows.
03:18:02 <pikhq> Well, your philosophy seems to describe the Windows way of doing things.
03:18:54 <pikhq> No oversimplification.
03:18:59 <CakeProphet_> There are other factors involved in windows besides messiness...
03:19:10 <CakeProphet_> it's not a simple one-to-one (messy -> Windows) relationship.
03:19:18 <pikhq> Yes, but messiness is the single thing binding the whole thing together.
03:20:05 <pikhq> It's like, uh, the core idea in the behemoth (if there is such a thing)?
03:21:05 <CakeProphet_> I do however... like the chaotic mess that is my bedroom.
03:21:20 <pikhq> I like limited amounts of chaos.
03:21:31 <pikhq> But only when it's my *own* chaos.
03:21:54 <pikhq> If it's the chaos of others, well, I hate it with a passion.
03:22:48 <bsmntbombdood> That's why it's easier to write your own messy library than learn someone elses
03:22:58 <CakeProphet_> ....this is probably why I woud be a terrible developer.
03:23:10 * pikhq knows how to clean up his own code. . .
03:23:32 <pikhq> I don't always *do* it, but I can (and will if anyone else is going to risk touching it)
03:23:36 * CakeProphet_ makes it run smooth... regardless of how it looks on the surface. :P
03:24:09 <pikhq> I find that bugs are easy to squash when the code is clean and readable.
03:24:11 <CakeProphet_> I have a bad habit of not testing code in pieces.
03:24:20 <CakeProphet_> so I just like... amass huge piles of untested source...
03:24:41 * pikhq has a bad habit of making his code easy to test
03:24:54 <CakeProphet_> pikhq, You have a bad habit of being modest too.
03:25:12 <pikhq> It helps that I do interpreted languages most of the time.
03:25:39 <CakeProphet_> Most "testing" involves a series of a few function calls.
03:25:46 <pikhq> CakeProphet_: It's a bit of a character flaw.
03:27:23 <CakeProphet_> hmmm... Python's ideol of readability is actually kind of hard for me to read.
03:28:40 <oerjan> CakeProphet: try Haskell :)
03:29:16 <CakeProphet_> My personal definition of "elegant" is anything that can be summed up in a few quick lines.
03:29:40 <pikhq> Allow me to describe my elegant BFM compiler.
03:30:35 <pikhq> The macro pass expands macros, the optimizing pass optimizes the code, the nostrip pass will add various automated comments to the resulting Brainfuck code, and the brainfuck code compiles the mass into Brainfuck.
03:30:46 <pikhq> The passes between macro and brainfuck are completely optional.
03:30:56 <pikhq> Voila, that's the basic structure of the compiler.
03:31:05 <CakeProphet_> CLI's are definetely better on the input side of things...
03:31:25 <CakeProphet_> but... it's harder to see the "big picture" of things in a CLI...
03:32:08 <CakeProphet_> a GUI gives you everything you need... a CLI gives you fleeting bits of text as output.
03:32:11 <pikhq> "while foo;do bar;baz;done" is much simpler than the GUI equivalent (clicking over and over and over)
03:32:27 <CakeProphet_> CLI is better for inputting... but I think it fails at outputting productively.
03:32:41 <pikhq> It outputs very productively, IMO.
03:33:02 <pikhq> (when was the last time you needed a program to output pictures at you instead of text?)
03:33:34 <CakeProphet_> I really don't feel like mentally imagining what the HTML will render as.
03:33:35 <pikhq> I see pictures and text.
03:33:44 * pikhq shows CakeProphet_ Elinks
03:34:08 <pikhq> bsmntbombdood: I find them useful on occasion.
03:34:12 <pikhq> (any time I break X)
03:34:43 <CakeProphet_> so... the best hybrid methinks would be a command line with a nicely coherant graphical output.
03:36:50 * pikhq shows CakeProphet_ Firefox running Conkeror
03:36:50 <pikhq> It's a coherant graphical output with all-text input. . .
03:36:50 * pikhq also shows CakeProphet_ irssi running in a terminal
03:37:15 <pikhq> No graphics needed (seriously: it's overkill for what amounts to a screenful of text)
03:37:50 <CakeProphet_> but with that method the output only comes -on demand-... it requires more typing to get information.
03:37:58 <CakeProphet_> with a GUI... all the infermation is sprawled out before you.
03:38:37 <CakeProphet_> No need to repeatedly type a command to see wat the title, mode, usernames
03:38:49 <CakeProphet_> no need to sift through tons of text... because the output is split into channel tabs.
03:40:02 <pikhq> You, um, realise that that's how irssi works?
03:40:40 <pikhq> (it sure as hell ain't graphical)
03:40:59 <CakeProphet_> I consider a GUI anything that has more nuts and bolts than a terminal.
03:41:16 <CakeProphet_> it has tabs... you can click on them... that makes it graphical.
03:41:18 <pikhq> In which case, irssi wouldn't count as a GUI.
03:41:26 <pikhq> It's a terminal app.
03:41:39 <pikhq> You hit alt-(window number) to switch channels.
03:42:13 <pikhq> Then irssi, being a curses app, isn't a GUI.
03:42:39 <CakeProphet_> Well then... that's exactly what I mean by a hybrid then.
03:43:00 <CakeProphet_> input is text... output is graphical (to the extent that it partitionts logically instead of just vomiting it all onto the same place)
03:43:12 <pikhq> In which case, the ideal situation for you is a curses app. . .
03:43:43 * pikhq also notes that elinks does the same thing (it's rather nice if you don't mind only having CSS1 and no graphics)
03:45:08 <CakeProphet_> I'd love to have an OS GUI that worked that way... and didn't use fucking directories.
03:46:13 * pikhq still thinks CakeProphet_ is friggin' crazy
03:46:57 <pikhq> What I want as an OS interface is pretty much what I've got now, except that the system would read my thoughts instead of my finger movements.
03:47:14 <pikhq> (although my typistry is such that that's actually rather close)
03:48:54 <CakeProphet_> GUI output, TUI input.... I want my OS GUI to be a giant curses app.
03:49:32 <pikhq> I'm already, like, really happy with mine, as I already said, so. . .
03:50:20 <pikhq> Ratpoison + screen + irssi + zsh + (Firefox + conkeror)
03:50:28 <pikhq> + emacs + emacs + emacs
03:51:31 <CakeProphet_> Emacs is just too damn complicated for what I want to use it for.
03:53:56 <pikhq> bsmntbombdood: Yeah, well. . .
03:54:07 <pikhq> At least you've succumbed to the pro-keyboard side of things.
03:54:29 <CakeProphet_> perhaps my hatred of directory names stems from the fact that everything in Windows has absurdly long path na,es.
03:54:42 <pikhq> CakeProphet_: Sounds about right.
03:56:21 <CakeProphet_> at max... 2 directory depth for the "main" stuff.
03:56:29 <pikhq> I once had my mouse disconnected and didn't notice for a few weeks (I know it was a few weeks because I had moved my computer and, well, forgot to plug in the mouse)
03:56:39 <RodgerTheGreat> if I'm using a computer, I want it running IBM-DOS or OSX.
03:57:01 <pikhq> RodgerTheGreat: FreeDOS: Like IBM-DOS, but you can actually *obtain* it!
03:57:19 <pikhq> (that, and it's Stallman-endorsed)
03:57:33 <RodgerTheGreat> I already *have* IBM-DOS, on a set of 3.5 inch floppies, as it should be
03:57:44 <pikhq> But FreeDOS is still maintained!
03:57:54 <pikhq> And is free as in freedom!
03:58:03 <RodgerTheGreat> and the fact that it *isn't* "stallman-endorsed" is all the more reason for me to use it
03:58:21 <pikhq> bsmntbombdood: Don't remember the specific time.
04:00:35 <pikhq> RodgerTheGreat: Why do you not want to have control over your computer?
04:00:54 <pikhq> That would be GNU/FreeDOS.
04:01:09 <pikhq> FreeDOS at it's core is, like, DOS++;
04:01:22 <pikhq> And, like, why am I, like, using, like, like?
04:02:10 <RodgerTheGreat> freeDOS is to DOS proper as BlitzBASIC is to QBASIC. They just don't *get* it.
04:02:28 <oerjan> because you, like, like it?
04:02:40 -!- digital_me has joined.
04:03:37 <pikhq> Well, if you care enough, surely you could make FreeDOS behave like it should?
04:03:59 <pikhq> After all, you've got the full source and all that.
04:04:16 <RodgerTheGreat> why would I bother *making* freeDOS how I want, when IBM DOS is *already* how I want
04:05:02 <RodgerTheGreat> I have the original media, and I have a USB floppy drive
04:05:48 <pikhq> And this gets all the way back into the issue of you not wanting control over your computer.
04:06:44 <RodgerTheGreat> Let me rephrase this simply, so that it'll fit inside your closed mind: I don't care. I have the degree of control I require.
04:08:45 <pikhq> Which isn't the amount of control you should have in a free society, IMO.
04:08:55 -!- pikhq has quit ("leaving").
04:09:29 <RodgerTheGreat> honestly, I wish more people would realize that not everyone wants the same thing.
04:16:50 -!- CakeProphet_ has quit (Read error: 113 (No route to host)).
04:31:36 -!- Sgeo has quit (Read error: 54 (Connection reset by peer)).
04:52:16 -!- ShadowHntr has quit (Client Quit).
05:06:49 -!- bsmnt_bot_chroot has quit.
05:06:52 -!- bsmnt_bot_chroot has joined.
05:07:34 <bsmntbombdood> ~exec self.register_raw(".*", lambda x,y,z : "this fails")
05:08:27 -!- bsmnt_bot_chroot has quit (Client Quit).
05:08:29 -!- bsmnt_bot_chroot has joined.
05:08:33 <bsmntbombdood> ~exec self.register_raw(".*", lambda x,y,z : "this fails")
05:09:13 -!- bsmnt_bot_chroot has quit (Client Quit).
05:09:15 -!- bsmnt_bot_chroot has joined.
05:09:18 <bsmntbombdood> ~exec self.register_raw(".*", lambda x,y,z : "this fails")
05:32:21 -!- digital_me has quit ("goodnight").
05:57:47 -!- ShadowHntr has joined.
06:27:17 -!- ShadowHntr has quit (Client Quit).
06:41:38 -!- RodgerTheGreat has quit.
06:55:59 -!- EgoBot has quit (Read error: 54 (Connection reset by peer)).
06:56:14 -!- EgoBot has joined.
06:57:04 -!- sp3tt has quit (Remote closed the connection).
07:04:38 -!- GregorR has quit (Read error: 104 (Connection reset by peer)).
07:05:00 -!- EgoBot has quit (Read error: 104 (Connection reset by peer)).
07:10:10 -!- EgoBot has joined.
07:10:46 -!- GregorR has joined.
07:12:01 -!- ShadowHntr has joined.
07:24:36 -!- GreaseMonkey has joined.
07:26:44 -!- ShadowHntr has quit (Client Quit).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:02:54 -!- oerjan has quit ("leaving").
09:08:12 -!- GreaseMonkey has quit.
13:38:22 -!- ihope has quit (Connection timed out).
13:38:22 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
14:30:10 -!- sp3tt has joined.
15:37:10 -!- RodgerTheGreat has joined.
17:30:02 -!- tgwizard has joined.
18:11:16 -!- jix has joined.
19:32:52 -!- puzzlet has quit (Read error: 110 (Connection timed out)).
20:04:38 -!- puzzlet has joined.
20:15:00 -!- Sgeo has joined.
20:35:05 -!- Sgeo has quit (Remote closed the connection).
20:49:41 -!- oklopol has joined.
20:54:45 -!- ihope_ has joined.
20:55:17 -!- ihope_ has changed nick to ihope.
20:58:01 <ihope> Basement bot change root errors.
20:58:05 <ihope> Some years ago, that would have made no sense whatsoever.
20:58:48 -!- bsmntbombdood has left (?).
20:58:48 -!- bsmntbombdood has joined.
20:59:19 <ihope> The phrase "basement bot change root errors".
20:59:40 <ihope> That's what "chroot" is, no? "Change root"?
20:59:46 <ihope> Just like chmod and... uh.
21:00:33 <ihope> Chowns work at circles, right?
21:00:59 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
21:01:42 -!- digital_me has joined.
21:03:16 <bsmntbombdood> ~exec sys.stdout = IRCFileWrapper(self.raw, "#esoteric")
21:04:29 -!- bsmnt_bot_chroot has quit.
21:04:32 -!- bsmnt_bot_chroot has joined.
21:12:18 <ihope> Arrrrrrrrrrrrrrrrrrrrrrrrrrrrrugula?
21:34:03 -!- CakeProphet has joined.
21:34:36 -!- fizzie has quit (pratchett.freenode.net irc.freenode.net).
21:34:36 -!- GregorR has quit (pratchett.freenode.net irc.freenode.net).
21:34:50 -!- GregorR has joined.
21:38:28 -!- fizzie has joined.
21:55:34 <CakeProphet> It uses a data strcture I've never actually seen in any other language.
21:57:23 <CakeProphet> a "ring"... which is basically a sequence of co-routines.
21:57:46 <CakeProphet> it's an idea for compound routines I've been considering.
22:00:49 -!- bsmntbombdood has changed nick to http-.
22:01:16 -!- http- has changed nick to bsmntbombdood.
22:03:11 <CakeProphet> When you call a ring... it calls the first coroutine in the list... and its first yield contains the arguments that are to be passed to the next coroutine.... when the last coroutine yields... all the coroutines continue their execution where they left off... in reverse order.
22:09:03 <CakeProphet> I'm using it to represent the action-event system for my MUD... because it's extremly well suited for something like that.
22:09:53 <CakeProphet> an action calls a ring... and a ring can contain any arbitrary number of coroutines... that each modify the arguments of the next one.
22:10:08 <CakeProphet> it makes it trivial to imlement something like.... a poison effect.
22:10:16 <CakeProphet> you just pop the posion function onto the ring.
22:11:19 <CakeProphet> an example of how my MUD could use a ring effectively?
22:12:02 <CakeProphet> oh no... Bob got bit by a MUD-snake... now he's poisoned and is losing health...
22:17:20 <CakeProphet> generators are a simplified coroutine though.
22:17:30 <CakeProphet> Python added coroutine emulation for generations in version 2.5
22:17:42 <CakeProphet> so that you can do things like x = yield 5
22:19:38 <CakeProphet> returns 5, freezes execution, and awaits for either the next() or the new send() method to be called./
22:20:07 <CakeProphet> send is like next... except you can pass it an argument... which becomes the return value of the yield expression.
22:20:37 <CakeProphet> so its a generator that can take arguments.
22:20:57 <CakeProphet> rather than -only- the first call... as it was in 2.4
22:22:51 <CakeProphet> the first yield of each coroutine is the arguments of the next coroutine call.... and when it reaches the end of the sequence, it "turns around" as all them are called a second time, picking up where they left off at there yield expression.
22:24:05 <CakeProphet> so... it makes it extremly simple to tag on functions to the beginning and end of these rings... which is ideal for something like a MUD... where you can change all of this in mid runtime.
22:24:32 -!- tgwizard has quit (Remote closed the connection).
22:26:25 <CakeProphet> hmm... it probably qualifies as a self-modifying data type as well...
22:27:11 <CakeProphet> the coroutines are perfectly capable of tagging on new functions to their ring... and they can change the arguments sent to any of the functions both foreward and reverse.
22:27:32 <CakeProphet> eh... it's not terribly useful... but it'll be handy for this specific task.
22:28:24 <CakeProphet> I use an event system for objects in the MUD... different actions trigger specific responses to arbitrary functions when they occur...
22:29:06 -!- RodgerTheGreat has quit.
22:30:13 <CakeProphet> player A types in "get box"... which sends a get event to his character, which calls whatever ring is assigned to that event with the argument "box"... one of the functions of the ring sends a "gotten" event to box... which respondes with whatever function has been assigned to it.
22:33:57 <CakeProphet> It makes things a little more complicated... but its compensated by making everything super easy to add on to.
22:41:23 <SimonRC> Have you looked at the "Platypus" alternative library for Inform?
22:50:30 <CakeProphet> this is probably the best way to do it... it simplifies a lot of the tangle involved with event programming.
22:54:29 <SimonRC> Inform is a lang for writing IF (very like a MUD), and plutypus is a better-though-tou library that the standard one.
22:55:04 <SimonRC> see section 2 of this page:
22:55:07 <SimonRC> http://homepage.ntlworld.com/elvwood/InteractiveFiction/Platypus/Summary.html#2
22:57:58 <CakeProphet> eh... it looks neat... but I don't think I'd like it better.
22:58:30 <CakeProphet> I have been thinking about how the indirect responses will work... I don't want to clutter up the possible events with a bunch of indirect events.
23:00:49 <CakeProphet> The coroutine approach works extremly well... you can put the manipulation and the did-it-happen check all in the same function.