←2007-01-09 2007-01-10 2007-01-11→ ↑2007 ↑all
00:29:52 -!- ShadowHntr has joined.
01:28:45 -!- ShadowHntr has quit (Client Quit).
01:37:40 <CakeProphet> ...OOP terminology makes me nauseas.
01:37:44 <CakeProphet> and I have no idea why./
01:38:20 <bsmntbombdood> hmph
01:39:28 <CakeProphet> I like the simplicity of functions... but I also like the sheer amount of shit you can accomplish with OO...
01:39:34 <CakeProphet> I just don't like how... weird... OO is./
01:40:40 <bsmntbombdood> OO isn't that weird
01:41:28 <bsmntbombdood> In python, it's just a thin abstraction over dictionaries
01:42:00 <CakeProphet> yeah..
01:42:05 <CakeProphet> I just mean... the way people talk about it.
01:42:08 <CakeProphet> gives me shivers.
01:42:15 <CakeProphet> the wording and shit...
01:43:07 <bsmntbombdood> objects, classes, polymorphism?
01:44:47 <CakeProphet> ...yeah.
01:46:27 <CakeProphet> abstract base class, wrapper, instance of a class, class method, members, handler (dear God... I despise anything with "handler" in its name...)
01:47:49 <bsmntbombdood> meh
01:48:12 <bsmnt_bot_chroot> Handle this!
01:48:38 <bsmntbombdood> ~exec for i in range(5): self.raw("PRIVMSG CakeProphet :handler!")
01:48:53 <bsmntbombdood> damn
01:49:03 <bsmntbombdood> ~exec for i in range(5): self.raw("PRIVMSG CakeProphet :handler!")
01:49:06 <bsmntbombdood> wtf
01:49:26 <bsmntbombdood> gah, stupid freenode
01:49:34 <GregorR> Hee-hee ... I made a DNPTB-themed wallpaper for my cell phone :)
01:50:04 <bsmntbombdood> DNPTB?
01:50:21 <GregorR> http://www.donotputthebaby.com
01:50:24 <bsmntbombdood> oh
02:05:18 <bsmntbombdood> DO NOT
02:05:22 <bsmntbombdood> PUT THE
02:05:25 <bsmntbombdood> baby
02:33:53 -!- ShadowHntr has joined.
02:35:26 -!- pikhq has joined.
03:05:04 -!- loopd001 has joined.
03:59:03 -!- pikhq has quit ("leaving").
04:15:08 -!- CakeProphet has quit (Read error: 113 (No route to host)).
04:51:13 <bsmntbombdood> bah, no one has broken my chroot yet
04:52:00 <bsmntbombdood> the 35 bytes in /home/bsmntbombdood/proof.txt await you!
05:01:47 -!- digital_me has quit ("night").
05:02:20 <oklopol> what does it proove?
05:03:18 <bsmntbombdood> that you broke my chroot
05:04:51 <oklopol> somehow i felt i had to ask what proof.txt prooves without considering the context at all
05:12:36 <ShadowHntr> probably the only way you could see what's in the file is if you broke the chroot jail?
05:12:58 * ShadowHntr hugs his Solaris installation... :D
05:15:58 <oklopol> i only have a vague idea what a chroot is... but i'm sure i'd enjoy breaking one
05:31:21 <ShadowHntr> oklopol: want me to explain?
05:44:11 <bsmntbombdood> ShadowHntr: yeah
05:44:28 <ShadowHntr> http://en.wikipedia.org/wiki/Chroot
05:44:39 <ShadowHntr> maps the specified directory to root
05:44:45 <ShadowHntr> changes root directory
05:44:59 <ShadowHntr> so it creates a "jail" in which the user can't access anything outside of.
05:46:15 <bsmntbombdood> There's ways to get out of one, but I think they require root
05:55:30 <bsmntbombdood> break it! break it!
06:03:38 <bsmntbombdood> breaeaeaeaeeaeaek it
06:14:05 <bsmntbombdood> come on!
06:45:51 -!- oerjan has joined.
07:29:10 -!- ShadowHntr has quit ("End of line.").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:40:59 -!- wooby has joined.
09:29:02 -!- wooby has quit.
09:52:33 -!- Sukoshi has joined.
09:52:47 <Sukoshi> Does anyone know the typical error of a good perceptron?
09:53:26 <oerjan> ????
09:53:42 * oerjan means no, and what is a perceptron? :)
09:54:16 <Sukoshi> A basic neuron model.
10:14:34 -!- loopd001 has quit ("DISCO").
12:23:32 -!- clog has joined.
12:23:32 -!- clog has joined.
13:18:02 -!- ihope has quit (Connection timed out).
15:04:53 -!- oerjan has joined.
15:28:19 -!- tgwizard has joined.
15:31:46 -!- jix has joined.
18:57:19 -!- RodgerTheGreat has joined.
18:57:25 <RodgerTheGreat> hi
18:58:44 <oklopol> http://esoteric.voxelperfect.net/wiki/Fortuna
18:58:52 <oklopol> can someone explain this?
18:59:17 <oklopol> 0 Change nothing
18:59:17 <oklopol> 1 Take hand on or off the wheel
18:59:27 <oklopol> what the fuck does a hand do?
18:59:29 <oklopol> :\
19:00:27 <RodgerTheGreat> "there is a theoretical wheel, spinning at a constant speed of 1, that manipulates a set of bits"
19:00:39 <oklopol> ye
19:01:43 <oklopol> so... executes a BF > or < between every instruction... or?
19:03:55 <oerjan> I get this sudden urge to create the Incomprehensible template :)
19:04:15 <oklopol> if it's a constant speed of one, how can you change it? speed as a concept includes the direction, if it's constant, how is it changed?
19:04:18 <oklopol> means velocity?
19:04:37 <oerjan> no, velocity includes direction, speed does not.
19:04:51 <oklopol> okay
19:04:55 <oklopol> good
19:05:31 <oerjan> although with the rest of the description I wouldn't bet on the writer having considered that.
19:05:32 <oklopol> nah i don't understand the lang
19:06:27 <oklopol> i hate these descriptions, i have to read the long code of the interpretor to be able to understand the idea, which can easily be expressed in a few sentences
19:06:36 <oklopol> or then i
19:06:51 <oklopol> 'm just too stupid to understand clear descriptions
19:07:29 <oklopol> which, tho, i wouldn't be suprised of, given i missed the on this wheel part in "On this wheel there are five commands:"
19:07:33 <oerjan> That would have been an option if there was actually a pointer to an implementation.
19:07:46 <oklopol> yes, that's why i had to ask
19:07:58 <oklopol> if you get it, please tell me :\
19:08:43 <oklopol> i got a result of almost printing 0000111 when executing the prog, but then it did something weird in the end
19:08:54 <oklopol> and the scan... i have no idea what that means
19:09:59 <oklopol> "move bit pointer in current direction" there are 3 directions, memory direction, wheel direction and ip direction, right?
19:10:16 <oerjan> OK I had one sudden insight.
19:10:25 <oklopol> on that, or smth else?
19:11:24 <oerjan> The wheel does not actually contain the bits. The wheel only has 5 positions, each of which corresponds to a command.
19:12:13 <oklopol> yes
19:12:44 <oerjan> Well, perhaps. It doesn't make very much sense even then.
19:12:45 <oklopol> but, when scanning for example, wtf do you scan, the code? and are there multiple directions to iterate the code? or?
19:14:29 <oklopol> the code, if i'm right, first fills in the memory 00001110, then changes wheel dir and does somt very strange
19:14:37 <oklopol> *something
19:14:40 <oerjan> Impossible to say. Whoever wrote the description had no idea how to express an idea.
19:15:54 <oklopol> it changes wheel direction, then outputs, THEN SCANS, scanning being so badly described i have no idea about it, and scanning in that sence too that the output is done 8 times too
19:15:56 <oklopol> i think
19:15:58 <oerjan> OK, perhaps if the example code can be deciphered, something more can be said.
19:17:12 <oklopol> i could decipher that the wheel goes around, when hand is put on, that command is done, when hands are taken off, that command is not executed, while hands are on, all commands are executed
19:17:21 <oklopol> which is said in the description too
19:17:22 <oerjan> Could you please explain how you get even as much as that out of the code? :)
19:17:27 <oklopol> tho not very clearly
19:17:30 <oklopol> okay
19:18:11 <oerjan> actually you said the essential thing while i was writing i think
19:18:15 <oklopol> 0, no hands-on, so bit not changed, 1, wheel turned to 'move bit pointer' and hand were put on, so that is done, memory now 00
19:18:17 <oklopol> good
19:18:19 <oklopol> thought so
19:18:42 <oklopol> i was in a hurry to write that before you could figure it out so i'd get the credit :)
19:19:37 <oerjan> Well, congratulations :)
19:20:08 <oklopol> the author really thought it's obvious that intructions are executed when hands are on the wheel?
19:20:22 -!- digital_me has joined.
19:20:41 <oerjan> I'll have to write up what we get after doing your initial decoding step. But first I actually need some food...
19:24:25 <oerjan> Although if the code = bits and so is self-modifying, the decoding may have to be done continuously.
19:25:31 <oerjan> Wait a minute - a second insight
19:26:00 <oerjan> The "scan" may be a warped version of brainfuck [] - after all, it says the language is brainfuck inspired.
19:26:36 <oerjan> Again, perhaps.
19:26:41 <oklopol> yeah, i think it is, but it's not needed there
19:26:54 <oklopol> very hard keeping track of the execution
19:27:40 <oklopol> that is of course a plus :) but the documentation is bad, unless it's intentionally left as homework for the reader
19:30:06 <oerjan> OK, what did you say you thought the first actual command executed was?
19:31:32 <oklopol> [0]1[2340]1[2340]1[2340]1[234]01[234]01[234]01[234]0[123]432[1]0401[2]3432[1]0401[2]3432[1]0401[2]3432[1]0401[2]343[2]104
19:31:42 <oklopol> this is all the commands if i omit 2's
19:31:49 <oklopol> the beginning makes sence
19:31:59 <oklopol> actual first command >
19:32:36 <oklopol> or, the beginning is >>>>*>*>*>* then change wheel direction... and lost me :)
19:33:45 <oklopol> you'd think it's the output part because there are as many commands as in the beginning where the 0000111(1?) is done
19:33:55 <oklopol> but no, it's full of weird loops and such
19:34:47 <oerjan> a bell character should be 00000111, anyhow
19:35:06 <oklopol> or, does the "Switch direction of wheel" actually mean "change direction of the bit pointer"?
19:35:15 <oklopol> then it'd make sence
19:35:44 <oklopol> oerjan, i think the last bit might be output twice
19:35:46 <oerjan> i would have thought it meant both
19:35:57 <oklopol> because the end is not identical to the almost-end
19:36:10 <oklopol> might mean both, but then 2's are executed
19:36:29 <oklopol> even tho i don't think that is sensible
19:37:56 <oklopol> [0]1[2340]1[2340]1[2340]1[234]01[234]01[234]01[234]0[123]4[012]301[2]3401[2]... now it seems to omit 2's but change direction all the time making the first >>>>*>... thing useless
19:38:48 <oklopol> and, it's clear that in the past-middle output section, either almost every instruction or just one instruction is executed (0001100011 etc)
19:39:03 <oklopol> so, 2 would be most sensible to omit
19:39:23 <oklopol> since it certainly has nothing to do with outputting a \0x7
19:40:39 <oklopol> is the author here? i'll spank him
19:41:28 <oklopol> i thought it'd take like 3 hours to write down a list of all brainfucks and their syntaxes
19:41:36 <oklopol> has taken maybe 6 now
19:41:44 <oklopol> and i'm half down the list
19:42:55 <oklopol> fuck it... next lang :)
19:43:03 <oklopol> if you figure it out, tell me
19:44:43 <oklopol> http://esoteric.voxelperfect.net/wiki/FukYorBrane, once again, a thorough spesification :(
19:44:52 <oklopol> bomb?
19:45:12 <oklopol> a non-'<>+-[],.' instruction?
19:45:27 <oerjan> It's inspired by brainfuck and redcode, i believe
19:45:40 <oklopol> oh, there is an implementation
19:45:45 <oklopol> yeah, i know
19:49:35 <oklopol> now i realize it's one of gregorr's langs, which i already read on his page, well, who'd remember a name like FukYorBrane :D
19:59:44 <oklopol> GregorR, damn you, first brainfuck i couldn't specify in 5 sentences :D
20:00:36 <oerjan> Yeah, gregorR's languages tend to have a certain quality.
20:05:15 <oklopol> yeah, i assumed all bf-copies are shit :)
20:05:24 <oklopol> in fact, many are pretty nice
20:05:27 <oklopol> http://esoteric.voxelperfect.net/wiki/Hargfak
20:05:30 <oklopol> now, the main stack
20:05:34 <oklopol> is that the main array?
20:06:06 <oklopol> <, > etc are just 'same as in BF', but then i'll have to know if the stack is the memory... it's not really a stack in bf :\
20:06:49 <oklopol> plus, "{} Make a code-block, push to stack" wouldn't make sence then
20:07:18 <oerjan> i think the stack and array are separate
20:07:40 <oklopol> # ( Move top from main stack to top of stack at sub pointer
20:07:40 <oklopol> # ) Reverse function of (
20:07:50 <oklopol> i have no idea what that means :\
20:08:00 <oklopol> top of stack at sub pointer?
20:08:04 <bsmntbombdood> ask the GregorR himself
20:08:12 <oklopol> sub pointer points to memory, i'd think :\
20:08:18 <oklopol> is Hargfak his?
20:08:21 <oklopol> i doubt it
20:08:24 <oklopol> not on his page
20:08:35 <bsmntbombdood> oh, I thought you said it was
20:08:41 <oklopol> FuckYorBrane is well commented
20:09:09 <oerjan> nope it's ZZo38's
20:09:23 <oklopol> oh
20:09:38 <oklopol> does he exist somewhere? :D
20:09:50 <oerjan> he is quite productive on the wiki
20:10:33 <oklopol> well, doesn't help me :\
20:10:40 <oklopol> you understand ()?
20:10:45 <oerjan> darn, the wiki is slow.
20:11:00 <oklopol> or you understand "top of stack at sub pointer"
20:11:16 <oerjan> i think i retract my first assumption
20:11:32 <oerjan> i think the language has stacks as elements of stacks
20:11:41 <oerjan> as one of the data types.
20:12:43 <oklopol> yeah, thought might be so, then all cells are numbers by default, but stacks can be put there
20:13:07 <oklopol> put... what's the word...
20:13:46 <oklopol> i'm starting to miss basic vocabulary, someone must be feeding me drugs or smth
20:14:54 <oerjan> i'm sorry but obviously your brain is fucked.
20:15:17 <oerjan> put is fine, i think.
20:15:18 <oklopol> well... makes sence :\
20:15:59 <oklopol> put is fine, yeah, but it's not really nice if i can't look-up the word i was gonna use...
20:16:27 <oklopol> i mean, generally, not nice to forget something you've known for ages
20:16:35 <oklopol> been doing too much brainfuck
20:16:36 <oklopol> maybe
20:17:05 <oerjan> inserted, placed, pushed?
20:17:35 <oklopol> any of those would've been nice :)
20:17:50 <oklopol> put was the only one i found
20:18:03 <oklopol> usually happens when i've been reading a dictionary
20:18:20 <oklopol> i forget all other words for a while
20:18:35 <oklopol> tho, off-topic, gotta continue my task
20:19:30 <oklopol> okay
20:19:42 <oklopol> if stack is the same as the memory, "; Push data at pointer to stack"
20:20:30 <oklopol> okay, i have no idea, next lang
20:38:12 <oerjan> *sigh* that Fortuna program doesn't make sense either way.
20:38:56 <oerjan> no matter which interpretation is used it looks like it is doing _input_ first.
20:45:27 <oerjan> looking at the history, a couple of points in the article might actually be misunderstandings by later people trying to clean up after the author. The author actually explained that hands on/off continued/suspended execution, and didn't actually say the beep was a single character.
20:53:38 <oklopol> i figured it'd be nice to have 50 brainfucks rather that 48 so i'll have to improvise 2
20:53:54 <oklopol> the first one is nice, i'll add it in the wiki and feel proud
20:53:55 <oklopol> yay
21:14:16 <oklopol> god ihope has a lot of langs there :O
21:14:56 -!- ihope_ has joined.
21:15:20 -!- ihope_ has changed nick to ihope.
21:15:41 <bsmntbombdood> speak of the devil
21:16:52 <oklopol> wow
21:16:58 <oklopol> that was weird
21:17:16 <oerjan> What, you've never seen a synchronicity before? :)
21:17:20 <oklopol> but i said god ihope, not devil
21:17:43 <oklopol> oerjan, yeah, but things can be weird multiple times
21:17:44 <oklopol> :)
21:17:52 <ihope> Basement bot change root again.
21:18:03 <bsmntbombdood> yes?
21:18:29 <ihope> What happened?
21:18:35 <bsmntbombdood> ?
21:19:03 <ihope> Ah, I see.
21:19:10 <bsmntbombdood> ?
21:19:11 <ihope> 13:14:16 <oklopol> god ihope has a lot of langs there :O
21:19:18 <ihope> 13:14:56 --- join: ihope_ (n=foo@c-71-205-100-59.hsd1.mi.comcast.net) joined #esoteric
21:19:35 <bsmntbombdood> ya
21:19:55 <oklopol> it was weird until i figured ppl here have a habit of actively reading logs
21:20:09 <oklopol> which is never done in any other channel i am on
21:20:16 <bsmntbombdood> heh
21:20:51 <oklopol> but, this is one of the only channels that sometimes has stuff worth reading afterwards
21:21:15 <oklopol> due to it's experimental nature
21:21:20 <ihope> I didn't see that log until afterward.
21:21:25 <oklopol> okay
21:21:29 <oklopol> then it is weird
21:21:36 <ihope> I must be psychotic. ;-)
21:21:59 <bsmntbombdood> psychotic indeed
21:22:01 <bsmntbombdood> :P
21:22:14 <oerjan> ain't we all
21:22:35 <bsmntbombdood> ~exec self.raw("PRIVMSG #esoteric :psychos!")
21:22:35 <bsmnt_bot_chroot> psychos!
21:22:45 <oklopol> i don't know if you have many bf-langs there, just saw your name three times in a row when checking the author of pages randomly
21:22:52 <oklopol> ihope
21:22:58 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
21:23:22 <ihope> BF-langs, eh?
21:23:54 <oklopol> in the category bf-derivatives
21:24:05 <oklopol> i saw your name in three random picks
21:24:21 <oklopol> ihope127 actually, assumed that's you
21:24:27 <ihope> Yeah, it is.
21:24:33 <bsmntbombdood> whoa
21:24:37 <oerjan> oklopol is writing a thesis, "A survey of languages within the Mullerian sub-paradigm of Esoterics."
21:24:40 <bsmntbombdood> 127 is 2**7-1
21:24:42 * ihope clicks "Random Page" a few times and eventually lands on one of his own languages.
21:24:52 <oklopol> :D
21:25:05 <oklopol> how many do you have?
21:25:06 <ihope> Exactly why I chose the number 127.
21:25:21 <ihope> No idea.
21:25:25 <oklopol> bsmntbombdood, what a witty thing to notice :D
21:25:27 <bsmntbombdood> 1<<7 - 1
21:25:54 <oerjan> it is indeed possible to do a search for the word "ihope"
21:26:02 <ihope> True.
21:26:02 <oerjan> i believe
21:26:07 <bsmntbombdood> t
21:26:10 <bsmntbombdood> nil
21:26:11 <oklopol> hey, good idea
21:27:42 <oklopol> eh... 6 ones? maybe the search is too complicated for me
21:29:24 <oerjan> I only get 3. hmmm..
21:29:43 <ihope> I have Catch, Foobar, SMATINY, SNOBOL, quantum brainfuck, BF-SC, and BF-PDA. The fact that there are six there and you said six may be making me forget the others.
21:29:56 <ihope> I also have Subtle Cough.
21:30:25 <ihope> ...Wait, I listed seven there, not six.
21:30:28 <oerjan> ah, ihope127 gave many more matches than ihope for some reason.
21:30:29 <bsmntbombdood> a language were the only construct is raising and catching exceptions
21:30:31 <ihope> So that makes eight.
21:30:35 <ihope> oerjan: of course.
21:30:41 -!- CakeProphet has joined.
21:30:42 <ihope> bsmntbombdood: fun, no?
21:30:53 <bsmntbombdood> Is that actually what it is?
21:30:55 <ihope> Of course, I could probably do it much better now.
21:31:04 <bsmntbombdood> sweet
21:31:05 <ihope> bsmntbombdood: might be; I dunno.
21:31:11 <bsmntbombdood> ?
21:31:12 <oerjan> i thought it would match subwords as well.
21:31:19 <ihope> Also, I make Thubi. Nine, then.
21:33:18 <oerjan> ok i see 11 matches
21:33:34 <ihope> What'd I miss?
21:33:55 <oerjan> wait a minute, SNOBOL is not esoteric.
21:34:10 <oerjan> ah, SLOBOL. 12 then.
21:34:16 <oklopol> hmm, a qbit is a bit that has a certain probability for being 1 or 0? too complex for me again, if not :)
21:34:19 <ihope> Close enough.
21:34:29 <oerjan> BF-PDA is not listed.
21:34:37 <oklopol> it is
21:34:51 <oerjan> not under the search results
21:34:58 <ihope> oklopol: no, there's a probability amplitude, which is a complex number, for every possible combination of bits.
21:35:08 <oklopol> no name on the article
21:35:13 <oklopol> maybe that's why
21:35:17 <ihope> And the probability corresponding to the amplitude x is |x|^2. Confusing, eh?
21:35:47 <oklopol> |x|^2 is the length of the number ^ 2?
21:35:51 <oerjan> neither is Subtle Cough.
21:36:05 <oklopol> |complex| is the length
21:36:05 <oklopol> ?
21:36:38 <ihope> x is the amplitude.
21:36:51 <bsmntbombdood> yo mommoa is the amplitude
21:36:53 <ihope> |x| is the absulute value of the amplitude.
21:36:53 <oklopol> okay, is that a complex number?
21:37:01 <ihope> Yes, x is a complex number.
21:37:19 <oklopol> but, absolute value of a complex number is it's length
21:37:23 <ihope> Also, I made ///, a.k.a. Slashes. Does that make 10?
21:37:23 <oklopol> right?
21:37:29 <ihope> oklopol: the length of its vector? Yes.
21:37:39 <oklopol> well, that's what i meant, yeah
21:38:08 <oerjan> there is Slashes (///), REverge, Minimum, Pointy and Onoz.
21:38:11 <ihope> Yay.
21:38:19 <oklopol> k, i'll just do like the wiki and assume the reader knows qubits :)
21:39:41 <ihope> So REverge isn't really a language, so that's Catch, Foobar, SMATINY, SLOBOL, quantum brainfuck, BF-SC, BF-PDA, Subtle Cough, ///, Minimum, Pointy, onoz.
21:39:53 <ihope> Twelve in all, I guess.
21:40:32 <ihope> And how many are joke languages?
21:41:12 <oerjan> Ah yes, Subtle Cough is not really usable either, as I proved.
21:41:55 <ihope> Yeah, that.
21:43:19 <oerjan> REverge seems a bit unfinished.
21:43:47 <ihope> I mostly forgot about Catch, Foobar is finite, SMATINY is not only finite but reversible, SLOBOL is Foobar in disguise, quantum brainfuck is Turing-complete, BF-SC and BF-PDA are guaranteed to terminate, Subtle Cough is not Turing-complete, /// is unknown, Minimum has no programs, Pointy is Turing-complete, and onoz is unknown.
21:43:54 <ihope> Yes, REverge might as well be deleted.
21:44:11 <ihope> So that's at least two languages I made that are Turing-complete.
21:44:27 <oerjan> SMATINY is definitely not a joke, in my opinion.
21:44:43 <oerjan> not any more than SMETANA.
21:45:52 <ihope> Yeah, it's not a joke.
21:46:16 <ihope> Catch... oh, whether or not it's Turing-complete depends on the built-in exceptions and handlers.
21:47:36 <oerjan> Onoz can of course express all programs known to terminate.
21:47:45 <ihope> Yep.
21:49:23 <oerjan> It is probably Turing-complete, although we will never know how to program in it, because for infinite loops we have to use a subprogram which we think but are not sure never terminates.
21:51:08 <ihope> Hmm...
21:54:02 <oerjan> I expect some variant of the proof of the halting problem can be used to find a couple of algorithms such that one of them does not terminate but we can never know which.
21:55:24 <oerjan> halting problem + gdel's incompleteness theorem (whose proofs are essentially very similar)
21:56:53 <ihope> Hmm.
21:57:19 <ihope> Wait. If we can never know something's incorrect, it's correct.
21:57:31 <ihope> If there's no observable difference, then they're the same.
21:57:37 <oerjan> yes, but we cannot necessarily prove it.
21:58:00 <ihope> We can't prove two things to be the same, sure.
21:58:33 <ihope> If we have a collection of algorithms and we know exactly one is correct, we can figure out which one it is.
21:58:50 <oerjan> and the definition of Onoz uses provability of non-termination, not actual termination.
21:59:36 <oerjan> except that in reality none of them terminate, but we are not sure of it. Maybe we don't really need more than one algorithm.
22:00:40 <oklopol> i assume http://esoteric.voxelperfect.net/wiki/SPL also has + / - since they are used in the example
22:00:44 <oklopol> but what is |?
22:02:26 <oklopol> "that of brainfuck", someday i'll learn to read
22:02:41 <ihope> Brainfuck has |?
22:03:31 <oerjan> it seems like | is a variant of $
22:05:57 <oerjan> There is the same confusion on his webpage (except in Italian :) )
22:06:23 <oerjan> Several more example programs though.
22:06:37 <oklopol> okay
22:06:41 <oklopol> variant?
22:06:46 <oklopol> ah
22:06:48 <oklopol> decimal
22:07:01 <oerjan> All except the final example use |.
22:07:06 <oklopol> yeah, a monkey could see that from the example
22:07:13 <oklopol> the | is decimal input thig
22:07:15 <oklopol> *thing
22:07:27 <oklopol> but i didn't
22:07:29 <oerjan> Actually so is $, according to the website.
22:07:33 <oklopol> really?
22:07:38 <oklopol> well, i don't believe it :)
22:07:48 <oerjan> $Aspetta che l'utente inserisca un numero e lo mette nell'accumulatore
22:07:56 <oklopol> i make my own lang then, take the same name and change that
22:08:35 <oerjan> http://stelk.altervista.org/SPL0.2.tar.gz
22:08:41 <oklopol> or, my lang's name is SPL ^H
22:08:45 <oklopol> if needed
22:09:46 <oklopol> i can't open that, anyway, i'll make it ascii input, i'm sure the author never sees my page :)
22:10:09 <oklopol> oh fuck
22:10:18 <oklopol> | puts a number in the current cell
22:10:37 <oerjan> There is an implementation there too, in C++
22:11:05 <oklopol> i can't open the link
22:11:16 <oerjan> No, it's , which does that.
22:11:22 <oklopol> now it opened
22:11:24 <oerjan> $ insers into the accumulator.
22:11:40 <oklopol> | read a number in the current cell, at least in the example
22:11:42 <oerjan> *inserts
22:11:44 <oklopol> *reads
22:11:45 <oklopol> :D
22:12:41 <oklopol> LOLfuck, '$' is twice in that code
22:12:48 <oklopol> there's no '|'
22:13:04 <oerjan> Which file?
22:13:52 <oklopol> i got it open
22:14:11 <oerjan> ah, the C++ code. And not an else in sight, either :)
22:14:17 <oklopol> there is a '#' that is just a subset of '[' xD
22:14:40 <oklopol> no elses, so '$' does two inputs, only latter one is used
22:14:44 <oerjan> unnested version
22:14:55 <oklopol> okay
22:15:05 <oklopol> you can use it with [] for interesting results
22:15:12 <oklopol> so i retract my statemenzzor
22:15:25 <oklopol> especially 'xD'
22:15:28 <oklopol> :)
22:20:33 <oerjan> Wait a moment.
22:20:46 <oerjan> Hm...
22:20:59 <oerjan> It says on the wiki that # ... # is a comment.
22:22:55 <oerjan> However, the implementation makes no attempt to ignore [] matches inside #'s, so it can still be used for interesting results.
22:24:49 <oklopol> :DD
22:26:59 <oklopol> i didn't even think of the '#' as a comment since i thought it was supposed to be used with [] for additional fun
22:27:42 <oerjan> There is some serious possibility for buffer overruns with #[] too..
22:28:08 <oklopol> yeah, overall, FRENCH PEOPLE SUCK AT CODING
22:28:16 <oklopol> (i'm kidding don't kill me :;()
22:28:38 <oerjan> It would have been better if you had noticed it was Italian.
22:28:57 <oerjan> Unless that was part of the joke :)
22:29:11 <oklopol> THEY CAN'T EITHER
22:29:13 <oklopol> :)
22:29:23 <oklopol> i don't know either language :\
22:29:51 <oerjan> I know enough to guess most of the meaning.
22:30:27 <oklopol> hmm
22:30:29 <oklopol> maybe me too
22:30:31 <oklopol> i'll try
22:31:08 <oklopol> "Aspetta che l'utente inserisca un numero e lo mette nell'accumulatore"
22:31:11 <oklopol> no idea
22:31:45 <oerjan> "Expect that the user will insert a number, and put it in the accumulator."
22:33:13 <bsmnt_bot_chroot> looneys!
22:33:18 <bsmnt_bot_chroot> looneys i say!
22:33:23 <oerjan> BLBLBLBLBLBLBL
22:33:45 <bsmntbombdood> No
22:33:46 <bsmntbombdood> one
22:33:51 <bsmntbombdood> has broken
22:33:53 <oklopol> what langs do you know to understand that?
22:33:54 <bsmntbombdood> my chroot
22:33:55 <bsmntbombdood> yet
22:34:11 <oklopol> bsmntbombdood, maybe it's too easy for us
22:34:19 <bsmntbombdood> oh, right
22:34:31 <oerjan> English, a bit Italian, and in theory a bit French.
22:34:45 <bsmnt_bot_chroot> looneys!
22:35:02 <bsmnt_bot_chroot> break me!
22:35:05 <oerjan> Note that almost every long word except "mette" is related to the English.
22:35:41 <bsmntbombdood> ~quit
22:35:41 -!- bsmnt_bot_chroot has quit.
22:35:45 -!- bsmnt_bot_chroot has joined.
22:35:51 <oklopol> yes, but vaguely
22:35:52 <bsmntbombdood> oops
22:35:53 <oerjan> So what I need of Italian is mostly grammar.
22:35:56 <bsmntbombdood> ~quit
22:35:57 -!- bsmnt_bot_chroot has quit (Client Quit).
22:35:58 -!- bsmnt_bot has joined.
22:36:00 <oklopol> utente in unguessable
22:36:57 <oerjan> Oh yes, I also once read a Latin grammar. Made me understand a lot about how things like "utente" and "user" can be related.
22:36:57 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
22:37:03 <bsmntbombdood> ~exec print >> sys.stdout, os.abspath(".")
22:37:52 <bsmntbombdood> ~exec print >> sys.stdout, os.getpid()
22:37:53 <bsmnt_bot> 16985
22:38:05 <oerjan> Basically one is the present stem and the other the past perfect.
22:38:58 <oerjan> And English for some reason borrows Latin words with the latter.
22:39:40 <oerjan> Actually English has that version too: "utility"
22:39:51 -!- oklopol has joined.
22:40:15 <bsmntbombdood> lame
22:40:16 <oerjan> *words -> verbs
22:40:48 <oerjan> darn i didn't notice you left :(
22:40:51 <oklopol> :)
22:40:53 <oklopol> i thought so
22:40:56 <oklopol> repeat!
22:40:56 <oklopol> :D
22:41:07 <oerjan> Oh yes, I also once read a Latin grammar. Made me understand a lot about how things like "utente" and "user" can be related.
22:41:14 <oerjan> Basically one is the present stem and the other the past perfect.
22:41:19 <oerjan> And English for some reason borrows Latin words with the latter.
22:41:27 <oerjan> Actually English has that version too: "utility"
22:41:32 <oerjan> *words -> verbs
22:42:50 -!- bsmnt_bot has quit ("nobody loves me :(").
22:42:52 -!- bsmnt_bot has joined.
22:43:49 * oerjan hugs bsmnt_bot
22:44:23 <bsmnt_bot> break me!
22:44:46 * oerjan doesn't have the skills for that.
22:45:13 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
22:45:18 <oerjan> I tend to stay at an abstract level, fairly far from the machine.
22:45:33 <bsmntbombdood> ~exec print >> sys.stdout, os.getpid()
22:45:34 <bsmnt_bot> 16991
22:46:20 <oerjan> Besides, who knows if there even is a loophole to use.
22:46:41 <bsmntbombdood> I'm sure there's a way to do it
22:48:02 <oerjan> I suppose if you included the whole Linux distribution in the jail there might be a chance.
22:48:19 <bsmntbombdood> yeah, there isn't much to exploit inside it
22:48:53 <oerjan> It might in fact be easier to break into your machine from the outside, for all I know.
22:48:59 <bsmntbombdood> no setuid root programs
22:49:48 <bsmntbombdood> (inside the jail)
22:53:26 <oerjan> So basically only someone with a good knowledge of the Linux kernel (and probably Python) would stand a chance, which doesn't include me.
22:53:38 <bsmntbombdood> heh, yeah
22:59:05 -!- oklopol has joined.
23:01:59 -!- tgwizard has quit (Remote closed the connection).
23:02:59 <CakeProphet> ~exec print os.listdir()
23:03:41 <bsmntbombdood> ~exec print >> sys.stdout, os.listdir()
23:03:44 <bsmntbombdood> ~exec print >> sys.stdout, os.listdir(".")
23:03:44 <bsmnt_bot> ['bin', 'bot', 'etc', 'lib', 'usr']
23:03:54 <CakeProphet> Why do you have to do that?
23:04:01 <bsmntbombdood> because python is stupid
23:04:08 <CakeProphet> ~exec print >> sys.stdout, os.listdir("bin")
23:04:09 <bsmnt_bot> ['bash']
23:04:25 <CakeProphet> .... print >> sys.stdout is the exact same thing as print
23:04:28 <CakeProphet> it's redundant.
23:04:37 <bsmntbombdood> In a normal enviroment, yeah
23:04:44 <CakeProphet> ~exec print >> sys.stdout, sys.stdout
23:04:45 <bsmnt_bot> <__main__.IRCFileWrapper instance at 0xb7bfe48c>
23:04:53 <oerjan> ~exec print >> sys.stdout, os.listdir("lib")
23:04:53 <bsmnt_bot> ['libm.so.6', 'libreadline.so.5', 'libdl-2.4.so', 'libresolv.so.2', 'libutil.so.1', 'libncurses.so.5', 'libcrypt.so.1', 'ld-linux.so.2', 'libdl.so.2', 'libpthread.so.0', 'libpam_misc.so.0', 'libpam.so.0', 'libc.so.6']
23:05:29 <CakeProphet> ...no... I mean... that -is- the same thing.
23:05:42 <bsmntbombdood> obviously not
23:05:47 <bsmntbombdood> inside an exec
23:05:47 <CakeProphet> There's no other way to get around that... unless you use >>, print goes directly to sys.stdout.
23:05:48 <oerjan> it would if the sys module was the standard one.
23:06:07 <CakeProphet> so you're using a different module for sys?
23:06:28 <CakeProphet> even then... you'd have to hack the interpreter to make those two statements mean anything different from each other.
23:06:31 <bsmntbombdood> I'm using a costum object, to redirct stdout to the right place
23:06:56 <CakeProphet> ...that doesn't change the fact that print by itself always goes to sys.stdout...
23:07:06 <oerjan> How are you assigning it to sys.stdout?
23:07:16 <CakeProphet> sys.stdout = whatever
23:07:32 <oerjan> i'm asking bsmntbombdood
23:07:35 <bsmntbombdood> CakeProphet: Can't do that, that interferes with the "real" stdout
23:07:55 * CakeProphet does it all the time...
23:07:59 <oerjan> well that's the idea, isn't it?
23:08:03 <bsmntbombdood> oerjan: by passing a costum enviroment to the python exec statement
23:08:20 <oerjan> it _should_ change the real stdout.
23:08:36 <bsmntbombdood> no, we only want it to change inside the exec
23:08:36 <CakeProphet> what's a costum enviornment... and how does it change the axiomatic grand law of python's print statement?
23:09:05 <oerjan> he is probably redefining the sys variable to not point at the sys module.
23:09:10 <bsmntbombdood> right
23:09:24 <CakeProphet> ....regardless.... the regular print would just point to that as well.
23:09:30 <bsmntbombdood> env[0]["sys"] = SysWrapper(stdout = IRCFileWrapper(self.raw, r.group(1)), stderr = IRCFileWrapper(self.raw, self.errorchan))
23:09:55 <CakeProphet> That sounds kind of extraneous. :P
23:10:11 <CakeProphet> you could just do.
23:10:23 <oerjan> basically print will always refer to the stdout of the real sys module, not to stdout of whatever happens to be in the global variable sys.
23:10:38 <CakeProphet> exec SomeCode in {"sys":<something>}
23:10:54 <bsmntbombdood> CakeProphet: That's what I am doing...
23:11:08 <CakeProphet> hmmm... so what's the point in wrapping sys if it doesn't do the main objective of replacing stdout?
23:11:26 <bsmntbombdood> It does replace stdout
23:11:33 <CakeProphet> only for the programmer.
23:11:35 <bsmntbombdood> ~exec print >> sys.stdout, sys.stdout
23:11:36 <bsmnt_bot> <__main__.IRCFileWrapper instance at 0xb7bfe7ac>
23:11:43 <bsmntbombdood> that's no file object
23:11:49 <oerjan> but not for print, which makes it pointless :)
23:11:52 <CakeProphet> but if the regular print statement doesn't.
23:11:54 <CakeProphet> yes.
23:11:59 <CakeProphet> you finished before me...
23:12:03 <bsmntbombdood> ~quit
23:12:03 -!- bsmnt_bot has quit.
23:12:06 -!- bsmnt_bot has joined.
23:12:15 <bsmntbombdood> ~exec print "error
23:12:28 <oerjan> it would be simpler to just do print >> channelObj
23:12:43 <oerjan> whatever you call that.
23:12:51 * CakeProphet doesn't like the >> syntax for print.
23:12:58 <bsmntbombdood> print >> IRCFileWrapper(self.raw, "#esoteric"), "foo"
23:13:01 <CakeProphet> channelObj.write("blah blah")
23:13:19 <CakeProphet> if you had constant objects for channels... it would be more convient.
23:13:24 <bsmntbombdood> ?
23:13:33 <CakeProphet> instead of instantiating one everytime.
23:13:33 <oerjan> esoteric = IRCF....
23:13:44 <CakeProphet> yeah.
23:13:45 <bsmntbombdood> sys.stdout is the object representing the current channel
23:13:48 <oerjan> Then just print >> esoteric
23:14:04 <oerjan> well print >> curChannel
23:14:05 <CakeProphet> but what's the point in replacing sys.stdout if it doesn't does what sys.stdout is supposed to do?
23:14:21 <CakeProphet> you might as well just make a variable called "channel".
23:14:25 <bsmntbombdood> Well, I had to try
23:14:54 <bsmntbombdood> oerjan: print >> sys.stdout IS print >> currchan
23:15:13 <bsmntbombdood> I'm still trying to figure out how to make print behave like it should
23:15:21 <CakeProphet> I kind of like that...
23:15:25 <CakeProphet> just print >> esoteric
23:15:32 <CakeProphet> or even better esoteric.send()
23:15:59 <bsmntbombdood> ~exec global esoteric; esoteric = IRCFileWrapper(self.raw, "#esoteric")
23:16:26 <bsmntbombdood> ~exec print >> esoteric, esoteric
23:16:31 <bsmntbombdood> damn
23:16:39 <CakeProphet> yeah.
23:16:42 <CakeProphet> I didn't think that would work.
23:16:44 <bsmntbombdood> ~exec self.esoteric = IRCFileWrapper(self.raw, "#esoteric")
23:16:53 <bsmntbombdood> ~exec self.esoteric.write("hi")
23:16:53 <bsmnt_bot> hi
23:17:41 <CakeProphet> hehe... I would have done factory functions or something :D
23:17:57 <bsmntbombdood> factory functions?
23:18:02 <CakeProphet> esoteric = channelfactory("#esoteric")
23:18:07 <CakeProphet> esoteric("Hello World!")
23:18:36 <bsmntbombdood> ~exec self.esoteric = IRCFileWrapper(self.raw, "#esoteric").write
23:18:46 <bsmntbombdood> ~exec self.esoteric("foo")
23:18:47 <bsmnt_bot> foo
23:18:49 <bsmntbombdood> better?
23:18:55 * CakeProphet shrugs
23:18:58 <CakeProphet> doesn't matter to me.
23:19:47 <CakeProphet> factroy functions give functional programming an OO-like advantage.
23:19:51 <CakeProphet> without being all... OO-ish.
23:24:41 <ihope> CakeProphet: factory functions?
23:24:47 <ihope> You mean constructors?
23:24:59 <CakeProphet> ...same idea...
23:25:06 <CakeProphet> sorta kinda
23:25:09 <ihope> data Channel = ChannelFactory String -- this?
23:25:14 <bsmntbombdood> make_adder = lambda x : lambda y : x+y
23:25:31 <CakeProphet> constructors setup an initial state... factory functions produce other functions.
23:25:44 <ihope> Ah, I see.
23:25:52 <ihope> So a factory function is just a function returning a function?
23:25:57 <CakeProphet> Yup.
23:26:07 <CakeProphet> pretty powerful stuff.
23:26:20 <ihope> Naturally I'd miss the point completely, being used to first-class functions :-)
23:26:30 <CakeProphet> well... there's other flavors of factory functions... I've made a factory function that spat out classes.
23:26:43 <ihope> Anything that produces something unusual?
23:26:51 <CakeProphet> hmmm...
23:26:58 <CakeProphet> not that I can think of.
23:27:00 <bsmntbombdood> In python you can make classes like factory functions
23:27:04 <CakeProphet> I considered making a factory factory function.
23:27:22 <ihope> I mean a factory function is something that produces something unusual?
23:27:26 <CakeProphet> for producing convient factory functions.
23:27:29 <CakeProphet> no.
23:27:37 <CakeProphet> it just produces a... function.
23:27:47 <bsmntbombdood> ~quit
23:27:47 -!- bsmnt_bot has quit.
23:27:49 -!- bsmnt_bot has joined.
23:27:52 <ihope> So how could a factory function spit out classes?
23:27:54 <CakeProphet> it puts a common set of goals that you'd have for defining a certain type of function into a nice little package.
23:27:57 <bsmntbombdood> ~exec self.esoteric = IRCFileWrapper(self.raw, "#esoteric")
23:28:00 <CakeProphet> by defining them in their body.
23:28:04 <ihope> I see.
23:28:05 <bsmntbombdood> ~exec self.esoteric("foo")
23:28:05 <bsmnt_bot> foo
23:28:08 <bsmntbombdood> neat, eh?
23:28:11 <ihope> bsmntbombdood: is this guy chrooted?
23:28:15 <bsmntbombdood> yeah
23:28:34 <bsmntbombdood> the long nick was getting annoying
23:28:37 <ihope> ~pexec self.quit
23:28:43 <ihope> That didn't work.
23:28:43 <bsmntbombdood> the new error channel is #bsmnt_bot_errors, btw
23:28:47 <bsmntbombdood> ~exec
23:29:03 <bsmntbombdood> ~exec is public now
23:29:14 <ihope> ~exec self.quit
23:29:27 <ihope> That didn't exactly work either, eh?
23:29:37 <bsmntbombdood> it got executed though
23:29:46 <bsmntbombdood> <bsmnt_bot> AttributeError: IRCbot instance has no attribute 'quit'
23:30:28 <ihope> ~exec self.do_quit()
23:30:35 <ihope> I also forgot about the () at the end... uh...
23:30:45 <ihope> Yes.
23:30:46 <bsmntbombdood> ...join that channel so I don't have to copy and paste erros
23:33:07 <ihope> ~exec self.disconnect("RAH RAH RAH")
23:33:07 -!- bsmnt_bot has quit ("RAH RAH RAH").
23:33:10 -!- bsmnt_bot has joined.
23:33:16 <ihope> Pretty fancy.
23:33:20 <bsmntbombdood> there ya go
23:34:14 <ihope> ~exec self.do_callbacks(":bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood PRIVMSG #esoteric :~quit")
23:34:15 -!- bsmnt_bot has quit (Client Quit).
23:34:18 -!- bsmnt_bot has joined.
23:34:20 <ihope> Wonderful.
23:35:33 -!- oklofok has joined.
23:35:50 <ihope> What the...
23:35:56 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
23:35:59 <bsmntbombdood> ?
23:36:08 <ihope> s/pol/fok/?
23:36:23 <CakeProphet> ihope, http://deadbeefbabe.org/paste/3246
23:36:30 <CakeProphet> assume that class statement is dedented a notch.
23:36:40 <CakeProphet> *indentation was screwing up.
23:37:12 <bsmntbombdood> silly python, indentation is for stupid people
23:37:32 <ihope> CakeProphet: pretty fancy.
23:37:43 <ihope> bsmntbombdood: uh...
23:38:01 <ihope> Oh... wait...
23:38:03 <ihope> Eh.
23:38:22 <CakeProphet> insane hackish solutions that weren't intended to be done is my favorite passtime. :D
23:38:43 <bsmntbombdood> __bases__?
23:38:52 <bsmntbombdood> ihope: what?
23:39:13 <CakeProphet> __bases__ is a classes inheritance tuple.
23:39:21 <CakeProphet> class Lol(Rofl, omfg)
23:39:24 <ihope> bsmntbombdood: nothing, nothing...
23:39:30 <CakeProphet> Lol.__bases__ would be (Rofl, omfg)
23:39:33 <bsmntbombdood> oh ok
23:39:56 <CakeProphet> I could have skipped the whole class statement thing by doing.
23:40:04 <CakeProphet> Meh = type(name, parents, dictionary)
23:40:09 <ihope> Pff.
23:40:14 <ihope> That's no fun.
23:40:21 <CakeProphet> since type is -the- metaclass. :D
23:40:25 <bsmntbombdood> property(None, self.__setattr__, self.__delattr__)?
23:40:34 <CakeProphet> Makes it read-only.
23:40:44 <bsmntbombdood> What's the property function do?
23:40:44 <CakeProphet> there's no get function for it to use.
23:40:46 <CakeProphet> er...
23:40:49 <CakeProphet> write-only :P
23:40:54 <ihope> Now what's Python have that's like Haskell's "let" or "where"?
23:41:15 <bsmntbombdood> oh, i get it
23:41:21 <CakeProphet> it does some crazy magic stuff to alter the get, set, and delete functions of only one attribute.
23:41:35 <CakeProphet> ihope, variables are local scope by default.
23:41:51 <CakeProphet> Python has only one, rarely used, scope declaration... "global".
23:42:09 <ihope> Oh, right, Python lets you assign things to variables.
23:42:22 <ihope> Now, uh, hmm...
23:42:24 <CakeProphet> but they're probably going to add a "nonlocal"... for nested scopes. (Python has a pretty simple idea of nested scopes... it just has "globals" and "locals"...)
23:42:46 <ihope> ~exec self.raw("PRIVMSG #esoteric :Foo"); self.raw("PRIVMSG #esoteric :Foo")
23:42:46 <bsmnt_bot> Foo
23:42:47 <bsmnt_bot> Foo
23:42:51 <ihope> Wonderful.
23:43:08 * ihope pushes #esoteric onto the stack and runs to eat dinner
23:44:06 * CakeProphet ...knows entirely too much about Python.
23:44:18 <CakeProphet> I should find something else to tinker with.
23:44:28 <bsmntbombdood> ...and I though I had to do some low level stuff for bsmnt_bot
23:45:03 <bsmntbombdood> The trace function was quite nice I though ;)
23:45:53 <CakeProphet> ...the lowest level thing I've ever done with Python is.... select.
23:46:35 <bsmntbombdood> you mean with sockets?
23:46:43 <CakeProphet> Yeah.
23:46:53 <bsmntbombdood> threads > select
23:46:54 <CakeProphet> it's the most basic thing I could think of that I've used.
23:46:54 <oklofok> i made a cool bf :)
23:47:14 <bsmntbombdood> CakeProphet: That class generator was pretty low level
23:47:37 <CakeProphet> heh... that depends on your definition of low level.
23:47:59 <bsmntbombdood> using a class's __ functions is low level python
23:48:19 <CakeProphet> I thought it was fairly abstract... (anything that creates abstract plans for objects is pretty damn high in abstractiness)
23:48:39 <CakeProphet> meh... just some interpreter magic... __ methods are pretty common in Python programs.
23:48:45 <bsmntbombdood> the __ variables are very close to the interpreter
23:48:50 <bsmntbombdood> hence, low level
23:49:33 <oerjan> Nah, it's not really abstract until it borrows terms from category theory :)
23:49:46 <CakeProphet> they're glorified callback functions basically...
23:49:58 <bsmntbombdood> CakeProphet: they are low level
23:50:34 <CakeProphet> heh... I won't debate the existence of a non-specific, human invented definition.
23:51:08 <CakeProphet> low-level doesn't exist...
23:51:16 <bsmntbombdood> heh
23:51:16 <CakeProphet> it does... in the sense that there is such a thing as year.
23:51:29 <CakeProphet> and that things like months can exist.
23:51:33 <CakeProphet> but basically it's nothing.
23:53:20 <CakeProphet> hmm... I've taken a liking to using Python sets...
23:53:38 <CakeProphet> they're extremly useful for my MUD... where I don't want accidental duplicate references of objects appearing.
23:56:59 <bsmntbombdood> ~exec self.test = SysWrapper(IRCFileWrapper(self.raw, "#esoteric"), IRCFileWrapper(self.raw, "#esoteric"))
23:57:10 <bsmntbombdood> ~exec self.test.stdout("foo")
23:57:10 <bsmnt_bot> foo
23:57:16 <bsmntbombdood> ~exec self.test.stdout.write("foo")
23:57:17 <bsmnt_bot> foo
23:57:24 <bsmntbombdood> __call__ is great
23:57:52 <bsmntbombdood> ~exec sys.stdout = self.test.stdout
23:57:56 <bsmntbombdood> ~exec print "foo"
23:58:02 <bsmntbombdood> argh
23:58:40 <CakeProphet> most of the special methods are great. :D
23:58:56 <CakeProphet> __setitem__, __getitem__, __contains__... you can make just about anything.
23:59:26 <bsmntbombdood> CakeProphet("foo")
23:59:43 <CakeProphet> I've got the design for a periodic table of elements somewhere.
23:59:47 <CakeProphet> the information isn't filled in yet...
←2007-01-09 2007-01-10 2007-01-11→ ↑2007 ↑all