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