00:00:09 uorygl: that's possessive 00:00:21 you 00:00:22 r 00:00:37 oottelen vastaustasi = i wait for your answer 00:00:42 *i'm waiting 00:00:59 *odottelen 00:01:00 how did I end up reading "answer" as "shower" 00:01:03 that is just strange 00:01:13 well i read your shower as showel 00:01:19 oklopol, hah 00:01:35 oklopol, at least the edit distance was less there 00:01:35 oklopol: so this makes "kulli kädes oottelen vastaustas" seem like two separate sentences. 00:01:48 Where one of them is just a noun phrase. :P 00:02:14 uorygl: wielding my dick i'm waiting for your answer 00:02:26 * uorygl nods. 00:02:43 Well, that was fun. 00:02:44 but usually you'd say "odottelen vastaustasi pippeli kdess" 00:02:51 it's poetic 00:02:57 i mean 00:03:08 the original was a poetic word order, so to speak 00:03:35 (i gave you a third name for penis, you can never have too many) 00:03:44 * uorygl quickly runs through his flash cards again. 00:04:10 nisäkäs 00:04:19 mammal 00:04:28 do you know what nis is? 00:04:34 Breast? 00:04:44 i think it's more like a nipple but yeah 00:04:55 So "tit" is definitely right. 00:05:27 jäte 00:05:28 ks can be done with other things too, although it's not used much 00:05:33 I'm not doing all that well with these. 00:05:43 Aha, waste. 00:06:06 have you chosen random words from a dicitonary? 00:06:08 *dictionary 00:06:17 Pretty close. 00:06:32 I'm taking content words off of http://fi.wikipedia.org/wiki/Koira 00:07:23 How would you say "the dog bone explodes"? 00:07:34 * uorygl quickly runs through his flash cards again. <-- why do you speak about memory cards all the time... 00:07:46 AnMaster: because I use them for language learning. 00:07:59 uorygl: koiran luu rjht 00:08:05 AnMaster: not flash USB drives 00:08:08 alise, oh 00:08:13 alise, what does he mean then? 00:08:15 flash cards. 00:08:25 word in certain language + meaning 00:08:27 alise, that means compact flash card or such to me 00:08:28 used for memorising a language 00:08:32 alise, oh like a "glosbok"? 00:08:38 http://en.wikipedia.org/wiki/Flashcard 00:08:38 no 00:08:45 you have cards with words on both sides 00:08:48 "A flashcard or flash card is any of a set of cards bearing information, as words or numbers, on either or both sides, used in classroom drills or in private study." 00:08:51 An example for a French student of English learning "enough", which in French is assez (pronunciation given in IPA): 00:08:52 Q: assez 00:08:52 A: enough, /ɪˈnʌf/ 00:08:52 Reverse: 00:08:52 Q: enough 00:08:53 A: /ɪˈnʌf/, assez 00:08:54 oklopol, ah 00:08:56 i would've assumed it's flashcard in swedish 00:09:00 what is it? 00:09:20 can we at least talk klingon or something 00:09:30 all this swedish chef stuff is getting old 00:09:37 oklopol, I never heard of this concept, and a glosbok is quite different 00:09:38 chef? 00:09:40 Finnish isn't Swedish chef stuff. 00:09:52 what 00:10:00 "Score: 10 of 20 = 50%" 00:10:12 cheater99, please make a difference between Swedish and Finnish next time 00:10:18 you managed to insult both sides 00:10:28 Mmkay, "koiran luu räjähtää". "Koiran" is the genitive there, yes? 00:10:31 yes 00:10:54 Do compounds like that always use the genitive like that? 00:10:56 AnMaster, there is a difference? 00:11:10 uorygl: the bone of the dog 00:11:36 we use normal genitive with body parts 00:11:46 err 00:12:04 "I do not believe that John Wiles has actually provided a proof with integrity, but more a proof checked by friends in the know" --crackpot saying he's proved FLT 00:12:05 John Wiles! 00:12:18 cheater99, ........................... 00:12:42 AnMaster, . . . . . 00:12:57 you can see that i spaced those dots in approximately a quadratic progression 00:13:12 oklopol: when you stick words together without a space in between, what do you do with the first word, case-wise? 00:13:17 cheater99, and? 00:13:30 uorygl: usually nothing, rarely genitive 00:13:34 and this is very related to the topic of the channel 00:13:34 cheater99, anyway my answer is: stop trolling 00:13:42 oklopol: so you usually just use the stem? 00:13:57 yes, but koiran luu is not a compound, it's just "the bone of the dog" 00:14:02 AnMaster, i am not trolling - i just found your remark about finnish/swedish pride a bit funny that's all =) 00:14:14 oklopol: can you make compounds with a word in between? 00:14:15 -!- FireFly has quit (Quit: swatted to death). 00:14:24 cheater99, they are different language families 00:14:56 AnMaster, believe it or not i know that 00:15:35 uorygl: the rules for whether there's a space are rather complicated in general, but for two nouns there's usually no space 00:15:37 -!- BeholdMyGlory has quit (Read error: Connection reset by peer). 00:15:43 * uorygl nods. 00:17:25 So if you really wanted to say "dog bone", it would be... hm, I don't know what the stem of "koira" is. Is it "koira", "koir", or something else? 00:18:05 you never drop anything from "koira" 00:18:15 So, "koiraluu"? 00:18:17 no wait plural partitive is koiria 00:18:21 yes 00:18:56 if you carved stuff out of bones, you could call one of your products the "koiraluu" 00:19:03 if it looked like a dog 00:19:04 * Sgeo_ finds another way to watch his movie 00:19:17 Spiffy. 00:19:42 sure 00:20:15 -!- kar8nga has quit (Remote host closed the connection). 00:20:22 It's Megavideo though, which means being interrupted by "hey, you've watched too much video" 00:20:30 also i think koiranluu is a bone you can buy for your dog to eat 00:20:32 :D 00:21:05 I think maybe I shouldn't be saying all this stuff in a logged channel 00:21:11 Aiee, why the n/lack of space? 00:21:14 i hate megavideo, it's the best streaming service there is, but also the only limited one 00:21:28 uorygl: that's the rare no-space genitive compound. 00:22:14 "best", as in losses enforcement of copyright? 00:22:22 Loosest 00:23:45 SgeoN1: dude the authorities are not going to get you for piracy 00:23:52 chill the fuck out and stop worrying :P 00:24:01 koiraluu will always make sense, either it has some specific meaning or it'll be used in context, koiranluu just usually sounds wrong, except when it happens to have a meaning (like in this case), koiran luu will always make sense, it's just the bone of a dog, it can have a more specialized meaning like in this case "dog bone", but it will always also be usable as a generic the bone of a dog. 00:24:19 that makes sense only if you swap a noun variable where luu and koira are :) 00:24:26 My dad instilled a sense of paranoia about that stuff 00:25:10 Then again, he's also paranoid about forwarding ports and running servers/hosting games 00:25:23 I guess I should learn how to say stuff like "man". 00:25:40 mies 00:25:42 And "walk". 00:25:47 He once made me wipe my HD after I installed a chat seover of some kind 00:25:49 kvell 00:25:50 "Ihminen" :P 00:25:55 oh that too 00:25:56 Server 00:25:57 human = ihminen 00:26:12 man = mies 00:26:25 walk = kvell 00:26:59 SgeoN1: Your dad is a fool. Uh, of sorts. 00:27:36 The United States just isn't a good country for Sgeo. 00:28:17 alise: Do you know of an X server framework that implements a basic forwarding X server? 00:28:50 uorygl: why would you want to learn finnish? 00:29:07 oklopol: because it's spoken in Scandinavia and it's not Indo-European. 00:29:14 also what did you end up deciding to do with your life? 00:29:22 I still haven't decided. 00:29:25 oh okay 00:29:36 coppro: ur mom 00:29:37 i guess i was sort of expecting that answer 00:29:43 * uorygl looks up Finnish conjugation. 00:29:55 Kävelen, kävelee... that's enough for now. :P 00:29:59 uorygl is going to become a professional eliezer yudkowsky fanboy 00:30:06 are you moving to scandinavia, otherwise i might want elaboration on the reason 00:30:09 uorygl: stop using two spaces after a sentence 00:30:17 uorygl: it's typewriter legacy 00:30:20 kvellkseen 00:30:23 Ihminen kävelee! 00:30:32 oklopol: I might move there eventually. :P 00:30:39 unissas kvelee plli 00:30:53 i don't seem to be able to behave in finnish 00:31:28 uorygl: if you do, please choose math :P 00:31:38 oklopol: done! 00:31:49 Why? Is there lots of demand for math in Scandinavia? 00:32:26 well no but i would insisting on us meeting (if you learned finnish and therefore moved here), and it would be most useful for me if you were a math enthusiast. 00:32:33 * uorygl nods. 00:32:48 Great. Let's plan to meet... how does May 29, 2014 sound? 00:32:53 :D 00:32:56 sounds good 00:33:03 Great, I'll add it to my calendar. :P 00:33:03 oklopol: i will totally meet you earlier 00:33:09 like in the next couple of years 00:33:10 unfortunately i don't really have anything to store dates in 00:33:15 you'd be so interesting. 00:33:19 maybe i'll find a storage 00:33:28 I'll have to remind you 30 minutes before and then 5 minutes before. 00:33:32 or maybe i'm not interesting 00:33:40 and you'll be really disappointed 00:33:49 i want to write a little spreadsheet program 00:34:00 my gf just told me i was really odd a few days ago because i wanted to lick my knee all the time 00:34:30 wow i am going to do that now 00:34:35 did it to my clothes but close enough 00:34:42 it feels cool 00:34:57 Let's see, May 29, 2014 is a Thursday. 00:35:11 what time 00:35:35 Um, how about 3 PM? 00:35:50 but i get off work at 4! 00:35:57 Oh. 5, then? 00:35:58 nah i can probably leave early 00:36:00 okay 00:36:11 5 pm where, at the uni? 00:36:15 You could change jobs by then. 00:36:18 no 00:36:19 Sure, where at the uni? 00:36:21 And which uni? 00:36:33 where i'm doing my research, turku university 00:36:45 main building, 4th floor of math dep 00:36:56 i'm not sure about room number tho 00:37:37 i guess university of turku is the name but anyway 00:38:37 There, now my calendar contains two events. :P 00:38:42 One of them is in June, the other is in 2014. 00:39:01 hehe 00:39:17 I made that appointment in June a few weeks ago. 00:39:26 oklopol, I feel sorry for your gf 00:39:41 :D 00:39:43 why 00:39:44 I asked, "How far ahead can I make an appointment?" They said, "As far ahead as you like, I guess." 00:40:04 I should have cackled evilly upon hearing that I had this unlimited power, but instead, I just made an appointment four weeks from that time. 00:41:19 heh 00:41:48 I should have also made an appointment eight weeks from that time, as I knew when I would be available. 00:41:50 "4 minutes after the End" 00:41:52 CAN THE NUMBER OF SECONDS INTO THE SPECIFIED MINUTE BE IRRATIONAL 00:42:19 The number of minutes into the specified hour must be a non-integer dyadic fraction. 00:44:05 Mies kävelee. That's easy enough. And, uh... 00:44:20 uorygl, you should have made an appointment in year 31827372 or such 00:44:28 uorygl, where was this btw? 00:44:36 The campus recreation center. 00:44:39 ah 00:44:41 uorygl, for what? 00:44:53 To create a new exercise plan. 00:45:40 Darn, I could have answered whatever I wanted. I should have said, "To reconsider the allocation of recreation among the students to take into account the fact that nobody really *needs* recreation". 00:46:38 Minä kävelen. 00:46:42 what do exercise and recreation have to do with each other 00:46:56 Now I wonder where I'm walking to. 00:46:58 recreational is a branch of mathematics 00:47:00 oklopol: don't ask me. 00:47:12 uorygl: you are forced to exercise or something? :p 00:47:21 ooh, you're gonna need illative 00:47:49 I am forced to exercise if I want to reap the benefits of exercise without resorting to some means by which I can reap the benefits of exercise without exercising. 00:48:09 XD 00:48:35 uorygl: you're so annoying 00:48:38 i hope our visits to oklopol don't clash 00:48:42 :D 00:48:50 Let's see. With the words I supposedly know, I can say... 00:49:10 min kvelen koiran suuhun 00:49:20 nm me 00:49:20 http://man.cat-v.org/unix_WWB/1/sexist 00:49:21 I walk into the starting time, I walk into the animal, I walk into the stone, I walk into the shape... 00:50:36 http://man.cat-v.org/unix_8th/6/atc ;; one of the most geeky games imaginable 00:50:46 uorygl: well do it 00:51:01 I don't know the illative cases of those. 00:51:14 * uorygl looks them up. 00:51:42 some sort of lengthening or vowel + n 00:51:49 plus all sorts of fun details 00:52:06 * alise attempts to find the spreadsheet program in unix 8th edition 00:52:37 Minä kävelen alkuaikaan. Minä kävelen eläimeen. Minä kävelen kiveen. 00:52:44 So my guess for "shape" would be "muotoon". 00:52:55 Yep! Minä kävelen muotoon. 00:53:10 -!- Tritonio_GR has quit (Quit: Leaving.). 00:53:37 ah visi 00:53:38 http://man.cat-v.org/unix_8th/1/visi 00:53:48 http://man.cat-v.org/unix_8th/6/atc ;; one of the most geeky games imaginable <-- nah, tried it, not realistic IMO 00:54:00 Koira kävelee luun suuhun. 00:54:11 AnMaster: no shit 00:54:14 it's a game 00:54:15 It doesn't make much sense. :P 00:54:44 -!- SgeoN1 has quit (Read error: Connection reset by peer). 00:55:47 alise, yeah, I prefer simulations 00:56:44 http://profile.ak.fbcdn.net/v223/334/56/n100000035296412_1208.jpg 00:56:49 neck is crazy 00:57:15 Now I'm kind of thirsty, and I want to talk about drinking, but that's really a vocabulary issue. 00:57:16 dammit ais left 00:57:26 night → 00:57:33 nn AnMaster 00:57:58 -!- coppro has quit (Read error: Connection reset by peer). 01:09:29 i don't think starting time is alkuaika 01:10:06 uorygl: doesn't make sense but it's meaningful 01:10:53 * alise tries to find the actual cover of tri repetae 01:11:30 open cover? 01:12:02 ? 01:12:11 i mean what is that 01:12:16 album art 01:12:41 i AnMaster's the word cover to be the topological term 01:12:50 *AnMaster'd 01:13:15 oh. 01:13:18 okay i thought cover in the sense new version of old thing 01:14:18 "incomplete without surface noise." -- the cover 01:14:28 ("complete with surface noise." -- cover of vinyl version) 01:18:50 I propose we term what is usually called axioms, plus information about axioms, axiomata 01:18:56 Why: it sounds nice 01:27:09 -!- pikhq has quit (Read error: Connection reset by peer). 01:27:46 -!- bsmntbombdood has quit (Ping timeout: 248 seconds). 01:32:53 -!- pikhq has joined. 01:33:40 -!- coppro has joined. 01:44:52 http://sprunge.us/cgih 01:45:01 I should make this cleaner. 01:46:01 Metavideo, fuck you and your 72min limit 01:46:35 * oklopol is about to run out of his 72 01:47:47 pikhq: ima write one of them 01:47:51 looks funerifierous 01:48:05 alise: Heh. 01:48:16 oklopol: starting time isn't alkuaika? 01:49:01 well what kind of starting time? 01:49:08 BF = (Add n, Move n, Loop x, In, Out) ;; I want a dynamic language with adts 01:49:13 The point at which a long process began. 01:49:16 * pikhq should futz with the 01:49:20 loop output 01:49:37 okay if it's long then maybe 01:49:59 -!- Oranjer has joined. 01:50:08 i was thinking like starting time in a race or something, maybe it doesn't mean that usually 01:50:20 Mm. 01:50:31 because you'd use lhtaika 01:52:28 opt (Loop [Add (-1)] : xs) = opt $ Clear : xs 01:52:28 opt (Loop [Add 1] : xs) = opt $ Clear : xs 01:52:30 pikhq: it's more general than this 01:52:46 you need the extended euclidean algorithm to figure out whether a loop like that terminates, iirc 01:53:06 pikhq: btw you could write your optimiser simpler as repeated application until fixpoint of the optimisation function and no recursion :P 01:53:51 What sort of starting time is the time I began sneezing? 01:53:58 opt (Loop x : xs) = Loop (opt x) : opt xs 01:54:06 Loop [Add 2, Add (-1)] 01:54:13 should be 01:54:14 As in the starting time of one particular sneeze. 01:54:15 optBF (Loop x : xs) = optBF $ Loop (optBF x) : xs 01:54:42 uorygl: i think alkuhetki 01:54:48 pikhq: also use Set n instead of Clear 01:54:55 alkuaika is more like for eras and the like 01:55:19 "tieteen alkuaikoina..." when science wazs younngg 01:55:23 *was young 01:55:24 alise: This is intended to first achieve feature-parity with a C program I wrote that does the same thing, and then go from there. 01:55:27 great translation 01:55:33 hetki is moment 01:56:18 The starting moment, eh? 01:56:23 Oh, you said that. 01:56:39 yes 01:56:46 in finnish it sounds nonsilly. 01:57:07 * uorygl nods. 01:57:12 it's not exactly moment, hetki is a point in time, moment is, i guess, an interval 01:57:23 although they do have overlap, it's the usual translation 01:58:03 oklopol: Zack M. Davis says, "[Recreational] is _not_ [a barnch of mathematics]! Algebra, analysis, and topology are branches of mathematics. 'Recreational' is a diminituve applied to problems that are perceived as being 01:58:21 being ...? 01:58:22 "easier or more 'fun' than 'serious' mathematics. The distinction has everything to do with the ideology of professionalism and nothing to do with the theorems themselves." 01:58:41 *Main> optBF [Add 42, Move 0, Add (-3)] 01:58:41 [Add 42,Add (-3)] 01:58:42 grr 01:58:43 And "And doesn't it make more sense as, 'What's the difference between (...)?'" 01:59:16 okay, i haven't been exposed to diminutive usage, but i was joking 01:59:17 Hm, shouldn't he have said "'What's the difference between (...)?'?"? 01:59:40 alise: Trying to do this better than me? :P 01:59:53 pikhq: EVERYTHING WILL BE SUPERIOR 02:00:03 pikhq: you know how far along esotope is btw? :P 02:00:19 Esotope does quite a bit. 02:00:22 Hey, I don't seem to be thirsty any more. 02:00:29 oklopol, how would you say "I don't seem to be thirsty"? 02:01:23 literally en vaikuttaisi/nyttisi olevan janoinen 02:01:41 which i suppose i would use in a situation where i'd say that 02:01:54 oh umm 02:02:17 in your case you'd probably leave out the seem, "oho, jano lhti" or something :P 02:02:58 Hm, how about something easier. "The dog seems to be glowing." 02:03:13 pikhq: Esotope COMPILES THE REGULAR LOOPING HELLO WORLD TO A PRINT STATEMENT. 02:03:19 koira nytt hehkuvan 02:04:11 alise: Yes, I'm well aware. 02:04:17 It's pretty crazy. 02:04:50 alise: However, it still has pointer loads *all the freaking time*. 02:04:54 Because GCC sucks. 02:04:58 lol i keep trying to look at the repository for esotope but i can't stop staring at mearie.org's pretty design instead 02:05:00 pikhq: right. 02:05:02 tried clang? 02:05:08 clang too. 02:05:11 it optimises array references into variables when it can! 02:05:30 oklopol: so what's "hehkuvan"? 02:05:50 from hehkua, which is glow i think 02:06:22 How do you get to "hehkuvan" from that? 02:06:24 but nytt hehkuvan is actually a rather special construction, i'm not even sure what case hehkuvan is in 02:06:36 Esotope's design is pretty hard to grok, though. 02:06:40 well 02:07:12 Wiktionary says "active present participle sg. in genitive". 02:07:24 yes 02:07:40 first -va, hehkuva is something that glows, then that's genitive 02:07:40 Maybe I should just give it an x86 asm backend. 02:07:47 So that word is inflected *and* declined? >.> 02:08:08 Er, conjugated *and* declied. 02:08:08 well the verb is made into a noun sort of thing, then genitive is added 02:08:16 Conjugated *and* declined, even. 02:08:23 * uorygl nods. 02:09:03 pikhq: would be a good idea. 02:09:14 * uorygl ponders "The dog seems to walk". 02:09:37 but i see no reason why it would actually be that meaning, i would've guessed it's some old form that verbs used to be in more often, but nowadays just for "nytt" 02:10:05 because with that interpretation it's "shows something that glows" 02:10:08 "Koira näyttää kävelvän"? Em... 02:10:14 kvelEvn 02:10:33 kävelevän. Why the e? 02:10:55 kvelee -> kvelev 02:11:09 * uorygl attempts to type ä a bunch of times and ends up with this: aääaäaäaäaäaääääääääaääääääää 02:11:41 Oh, look, "kävellä" is conjugated "kävelee" in the third person singular. :) 02:11:51 yes 02:12:51 So is "The dog seems to lift" "Koira näyttää nostavan"? 02:12:57 yes 02:13:06 The word "nostavan" seemed to pop into my head for some reason, and then it turned out to be correct. :) 02:13:23 I mean, it came to mind, and then it turned out to seem correct, and then it further turned out to actually be correct. :P 02:13:38 wow triple lucky 02:14:03 :) 02:15:05 * uorygl peeks at the third-person singular of "syödä". 02:15:47 It looks like "The dog seems to eat the bone" is going to be "Koira näyttää syövän luun". 02:16:02 yes 02:16:12 Are you sure? :P 02:16:15 except probably "koira nytt syvn luuta" 02:16:42 Good ol' partitive case. 02:16:50 because i can't imagine it seeming to eat the whole bone in one go 02:17:04 Finnish is such a strange language, why would anyone want to learn it. :P 02:17:11 that's what i asked! 02:17:35 * pikhq is looking at a side-by-side diff between known-working and known-broken output. 02:17:43 "Koira näyttää syövän luun" <<< this can also mean "the dog shows the bone of the cancer" 02:17:45 * pikhq cannot figure out WTF is going on 02:18:09 Perhaps I went to DeviantArt once, saw the work of a Finnish artist, and thought, "I like this stuff. I want to learn Finnish". :P 02:18:48 It's like I've got completely and utterly different control flow happening. 02:19:25 -!- sebbu2 has joined. 02:20:59 to understand a man's art, you have to understand his brainage, to understand a man's brainage, you need to learn finnish. 02:21:13 because finnish is the language of understanding 02:21:16 Of course. 02:21:22 -!- sebbu has quit (Ping timeout: 258 seconds). 02:21:22 -!- sebbu2 has changed nick to sebbu. 02:21:33 Brainage: Train Your Brain in Minutes a Day! 02:22:13 This particular optimisation might be easier if I compile into Jumpfuck and optimise that. 02:22:23 Vliaikainen takuu palkinto - aivojumppaa puhelimeesi. Voita uusi iPad. Onko tm uusi iPad sinun? Ultra cool iPad. 02:22:42 i can give you all the spam i seeas homework 02:22:46 *see as 02:22:53 Wonderful. :P 02:23:04 at least one of the sentences should be simple 02:23:19 oklopol: write a finnish/lojban pidgin 02:23:26 whenever you don't know a lojban word or it doesn't have one, use the finnish one 02:23:30 also, you can combine lojban and finnish words into one 02:23:31 go 02:24:17 but wouldn't that be really gay 02:24:44 btw i have no idea what "Vliaikainen takuu palkinto" means 02:24:51 you can tell me if you know 02:26:05 HOW THE HECK IS THIS DAMNED THING GETTING "Set 0 : Add 1"? 02:26:39 ¡Ay, my Internet cut out. 02:26:57 What's that case meaning "as a ..."? 02:27:23 Here we go, the essive. 02:27:27 oklopol: just try it plz 02:27:30 Screw it; I'm redoing the optimiser slightly. 02:27:33 pikhq: not sufficiently reoptimising 02:27:35 pikhq: i tell you 02:27:37 don't recurse 02:27:40 then reiterate until fixpoint 02:27:40 alise: Fixed point, BTW? Good idea. 02:27:44 slower, yes, who cares 02:27:52 lost kng is biggest program, if it takes 3 minutes, who cares 02:27:57 läksyinä 02:28:07 you could divide & conquer actually 02:28:31 divide program into 2n pieces, fixpoint each, then combine every 2 02:28:36 you'd actually use the translative case :) 02:28:41 and fixpoint on them 02:28:42 then combine every 2 02:28:44 and fixpoint on them 02:28:48 until there is only one piece left 02:28:55 i.e., we optimise small clusters, then fix the "seams" at the edges 02:28:58 oklopol: DOOOO IT 02:29:01 Wait, there actually is something called a translative case? 02:29:31 So "I can give you all the spam I see as homework" would translate "as homework" using the translative? 02:29:33 yes it's the illative to essive's inessive 02:29:34 Strange. 02:29:57 yeah it's sort of "for homework" 02:29:57 oklopol: DO IT 02:30:07 i give this stuff to you so that it becomes homework 02:30:22 so not really at all for i guess 02:30:22 Huh. What is this peculiarity to? 02:30:49 (Yay for using prepositions in strange ways.) 02:30:56 alise: Hrm. Actually, I'm having a thinko on how to do this. Care to explain what you think so I feel less stupid? 02:31:04 well see if you give something then translative, when it is something it's essive. 02:31:17 you give it to be homework, and then it is your homework 02:31:21 * uorygl nods. 02:31:24 "fix . opt' $ xs" seems wrong somehow. 02:31:46 pikhq: simple -- also that wouldn't work: 02:31:52 if you told me you've been given something as homework, there would be no change going on, and you'd use the essive, "minulla on lksyn hauskanpitoa" 02:31:53 opt (foo : bar : xs) = foobar : xs 02:31:54 opt' xs is a function whose fixed point you want to find? 02:32:00 etc 02:32:00 then 02:32:02 Like I said, seems wrong. 02:32:09 opty x = if opt x == x then x else opt x 02:32:15 (you can bind it elsewhere if you wish) 02:32:17 pikhq: one exception, 02:32:19 opt (x:xs) = opt xs 02:32:22 erm 02:32:23 opt (x:xs) = x : opt xs 02:32:28 that should be the only recursion 02:32:32 basically chop out all recursions 02:32:35 alise: Right. 02:32:37 apart from that one 02:33:15 FOR EVERY TOTAL COMPUTABLE FUNCTION f : N -> N THERE IS SOME n SUCH THAT n AND f(n) PERFORM THE SAME OPERATION. 02:33:45 alise: Thanks. 02:34:44 oklopol: HEY THAT'S NOT TRUE MAN 02:34:51 oklopol: f(n) = S(n) 02:34:53 WHERE IS YOUR GOD NOW HUH 02:35:13 S(S(S(S(S(S(S(S(S(S(... 02:35:19 fix(f) = n s.t. [f(n) = n] = n s.t. [S(n) = n] = disproven beyotch 02:35:21 Hmm, but that doesn't count. 02:35:22 uorygl: that's not a natural 02:35:33 Q.E.fuckin'.D. 02:35:34 The successor function simply has no fixed point! 02:35:35 WELL UMM THE TURING MACHINES THAT n AND f(n) HAPPEN TO INDEX IN OUR GDEL NUMBERING, I SUPPOSE THAT'S A BIT IMPORTANT 02:35:44 I would so end my proofs with "Q.E.fuckin'.D." were I ever to be published 02:35:46 well 02:35:49 oklopol: WELL YEAH I GUESS THAT IS TRUE LOL. 02:35:51 actually that's not at all important really 02:35:53 oklopol: WAIT NO 02:36:03 oklopol: ONLY IF YOU CONSTRUCT YOUR GOEDEL NUMBERING LIKE THAT 02:36:04 OBVS. 02:36:27 but yeah you can't make a total computable function that checks how many things a tm prints and prints one more 02:36:28 alise: Also, don't you mean opty x = if opt x == x then x else opty x 02:36:28 ? 02:36:34 pikhq: no 02:36:39 pikhq: read that again 02:36:42 and feel silly. 02:36:44 Yeah, what if your Gödel numbering says "if it's odd, output A and subtract one; otherwise, output B; in any case, continue"? 02:36:47 then amend the recursion 02:37:02 Is that allowed? 02:37:09 alise: ? 02:37:15 If not, ¿por qué no? 02:37:15 uorygl: if what is odd 02:37:19 pikhq: opty x = ... else opty x 02:37:20 oklopol: the number. 02:37:29 XD 02:37:40 the gdel numbering means a surjection from naturals to the set of all turing machines 02:37:47 Clearly it's supposed to be opt (opty x). :P 02:37:55 I guess not every Turing machine immediately outputs one of those. 02:38:17 "opty x = if opt x == x then x else opt x" doesn't quite seem right, though. 02:38:25 Right, it's opty (opt x). 02:38:45 TADA 02:38:45 Wait. Find the fixpoint of *that*. Okay. 02:38:59 Simple enough. 02:39:05 oklopol: but you can easily have a goedel numbering where n+1 always outputs something different to n 02:39:08 no? 02:39:13 the numbering doesn't have to be computable does it :) 02:39:22 Surely the numbering does have to be computable. 02:39:55 why? 02:40:06 Because otherwise the stuff we've said is true would be false. :P 02:40:13 well 02:40:17 oklopol: but you can easily have a goedel numbering where n+1 always outputs something different to n 02:40:18 no? 02:40:20 even if it's computable 02:40:23 Now to figure out where my type error's from. 02:40:26 i assert this conjecture without proof or knowledge 02:40:28 I'm just asserting it 02:40:30 pikhq: lern2haskel 02:40:46 alise: It's been a while, okay? 02:40:57 alise: well, then, you must be wrong. :P 02:41:02 err yes the fixed point theorem requires the gdel numbering is computable 02:41:15 SHUT UP I DENY YOUR THEOREMA 02:41:32 now make a computable algorithm to find the fixed point bitch 02:42:07 "Couldn't match [BF] -> [BF] against inferred [BF]" Clearly, I am being stupid about something. 02:42:41 in what code 02:43:01 oklopol: also is it only for N -> N? you sure 02:43:01 * Sgeo_ feels uneducated 02:43:08 fix opt'' xs 02:43:12 pikhq: that's a function 02:43:20 it's trying to match it to a non-function 02:43:23 alise: yes, any total computable function from turing machines to turing machines 02:43:31 well their godel numbers 02:43:35 pikhq: fix :: (a -> a) -> a 02:43:45 pikhq: so opt'' should be ([BF] -> [BF]) -> [BF] -> [BF} 02:43:46 pikhq: so opt'' should be ([BF] -> [BF]) -> [BF] -> [BF] 02:43:47 XD 02:43:51 pikhq: protip: you don't want fix 02:43:52 stop using fix 02:43:59 pikhq: just write a fucking recursive function 02:44:02 alise: Yes, it works without fix 02:44:08 lol 02:44:12 http://www.fark.com/cgi/comments.pl?IDLink=5351459 02:44:17 See, I was being stupid. 02:44:22 I would not have been able to tell you which president resigned 02:44:23 :/ 02:44:24 oklopol: goedel reals <3 02:44:49 Mind you, I didn't go and say "I don't think any presidents resigned" 02:44:59 Sgeo_: nixon :P 02:45:08 alise, I know that now 02:45:12 i didn't know but... i'm not american, and nixon was _basically_ impeached 02:45:23 sort of :P 02:45:31 (in my fantasy land) 02:45:37 hey nixon's middle name is milhous(e) 02:46:10 let h be the computable function, then let f(x) = h(x(x)), now f(f) = h(f(f)), where x(y) means x is curried with y 02:46:50 i guess i couldn't just googled that without using my half-asleep brain 02:46:59 instead of 02:47:31 you need total-computable gdels so that currying works, i think 02:48:23 * Sgeo_ posts his confession in the thread 02:48:43 And... WTF is it doing. 02:48:45 :( 02:49:13 Is it sexing? 02:49:42 No, it's doing "+[-]+" -> [Add 2] 02:49:57 Rather than [Set 1] 02:50:10 Sgeo_: if you want to become intelligent howsabout not reading fark 02:50:17 pikhq: look at the code i suggest. 02:50:26 `addquot And... WTF is it doing. :( Is it sexing? 02:50:27 No output. 02:50:27 `addquote And... WTF is it doing. :( Is it sexing? 02:50:35 168| And... WTF is it doing. :( Is it sexing? 02:50:42 `quote 02:50:43 8| GKennethR: he should be told that you should always ask someone before killing them. 02:50:57 `quote 02:50:58 114| I used to have salt licks for my horses. They would make cool abstract sculptures with them. 02:51:02 `quote 02:51:03 120| Where's the link to the log? THERE'S NO LOG. YOUR REQUEST IS SUSPICIOUS AND HAS BEEN LOGGED. 02:51:20 `quote 02:51:21 14| So what you're saying is that I shouldn't lick my iPhone but instead I should rub it on my eyes first and then lick my eyeballs? 02:51:24 `quote 02:51:25 113| if you watch jaws backwards it's a movie about a giant shark that throws up so many people they have to open a beach 02:51:27 `quote 02:51:28 70| Gregor is often a scandalous imposter. It's all the hats, I tell you. 02:51:30 `quote 02:51:32 90| hmm, this is hard 02:51:33 `quote 02:51:34 103| i use dynamic indentation, i indent lines k times, if they are used O(n^k) times during a run of the program 02:51:36 `quote 02:51:38 56| i'm my dad's unborn sister 02:51:40 `quote 02:51:41 140| oklopol geez what are you doing here ...i don't know :< i actually ate until now, although i guess i also did other things... 02:51:44 `quote 02:51:45 No output. 02:51:48 WHAT 02:51:49 `quote 02:51:52 No output. 02:51:54 ... 02:51:57 `help 02:51:58 Runs arbitrary code in GNU/Linux. Type "`", or "`run " for full shell commands. "`fetch " downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert " can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 02:52:05 * pikhq see no way for that to happen 02:52:07 nobody's changed it... 02:52:11 BUT WHO WAS PHONE 02:52:22 http://codu.org/projects/hackbot/fshg/index.cgi/file/4bc215bfa512/bin/quote 02:52:25 db lock maybe? 02:52:34 selected too many times and got corrupted and/or just lock is stuck? 02:52:38 `sqlite3 quotes/quote.db 02:52:39 No output. 02:52:44 `run sqlite3 quotes/quote.db 2>&1 02:52:45 No output. 02:52:50 `run quote 2>&1 02:52:52 No output. 02:52:58 `echo fucks 02:53:12 dasfsdfsdf 02:53:14 No output. 02:53:25 I think HackEgo broke. 02:53:31 gregorrr 02:57:47 "add ecx, -1;add ecx, -1" 02:57:48 * pikhq sobs 02:57:55 HOW DID IT DO THAT 02:57:57 AND WHY 02:58:51 Would seem to only be doing that in loops. That's actually helpful. 02:59:36 Or, it would be if THAT MADE ANY SENSE 03:02:17 (and yes, I *am* recursing into loops) 03:04:47 * pikhq attempts to find a test case 03:05:19 * pikhq is so far failing 03:10:01 lol dynamic indentation 03:10:17 `quote 03:10:18 No output. 03:10:22 pikhq: just use BFoptimlangijgj 03:10:27 * alise punches HackEgo 03:10:27 oklopol: how do you determine where to put empty lines? 03:11:44 oh well umm 03:11:52 dunno man 03:12:06 also that should be theta 03:13:02 Perhaps the distance between lines should be proportional to the probability of a page fault. 03:13:26 Near as I can tell, there exists a way for the optimiser to *not* recurse into a loop. 03:13:31 opt' (Loop x : xs) = Loop (opt' x) : xs 03:13:43 pikhq: silly rabbit 03:13:46 How, pray tell, is it possible to not recurse? 03:13:48 opt' (Loop x : xs) = Loop (opty x) : xs 03:13:56 trix are for kids# 03:14:00 s/#// 03:14:07 Fuck fuck fuck fuck fuck fuck fuck fuck fuck fuck fuck fuck fuck fuck fuck, fuck fuck 03:14:15 alise: Still not recursing! 03:14:24 recurse an anus then paste the code 03:14:44 http://sprunge.us/ieEV 03:14:48 * pikhq recurses an anus 03:15:14 wrong order 03:15:17 you fail out of operation bitch. 03:15:25 opt :: [BF] -> [BF] 03:15:26 opt (Loop x : xs) = opt $ xs 03:15:31 oh, i see 03:15:37 your program is structured shittily, dude 03:15:38 *facepalm* 03:15:54 actually i think you should be banned from coding 03:15:57 clean this shit up 03:16:09 Any other suggestions? 03:16:20 pikhq: http://esolangs.org/files/brainfuck/impl/bf2c.hs 03:16:24 make it look more like this. 03:16:42 (which is actually really elegant haskell code) 03:16:47 (and was state of the art until esotope) 03:17:04 in fact, just modify the code there to output asm 03:17:10 it already optimises multiplication and shit, and does for loops 03:17:34 That's actually a really good idea. 03:19:20 what, just modifying that or doing those optimisations? 03:19:22 I presume the former 03:19:40 Modifying that. 03:19:48 yar 03:20:10 it has some weirdness, like it uses hugely negative numbers as tape locations to indicate program doing io and stuff 03:20:15 but those are way outside the array range anyway 03:20:16 Whoa, awesome: 03:20:16 so not a big deal 03:20:21 i'd change the list import to Data.List, though 03:20:31 pikhq: thankfully the backend is very abstracted 03:20:40 There's this pillow near me that has sixteen colored circles, arranged in a square. 03:20:40 alise: Yeah. 03:20:45 just modify after -- output to -- main 03:20:51 I just realize that the colors of the circles correspond to the Gaussian integers modulo 5. 03:21:02 Just rewriting the output section. 03:21:09 s/realize/realized/ 03:21:40 imo bf2c.hs is the nicest BF compiler yet, because it's -- well, not close to esotope, but it does a lot of very important optimisations -- and the code is really, really elegant 03:22:01 2002 vintage haskell :) 03:22:59 http://academic.research.microsoft.com/Author/2851361.aspx this guy likes sudoku a lot 03:23:06 same bertram felgenhauer, I wonder? probably. 03:23:36 pikhq: also, the license on that code is a little ambiguous 03:23:43 "GPL", but since it was published 2002 it's GPL2 with nigh-on uncertainty 03:23:54 i suggest leaving that line as-is 03:24:06 oh, that's not all the changes 03:24:06 -- act as a simple filter; read brainfuck code from stdin and 03:24:07 -- write C code to stdout. 03:24:15 change C code to "assembly" :P 03:24:49 alise: By the GPL license, just saying "GPL" means "any version, at your choice". 03:25:00 -!- dbc has quit (Ping timeout: 276 seconds). 03:25:03 pikhq: i don't believe the gpl license has the power to dictate what arbitrary text means when it uses a name 03:25:12 but, uh, just leave the line there :P 03:25:22 no, but convention does 03:25:41 alise: It's part of the versioning text... 03:25:46 if you can reasonably assume he means any version of the GPL, then it does 03:26:02 coppro: ok lawyer :P 03:26:06 (provided for normal mistake law to apply if not) 03:26:08 Of each and every such version of the GPL. 03:26:36 the actual text of the GPL is irrelevant 03:27:22 it could say "the term 'pumpernickel' means 'GPL'" and it wouldn't matter; what would matter is if people actually used 'pumpernickel' that way 03:27:35 -!- Tritonio_GR has joined. 03:27:49 * pikhq notes that the Term outputting code will be slightly annoying to do in assembly 03:28:09 pikhq: that's the price to pay for optimisation~ 03:28:14 True. 03:28:39 pikhq: just make it instead "spitOutTermCommandsSoThatTheyAppearInSomeFuckingAwesomeRegisterHellsYeah" 03:29:34 * pikhq shall see about loading into esp 03:31:10 -!- oklopol has quit (Ping timeout: 265 seconds). 03:34:59 Reads ASCII data as input. Produces a portable graymap with pixel val‐ 03:35:00 ues which are an approximation of the "brightness" of the ASCII charac‐ 03:35:00 ters, assuming black-on-white printing. In other words, a capital M is 03:35:00 very dark, a period is ver light, and a space is white. Input lines 03:35:00 which are fewer than width characters are automatically padded with 03:35:00 spaces. 03:36:33 Another advantage: it'll be possible to compile LostKng without 3G of RAM handy. 03:49:56 pikhq: Any luck? 03:50:12 Laziness prevaileth! 03:50:23 pikhq: no! :( 03:50:25 I wanted to see it 04:26:05 -!- lament has joined. 04:47:23 4:46; bed soon 04:47:28 pikhq: any luck? 04:47:41 NEIN 04:49:06 -!- Tritonio_GR1 has joined. 04:49:57 -!- Tritonio_GR has quit (Ping timeout: 265 seconds). 04:49:58 -!- MizardX has quit (Read error: Connection reset by peer). 04:59:50 -!- coppro has quit (Remote host closed the connection). 05:01:46 -!- sshc_ has joined. 05:02:02 well, g'night 05:02:03 pikhq: WORK 05:02:06 -!- alise has quit (Quit: Leaving). 05:05:25 -!- sshc has quit (Ping timeout: 265 seconds). 05:06:57 -!- coppro has joined. 05:07:59 -!- sshc has joined. 05:11:33 -!- sshc_ has quit (Ping timeout: 264 seconds). 05:18:45 -!- sshc_ has joined. 05:21:54 -!- sshc has quit (Ping timeout: 248 seconds). 05:26:27 -!- poiuy_qwert has left (?). 05:28:34 -!- Tritonio_GR1 has quit (Read error: Connection reset by peer). 06:03:45 -!- lament has quit (Ping timeout: 264 seconds). 06:04:29 "There is currently none, but the sources are commented. If you need help, read comments. If you still need help, ask your friends. For more help, visit some discussion forum. If you are completely despaired, create your own forum. If you are ready to commit suicide, well, drop me a mail (ollydbg at t-online de). Set subject to PaperBack, or you will be considered spam and filtered out. Allow 4 to 6 weeks for delivery." 06:04:48 lol 06:16:38 -!- Oranjer has left (?). 06:52:44 -!- AnMaster has quit (Quit: ZNC - http://znc.sourceforge.net). 06:52:58 -!- AnMaster has joined. 07:30:50 Does anyone know what the first number in an X display specification is? (:0.0). I know that the second is the screen and the first somehow specifies the display; is it a port-related thing? 07:32:42 That number is added to some constant that I don't recall to get the actual TCP port. 07:33:25 Also, doesn't necessarily go over TCP; xlib on local host will generally do it all via shared memory, for instance. 07:33:52 that's not fundamental to the protocol, though 07:34:11 No, that's just a common optimisation. 07:34:30 ah, port 6000 07:34:37 Strictly speaking, more of an *extension* to the protocol than anything else. 07:34:42 yeah 07:35:04 Which works well because what sort of mad-man doesn't use xlib or xcb? 07:35:24 (or a library that indirectly uses either one) 07:35:45 pikhq: someone implementing a server 07:36:12 coppro: For a client. 07:36:18 (like me) 07:36:32 Someone implementing a server is just moderately mad because there's a *lot* of stuff to X. 07:37:23 yeah, I'm definitely moderately mad 07:37:44 I want a server that allows me to run a program on it and forward it to another server, and then disconnect and/or reconnect it as necessary 07:37:57 possibly to a different server 07:38:50 Oh, so you're reimplementing that xdetach thing that's not been maintained in ages? 07:38:55 Thank you thank you thank you. 07:40:07 I'm trying 07:41:21 XD-tach is the working name 07:49:32 I'm going to be using Erlang since it feels very right 07:55:40 -!- Gracenotes has quit (Ping timeout: 240 seconds). 07:59:11 -!- oerjan has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:17:09 -!- Sgeo_ has quit (Ping timeout: 245 seconds). 08:22:52 -!- bsmntbombdood has joined. 08:37:16 -!- Sgeo has joined. 09:00:14 -!- coppro has quit (Read error: Connection reset by peer). 09:11:24 -!- kar8nga has joined. 09:19:44 -!- tombom has joined. 09:34:41 -!- oerjan has quit (Quit: leaving). 09:53:40 -!- lament has joined. 09:54:21 -!- BeholdMyGlory has joined. 09:54:22 -!- BeholdMyGlory has quit (Changing host). 09:54:22 -!- BeholdMyGlory has joined. 09:58:26 -!- lament has quit (Ping timeout: 260 seconds). 09:59:02 -!- FireFly has joined. 10:04:31 -!- oklopol has joined. 10:15:44 -!- Phantom_Hoover has joined. 10:20:31 There appears to be a dog in my fireplace. 10:26:04 Also, Finland's entry for Eurovision was awesome. 10:26:55 i'm intrigued by both your messages. 10:27:15 can you elaborate on both in one sentence 10:30:15 I heard sounds not dissimilar to a dog coming from my fireplace and the entry made by Finland to Eurovision was awesome. 10:30:40 Although it still doesn't beat their 2006 entry. 10:36:37 Wait, the awesome one didn;t get through, 10:36:46 Damn you, Finland! 10:37:02 okay what was the awesome one? 10:37:10 Hummpa something. 10:37:38 hulluna humpasta 10:37:50 That is it. 10:38:40 Oh, you're the Finnish guy 10:38:51 For some reason I thought you were Polish... 10:38:56 I don't know eitther 10:39:12 well i'm not sure where you're from so 10:39:24 us i'd guess 10:39:29 I am not! 10:39:35 Rescind that immediately! 10:39:42 rescinded! 10:40:15 I am from the UK. 10:40:54 well uk us what's the diff :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 10:41:06 * oklopol is funny 10:41:24 my internet is being lazy 10:43:27 -!- kar8nga has quit. 10:43:32 -!- kar8nga has joined. 10:43:39 i don't think that's elkeliset's best work 10:44:27 okay the ending is awesome 10:59:57 Although expensive in keyboards. 11:00:03 -!- kar8nga has quit (Remote host closed the connection). 11:02:10 -!- kar8nga has joined. 11:38:21 Someone say something! 11:41:05 -!- coppro has joined. 11:41:13 coppro! 11:42:20 Phantom_Hoover! 11:42:23 xd-tach progressed tonight! 11:42:24 it can now connect to an X server and then drop the connection 11:42:33 What is xd-tach? 11:42:59 my detachable X server 11:43:25 dtach, except for x 11:45:31 I'll probably implement a third of the protocol myself before dropping it and switching to Xnest 11:47:53 (although Xnest doesn't do everything I want it to 12:17:14 so guys 12:17:18 who won eurovision? 12:17:48 yay 12:17:49 lena won 12:17:51 <3 12:26:25 * Phantom_Hoover still doesn't get how you can have Windows programs that can't be removed in Windows 12:27:41 `translate Arbeit sukzessive beantworten m ̈chte, 12:27:41 o 12:27:41 soweit m ̈glich: 12:27:41 o 12:27:43 No output. 12:27:53 Damn PDFs. 12:29:02 `translate Arbeit sukzessive beantworten mchte, soweit mglich: 12:29:21 No output. 12:29:35 Someone who speaks German? 12:32:21 -!- CakeProphet has joined. 12:32:26 Hello. 12:32:48 ...it's been a while. I don't even know if anyone remembers me. :P 12:33:19 I do not. 12:34:05 You probably weren't around a few years ago 12:34:06 me either 12:34:20 is this some attempt at grassroots politics 12:34:24 yes. 12:34:26 ... 12:34:37 cheater99: You're German, right? 12:34:42 no. 12:34:45 -ahem- no. I was just thinking about a modification to bf, and so I thought now would be a good time to refrequent this channel. 12:34:59 ok 12:35:02 you shall stay 12:35:07 :) 12:35:23 CakeProphet: What is it? 12:35:50 I was also wondering... has anyone seen a modification of bf to emulate a non-deterministic or probabilistic (or quantum) Turing machine? 12:36:53 There is a quantum Brainfuck, yes, 12:37:05 Phantom_Hoover: well I'm in rough draft stages at the moment... but essentially it's like usable brainfuck with inter-algorithm communication. 12:37:25 http://esolangs.org/wiki/Quantum_brainfuck 12:38:11 So you make a set of named super-bf programs... and then declare how their inputs and outputs connect, and they all run concurrently. Another important addition is that there's now three, yes /three/, pipelines for both input and output 12:38:29 y 12:39:08 two are generally equivalent... but are labelled "data" and "control" to signify the semantics they're intended for... and then the third is "system", which communicates with a global environment 12:39:24 So it's piped Brainfuck? 12:39:28 yes. 12:39:29 y 12:39:32 Suggested name: Drainfuck. 12:39:32 well 12:39:43 rofl. I'm going with Cook for the moment... but maybe Alan. 12:39:49 I feel like tributing someone. 12:39:56 why do you have those pipes 12:39:59 well 12:40:05 the idea is that you can construct /useful/ programs 12:40:12 what use do they have 12:40:21 out of a series of running turing machines configured with better IO support. 12:40:45 having data and control are so that raw data can be seperated from control protocols cleanly 12:40:54 -!- rodgort has quit (Ping timeout: 245 seconds). 12:41:35 define control protocols 12:41:39 do you mean messaging 12:41:47 but yeah, I guess semantically system plugs up to an invisible "system" thread that implements a protocol that I've yet to specify, but would allow individual threads to request system information, kill themselves, kill the process, etc... system stuff. 12:41:52 yes, messaging 12:42:11 so you could make libraries out of turing machines... by documenting the protocol they use. 12:42:22 and connecting them with your programs. 12:43:07 also it's not quite like pipes in the sense that you can multiplex... there's nothing forbidding you from having one of your channels being broadcasted to multiple threads 12:43:48 or, a less useful case, reading a multiplexed stream being send by multiple threads as your input channel 12:43:54 *sent 12:44:25 so it's kind of like graph instead of a straight line 12:44:28 +a 12:44:30 ffff 12:45:48 conceivably you could get like GUI support or something. It would be a good way to define an operating system entirely with abstract bf-like turing machines. Actually I think there was a project trying to do just that a while back; maybe I can borrow some ideas 12:47:43 I was also considering making the superset of bf I'm using non-deterministic 12:47:46 for fun. 12:48:05 hey.. will bcrypt always generate hashes starting with $2a$? or will it sometimes generate ones starting with $2$? 12:50:01 ...I could not tell you. 12:50:32 -!- rodgort has joined. 12:51:30 I've always loved old-school internet protocols like TELNET 12:51:51 so... this is going to be a lot of fun for me. Drafting up protocols to system resources and such 12:52:41 you could learn MPI and just use tht 12:52:42 that 12:52:56 and then make an erlang-controlled cluster of brainfucks 12:53:04 -!- kar8nga has quit (Remote host closed the connection). 12:53:41 ...nah, that doesn't sound as fun 12:55:35 but it's useful and makes for a slim slim slim chance someone else will actually use your shit. 12:55:41 which is cool. 12:56:20 Once I finish a naive compiler, I might implement a scheduler that manages a bunch of soft threads. I bet you could actually use source code analysis to devise a very optimal scheduler 12:56:26 since the source code for bf is so simple. 12:58:50 and no. I don't really care if it gets used. I just want to see if the inclusion of those three channels, and maybe non-determinism, gives bf more utility. 12:59:57 you determine utility through community exposure 13:00:00 there is no other way 13:00:22 possibly. 13:04:02 Telnet is barely a protocol 13:04:20 this does not negate its awesomeness though. 13:04:34 it's like a meta-protocol, really. It's a way to make agreements about your protocol. 13:05:12 Netcat With Bells and Whistles On 13:08:32 Once I figure out the full specs for this and get a semi-not-embarassing compiler 13:09:27 I will need to have something to test its utility 13:10:03 CakeProphet: You can multipex pipes. 13:10:15 Just use FIFOs. 13:10:34 well yeah, that's how it'll be implemented probably. 13:10:53 lots of FIFOs and arrays. 13:11:52 and then for the system channel I'll just dump in the runtime code that handles the protocol 13:12:18 Although you could directly multiplex pipes if you weren't going for portability. 13:12:44 well 13:13:03 I'd like to avoid using actual processes 13:14:43 the piping semantics will be implemented by the compiler. A bunch of tape arrays and queue arrays with soft threads. 13:15:13 I think OS threads and processes are too heavyweight to run what easily get up to 20-30 individual turing machines 13:15:24 +would 13:22:11 now... 13:22:16 if you wanted to get ridiculous 13:22:33 you could have a channel for each alphabetic character. lowercase is read, uppercase write. :D 13:23:05 but I think there's a word for that. Unecessary. 13:24:51 where's alise 13:25:02 and oklopol 13:27:21 they're probably off being cooler than us. 13:27:43 as if 13:27:50 you can't be cooler than i 13:27:59 there's only one person i look up to 13:28:01 and that's myself 13:30:53 yeah i'm being totally awesome 13:31:06 been awake for 3.5 hours, done nothing. 13:31:07 I'm not being awesome at all 13:31:22 cheater99: Evidently you live on a torus. 13:32:57 -!- alise has joined. 13:33:02 alise 13:33:13 i have invoked you to tell you exactly one thing 13:33:17 and it is that lena won eurovision 13:33:25 actually I'm pretty awesome. I'm using a command line IRC client right now. 13:33:30 oh, not CakeProphet 13:33:36 you can return to your lamp again 13:33:39 if it's on command line, it's immediately cooler than any GUI equivalent 13:34:00 what an idiotic thing to say 13:34:35 apparently, i am in a grumpy mood 13:34:44 04:48:05 hey.. will bcrypt always generate hashes starting with $2a$? or will it sometimes generate ones starting with $2$? 13:34:48 ...yes, but that's alright. 13:34:48 i think the paper answers that 13:34:52 though i do not recall 13:35:13 alise is always in a grumpy mood. 13:35:52 I think my first development project for Cook will be an interactive interpreter. Don't even ask me how, but it will be amazing. 13:36:06 alise: bcrypt paper? 13:36:28 the .ps i linked you 13:36:34 yes 13:36:42 can't find it now :)) 13:37:05 it's ok, i save everything i get from you in a personal spot on the hard drive 13:37:59 hmmmm.... actually I think I could make a hash table in what is currently Cook/Alan/Drainfuck. 13:38:15 drainfuck is a cool name 13:38:28 strainfuck 13:38:32 no 13:38:35 btw, oklopol 13:38:38 lena won eurovision 13:38:42 Alan sounds the best, to me. 13:38:44 IS THAT COOL OR WHAT 13:38:54 kind of boring... but more professional, or something. 13:39:03 um. 13:39:04 well, actually Cook sounds less boring 13:39:13 you sound boring 13:39:14 right now 13:39:17 :< 13:39:20 :3 13:40:06 cheater99: that's so cool 13:40:47 hmmm... a hash table would actually be kind of hard to do. 13:41:26 oklopol, i know dude, they should make a dinosaur comic about it 13:41:58 you would need a hash algorithm process... which would be the easier part I think 13:42:23 boring 13:42:27 and then you'd need a generic array process... that allows read/write of a 256-index array through a protocol of some kind. 13:43:12 ....unfortunately I'm not a very good BF programmer, so I wouldn't even know how to approach most of this. 13:43:25 lots of hacks, I imagine. 13:43:43 hacks that export clean interfaces. 13:45:11 BF modifications are usually not the most elegant of things. 13:45:25 separate the core concept into its own language. 13:46:14 well... the core concept is to have a basic turing machine language that can actually do something useful through a well-organized set of protocols and could IO facilities between them. 13:46:26 fractran =: (*{~1 i.~[@(=<.)@:*) 13:46:29 ^ fractran interp in J 13:46:30 ..... good, not could. :P 13:46:34 oklopol: J is awesome 13:46:34 I typo in rhyme now. 13:47:04 Adapting BF has the major advantage of giving you a sizeable body of code to use, though. 13:47:14 right 13:47:24 . and , will be the data in/out 13:47:26 for that purpose 13:47:33 oklopol: haha wow you can even enter input in "fraction" form 13:47:33 conwayPrimer =: 17x 78x 19x 23x 29x 77x 95x 77x 1x 11x 13x 15x 15x 55x 13:47:34 % 91x 85x 51x 38x 33x 29x 23x 19x 17x 13x 11x 14x 2x 1x NB. example program 13:47:36 i.e. vertically 13:47:55 FRACTRAN is incredibly cool. 13:49:56 http://1.618034.com/blog_data/math/formula.7231.png ;; the only true way to view fractran programs. 13:50:21 is that porn 13:50:23 I want that domain. 13:51:06 the golden ratio is a nice number 13:51:07 cheater99: no. 13:51:20 it's just the output of a latex.php :P 13:51:27 why is that domain cool 13:51:29 which doesn't rule out porn i guess 13:51:41 cheater99: it's the first digits of the golden ratio 13:51:49 o rite 13:52:02 as mathematician i don't memorize numbers sorry 13:54:06 hmmm... I just got a pretty good idea for a macro language 13:54:10 3.141592653589793238462643383279502884197169399375105820974944 13:54:18 * oklopol 's cs is showing again 13:54:43 -!- CakeProphet has quit (Remote host closed the connection). 13:54:54 you copypasted that 13:55:22 yes 13:55:25 from my brain 13:55:45 cheater99: he didn't, i'm almost certain 13:56:06 also, i don't remember numbers, but recognising 1.618 is innate if you've ever used the golden ratio... 13:56:11 az if 13:56:17 or would you ask what the significance of "3.14.com" is too? 13:56:21 i also learned the next 60 or so but i seem to have forgotten them 8| 13:56:22 cheater99: oklopol is not human 13:56:22 oklopol: I remember that exact amount of digits by heart 13:56:25 yes 13:56:26 i probably would 13:56:45 then you're just a hypercorrecting mathematician trying desperately not to seem like a non-mathematician who uses *NUMBERS!* 13:56:50 cheater99: that's pretty cool 13:57:09 -!- Gracenotes has joined. 13:57:42 given that a human being can only know the significance of a finite amount of numbers, the probability that he will know the significance of a random real number is zero. 13:57:45 -!- CakeProphet has joined. 13:58:23 so I was going to give this language macros, complete with parameters and all that 13:58:44 and I just realized... you could actually make textual substitution operators, and then define some really high-level bf macros 13:58:50 cheater99: depends on the probability measure 13:59:01 like an operator that changes a parameters >'s to <'s 13:59:18 oklopol, my measure is probably 9" 13:59:24 so you can have a memory location getter as a macro parameter 13:59:27 oklopol, what's your measure? 13:59:45 and then use the replace operator to return the code back to its original position before the macro was invoked 14:00:20 cheater99: do you mean your dick? 14:00:27 probabilistically 14:00:42 .... 14:00:51 i consider no measure better than the other, because i'm not a real number enthusiast 14:01:08 read: oklopol has a small dick 14:01:18 alright, here's another thing I was wondering about... ever considered a non-deterministic brainfuck? 14:01:38 there's a lot of use for non-deterministic musical sequencers 14:01:59 write a non-deterministic brainfuck musical sequencer and you'll be an hero 14:02:03 non-deterministic as in being able to specify branch points 14:02:03 my penis is marginally above average in size 14:02:25 well length, it's a lot thicker than average i hear 14:02:25 so you can spawn a whole copy of the current state into multiple divergent branches. 14:02:26 oklopol, average depends on the population 14:02:30 not really 14:02:32 are you in asia? 14:02:43 oklopol, are you saying it's like a soup can? 14:02:49 yes 14:02:58 there's this old interview with henry rollins 14:03:04 #esoteric -- a place for serious discussion 14:03:09 with some annoying twit asking him stupid questions 14:03:34 oklopol: what's the j thing for inverting a word 14:03:44 i don't remember that either 14:03:46 i'm getting old 14:03:47 and he says henry fucked some girl somewhere and she said his dick was like a soup can 14:04:06 alise: 'j'? 14:04:24 en.wikipedia.org/wiki/J_(programming_language) 14:04:35 oh J 14:04:36 ok 14:05:05 darn, it's . 14:05:09 so ^. is already taken 14:07:01 ...the > to < idea would actually be pretty cool. You could specify memory locations for a macro to work on. You give it the location relative to your current position, and then it can replace all >'s to < in your macro parameter to refer and return back to its last position 14:07:12 The power of this formalism comes from viewing numbers as products of prime powers. For example, if the input is 2x 3y, the following list gives output 5xy, essentially multiplying x by y: 14:07:15 this doesn't seem to work :(( 14:13:29 >700 KiB/s on torrents, man, living near the exchange is awesome 14:14:57 -!- Phantom_Hoover has quit (Ping timeout: 265 seconds). 14:15:52 I wrote a meta-language that compiles down to Fractran. It allows for functions (simple Fractran and sequences of other functions), and a while loop and if statement (for convenience!). The code for that can be found here. 14:16:02 ^ from the "making of" of the fractran self-interp 14:16:44 http://www.math.uiuc.edu/~beder/interpreter.frp fractran interp in it 14:17:06 I don't recommend actually trying to run the Fractran interpreter (alas). I tested many of its components, and, for example, the function IncrementPrimes, which takes a pair of primes and returns the next two primes, takes about 8 minutes to run, using my silly C++ interpreter (no need to post that :). Plus, it goes (at least) quadratically in the number of function calls - doubling the number of function calls makes it take at least four times as long (more 14:17:07 if there are while loops or if statements). So I'm guessing that running the interpreter will take at least days, if not years :( 14:17:14 can't even run 1+1 :) 14:17:40 " 14:17:41 @Nick, I figured out the problem - my conversion to Fractran ignored integer overflow (stupid C++). I translated the last step to Python, and re-uploaded the main Fractran code. You'll notice that it's got much bigger numbers! Jesse Beder Nov 22 '09 at 0:23" 14:17:42 or maybe not 14:17:57 heh, there's at least two fractran self-interps 14:18:36 http://stackoverflow.com/questions/1749905/code-golf-fractran/1773868#1773868 14:18:37 http://stackoverflow.com/questions/1749905/code-golf-fractran/1802570#1802570 14:18:46 why is fractran cool 14:19:06 perhaps you should attempt to compile to Haskell for efficiency. -sagenod- 14:19:42 CakeProphet: always a good idea 14:19:50 cheater99: because fuck you if you don't think it is 14:20:07 yes pls 14:20:09 no. 14:20:11 * cheater99 grabs the loob 14:20:20 no what? 14:20:25 you're the one making promises 14:20:32 promises in love you can't hold :-( 14:20:43 alise: without wanting to get fucked... what does it let you do? 14:20:54 http://www.esolangs.org/wiki/Fractran 14:21:00 Conway made it, it's awesome, nuff said 14:21:11 nobody is at any risk of being fucked. 14:21:14 too much math for my tastes. 14:21:17 but it looks neat. 14:21:31 i wish my browser would run efficiently 14:21:36 needs moar threads. 14:21:36 but unfortunately it is firefox 14:21:45 too much math? Seriously? 14:21:51 gtfo 14:21:52 ...well, arithmetic 14:21:57 sort of. 14:22:01 you fail 14:22:01 manual calculating of things 14:22:11 complete faelure 14:22:12 cheater99: i'm web 2 point izzo so i chromium in your face :| 14:22:18 I'm a programmer... I write programs to do that. 14:22:21 CakeProphet: yeah we don't have computers to run programs any more 14:22:24 after the great War 14:22:32 between Machines and the People 14:22:35 alise: is chromium faster for facebook than firefox is? 14:22:48 cheater99: chromium is faster than * than firefox is 14:22:56 = chrome if you're not on loonix 14:23:03 Chrome is in general faster for everything. Though the linux release is occasionally buggy. 14:23:06 i am, that's my problem 14:23:10 firefox isn't that gay on windows 14:23:27 because bartab actually works 14:23:30 CakeProphet: i'm using the linux release 14:23:30 but on linux it doesn't seem to. 14:23:31 no probs at all 14:23:41 alise: ok... so i get the awesomeness, or at least, i get parts of it... but i can't get a feel for program flow 14:23:43 I think it was the beta that was buggy. Imagine that 14:23:50 pineapple: well it's not easy :P 14:23:52 It's been running fine for me as well... now. 14:24:30 alise: i get that feeling about most esolangs :-( 14:26:09 * CakeProphet will need to practice with bf in order to make bitchin' libraries for whatever-this-language-is-going-to-be-called 14:26:28 have you considered anotherderivativefuck 14:26:43 :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 14:26:53 nah, no *fucks 14:27:06 I mean... I wouldn't make it a derivative 14:27:17 brainboringderivative has a pun in it too? 14:27:19 but it's sort of the whole point. Unless I can find another way to make a really simple turing machine. 14:27:38 i can make a reeeeally simple turing machine 14:27:50 consider the turing machine that never does anything 14:28:05 that's pretty simple huh 14:28:08 does it halt? 14:28:32 yes 14:28:33 always 14:28:50 can you be sure? :3 14:29:52 but yeah... would anyone like to help me figure out how an NP-fuck would work? 14:30:52 yes 14:30:57 there'd be a bracket structure to specify two or more branch points...and some way to indicate success 14:31:03 ? puts a random number 0-255 on the tape 14:31:12 ...that's not what I mean by non-deterministic 14:31:13 when a ! is encountered the cell must be nonempty 14:31:41 well obviously i mean the nondeterministic kind of random 14:31:43 :P 14:32:03 :P but I mean the NP-complete kind of non-deterministic 14:32:33 that's it, although you may want to hone it a bit 14:33:04 basically all you need is to be able to say "take any element of this set" "at this point you need to have chosen such elements from sets that property X is true" 14:33:21 hmm 14:33:24 bartab wasn't on 14:33:32 does anyone here use massive amounts of tabs in their browser? 14:33:36 like say 300 per window? 14:33:46 so basically the program will continue running an all paths, and we say it runs in time n if the longest run of all those branches is of length n 14:34:03 so you would need a way to specify a branch point right? I thought you left that out. 14:34:27 that's ? 14:34:40 drop something on the tape that makes sure the next ! doesn't fail 14:34:42 ....255 branches? 14:34:43 or any ! 14:34:50 er... 6 14:34:54 well 256, but that doesn't really matter 14:34:55 yes 14:35:02 when a ! is encountered the cell must be nonempty 14:35:05 i didn't know cells could be empty 14:35:05 you can do 0/1 but i'd use a binary tape then too 14:35:06 >_> 14:35:06 that's pretty ridiculous 14:35:18 does anyone here use massive amounts of tabs in their browser? 14:35:24 about 15-20-30 tabs per window, about 10 windows 14:35:27 then it grows... 14:35:31 then my browser freezes and i start again 14:35:32 i don't care if it's ridiculous, i just care if it's pure and beautiful 14:35:57 could you solve an NP-complete somewhat sanely with that? 14:36:09 alise: get bartab for firefox 14:36:19 CakeProphet: no because it will be NP 14:36:22 alise: it swaps out any tab you don't look at for t time 14:36:25 and P=NP hasn't been solved yet :P 14:36:28 yes, say given an instance of sat you just go over the cells representing the variables 14:36:35 alise: and you can make a whitelist too 14:36:38 and then you run a program that fails if it's not satisfied 14:36:38 cheater99: no i use chromium and I like having so many useless tabs 14:36:44 alise: yet. I'm still working on it. :P 14:36:44 i need window gc though :P 14:36:47 alise: it is the most amazing firefox plugin ever conceived by man. 14:36:49 I want that million dollar prize. 14:36:53 CakeProphet: well if you don't like mathematics... 14:36:54 go over the cells representing variables, and use ? to drop some value for them 14:37:03 CakeProphet: "good luck" 14:37:09 i want to solve the riemann hypothesis 14:37:10 one day 14:37:11 cheater99: make it a metacity plugin and i'm in 14:37:20 yeah i want to solve the fucking goldbach and collatz conjectures with the same proof 14:37:20 you can solve any problem in NP in polynomial time with that 14:37:23 alise: no idea wtf's metacity 14:37:26 and get a unicorn 14:37:31 cheater99: gnome's window manager 14:37:43 technically it's emerald i guess since ubuntu enables compiz... 14:37:49 oklopol, ah okay... so ! will terminate branches that don't satisfy the condition.... and you can proceed from there. I like that. 14:37:53 yes 14:37:56 the 256 branches is still pretty ridiculous 14:38:05 but that's a good thing I guess. 14:38:05 althought you don't think of them as branches in math 14:38:12 *although 14:38:25 ....that's why I'm better at programming than math. :P 14:38:30 you just think of it as a different kind of computation in which you can guess stuff correctly 14:38:35 right 14:38:53 but anyway for many purposes the branching characterization is best 14:38:59 I always think of it as branching, as its slightly easier to understand I think. 14:39:32 ok guise 14:39:41 i don't have www axs right now 14:39:49 what's the magic formula for insert ... on duplicate key update? 14:40:03 i'm trying to do 'insert into dupkey (id, val) values (1, 'hi') on duplicate key update;' but it doesn't work :( 14:40:07 ? - picks the number(s) you're looking for 14:40:24 CakeProphet: the other useful way is to think in terms of witnesses, sometimes, basically that you need to be able to check solutions to some puzzle or something 14:40:32 ! - kills your program if its wrong. 14:40:46 pls help 14:40:50 pls help 14:41:06 you can "solve" a problem in NP if given *some* infinite sequence (or bounded if you like) you can use it to solve the problem in P 14:41:18 cheater99: #sql or sth 14:41:32 alise, be a darling and look it up plox 14:41:43 no 14:41:47 alise: i just got trolled in #mysql because someone doesn't know the difference between the www and the internet 14:41:57 stop using mysql 14:42:05 it's not me using it 14:42:08 it's someone else using it 14:42:27 oklopol, so... if you had a arbitrary number of non-deterministic brainfuck derivitives with two input instructions and two output structures.... could you sanely implement an interface to a hash table? 14:42:44 i don't have www access this very second... what's that magic formula for insert .. on duplicate key update? cheater99: you're on irc threnody, are you saying i should be trying this in a mysql client and then it'll work? cheater99: you are connected to the internet 14:42:45 yes 14:42:45 the internet is not the www 14:42:45 i hope you realize this now that i pointed it out 14:43:11 Google banned him from www 14:46:52 oklopol, the interface is simple enough... you'd just have a protocol that had a start and end delimeter for th string key, and the string data would go inbetween. You'd have a lock operator so you could lock the hash tables channel while you input your string... and it would merrily chug out the value from the hash table in the data channel 14:48:30 the hash table itself, of course, would just be sitting on the a tape somewhere, with a hash function either seperately implemented in a different thread or in the same one if you're a badass bf hacker (which I'm not) 14:48:37 jhsdjfhsdfhsdf 14:49:29 i have faith in you 14:49:37 rofl 14:50:33 my goal is to make it self-interpreting... and then write an IRC bot that could dynamically load in processes into its runtime environment and connect them dynamically. This is incredibly impossible though 14:50:57 a simple IRC bot would be feasible, as would some kind of interpreter... but not both, at once, dynamically 14:54:29 interpet NP with a P P NP 14:57:54 .....a what? 14:58:38 a yes 14:58:41 a yse yse yes 14:58:43 yse yes yse 14:58:52 rofl. okay. 15:00:25 * CakeProphet will specify integers in base 256 and provide a standard library fr manipulating them :) 15:07:21 Fractran is listed as TC on the wiki; is there any proof? 15:07:30 oh, I think there was an interpreter for some non-Fractran language 15:07:31 or maybe not 15:07:56 well... conway's game of life is turing complete 15:08:00 therefore.... PROFIT 15:08:06 you can compile minsky machines to fractran pretty easily i think 15:08:12 15:08:36 i've seen some of the gol gadgets 15:08:47 has everyone seen the computer in GoL? 15:09:18 well i've seen the utm 15:09:31 but i haven't really given it much scrutiny 15:10:15 http://www.rendell-attic.org/gol/tm.htm 15:10:18 this ridiculousness 15:11:08 don't even ask me how it works. 15:11:15 lots of glider guns. 15:11:27 http://www.rendell-attic.org/gol/utm/picture.htm utm 15:12:31 yes probably 99% of that is just wire 15:12:35 oh wow 15:12:43 an even better version 15:12:54 well that's the utm, the first one is just some random turing machine 15:13:22 hard to tell much from the pics, because i don't recognize the purpose of anything but gliders 15:13:25 well... conway's game of life is turing complete 15:13:29 proof by conway? 15:13:51 CakeProphet: the tm is boring, the UTM + universal constructor is more interesting 15:14:01 + the self-replicating-and-destroying computer spaceship (discovered recently; HUGE period) 15:14:09 + lightspeed communication with agars :) 15:15:27 alise, and no... I was referring to the TM implementation 15:15:37 so? fractran != GoL 15:15:43 ....... 15:15:48 well, yes. 15:15:52 I think my humor was lost. 15:16:02 in logic. 15:17:16 that's okay 15:17:49 -!- Slereah has quit. 15:19:22 the people who made this UTM should get a prize or something. 15:20:08 -!- hiato has joined. 15:20:42 alise 15:21:01 What? 15:21:03 remember how i said i would write dinosaur comics that they should make a comic about Lena 15:21:10 no. 15:21:19 well, i'm just reminding you of this 15:21:24 why should i care 15:21:35 it will be key in understanding what happens during the rest of your life 15:21:44 No. No it will not. 15:21:59 denial.. sweet, sweet denial :) 15:22:35 You're more than a little creepy :) 15:22:50 :) 15:23:58 eeeeeveryone is creepy in their own way 15:24:53 well... 15:24:59 this is a pretty unusual crowd. 15:25:14 we have far more tabs than the average person open at a given time, apparently. 15:25:29 i have one! 15:25:37 * CakeProphet is only running 9 right now. Had several more when he was learning how to identify and pick mushrooms. 15:25:54 oklopol: yeah but you also have your windows set to entirely white consolas on black 15:25:58 i used to have like 50 million on average but i guess the internet is less interesting nowadays 15:26:03 from the windows theme to every single page in IE 15:26:05 I have two 15:26:09 so basically you're not normal :D 15:26:20 alise: actually currently i don't because i've switched computers, maybe that's why i'm not using internet much 15:26:24 should get the theme back 15:26:24 !!! 15:26:31 oklopol: how could you abandon my work 15:26:39 my computer went boom 15:26:42 it was like the most awesome windows could possibly get 15:26:43 * CakeProphet thinks everything has a better UI when it's done in ncurses 15:26:46 oklopol: but you still have the files right??? 15:26:52 CakeProphet: yes, poor imitations of GUIs >>>> GUIs. 15:27:00 if you like command-line stuff at least respect what a command-line program is 15:27:09 alise: maybe. if i get it unboomed for long enough to get them 15:27:11 ...I don't actually like command line stuff 15:27:13 i.e. NOT a W.I.M.P. user interface 15:27:18 my old client was attached to firefox, which I no longer use 15:27:26 so I downloaded this thing for convenience 15:27:31 and so far I like it. 15:27:45 let me guess irssi 15:27:55 either that or weechat 15:28:00 no it's called "pork" actually. 15:28:24 I searched "irc client" in apt-cache... it was the first one to come up. :) 15:28:34 Pork. 15:28:35 I see. 15:28:38 CakeProphet: just use irssi. 15:28:43 is it better? 15:28:56 It's probably the most popular IRC client. 15:28:57 Apart from mIRC. 15:29:11 It's good. 15:29:23 Although if you like the ircII style maybe this "pork" thing which I looked up is better. 15:29:28 You could just use BitchX though 15:29:47 http://upload.wikimedia.org/wikipedia/commons/6/61/Debianwithgnomedesktop.png Hey, pork on BitchX's wiki page. 15:29:47 chatzilla was the shit... it should be standalone 15:30:06 it is 15:30:09 it apparently has perl scripting or some nonsense 15:30:13 http://chatzilla.rdmsoft.com/xulrunner/ 15:30:22 I tried it earlier but it segfaulted, decided not to try again. 15:30:30 I just use XChat. 15:30:37 (customised to not look like shit) 15:30:40 might have something to do with me knowing absolutely nothing about perl 15:31:22 CakeProphet: my present IRC vehicle: http://imgur.com/herQr.png 15:31:48 -!- adam__ has joined. 15:31:53 -!- CakeProphet has quit (Quit: i <3 pork (http://dev.ojnk.net)). 15:31:58 -!- adam__ has changed nick to CakeProphet. 15:32:05 -!- CakeProphet has quit (Changing host). 15:32:05 -!- CakeProphet has joined. 15:32:11 bam. 15:32:16 Y hlod'r? 15:32:19 Wuts. 15:32:31 ....wtf did you just say? 15:32:59 "Why hello there" 15:33:20 they're almost exactly the same in interface. 15:33:43 but /help is not doing anything 15:34:07 irssi you mean? 15:34:10 yes 15:34:17 try alt-1 15:34:19 then alt-2 to get back 15:34:23 (esc 1/esc 2 if that doesn't work) 15:34:50 ...I didn't read the second bit about alt-2 before I did alt-1 15:34:57 but I kind of caught the pattern, I guess. 15:35:08 ...not a bad system. 15:35:57 yeah it's one channel per window type dealie 15:35:59 How do you close a "tab"? 15:36:05 I think /w works, I forget 15:36:10 Or is it /wc? 15:36:21 Also, pgup/pgdwn work, and I think alt-pgup/pgdwn work too 15:36:24 Maybe alt-left/right, I forget 15:36:26 Or alt-p/n 15:37:14 alt-left/right work 15:39:45 instead of a monolithic system message handler thing 15:40:33 I might allow C code to wrap some low-level stuff and then have bindings to said code 15:41:54 as much as like data-based protocols. 15:41:59 for everything. 15:45:44 http://www.rickadams.org/adventure/maps/adv_3.gif 15:46:13 cheater99: have you read knuth's literate programming version of ADVENT? 15:46:15 it's quite nice 15:46:36 no 15:46:39 http://www.literateprogramming.com/adventure.pdf 15:46:39 got a link? 15:46:45 l@@king 15:46:57 btw 15:47:07 do you know what version the linux 'adventure' is? 15:47:16 in bsd-games i think 15:47:24 bsd-games package 15:47:30 good point 15:47:31 *question 15:48:00 -!- oerjan has joined. 15:48:50 In 1977, Jim Gillogly of the RAND Corporation spent several weeks porting the code from FORTRAN to C under Unix, with the agreement of both Woods and Crowther. It can be found as part of the BSD Operating Systems distributions, or as part of the "bsdgames" package under most Linux distributions, under the command name "adventure". 15:48:52 cheater99: ^ 15:48:54 so the same one in that pdf 15:50:36 ...how do you scroll in this client? 15:50:45 oh... nvm 15:50:46 shift + pgup/dn? 15:50:51 just page up/down 15:51:06 alise: how do i use evince for pdf? 15:51:10 * cheater99 is confused about linux 15:51:14 cheater99: double click the pdf 15:51:15 hey CakeProphet 15:51:32 long time no see, i think 15:51:37 oerjan: Hey. and yes, indeed. 15:51:45 it says 15:51:50 'file type pdf is not supported' 15:52:01 I got an idea for a bf-like language and decided it would be opportune to start visiting this channel again. 15:52:04 cheater99: umm what distro are you using 15:53:09 http://pastie.org/984342.txt?key=9f9cibbfzj1vkxyfj2blsq Some nondeterministic sketches; array selection and superpositions. 15:53:15 hm i note a disturbing relapse to latin-1 in the irc logs lately 15:53:31 oerjan: the server sends no encoding headers 15:53:34 so it's up to your browser to guess 15:53:40 alise: no 15:53:42 we really need a nice log interface 15:53:44 ever since ircbrowse died... 15:54:13 alise: i mean that people are actually _sending_ latin-1 in many cases 15:54:20 ah 15:54:22 ouch 15:55:00 it's been so long I've forgotten the standard bot command character 15:55:11 i'm quite used to adjusting my browser whenever it guesses the logs wrong 15:55:15 EgoBot is rewritten 15:55:17 and it uses ! 15:55:22 HackEgo is a free-for-all sandboxed shell 15:55:28 It uses `, with `run foo running a shell command with multiple args. 15:55:33 fungot is written in Befunge. 15:55:33 alise: check this out at the grocery store before it closes. :( making this crypto. just 15:55:34 ^show 15:55:34 echo reverb rev rot13 rev2 fib wc ul cho choo pow2 source help hw srmlebac uenlsbcmra scramble unscramble 15:55:39 ^source 15:55:39 http://git.zem.fi/fungot/blob/HEAD:/fungot.b98 15:55:39 ...oh shit 15:55:44 what do all these new bots do? 15:55:46 alise, ubuntu 15:55:49 It babbles, interprets Brainfuck and Underload, and does so many other things. 15:55:54 And it's written in Befunge-98; have a click. 15:55:57 And that's all our bots. 15:56:04 cheater99: what did you DO? 15:56:07 and screenshot the error 15:56:12 !help 15:56:13 help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help . 15:56:15 mmmm 15:56:21 !help languages 15:56:21 languages: Esoteric: 1l 2l adjust asm axo bch befunge befunge98 bf bf8 bf16 bf32 boolfuck cintercal clcintercal dimensifuck glass glypho haskell kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor sadol sceql trigger udage01 underload unlambda whirl. Competitive: bfjoust fyb. Other: asm c cxx forth sh. 15:56:33 alise: nothing ;( 15:56:33 http://git.zem.fi/fungot/blob/HEAD:/fungot.b98 15:56:34 alise: i guess drscheme has more bizarre limits on the number of legitimate e-mail. 15:56:36 we should borrow #haskell's bot 15:56:38 fungot is by far our most impressive bot 15:56:38 alise: what was the name 15:56:40 it's pretty awesome. 15:56:42 CakeProphet: we did have lambdabot for a while 15:56:49 fungot: you even do multiple styles: 15:56:50 alise: according to one's intuition of the shapes formed by quenching the metal in cold water. you would not have bothered to help an fnord archive. 15:56:50 ^style 15:56:50 Available: agora alice c64 ct darwin discworld europarl ff7 fisher ic irc* jargon lovecraft nethack pa speeches ss wp youtube 15:56:54 ^style alice 15:56:54 Selected style: alice (Books by Lewis Carroll) 15:56:56 fungot: In wonderland. 15:56:57 CakeProphet: EgoBot does haskell though not as conveniently as lambdabot 15:57:01 fungot: yo yo talk 15:57:04 oerjan: ping fungot plz 15:57:06 !echo fungot 15:57:09 fungot 15:57:09 fungot 15:57:09 Deewiant: the knight looked surprised at the question. " if i was oo," said arthur, looking at the house, from below, and pulled down by some one on the planet. then of course the house goes faster than its natural rate of falling: but the snark exclaimed " fnord!" 15:57:17 ^style irc 15:57:17 Selected style: irc (IRC logs of freenode/#esoteric, freenode/#scheme and ircnet/#douglasadams) 15:57:19 ..oh god 15:57:39 If any esolang enthusiast doesn't go into a state of awe upon seeing http://git.zem.fi/fungot/blob/HEAD:/fungot.b98 after seeing what it can do... they have no soul. 15:57:40 alise: it means ' fnord' and lots of drugs 15:57:46 Precisely, fungot. Precisely. 15:57:47 alise: it's just so stupid that ' stty erase h' has to be a 15:58:09 I have no soul 15:58:41 We already knew that -- you implemented the engine upon which fungot sits. 15:58:42 alise: if not, you're intricately tied to the parser is very simple 15:58:45 Or is it still cfunge nowadays? 15:59:00 AFAIK yes 15:59:11 ....I can't read that file at all 15:59:16 `ls bin 15:59:18 CakeProphet: Does it look like noise? 15:59:21 I know very very little about Befunge over than it's 2d 15:59:23 CakeProphet: that's because it's befunge-98 :P 15:59:34 No output. 15:59:35 :P (don't remember how to do that nonsense with IRC commands) 15:59:38 huh 15:59:39 CakeProphet: Well -98 is the horribly twisted sequel to Befunge with fingerprints (libraries, basically, so there's socket support and much much more), 15:59:40 `ls 15:59:45 CakeProphet: and also far more complex & advanced semantics 15:59:52 and bignums, the stack is replaced by a stack of multiple stacks, 15:59:59 and near-infinitely-sized fungespace... 16:00:03 No output. 16:00:05 (well, limited by bit size) 16:00:07 and so much more. 16:00:09 `run ls 16:00:24 HackEgo: you're broken 16:00:25 No output. 16:00:29 something fierce 16:00:29 yeah 16:00:32 i broke it yesterdya 16:00:34 *yesterday 16:00:36 by asking for too many quotes :D 16:00:46 `run echo * 16:01:02 No output. 16:01:08 `help 16:01:09 Runs arbitrary code in GNU/Linux. Type "`", or "`run " for full shell commands. "`fetch " downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert " can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 16:01:13 ok that works 16:01:23 yeah it's the shell part that's broken 16:01:25 `revert 16:01:26 Done. 16:01:33 nothing happened 16:01:33 `run ls 16:01:37 also hey don't revert my quote :P 16:01:42 CakeProphet: oh yeah and HackEgo, when it's working, is our official quote database 16:01:50 No output. 16:02:01 filled with 90% stuff here, 8% stupid stuff from sine, and 2% stuff that isn't actually quotes at all, or at least not from around here 16:02:11 oerjan: the revert didn't work btw 16:02:16 oh 16:02:22 it's all fucked 16:02:26 oh well 16:02:35 3 daysHackBotbranch merge 16:02:40 Maybe this update introduced a bug of some sort? 16:02:42 Assuming it's an update. 16:03:09 so I'm thinking instead of using a straight-up bf-like syntax 16:03:17 I'm going to make what is essentially a usable bf 16:03:24 or moderately more usable bf 16:03:31 with commands that take parameters and such 16:04:31 and maybe even integer and character literals if I'm feeling crazy 16:04:49 CakeProphet: HackEgo also uses to have useful ways to lookup things on the web (google etc.) although some of them are broken too 16:05:13 EgoBot is the one with lots of esolangs, including ones we've added ourselves 16:05:21 I always thought an I'm feeling lucky command would be useful... to link people to things quickly 16:05:29 yeah. I remember EgoBot. :) 16:05:46 !help languages 16:05:47 languages: Esoteric: 1l 2l adjust asm axo bch befunge befunge98 bf bf8 bf16 bf32 boolfuck cintercal clcintercal dimensifuck glass glypho haskell kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor sadol sceql trigger udage01 underload unlambda whirl. Competitive: bfjoust fyb. Other: asm c cxx forth sh. 16:05:52 CakeProphet: as alise said, it's been majorly rewritten. 16:05:58 !help userinterps 16:05:58 glass was always one of my favorites. 16:05:59 userinterps: Users can add interpreters written in any of the languages in !help languages. See !help addinterp, delinterp, show | !userinterps. List interpreters added with !addinterp. 16:06:14 !userinterps 16:06:14 Installed user interpreters: aol austro b1ff bc bct bfbignum brit brooklyn bypass_ignore bytes chaos chef chiqrsx9p choo cockney ctcp dc drawl drome dubya echo eehird ehird fudd funetak google graph gregor hello id jethro kraut num ook pansy pirate plot postmodern postmodern_aoler redneck reverse rot13 sadbf sfedeesh sffedeesh sffffedeesh sffffffffedeesh slashes svedeesh swedish valspeak warez yodawg 16:06:16 ......interpreter adding? 16:06:30 how does that work? 16:06:44 !haskell print "lol whut?" 16:06:51 "lol whut?" 16:06:52 you add the code for your interpreter in one of the !languages 16:07:01 (it doesn't recurse alas) 16:07:10 no recursion at all? 16:07:16 -!- uorygl has quit (Ping timeout: 240 seconds). 16:07:24 i mean you cannot add userinterps based on userinterps 16:07:29 oh. 16:07:50 oh okay... so you define an interpreter in another language that it knows? 16:07:56 that sounds wonderfully efficient. :P 16:08:01 it is 16:08:02 it knows c 16:08:07 using gcc 16:08:08 oh... well okay. 16:08:13 even asm :P 16:08:16 that's pretty sweet then. 16:08:25 I need to learn my ASM. 16:08:42 and by learn ASM I really mean memorize an instruction set. 16:08:42 a lot of those userinterps are just language garbling... 16:08:50 * alise looks for sgeo's quote file 16:08:53 (hackego's quotes in a text file) 16:08:54 !swedish I am the swedish chef. 16:08:55 I em zee svedeesh cheff. Bork Bork Bork! 16:09:03 !userinterps 16:09:03 Installed user interpreters: aol austro b1ff bc bct bfbignum brit brooklyn bypass_ignore bytes chaos chef chiqrsx9p choo cockney ctcp dc drawl drome dubya echo eehird ehird fudd funetak google graph gregor hello id jethro kraut num ook pansy pirate plot postmodern postmodern_aoler redneck reverse rot13 sadbf sfedeesh sffedeesh sffffedeesh sffffffffedeesh slashes svedeesh swedish valspeak warez yodawg 16:09:06 !adduserinterps 16:09:10 alise, that would be dependent on Normish still existing 16:09:20 !addinterp 16:09:20 -!- uorygl has joined. 16:09:20 There is already an interpreter for ! 16:09:25 Sgeo: oh 16:10:15 I'll see what I can do 16:10:35 no piglatin? I am disappoint. :( 16:10:36 CakeProphet: the source can be a url, so the interpreters don't need to fit in one line. also if you !show them, you need DCC CHAT to get the whole thing 16:10:41 isn't there a site which runs a little web page for you in a sandbox or something? 16:10:43 with some scripting language 16:10:46 i'm sure there is... 16:10:49 wait 16:10:55 we can use egobot to generate a file with hackego's quotes! 16:10:57 now someone do that 16:11:16 * CakeProphet has a free webpage provided by his university. Could host interpreters there. 16:11:28 i think i theoretically still have that vps 16:11:29 CakeProphet: i'm not sure, Gregor named those language garblers rather weirdly, not as usual 16:11:29 :) 16:11:40 ix-nay on the atin-lay 16:11:44 The only interpreter I have is one for BF written in Haskell.. which is hardly necessary. 16:12:00 (it's from some old unix/linux joke package i think) 16:12:13 ok 16:12:13 updating poppler workd 16:12:14 now i can evince a pdf 16:12:23 hmmm... it would be amazing if it could handle language imports through URL 16:12:35 so like... I could put the Python interpreter on my web page and load it in. :P 16:12:57 just write a haskell progam and compile it >_> 16:12:58 *program 16:13:03 or use that py2binary thing 16:13:19 ...I'm far too lazy to actual make my own Python interpreter 16:13:26 I meant the actual one written in C 16:13:38 ...i never suggested that 16:13:39 CakeProphet: that might be a bit too large. it does afaik recompile every userinterpreter whenever you use it 16:13:46 what is? 16:13:58 oh okay... that's why it's kind of slow it seems. 16:14:17 (or pass it to the underlying language interpreter, to be precise) 16:15:03 CakeProphet: you _should_ be able to do that with HackEgo, if it were working 16:15:23 alise: oh, you're saying I should compile the python interpreter and then have a script that invokes it. 16:15:28 no. 16:15:34 CakeProphet: although that would work. 16:15:44 CakeProphet: but really, all you need to do is use one of those python to binary bundlers 16:15:46 that bundles the interp in 16:15:47 who will guess what i am having a sandwich with 16:15:52 CakeProphet: binaries can be cgis too you know 16:15:56 OR, just write it in haskell and compile that. 16:16:06 I didn't know py2exe would just bundle the interpreter standalone. 16:16:40 it does 16:16:51 it makes an exe 16:16:51 py2exe is justwindows only isn't it 16:16:53 *is windows 16:16:57 i'm sure there's a linux equiv 16:17:12 you can use wine 16:17:18 `run sqlite3 quotes/quote.db VACUUM 16:17:25 cheater99: not on shared hosting... 16:17:34 No output. 16:17:35 just upload a linux python binary + invoke it with a shell script cgi if that's the case 16:17:42 Python's hardly worth the trouble though... unless I expand a { } ; version of the syntax first before I run the interpreter 16:17:52 oh :(:(:(:( 16:18:17 CakeProphet: ? 16:18:19 egobot accepts urls 16:18:23 !python http://google.com 16:18:26 well 16:18:27 no python 16:18:28 !c http://google.com 16:18:33 Does not compile. 16:18:43 that loaded http://google.com and interpreted it as c source 16:18:46 alise: so that I can use {}'s instead of indents on a single line 16:18:52 why do that? 16:18:56 oh you mean 16:18:59 to make a !python command 16:18:59 ic 16:19:02 right. 16:19:03 my bot had that once 16:19:04 it was great 16:19:05 worked perfectly 16:19:14 ; to newline (so it worked for control structures), { and } worked to adjust indent 16:19:17 so you could say 16:19:24 actually what I'd do is expand a special {} syntax... and then plug that in as input to an interactive version of Python 16:19:31 so you can get state between lines. 16:19:32 def fact(n): { if n == 0: { return 1 } else: { return n * fact(n-1) } } 16:19:38 i called it braces or something 16:19:50 ...that was some fast programming. :P 16:19:50 CakeProphet: i just ran it through the evaluator 16:19:55 worked fine 16:20:02 since it can handle multiline stuff 16:20:06 it also handled expressions though 16:20:08 and printed their output 16:20:10 was a very clever evaluator 16:20:15 CakeProphet: i know factorial off by heart... 16:20:20 well yeah, me too 16:20:27 but I can't type braces very quickly. 16:20:38 i am having a sandwich with quadruple, that's right, QUAD bacon. 16:21:00 CakeProphet: shift [ ] 16:21:01 :P 16:21:26 yeah, I type weird. 16:21:33 fast for regular characters, but shifting takes a long time. 16:22:11 it's normal?? 16:22:59 alise: hmmm, yeah to choose whether or not to print-eval or exec... you could check for python keywords. 16:23:02 at the beginning 16:23:07 CakeProphet: nope 16:23:17 oh? something fancier? 16:23:18 CakeProphet: i ran it as an expression first, and if it gave a syntax error as a statement iirc 16:23:19 or something 16:23:23 aaah, okay. 16:23:24 but i checked the syntax error twice 16:23:24 that works too 16:23:29 i don't recall exactly how 16:23:32 but it was v. clever code 16:23:37 did what you wanted all the time 16:23:45 if there was one thing I'd change I'd make { add a : before it 16:23:47 : { looks weird 16:23:53 yeah 16:23:57 def fact(n) { if n == 0 { return 1 } else { return n * fact(n-1) } } would be nicer 16:24:04 argh, now I'm obligated to write it again 16:24:06 DAMNN YOUUU 16:24:08 ...I wish I still remembered glass. 16:24:11 CakeProphet: it even handled {} in strings and stuff 16:24:16 the useless enterprise solution! 16:24:21 no the esolang 16:24:25 !glass jsdfjsdf 16:24:26 OK 16:24:33 ...don't even remember anything. 16:24:37 TO GOOGLE 16:24:53 to esolangs.org 16:24:57 i know what you meant 16:25:22 same thing 16:25:27 google is the root of the internet tree. 16:26:34 !glass {M[m"Hello, World!"]} 16:27:18 oh... 16:27:19 right 16:27:22 a lot of stuff I forgot 16:28:09 !glass {M[m(out)O!"Hello, World!"(output)o.?]} 16:28:16 !glass {M[m(out)O!"Hello, World!"(out)o.?]} 16:28:16 Hello, World! 16:28:19 bam! 16:28:53 obfuscated stack-based OO at its finest 16:30:16 stack-based languages are one of my favorite language designs 16:31:54 if you wanted to get fancy with the interpreter you could have like a hook-interface so that interpreters could keep track of state and give you a list of its global namespace... if it has such a thing. 16:32:50 how does it do input? 16:33:23 cleverly 16:34:03 I class 16:34:04 !glass {M[m(out)O!(math)A!22(math)a.?(out)o.?]} 16:34:12 !glass {M[m(out)O!(math)A!22(math)a.?(out)(on).?]} 16:34:13 0 16:34:16 ..... 16:34:18 no. 16:34:22 http://www.1010wins.com/Desperately-Seeking-Sailor/7355267 16:34:26 Why is this news? 16:34:42 !glass {M[m(out)O!(math)A!<2><2>(math)a.?(out)(on).?]} 16:34:42 4 16:34:47 local news 16:34:48 everything is news 16:34:50 there we go. 2+2 is definitely 4 16:35:01 CakeProphet: phew 16:35:04 i was worried there for a minute 16:35:39 * Sgeo unstickies his v key 16:35:49 I think a made a piglatin program in Glass once 16:35:51 I should have kept it. 16:35:54 *I 16:36:06 the quick brown fox jumps over the brown dog. 16:36:25 !glass {M[m(_s)S!(_o)0O!o.<34>(_s)(ns).?"{M[m(_s)S!(_o)0O!o.<34>(_s)(ns).?""14?24?14?24?24?04?24?04?]}"14?24?14?24?24?04?24?04?]} 16:36:26 {M[m(_s)S!(_o)0O!o.<34>(_s)(ns).?"{M[m(_s)S!(_o)0O!o.<34>(_s)(ns).?""14?24?14?24?24?04?24?04?]}"14?24?14?24?24?04?24?04?]} 16:36:32 Should have said "jumped" to see alise's reaction 16:36:42 ....awesome. 16:36:45 Sgeo: why? 16:36:56 oerjan: hmmm... let me see if I can decipher 16:37:32 ah okay... you play with the stack 16:37:35 kind of 16:38:15 ....okay, yeah. I can't follow. 16:38:21 I'm too sleep deprived, I think. 16:38:30 * oerjan has forgotten how he did it, anyhow 16:39:03 but presumably i put the necessary strings on the stack, + the output function 16:39:30 yeah. 16:39:50 4? means output the string on top of stack 16:39:55 the first Quine I figured out was in Python... but Python makes it too easy. 16:40:12 well... that's not what it means by itsel I don't think. 16:40:14 well glass wasn't too hard either 16:40:25 !glass {M[m3?]} 16:40:31 no, but given that the output function is in the right place 16:40:39 oh... its an index. 16:41:09 I always forget that numbers are enclosed with <> and a number by itself is a stack position 16:41:17 the stack is <" character> 16:41:24 alise, those listings in that pdf are absolutely unintelligible for me. 16:41:32 cheater99: which listings 16:41:33 which pdf? 16:42:24 adventure 16:43:19 -!- Phantom_Hoover has joined. 16:43:57 Briefly sum up what you have been talking about without using the letter 'r'. 16:44:14 Nonsense as usual 16:44:26 -!- SgeoN1 has joined. 16:44:38 Phantom_Hoove: the last thing was my glass quine 16:44:40 let me see if I can remember how to do the Python quine without google. 16:44:41 -!- poiuy_qwert has joined. 16:44:46 cheater99: unintelligible how? 16:44:50 you don't understand them? 16:45:03 Ah, quines. 16:45:25 I have been talking about things; mostly of an unusual nature; esolangs indeed. 16:45:29 ^ no r 16:45:40 * oerjan swats alise -----### 16:45:43 natu_r_e 16:46:33 >>> print (lambda s: s%s)('print (lambda s: s%%s)(%r))') 16:46:34 print (lambda s: s%s)('print (lambda s: s%%s)(%r))')) 16:46:44 ....no 16:46:50 The Lisp quine is pretty nice. 16:46:54 yes 16:46:59 there's one too many parens 16:47:07 Although it returns a sexp, rather than printing a string 16:47:09 !lisp 16:47:19 ((lambda (x) (list x `(quote ,x))) '(lambda (x) (list x `(quote ,x)))) 16:47:23 or, more traditionally 16:47:26 print (lambda s: s%s)('print (lambda s: s%%s)(%r)") 16:47:29 or rather 16:47:32 without symbols 16:47:47 ((lambda (x) (list x (list (quote quote) x))) (lambda (x) (list x (list (quote quote) x)))) 16:47:50 or concisely 16:47:56 python's % operator makes it way too easy to do with a continuation 16:48:04 !haskell main=putStrLn$s++show s where s="main=putStrLn$s++show s where s=" 16:48:05 ((lambda (x) `(,x ',x)) (lambda (x) `(,x ',x))) 16:48:12 main=putStrLn$s++show s where s="main=putStrLn$s++show s where s=" 16:48:31 * alise wonders what's the easiest way in python to find the last element of an array that isn't a space... 16:48:32 hmmm... that's pretty simple. 16:48:49 Negative indices? 16:48:55 .... 16:49:01 array.strip()[-1] 16:49:05 alise: Your second quine fails in SBCL. 16:49:08 that's strings, CakeProphet 16:49:15 oh right 16:49:21 Phantom_Hoover: i wrote it for scheme but - how does it fail? 16:49:22 alise, yes 16:49:32 alise, not only that, but it's just difficult to make sense out of it. 16:49:32 cheater99: it's just C code, albeit 70s era 16:49:34 CakeProphet: haskell's show is pretty similar to %r 16:49:34 string processing in Python is wonderfully simple. 16:49:37 cheater99: howso 16:49:40 alise: It gives the thing it prints for compiled lambdas. 16:49:41 cheater99: knuth didn't write the code btw 16:49:43 just annotated it 16:49:43 oerjan: -nod- I'm familiar with it. 16:49:45 alise, it's terribly structured 16:49:46 Phantom_Hoover: ? 16:49:51 oerjan: typeclasses. :) 16:49:52 cheater99: it's not, actually 16:49:55 because the adventure game is very linear 16:49:59 and basically a big linear data structure 16:50:00 ell 16:50:01 well 16:50:02 not linear 16:50:04 but there is no "nesting" 16:50:05 Your first quine fails in CL too. 16:50:15 it's not like usual c code, but it's not the wrong way to write it 16:50:17 http://www.qwantz.com/index.php?comic=589 16:50:19 Phantom_Hoover: well i dunno 16:50:24 here's a nonlinear data structure for you 16:50:32 ((lambda (x) (list x `(quote ,x))) '(lambda (x) (list x `(quote ,x)))) 16:50:32 ((LAMBDA (X) (LIST X `',X)) '(LAMBDA (X) (LIST X `',X))) 16:50:45 And for the other one: 16:50:51 ((lambda (x) `(,x ',x)) (lambda (x) `(,x ',x))) 16:50:52 (# '#) 16:51:07 weird. 16:51:11 oh 16:51:14 Phantom_Hoover: because you can't do 16:51:19 ((lambda ...) x) in L... wait, yes you can 16:51:21 that's an exception, i forgot 16:51:23 no idea then 16:51:42 !slashes http://oerjan.nvg.org/esoteric/slashes/quine.sss 16:51:58 alise: Actually, I think you missed a quote somewhere. 16:52:07 Oh, yes. 16:52:12 ((lambda (x) `(,x ',x)) '(lambda (x) `(,x ',x))) 16:52:16 There. 16:52:17 alise: array.reverse(); array.remove(" "); array[0] 16:52:21 ...it's not the most efficient 16:52:25 but it's the easiest 16:52:29 huh 16:52:33 !slashes test 16:52:33 and it's destructive too, which is terrible. 16:52:33 spaces aren't just " "s :P 16:52:33 /\/\/\/\\\\/\\\\\\\/\\\\\\\/\\\\\\\/\\\\\\\\\\\\\\\\\\\\\\//\/\/\/\\\/\/\\////\\////\\\///\\////\\\///\\////\\\///\\////\\\///\\\///\\\///\\\///\\////\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\////\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\////\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\////\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\////\\////\\\///\\////\\\/// 16:52:39 even ''.join(lst).strip()[-1] is better 16:52:41 ouch 16:52:45 oerjan: wut 16:52:48 how is that the output of test 16:52:53 alise: well... I assumed you meant a list of arbitrary data 16:53:09 and not strings, which is what you need for join 16:53:09 alise: it isn't, EgoBot has a bug where sometimes it gives the output on the following command instead 16:53:26 !slashes hello 16:53:26 (that's not the whole quine btw, it's too long for irc) 16:53:27 hello 16:54:01 arise: so if the element is any amount of space it should be ignored? 16:54:38 if x : 16:54:39 y 16:54:39 else : 16:54:39 z 16:54:40 darn 16:54:58 oh 16:54:59 the extra space 16:55:00 of course 16:55:02 i need to skip spaces :3 16:55:08 after { } and ; 16:55:33 alise: oh are you working on it right now? 16:55:48 CakeProphet: slashes (///) is uorygl's language, you may not have been around when i showed it TC 16:56:03 oerjan: it looks vaguely familiar. How does it work semantically? 16:56:07 CakeProphet: yep 16:56:22 CakeProphet: Substitute on rest of the program. 16:56:32 !slashes /foo/bar/foo 16:56:32 bar 16:56:34 >>> print debrace('if x { y } else { z }') 16:56:34 if x : 16:56:34 y 16:56:34 else : 16:56:34 z 16:56:35 woot 16:56:43 alise: if you give me a concise summary of the problem you're trying to solve for my sleep deprived brain... I could help you figure out the best way to do it. Python is my strongest language by far. 16:56:53 oh...well 16:56:54 nevermind 16:56:55 ? 16:57:02 >>> print debrace('def fact(n): { if n==0 { return 1 } else { return n * fact(n-1) } }') 16:57:02 def fact(n): 16:57:03 if n==0 : 16:57:03 return 1 16:57:03 else : 16:57:03 return n * fact(n-1) 16:57:07 if c == '{': 16:57:08 if ''.join(self.result).rstrip()[-1] != ':': 16:57:08 self.result.append(':') 16:57:11 it's just that 16:57:15 to make sure that it doesn't add a : if you already did 16:57:16 *an 16:57:27 CakeProphet: /// commands substitute, with \ escaping characters. everything else is printed, also with \ escaping 16:57:34 are there quines that don't print themselves, but what they print, if run, prints the original quine? 16:57:39 or multiple steps like that 16:57:45 cheater99: sure 16:57:53 url 16:57:54 iterated quines, iirc 16:57:57 alise: that works. To be more accurate you might want to use uh..... 16:58:00 thanks 16:58:01 let me find it 16:58:15 import string; string.whitespace 16:58:15 >>> print debrace(open('example.bs').read()) 16:58:16 def fact(n) : 16:58:16 if n == 0 : 16:58:16 return 1 16:58:16 16:58:17 else : 16:58:19 return n * fact(n-1) 16:58:20 is all technical white space characters 16:58:21 16:58:23 16:58:25 print fact(42) 16:58:27 source of example.bs: 16:58:29 def fact(n) { 16:58:31 if n == 0 { 16:58:33 return 1 16:58:35 } else { 16:58:37 return n * fact(n-1) 16:58:39 } 16:58:40 What is bs? 16:58:41 } 16:58:43 print fact(42) 16:58:45 CakeProphet: ah, like formfeeds and stuff? 16:58:47 i don't think i'll bother supporting that 16:58:57 alise: yeah, tabs, and some other shit I don't... whatever /x0 is 16:59:07 it'll likely never happen though 16:59:15 alise: actually that's a bad idea because it includes \n 16:59:17 >>> '\t'.isspace() 16:59:17 True 16:59:22 so does .isspace() 16:59:25 but that doesn't matter :P 16:59:38 cheater99: iirc the steps don't even need to be all in the same language 17:00:04 .bs? 17:01:07 SgeoN1: BraceS, my code that transforms Python-but-with-braces into Python 17:01:08 for IRC usage 17:01:16 alise: and yeah, isspace() is lambda self: return (self in string.whitespace) 17:01:17 My god, it almost supports GNU style 17:01:19 def fact2(n) 17:01:19 { 17:01:20 if n == 0 17:01:20 { 17:01:20 return 1 17:01:20 } 17:01:22 else 17:01:24 { 17:01:26 return n * fact(n-1) 17:01:28 } 17:01:30 } 17:01:35 I just have to make : add to the previous line instead of the current one 17:01:36 and it'll work 17:01:47 alise: does it add the colon if the brace is trailing like that? 17:01:53 oh... yeah 17:01:55 -!- sebbu2 has joined. 17:02:06 Gnu style? 17:02:16 SgeoN1: worst indentation style in the world 17:02:17 def fact2(n) 17:02:17 : 17:02:17 if n == 0 17:02:17 : 17:02:17 return 1 17:02:18 17:02:21 else 17:02:23 : 17:02:25 return n * fact(n-1) 17:02:26 alise: that might significantly complicate your algorithm since you likely use a vanilla for loop. 17:02:27 So close 17:02:52 what I would do is 17:03:07 Each brace on its own line? 17:03:22 I do that>.> 17:03:29 def keepLast(string): oldLine = ""; for line in string: yield oldLine, line; oldLine = line; 17:03:43 and then in your current code 17:04:00 -!- sebbu has quit (Ping timeout: 276 seconds). 17:04:01 -!- sebbu2 has changed nick to sebbu. 17:04:02 for oldLine, line in keepLast(whatever): 17:04:14 and that'll give you the last line in your loop. 17:04:16 cheater99: actually it seems to be iterat*ing* quine 17:04:33 CakeProphet: i don't use a vanilla for loop 17:04:43 alise: oh... well nevermind. Generators are cool. :P 17:04:53 Blame Linden Labs 17:05:01 CakeProphet: Not a generator. 17:05:03 the coroutine style generator in Python is probably my favorite thing ever. 17:05:04 It should be though 17:05:12 Sgeo: and every brace 2-indented 17:05:15 with the body 2-indented 17:05:15 so 17:05:16 foo 17:05:17 { 17:05:18 bar 17:05:19 } 17:05:50 I made a pretty sweet menu interface once for a online text-based game using coroutines 17:05:53 cheater99: http://www.nyx.net/~gthompso/self_iter.txt has some with more than one language as well 17:06:03 you would use yield to prompt the user and then the yield would evaluate to their next input. 17:06:16 I don't do that 17:06:17 oerjan, cooooool 17:06:26 and you'd throw StopIteration when your menu exits... and it would pop off the menu stak 17:06:28 *stack 17:08:14 alise: once you finish that. We should get a regular interpreter hosted and then use that to run your program as an interpreter. 17:09:49 AnMaster: D&D :D 17:10:08 oh he's not really on 17:10:58 alise: I don't know if I still have it in a working state, but I had a Python program that essentially printed 2+2, but the source code was obfuscated to span several screens while still just being a single logical line of code. :D 17:11:02 I'm quite proud of it. 17:11:20 though I think I fucked it up somehow and it doesn't run correctly anymore. 17:12:11 What obfuscation techniques did you use? 17:12:44 uh.... let's see 17:12:49 ambition, distraction, uglification and derision 17:12:53 I used a lot of fancy Python internal stuff instead of their normal names 17:13:31 and then I convert strings into arrays of ints... and then take those ints and split them up with arithmetic 17:14:03 CakeProphet: Silly idea: I could have this thing support new syntactical structures 17:14:06 like if you define foo as a structure 17:14:07 then 17:14:07 I found it, and it works, but now it assigns x = "Hello, World!" 17:14:09 foo bar { baz } 17:14:13 alise: do it. 17:14:15 calls a function at compile time, foo 17:14:18 with bar and baz as strings 17:14:23 Python is way too conservative with its syntax, in my opinion 17:14:25 so you could do, e.g. 17:14:31 @define foo foo_handler 17:14:34 erm 17:14:38 @define unless unless_handler 17:14:52 def unless_handler(cond, body): return build_if('!('+cond+')', body) 17:14:53 python believes in language family values 17:15:03 yeah I know 17:15:16 alise: that would be fun to play with 17:15:40 alise: could you have it accessible via the interpreter environment so that we could define new structures on Egobot? 17:15:43 *Everything* is too conservative in its syntax. Unless it lets you rewrite the entire syntax. 17:15:56 http://pastebin.com/sdNGZPug 17:16:00 that's the obfuscated Python 17:16:11 it's equivalent to x = "Hello, World!" 17:16:29 CakeProphet: sure 17:16:31 Phantom_Hoover: there _is_ such a thing as balancing conflicting requirements, you know 17:16:53 ooh, we could even have little function macros 17:17:08 @macro incr(x) x = x + 1 17:17:47 >>> print debrace('abc {}') 17:17:47 a:bc 17:17:49 Tha's no ri' 17:18:36 you don't say 17:18:39 alise: you can give eval and exec a local and global scope to operate in... I'd make a custom dictionary object that kept a "stable" version of each scope. On writes to the dictionary it would update the "unstable" scope... so later you could clear the unstable state only and still have the rest of your program intact 17:19:00 alise: since your namespace will get overpopulated overtime. 17:19:06 and you might want to run a cleanup occasionally. 17:19:25 ...I'd do if you don't feel like it. :) 17:20:20 the custom dictionary object would be if you wanted IRC programs to be able to access your interpreter internals... such as the macro thing. 17:20:58 ...assuming EgoBot can even let you keep track of state over consecutive commands. 17:21:41 It can if you use files, IIRC. 17:21:47 !sh pwd 17:21:47 /home/egobot/egobot.hg/multibot_cmds 17:21:51 oh okay... so persistent storage. 17:21:53 Yep. 17:22:03 that's not as fun. :P 17:22:12 and a bit more complicated to implement I think. 17:22:50 you'd basically just keep a pickled dictionary 17:22:59 for your "unstable" scope 17:23:23 so not too complicated. 17:23:35 I suppose you could do something mad like have a background process. 17:23:44 And then communicate with that. 17:23:46 that would be highly mad. 17:23:58 I think pickling would be easier to code, if less efficient. 17:24:07 Hence esoteric! 17:24:09 but it's Python... Python doesn't give a fuck about efficiency 17:24:48 So make it do so! 17:25:21 -!- kar8nga has joined. 17:25:31 I'm assuming EgoBot is running in a sandbox right? It would be mad to not chroot it or something equivalent. 17:25:41 yes 17:25:56 !sh ls / 17:25:56 bin 17:26:06 chroot = best security feature ever. 17:26:37 But how do we tell? 17:26:43 though it would be nice if you could somehow get a safe-to-play in version of root. 17:27:27 ....wait, how does "ls" work? sh can still access /usr/bin I guess? 17:27:38 wow, so here is a fun challenge in python: Write a function that, given an array of strings, will give (i,j,c) such that IF ARY IS EMPTY: it appends '' to ary returns (0,0,''); IF ARY HAS NO NON-SPACES: it returns (-1, -1, ''); OTHERWISE, it returns (i,j,c) such that ary[i][j] == c, not c.isspace() and there are no non-spaces after c in the array. 17:27:47 Also, some efficiency is nice. 17:27:50 Fun fact: This is a bitch. 17:27:54 CakeProphet: it's not just chroot 17:27:55 it's plash 17:27:57 chroot is not nearly secure enough 17:28:08 CakeProphet: It sends it through DCC if there's much input. 17:28:12 alist: can I have a looksee? 17:28:19 s/in/out/ 17:28:34 CakeProphet: me? 17:28:36 CakeProphet: just write it! :P 17:28:52 alise: I'll contribute some code, happily. :) 17:29:01 yay hoorj 17:29:04 (pronounced hooray) 17:29:05 rofl. 17:29:25 I always know something is wrong with my design in Python if I have to resort to lots of tuples in my string parsing. 17:29:33 but this might be the best way to do it in this case... dunno. 17:29:42 !sh ls / | fmt -w400 17:29:42 bin dev etc home lib lib64 proc tmp usr 17:30:05 CakeProphet: no, you should just need to iterate through indices in reverse, i think 17:30:40 alise: I don't know what these tuples are supposed to represent exactly. 17:31:01 CakeProphet: last non-space char, with some helpful stuff for my parser 17:31:29 CakeProphet: EgoBot doesn't allow you to preserve files across commands. HackEgo does (but is currently broken). 17:31:30 ah okay. 17:31:47 ah... so I guess a background process would be the way to go. 17:32:30 alise: basically this function is to see if the last char is a space right? 17:32:34 er... colon I mean 17:32:35 CakeProphet: no 17:32:39 ok here's what it's for 17:32:52 we use it to find the last non-space character. if it's not a colon, then we insert a colon /right after it/ 17:32:54 this is why we need the position 17:32:55 !sh cat hello > fred 17:32:55 /tmp/input.8691: line 1: fred: Permission denied 17:32:57 to insert a colon right after it 17:32:59 so that foo\n{ works 17:33:00 !ls 17:33:02 you can't just insert a : 17:33:03 -!- MigoMipo has joined. 17:33:05 because it becomes foo\n: 17:33:08 but if you know where o is 17:33:10 !sh ls 17:33:11 then you can add : after 17:33:11 interps 17:33:12 so it's foo:\n 17:33:15 CakeProphet: get it? 17:33:15 alise: ah. 17:33:50 indeed. It's a backtrack function to add a colon to a previous line, right? 17:33:56 the appending '' is just so that our assignment works even if it's [] 17:34:00 although that's never valid who cares 17:34:05 CakeProphet: pretty much, except this one doesn't mutate 17:34:08 just gives the relevant coords 17:34:10 you could change that 17:34:12 actually probably a good idea 17:34:16 !sh echo * 17:34:16 interps lib slox 17:34:17 ...yeah I would. 17:34:22 I'ma try rewriting it as mutation, you can have a go too, yours will probably be better 17:34:27 I generally take advantage of mutability in Python. 17:34:39 yeah, use your lang's "strengths" and all 17:34:40 alise: just pass the line in 17:34:42 I guess 17:34:45 not that python has many... thanks for that guido :P 17:34:49 CakeProphet: it's in a class so 17:35:00 ah. 17:35:08 can I see source once you get it stable? 17:35:11 yep 17:35:21 i really need to get around to writing Endeavour/botte/rice sometime 17:35:27 (the three tentative names for my uber-bot) 17:35:31 ...ah 17:35:37 bots are awesome. 17:35:38 it would include this :-) 17:35:53 endeavour would have a complete irc framework thingy, plus really extensible plugins that can access a generic datastore 17:35:56 sweet. You should let it keep an active process for each interpreter. 17:35:58 tons and tons of sandboxed interpreters 17:36:04 like egobot, hackego and lambdabot in one 17:36:08 lots of development time too, I assume. ;) 17:36:08 CakeProphet: yes 17:36:14 also terminatable "commands" 17:36:17 like the !ps of old egobot 17:36:19 !ps 17:36:22 is it still there? 17:36:23 guess not 17:36:27 CakeProphet: yeah it's vaporware 17:36:33 still don't like any language yet :D 17:36:49 if you had a repos of some kind I wouldn't mind working on it in my free time. I miss doing stuff on #esoteric 17:37:04 I assume it's a semi-distant-future thing though 17:37:23 Probably I should get my life sorted out first. 17:37:29 Semi-distant, yes, but I'd like to have it /some/ day at least 17:37:33 -nod- 17:37:41 Oh, and a lot of the interpreters would have user-specific data storage places 17:37:45 that other people can access but not mutate 17:37:52 ....oh my. 17:37:54 and the whole thing would also serve as a logbot and a quotebot... 17:37:58 sweet. 17:38:02 with presumably some sort of web server attached to it to serve those 17:38:11 * Sgeo would buy the OLPC tablet 17:38:17 basically were it written the website + it on irc would be all you ever need to do anything even vaguely related to esoterica :P 17:38:25 alise: I would download copies of source from URL instead of constantly web-accessing them. 17:38:37 CakeProphet: yes, ofc 17:38:45 alise: I don't know if you keeps notes or anything. Whenever I work on something big I keep tons of notes. 17:39:16 It's always all in my head. 17:39:24 I can't seem to articulate a complete vision of anything. 17:39:31 hmm... it'd be nice if I could add variable declarations to Python 17:39:33 as far as language I'd do Python simply because it's a task that doesn't require too much efficiency.. and Python is fast to develop in if you're good at catching bugs before they happen. 17:39:34 the "global" mess is so stupid 17:39:45 oh, like a type system? 17:39:52 no 17:39:53 just 17:39:57 you have to do "var x = y" before using it 17:40:03 ah. 17:40:04 without it, closures don't work (which is why python is shit) 17:40:11 scope safety, or whatever 17:40:15 at compile-time 17:40:19 something like that. 17:40:36 I thought closures work in Python? 17:41:18 def hahahaha(): { x = 0; def inner(): { x = x + 1; return x }; return inner } 17:41:19 ^ doesn't work 17:41:24 because x is a local variable in inner 17:41:28 so we just get an "undefined variable x" error 17:41:30 Hey, it's CakeProphet! 17:41:31 Hello. 17:41:32 THIS works however: 17:41:38 alise: oh yeah. They added that in Python 3 actually 17:41:42 nonlocal declaration 17:41:44 def ihateyou(): { x = [0]; def inner(): { x[0] = x[0] + 1; return x }; return inner } 17:41:54 !python print "hello" 17:41:55 CakeProphet: yeah but "nonlocal" is so silly, just make people use "var" or "def" first thing :P 17:41:59 Phantom_Hoover: nope. 17:42:01 yeah, I agree. 17:42:31 alise: though I guess it could interfere with some dynamicism... but not really. If you just made it a compile-time thing and then scratched it at runtime... all the runtime binding features would still work fine. 17:42:44 globals()["newVar"] = 2 17:42:45 and all that 17:42:51 * Sgeo winces and opens IE 17:42:53 Blargh, I've forgotten how to swap () and [] in Slime. 17:44:14 alise: Have you heard of Go? 17:44:47 it has similar quickness-of-programming to Python, but has type safety 17:44:48 -!- ws has joined. 17:44:58 CakeProphet: Yes! 17:45:03 the syntax is a little weird though... and it's still in rough stages of development. 17:45:04 By Ken Thompson and Russ Cox, my heroes. 17:45:09 I don't mind the syntax. 17:45:17 yeah... I mean... you're in #esoteric 17:45:19 of course you don't. 17:45:25 It's... just python with braces 17:45:26 What's so weird 17:45:44 the type declarations are kind of weird 17:45:52 Eh, name type is older than type name. 17:45:58 semantically it's fairly different from Python too. More like a mix of the good parts of Java and Erlang 17:45:59 Besides, you know, Ken Thompson? 17:46:00 C? 17:46:10 Sure, he didn't make C. 17:46:19 You *hate* C! 17:46:20 But he worked right next to the guy who made C on the same operating system that it was designed for. 17:46:28 So, it's basically them reversing their own decision. 17:46:30 Phantom_Hoover: Well, yes. 17:46:30 I actually like C a lot. 17:46:34 Phantom_Hoover: But in the 70s C was nice. 17:46:34 ... 17:46:37 Memory management didn't matter then. 17:46:51 CakeProphet: Also, hey, Thompson and Pike invented UTF-8 in one day. 17:46:52 So nyah. 17:46:53 C++ is a clusterfuck, however. Syntactically. 17:46:54 Yes it did. That's why they did it by hand. 17:47:02 Phantom_Hoover: No... on UNIX, you just did 17:47:04 char foo[80]; 17:47:06 gets(foo); 17:47:10 UTF-8 seems like an easy thing to invent in one day. 17:47:16 but I should state my ignorance of C++ in general. I know C far better. 17:47:18 "But what if someone types more than 80 characters?" "The system would crash. But why would you do that?" 17:47:32 uorygl: not when you consider the previous encoding clusterfucks 17:47:35 Ah, I like that attitude. 17:47:36 simplicity isn't easy 17:47:53 -!- hiato has quit (Quit: underflow). 17:47:54 alise: yeah. c is nice when you get your design correct... but you also have to rely on everyone else getting their design correct. 17:48:03 And nobody being malicious... 17:48:03 "Hey, how should we represent a variable-length character?" "I dunno, maybe we should use the first byte to encode the length and some data, and further bytes to encode the rest of the data." 17:48:10 CakeProphet: hmm, darn, my solution to insert_colon mutated a list i was iterating over 17:48:16 pretty sure that's verboten even if you stop right after, yeah? 17:48:28 uorygl: it wasn't seen as variable length then though 17:48:33 it was seen as a 16-bit character set 17:48:42 Oh. 17:48:55 alise, oh, did you ever get satisfied with your Python code so that I can look at it? 17:49:16 -!- sebbu2 has joined. 17:49:17 has anyone heard of io? 17:49:32 CakeProphet: I was probably called something else when you left. Like Warrigal or kerlo or ihope or something. 17:49:51 it's pretty nifty though. Suffers from poor support. But the language design is neat. 17:49:54 CakeProphet: almost there 17:49:56 I've used Io 17:49:58 uorygl: ihope 17:50:07 * uorygl nods. 17:50:23 -!- sebbu has quit (Ping timeout: 252 seconds). 17:50:23 It's been... how many years? 17:50:23 -!- sebbu2 has changed nick to sebbu. 17:50:27 I was still in high school at the time. 17:50:36 CakeProphet: I don't remember what that one thing was, but you probably do, so tell me about it. 17:50:39 :P 17:50:45 maybe 3, possibly 4 to 5 at the most. 17:50:59 uorygl: ....what one thing? 17:51:01 >>> debrace('if\n{abc}') 17:51:01 'if:\n\n abc\n' 17:51:02 so close 17:51:13 -!- hiato has joined. 17:51:13 CakeProphet: darn, you don't remember after all. 17:51:28 alise: it might be better to check for keywords on lines and end with a colon if it doesn't 17:51:31 CakeProphet: oh, maybe I was planning to create an operating system and you were planning to help, or something. 17:51:33 and then use {}'s to only do tabbing 17:51:35 CakeProphet: NO 17:51:41 alise: ...it's easier than you would think 17:51:42 CakeProphet: custom structures remember :D 17:52:09 alise: Just keep a list of them. Simple enough. 17:52:18 alise: check the keyword list and the custom structures list 17:52:33 CakeProphet: no this is much cooler :| 17:52:38 alise: also check out import keyword; keyword.kwlist 17:52:45 DIE IN A FIRE :| 17:52:46 keyword checking made easy. 17:52:59 though it doesn't give you the indent-only keywords 17:53:05 stuff like and, as, break, class, etc are in there 17:53:13 so you'd just have to sort it out. 17:53:26 oh... and look 17:53:29 keyword.iskeyword() 17:53:39 though, since you're not checking /every/ keyword... you wouldn't use that. 17:53:47 >>> debrace('if\n{abc}') 17:53:48 'if:\n\n abc\n' 17:53:48 ;; problem here is, the newline done by the \n is when it was thinking it was totally 0 indenting 17:53:53 wait! 17:53:58 I can just right-strip the text 17:53:59 and add the : 17:54:00 duh! 17:54:08 though that'd be inefficient... 17:54:11 strip() is your friend 17:54:18 not on a list of strings 17:54:20 also, *rstrip 17:54:27 alise: not as much as you'd think. strip() is written in C. In Python world that's fast. 17:54:41 i have to join it 17:54:42 aha, .isspace() works on multiple strings 17:54:46 this will be easy 17:54:57 alise: pretty much all the string functions are C. multiple for loops in Python are still lightspeed in Python. 17:55:06 *c for loops 17:55:07 that is 17:55:16 shaddap 17:55:17 :D 17:55:22 :D Just helpin' 17:55:40 Python in general runs about 100x slower than C 17:55:48 I don't even think that's exaggerating 17:56:16 so when you can, avoid custom loops over C-based built-ins 17:56:25 because multiple calls to those will be much faster than your hard-coded loops 17:57:07 thinking about efficiency in Python is completely different from thinking about efficiency in languages like C. 17:57:47 If you're worried about efficiency just write it in something else. 17:57:52 oh... and avoid string concatenation. If you're doing a lot of inserts and appends stick to lists. mutable = no re-allocation 17:58:00 Phantom_Hoover: rofl. yeah, pretty much. 17:58:12 concatenation = what i need to do to strip 17:58:13 so thar 17:58:35 hmmm... I suppose. 17:58:36 How does Python actually implement arrays? 17:58:50 WOOT IT WORKS 17:58:54 -!- kar8nga has quit (Remote host closed the connection). 17:58:57 Python "lists" are C arrays that automatically resize in a semi-heuristic "smart" way. 17:58:58 i'm so happy i could fuck a goat 17:59:00 * alise fucks a goat 17:59:04 ...anyway 17:59:09 CakeProphet: Ahh. 17:59:18 all i need to do is stop it mutating >_> 17:59:22 while it's iterating over a list 17:59:26 because dat ist verboten 17:59:43 *das 17:59:53 Phantom_Hoover: though there's an array module that lets you use C, typed, fixed sized arrays. It's for extreme cases where you want C array efficiency but don't want to write it in C 18:00:27 Hence concatenation is a nightmare. 18:00:30 alise: would making a copy of the list break the semantics? If you make a copy you're mutating a different list. 18:00:49 done <3 18:00:55 CakeProphet: I've got it working perfectly 18:01:01 mutating yet safe, and quite elegant code too! 18:01:09 good. :) 18:01:17 lodgeit is the best paster site for python right? 18:01:23 ...no clue. 18:01:25 meh :P 18:01:27 I just pastebin.com 18:01:35 there was a good one, but I think it's down now. 18:01:37 I'll use the vjn.fi pastebin, for old times 18:01:37 it was perfect. 18:01:43 I could use sprunge, but eh 18:01:57 CakeProphet: http://www.vjn.fi/pb/p3542786123.txt 18:02:05 The code isn't ugly, but it's a bit long for my tastes. 18:02:09 A quick scan of the #python title suggests http://paste.pocoo.org/ 18:02:13 I think using generators and other whizz-bang features could make it nicer, but this is acceptable. 18:02:16 pocoo is the lodgeit one iirc 18:02:24 CakeProphet: what was the perfect one called? 18:02:26 alise: can I see? :D :D :D 18:02:34 http://www.vjn.fi/pb/p3542786123.txt 18:02:34 alise: ...I can't even remember now. It's been so long. 18:02:36 i pasted it already :P 18:02:41 ah. missed it. 18:02:49 wait, I want to make one change 18:02:51 DON'T LOOK :P 18:03:07 alise: haha. Okay. (That happens to me too. I hate it) 18:03:14 CakeProphet: http://www.vjn.fi/pb/p9416389493.txt 18:03:19 yeah there's all those tiny little things that you just suddenly notice 18:03:23 after exiting the main-problem-zone 18:03:39 ah... a state-machine style class. 18:03:51 CakeProphet: Example input: http://www.vjn.fi/pb/p4361828264.txt 18:04:18 Things I'd like: Some way to fool the Python interpreter, when it evaluates it, into matching up source lines with their results, so that e.g. braced oneliners work properly. (This is impossible.) 18:04:21 alise: do you have any kind of command-line support.. or is it just called in a larger package? 18:04:26 And, uh, what's the other thing... 18:04:32 CakeProphet: this is all i've written so far 18:04:37 debracer(some_string) works fine on the console to test it 18:05:00 alise: I'm not sure what you mean by matching up source lines. 18:05:26 like instead of 18:05:31 LOL YOU FUCKED UP AT LINE 72 18:05:34 when your file is a one-liner using braces 18:05:38 it'd say LOL YOU FUCKED UP AT LINE 1 18:05:43 YOU FUCKING FAILURE, YOU MESSED UP A ONELINER 18:05:47 'specially the insults would be good. 18:05:52 alise: If you want to make it a command-line tool just define a main function and then at the bottom of the source file do if __name__ == "__main__": main() 18:06:09 alise: why would it say line 72? 18:06:16 CakeProphet: I want to add more to it before making it a tool 18:06:20 CakeProphet: because 18:06:24 if abc { def { sadposdf } } 18:06:24 -nod- alright. 18:06:25 turns into 18:06:25 if abc 18:06:26 def 18:06:28 sadposdf 18:06:29 and so on 18:06:37 so imagine a huge oneliner in that 18:06:40 the translated python would be run 18:06:42 python spots an error 18:06:46 complains about the line in the translated code 18:06:48 and column 18:06:49 but yeah the __name__ == "__main__" is one of those weird Python idioms that they seem to have ignored in their quest to make clean code. 18:06:57 so this basically makes line/column error messages useless if you actually utilise the braces stuff 18:07:13 if sys.is_main(): 18:07:17 alise: aaaaah, I see. You want it to automatically put a one-line block on the same line as the statement. 18:07:25 oh... no 18:07:31 CakeProphet: you know C's #line? 18:07:32 you just want it to correspond to your source file. Gotcha now. 18:07:33 well imagine this 18:07:34 right 18:07:35 you gotit 18:07:36 *got it 18:07:58 alise: I think that's possible actually. 18:08:01 I'll think about it. 18:08:06 I don't think Python has a #line 18:08:10 it may have some wacky assignment to do it though 18:08:10 well... no not a line 18:08:16 and then what about column 18:08:17 it'd have to be offset 18:08:19 but you could give your tool an error output that would be useful. 18:08:29 if it does do all this then this is veering away from joke preprocessor into compile territory 18:08:35 CakeProphet: it's python that'd make the error 18:08:38 i guess i could maintain a reverse map 18:08:43 line in python -> line and col in braces 18:08:45 ...oh, gotcha 18:08:54 well... 18:08:55 hmmm 18:09:05 I think I remember seeing something similar to the problem you're describing 18:09:08 gotta find it though 18:09:11 but it's possible to work around. 18:09:42 i mean 18:09:45 i could offset indents and shit 18:09:48 so that i could look up a line 18:09:52 and see where it starts, line col in the braces source 18:09:55 but that would be a fucking pain. 18:09:57 essentially you'd a way to pass around the line number data... and then in the code where you evaluate, catch the exception, alter the traceback, and print 18:10:05 I think there's actually an easy way to do that. 18:10:08 but I'm not positive 18:10:43 -!- Portponky has joined. 18:11:10 def fib(n) { 18:11:11 if n == 0 { return 0 } 18:11:11 elif n == 1 { return 1 } 18:11:11 else { return fib(n-1) + fib(n-2) } 18:11:11 } 18:11:12 VALID BRACES CODE 18:11:27 CakeProphet: in my happy future land it'd be nice if you could omit the returns, too 18:11:27 alise: at the moment we'll call it impossible... but if I stumble upon a possible solution I'll let you know. 18:11:36 and then let the if go AFTER the statement. Oh wait, I've just invented Perl 18:11:38 alise: eh... not necessary. 18:11:44 rofl... 18:11:46 CakeProphet: functional programming duderiffy 18:11:53 basically you want to modify python to be awesome. 18:11:59 yeah, pretty much 18:12:07 hey i could support closures with this 18:12:15 consider a function map(list)(closure) 18:12:16 then consider 18:12:37 for x from map(lst) { x + 2 } 18:12:38 --> 18:12:40 you'd probably want PyPy for anything advanced. It's Python written in Python and somehow partially JITed... I have no idea how it works 18:12:47 but it makes it easier to tweak Python in Python. 18:12:49 def __mapper(x): { return x+2 }; map(lst, __mapper) 18:12:57 CakeProphet: it's gorgeous, pypy 18:13:17 they write their python interp in a restricted dialect of python, rpython; and they also have a JIT from rpython, that compiles rpython to efficient machine code as it goes 18:13:27 yeah, that's right. 18:13:28 and that JIT is written in python iirc 18:13:34 probably. 18:13:35 -!- hiato_ has joined. 18:13:38 so they run the jit -- in python -- on their in-RPython python interpreter 18:13:38 -!- hiato has quit (Ping timeout: 248 seconds). 18:13:43 which then results in an efficient machine-code Python interpreter 18:13:52 it's genius 18:14:32 CakeProphet: actually if this gets too far I'll have invented my own, superior language 18:14:38 rofl. yes. 18:14:55 at least in terms of syntactic features 18:14:55 * alise translates braces.py to braces.bs 18:14:59 BOOTSTRAPPING 18:15:04 what is bs again? 18:15:13 BraceS, but the bullshit expansion is intentional 18:15:30 Whoa, my string support is broken. 18:15:46 <3 Snoo 18:16:00 fix'd 18:16:03 Sgeo: ? 18:16:10 alise, the Reddit alient 18:16:12 *alien 18:16:16 Sgeo: it has a name? 18:16:17 CakeProphet: lol, this isn't even backwards-compatible, 18:16:19 *compatible. 18:16:23 http://www.reddit.com/r/todayilearned/comments/c9k3y/til_the_reddit_alien_is_called_snoo/ 18:16:24 CakeProphet: it strips your indentation 18:16:25 -!- benuphoenix has joined. 18:16:29 Hi benuphoenix 18:16:30 alise: Hmmm? What went wrong-- oh? 18:16:31 * Phantom_Hoover wonders why there isn't a decent way to take some Common Lisp and compile it into an executable 18:16:37 CakeProphet: yeah 18:16:48 oh.. right 18:16:53 do you use string.whitespace to strip whitespace? 18:16:56 or isspace()? 18:17:07 or... strip even 18:17:14 ... 18:17:18 I think that's obvious 18:17:26 so nevermind me asking stupid questions. 18:17:30 -!- benuphoenix has left (?). 18:17:35 oh, I should make {} result in pass 18:17:39 >>> "\t".strip() 18:17:42 '' 18:17:55 there's also that... dunno if it matters. 18:18:37 >>> string.whitespace 18:18:39 '\t\n\x0b\x0c\r ' 18:19:26 CakeProphet: I ported braces.py to braces.bs! 18:19:40 * alise moves braces.py to braces_orig.py, then generates braces.py using braces_orig.py on braces.bs 18:20:19 woah.... that while self.process_char(): pass is a completely weird way to loop over that. 18:20:25 but it works. 18:20:26 You're weird. 18:20:28 :P 18:20:30 I originally did 18:20:31 go = True 18:20:33 while go: 18:20:37 go = self.process_char() 18:20:38 .......rofl. why. 18:20:39 but realised that was stupid 18:20:45 haha. 18:20:50 CakeProphet: http://www.vjn.fi/pb/p1266287623.txt braces.bs v1 18:21:03 I would have done uh... 18:21:09 CakeProphet: http://www.vjn.fi/pb/p9595539115.txt generated object code ;) 18:21:12 (also known as python) 18:21:15 for c in self.source: self.process_char(c) 18:21:24 nah, because self.source is mutated a lot 18:21:26 so that would do weird shit 18:21:28 and be undefined behaviour 18:21:39 ah okay. 18:21:52 behold, the world's first ugly pythonesque compiling-to-python self-hosting language 18:21:55 yeah that's a good work-around I guess. 18:22:13 I'm sure somehow else has given Python braces. 18:22:21 s/somehow/someone 18:22:49 I think they have 18:23:00 as a source encoding filter... 18:23:05 this is cooler though 18:25:36 alise: I'd turn the spaces-per-indent up a bit. Have it a constructor option. def __init__(self, source, spaces_per_indent=4) 18:25:47 and then (' ' * self.indent * self.spaces_per_indent) 18:25:48 CakeProphet: But why would you want to look at the generated object code...? 18:26:01 alise: hmm... I dunno, it could happen. 18:26:07 Sgeo: "To be fair, that's like saying the reddit alien is from the future -- it was something that was tossed around in the summer 2005, and then it was pretty much forgotten. Even around the office, I've never heard anyone call it Snoo; it's always just "the alien"." 18:26:22 CakeProphet: At least this way it LOOKS definitively evil. 18:26:34 alise: I mean the whole point is to have internet-friendly python... so once you have hosted somewhere there's no reason not to have it human-friendly 18:26:42 +it 18:26:50 oh, this is actually just for abomination purposes 18:26:56 ...ah. 18:27:15 alise: psh, you're not allowed to diss Python when you're doing stuff with it, for it. 18:27:34 What if I'm raping it to make it look like a clown? 18:27:39 Because that's basically the case here. 18:27:59 ...I don't know, the braces look nice really. Possibly even more structured. 18:28:21 when your blocks get long-winded it can be easy to loose track of how many dedents there are at the end. 18:28:34 but not having to type braces is definitely worth it... :) 18:28:45 but really... they should have both. There's absolutely no reason not to. 18:28:48 def printf(s) 18:28:48 { 18:28:49 print(s); 18:28:49 } 18:28:49 def main(argc, argv) 18:28:49 { 18:28:51 printf("Hello, world!\n"); 18:28:53 return 0; 18:28:55 } 18:29:00 ....actually. 18:29:02 oh. 18:29:05 wait... 18:29:07 .... 18:29:08 [spoiler]VALID[/spoiler] [sup][b][i]BRACES[/i]c[/b]o[/sup][sub][spoiler]de[/spoiler] 18:29:09 what? 18:29:16 def printf(s): 18:29:16 print(s) 18:29:16 18:29:16 def main(argc, argv): 18:29:16 printf("Hello, world!\n") 18:29:16 return 0 18:29:18 is what it becomes 18:29:23 print(s) in python 2.0 is print (s) 18:29:26 did you just use printf in Python? 18:29:28 which is print s 18:29:33 CakeProphet: I just defined printf to be print :P 18:29:37 oh. 18:29:43 alise: try printf = print 18:29:44 -!- huldumadurin has joined. 18:29:51 That doesn't work in C 18:29:55 ........rofl. 18:29:58 and print is a statement 18:29:59 so you fail 18:30:08 alise: depends on which version you're using 18:30:16 ooh I need bracketed comments 18:30:20 (# ... #) do you think? 18:30:26 you're capturing it in your parenzz 18:30:31 CakeProphet: 2.0 18:30:37 Python already has """ 18:30:41 it actually has semantic importance too 18:30:59 alise: yeah print-as-a-function is 3... possibly 2.6 or 7 or something 18:31:17 3 18:31:24 """ is LAEM though 18:31:26 because you can't do 18:31:34 if foo { print """abc""" x } 18:31:41 these (# ... #) comments would simply be elided in the result 18:31:45 ....ah, okay. 18:31:48 oh and nestable 18:31:50 like all good comments 18:31:51 then yeah. But maybe a different syntax. 18:31:55 (# abc (# def #) quux #) 18:32:00 why, it's just like # comments but you capture them! 18:32:01 -!- benuphoenix has joined. 18:32:10 {# #} could possibly conflict with Python code in some odd corner case. 18:32:17 *(# #) 18:32:22 and I DEEYEN CARE 18:32:28 yeah it's never going to happen. 18:32:35 Sgeo: What's up? 18:32:37 this is the Algorithmic Programming Language Braces, not FIOC :| 18:32:41 benuphoenix: whoa it's you. 18:32:48 benuphoenix, your IRC client's working again? 18:33:00 alise: also, main won't do what you expect. Python doesn't automatically call main like that 18:33:19 well, unless you expect something different. 18:33:32 i know 18:33:34 i was just writing pseudo-C 18:33:43 I'm a proficient python programmer ffs :P 18:33:46 -nod- alright. Just checkin' 18:33:58 whoa i have some mental block with using braces after typing pythony code 18:34:06 your while idiom made me uncertain. :P 18:34:20 alise: I almost forgot the explicit self after doing a lot of Java and C# lately. 18:34:37 alise: I would almost grow to dislike it now that I've had the convenient of not having to type it all the time. 18:34:39 this is an abomination, it doesn't have to be idiomatic 18:34:47 I'm not even a big fan of OOP. 18:34:48 The explicit self is incredibly annoying. 18:34:55 my irc client can access channels 18:35:25 Also the fact that out of habit you call it self, rather than, say, j or something similarly easy to type. 18:35:31 CakeProphet: Hey, this means I can use nested functions conveniently <3 18:36:01 Common Lisp's object system is very weird. 18:36:11 Phantom_Hoover: It's very good. 18:36:17 But still weird. 18:36:24 alise: Sweet... now support multi-line lambdas... compile them to named functions that don't conflict with anything else in code, embed the name where the lambda expression was originally, and then delete the name afterwards. :P 18:36:26 -!- benuphoenix has left (?). 18:36:26 It's advanced. It predates almost all other object systems. 18:36:30 It did it Better. 18:36:33 CakeProphet: and call the whole thing "perl" 18:36:39 If you have *ever* used C++ or Python or Java. 18:36:41 seriously, we're just approaching idiomatic perl 5 without sigils here 18:36:50 Phantom_Hoover: unlucky! 18:36:50 IIRC Javascript does it weirdly too. 18:36:53 alise: psh... we're not even close to the syntactic monster of perl yet. 18:37:02 CakeProphet: i said idiomatic perl 18:37:10 seriously, idiomatic perl is basically what we have here, plus some additional niceties 18:37:10 ...you lie. 18:37:16 I'm not! 18:37:25 multi-line lambdas: yep, idiomatic perl 18:37:29 braces: uh, yeah 18:37:32 scripting language: yep 18:37:39 it also has "not", "unless" and similar 18:37:39 -!- nooga has joined. 18:37:45 it also has conditions after the statement (useful a lot of times) 18:37:49 we're inventing perl :P 18:37:53 well, I know nothing about Perl other than everytime I try to memorize the syntax in any way I completely fail. I blame but the language design, but it could also be copious marijuana ingestion in my past. 18:37:54 -!- Phantom_Hoover has quit (Quit: Leaving). 18:37:56 no shiii 18:38:04 alise: yes, I do remember those features. 18:38:17 -!- Phantom_Hoover has joined. 18:38:44 alise: but the semantics are entirely different.... entirely. 18:38:53 true 18:38:58 i have a kinda soft spot for perl. 18:39:07 (# ... #) comments implemented! 18:39:12 I don't know Perl very well... 18:39:14 nifty. 18:39:22 Haskell's comment style is really nice. It's my favorite that I've seen. 18:39:34 Haskell is a good language. 18:39:37 ...indeed. 18:39:46 it's not without flaws, but a very good language nontheless. 18:39:53 -!- nooga has quit (Client Quit). 18:40:07 ehird@ehird-desktop:~/work/2010-05/braces$ mv braces.py braces_.py 18:40:07 ehird@ehird-desktop:~/work/2010-05/braces$ python -i braces_.py 18:40:08 >>> open('braces.py', 'w').write(debrace(open('braces.bs').read())) 18:40:08 >>> 18:40:08 ehird@ehird-desktop:~/work/2010-05/braces$ rm braces_.py 18:40:09 Updat'd 18:40:25 Aaand it doesn't work 18:40:29 Is my damn connection down again? 18:40:32 in particular, some of the functions that use Int instead of Integral are annoying... especially when you have to coerce types around. 18:40:35 No it is not. 18:40:37 Phantom_Hoover: no 18:40:40 * alise builds a command-line interface 18:40:42 CakeProphet: Yes, that is a flaw. 18:41:02 CakeProphet: Also, the Num class is an abomination; we thought about this stuff last century and it turns out there are these things called rings and fields...# 18:41:05 *fields... 18:41:22 ...hmmm, yeah. I don't know anything about those though... 18:41:27 It's behaving oddly, though. 18:41:30 not well-read on abstract algebra 18:41:37 CakeProphet: they're pretty simple really 18:41:41 I figured. 18:41:53 CakeProphet: you have one for +, one building on top for -, one building on top for *, then one building on top for / basically 18:41:56 it's just a structure that describes a formal system of operations over data right? 18:41:57 except you have a bunch inbetween 18:42:04 for things like non-commutative or non-associative operations 18:42:09 so we can categorise tons of non-numbers in this too 18:42:11 ...they build? in what way? 18:42:15 um, like 18:42:24 "A frizzle is a bob (S,*) such that x*y = y*x." 18:42:30 (where * is any operation not multiplication) 18:42:40 what is S? 18:42:44 a set 18:42:49 ah, the data 18:42:50 * is an operation taking two Ss and returning an S 18:42:55 the very bottom structure is a magma: 18:43:08 so what is frizzle, and what is bob? 18:43:12 A magma (S,*) is a set S and a binary operation * on S with the following property: 18:43:15 ring and field? 18:43:18 Closure propety: a*b is in S. 18:43:31 CakeProphet: no, field is division (multiplicative inverses; i.e. ^-1) 18:43:49 ah okay... a ring is more general? 18:43:50 Ring is +, * and - 18:43:55 gotcha 18:43:57 Z is the prime example 18:44:01 Magma 18:44:01 Set S with binary operation + 18:44:01 Semigroup 18:44:01 Associativity of + 18:44:01 Monoid 18:44:02 Existence of identity element for + in S 18:44:04 Group 18:44:06 I assume frizzles and bobs are metasyntactic. 18:44:06 Existence of inverse elements for + in S 18:44:08 Abelian group 18:44:10 Commutativity of + 18:44:12 Pseudo-ring 18:44:14 so then what is frizzle in bob? 18:44:14 Associative binary operation 18:44:16 *and 18:44:16 Distributivity of over + 18:44:18 Ring 18:44:20 Existence of identity element for in S 18:44:22 Commutative ring 18:44:24 Commutativity of 18:44:26 Field 18:44:28 Existence of inverse elements for in S 18:44:30 urgh 18:44:32 ....... 18:44:32 CakeProphet: http://en.wikipedia.org/wiki/Ring_(mathematics)#Definition_and_illustration 18:44:34 look at the "Algebraic structures" table there 18:44:36 CakeProphet: there are some structures inbetween for pathological things 18:44:38 What's purple and commutes 18:44:47 ? 18:44:52 .... 18:44:58 a purple man who lives far away from his workplace 18:45:01 rofl 18:45:37 You both know, so there's no point. 18:45:40 alise: I apologize. My ability to parse wikipedia articles on math is very limited... mainly because they explain everything in terms of other things I also don't understand. 18:45:47 but I'll give your link a look 18:45:50 CakeProphet: get yourself an edumacation :D 18:45:54 oh wait you're from the US 18:46:00 YOU CAN'T HAHAHAHahem. 18:46:20 ...rofl. 18:46:25 yeah. 18:46:40 well, abstract algebra isn't really taught, except in advance college classes. 18:47:55 alise: so basically instead of Num you'd have Ring for (+) and (-) along and (Ring x) => Field(x) for division and multiplication? or is multiplication elsewhere? 18:48:05 *along with 18:48:07 CakeProphet: well it's a bit more nuanced than that 18:48:10 multiplication is in ring actually 18:48:18 ah... okay. 18:48:20 it'd be easy to use 18:48:27 it's just that it's hard to memorise exactly what some thing is :P 18:48:34 CakeProphet: to do all that we really need inheritance of classes 18:48:37 so that you could just define it as the highest one 18:48:41 and it'd inherit the definitions downwards 18:48:43 alise: doesn't GHC support that? 18:48:43 to parent ones 18:48:46 nope,. 18:48:47 *nope. 18:48:52 I thought you could do like 18:49:01 typeclass (Ring x) => (Field x) 18:49:05 Nope 18:49:06 GUYS GUYS 18:49:15 Braces 1.5: http://www.vjn.fi/pb/p8785482493.txt 18:49:18 Bootstrapping Python: http://www.vjn.fi/pb/p3558378555.txt 18:49:22 sorry 18:49:25 Pre-compiled version: http://www.vjn.fi/pb/p3558378555.txt 18:49:30 Binary for Python platforms :P 18:50:04 Example: http://www.vjn.fi/pb/p5491253623.txt 18:51:19 -!- hiato_ has quit (Ping timeout: 265 seconds). 18:51:39 CakeProphet: I'm turning insane halp 18:51:44 what's up? 18:52:17 ...how are you turning insane? 18:53:07 http://www.vjn.fi/pb/p8785482493.txt 18:53:08 'nuff said 18:53:09 CakeProphet: you can have Ring x => Field x, but what you cannot have is defining the Ring methods automatically from the Field methods 18:53:29 aaah. 18:53:40 could you? 18:53:52 would that even be possible? 18:53:58 to make a Field (or in current Haskell, say Fractional) you have to define _all_ the superclasses separately 18:54:07 right. 18:54:20 ah, so it's a convenience thing. 18:54:28 CakeProphet: well, it would be nice to at least have them listed in common. 18:54:37 obvs we should just add dependent typing, require totality and add a proof assistant 18:54:38 job done. 18:54:44 rofl. 18:54:47 oh wait that's agda except with a proof assistant and consistency ha ha ha ha ha ha 18:54:52 it's funny because i am dissing agda 18:54:54 on the grounds that coq is superioe 18:54:56 *superior 18:54:57 alise: are you still insane? 18:55:05 CakeProphet: i have concluded i always have been 18:55:09 alise: also... you lost me on that last bit. But that's okay. 18:55:10 and it's woooonderful~ 18:55:14 it is. 18:55:32 I'm wasting far too much time doing fun stuff and talking on this channel. 18:55:48 everyone is insane. it's just that a large group of people have convinced themselves their delusions are "normal" 18:55:55 when I've already procrastinated like a whole week of my online history class, and was/is going to catch up today. 18:55:58 -!- Gracenotes has quit (Remote host closed the connection). 18:55:59 aka "the majority" 18:56:11 says oerjan, whilst believing in synchronicity. 18:56:22 *MWAHAHAHA* 18:56:41 alise: i never said i was normal 18:56:42 alise: so... have you considered how to implement generic macro control structures yet? 18:56:58 CakeProphet: by tossing the crock of shit out and making it properly modular 18:57:17 alise: well yes... but I'd try to re-use some code if possible... just re-organize 18:57:42 alise: but yeah... pretty much you want dynamic dispatch. 18:57:46 because it's awesome. 18:57:54 You know, I could just invent a new language. 18:58:03 ...but this is more fun. 18:58:44 Well. yes. 18:58:48 alise: one thing you'll possibly want to improve on how information mid-parse is stored. 18:58:49 *Yes. 18:58:53 I'm not quite sure how though 18:58:58 Yes; I really want to create a pseudo-syntax tree 18:59:03 I'm very bad at homebrew parsers and making them elegant. 18:59:18 of mostly string globs of python interrupted by [KEYWORD, BIT_BEFORE_BRACE, ...stuff inside braces...] 18:59:25 where stuff is either a string or another one of those 18:59:55 alise: You just need to be able to recognize a control structure that's been implemented somewhere... either with some kind of special macro syntax that you can embed mid-source-code, or as plugins to the compiler. 19:00:14 whichever you prefer. 19:00:23 MetaPython provides a macro and code quoting facility for the Python programming language. It accomplishes this via the use of an import hook. MetaPython files are denoted with an .mpy extension and may contain quoted code blocks, macro definitions, and macro expansions. 19:00:25 and whichever is saner, or maybe less sane 19:00:40 ...oh shit. I forgot about import hooks. 19:00:41 CakeProphet: this is all reminding me of me and oklopol's python schemes 19:00:58 which were basically little half-lisp, half-schemes we wrote in python with very tight python integration 19:01:04 I saw an implemention of gotos in Python that used debugging facilities. 19:01:07 i wrote one that did its own GCing and everything 19:01:07 was hot 19:01:08 -!- lament has joined. 19:01:33 alise: How about this: make all functions partially applicable. 19:01:50 CakeProphet: Would need different syntax, because of varargs. 19:01:54 How about f&(args...)? 19:02:00 this will be after you have a sane parsing scheme down... so that all these new features are easy to tack on. 19:02:13 alise: nope. it's easier then you would think. 19:02:19 I know it can be done 19:02:28 but one syntax is better than having to do a special case for variadic functions 19:02:38 you wouldn't need to do a special case 19:02:51 def fuck(*args): ... 19:02:55 just locate all def's in source and apply a decoration 19:02:57 fuck(1,2,3) # this should partially apply 19:02:59 WHOOPS IT DOESN'T. 19:03:18 ..hmmm... oh, I think I get what you're saying 19:03:33 so something like fuck&(1,2,3) is better 19:03:51 ....I'm still not completely following. is & an explicit partial application? 19:04:12 yes 19:04:23 f&(x,y,z) = lambda *args, **kwargs: f(x,y,z,*args,**kwargs) 19:04:35 in Braces, the function behind it would be 19:05:01 why not... 19:05:29 def partial(f, *args, **kwargs) { def do_it(*args2, **kwargs2) { return f(*(args+args2), **kwargs.update(kwargs2)) } return do_it } 19:05:30 or something 19:05:46 CakeProphet: Ohmygod I could allow arbitrary infix operators :| 19:05:53 (No that would be a bitch... but... tempting) 19:07:09 What are you crazy people talking about? 19:07:28 def decorator(f) { def wrapper(*args, **kargs) { (#insert introspection code to make sure we actually need to partial apply... otherwise#) def partial(*newargs, **kargs) { return f(*(args+newargs), **(kargs+newkargs)) } } } 19:07:33 Phantom_Hoover: ``The Revised Report on the Algorithmic Language Braces'' 19:07:42 ...rough draft of the actual code, but you get the idea. 19:07:47 no + on dicts 19:07:58 I think it's like update or whatever 19:08:00 What are Algorithmic Language Braces? 19:08:01 .update is mutating too :( 19:08:09 is that bad in this case? 19:08:22 CakeProphet: I think **foo copies so i guess not 19:08:23 Phantom_Hoover: It's a reference to The Revised Revised Revised Revised Revised Report on the Algorithmic Language Scheme 19:08:33 Braces is my abomination that gives Python wiiiings^Wbraces. 19:08:57 alise: yeah if you're passing in a dictionary explicitly with **-used-mid-call expression thing... it most likely makes a copy. I'll test, but it's easy to fix... there's a copy() method 19:09:17 Ah, Scheme. 19:10:11 >>> def test(**kargs): d["fail"] = True 19:10:11 >>> test(**d) 19:10:11 >>> d 19:10:12 Grr, & can't even be a regular op 19:10:13 {'fail': True} 19:10:19 can't do (x=y) in tuples 19:10:31 alise: so yeah just use the copy() method if kargs is not empty 19:10:49 Isn't & one of the ASCII characters that is completely invalid in Python? 19:10:51 No, wait. 19:11:00 Those are ? and $. 19:11:09 also use functools stuff because they make it easy to write wrapper objects that preserve all the docs/introspection info of the original function 19:11:32 http://www.vjn.fi/pb/p4667924367.txt ;; & definition 19:11:52 @compiler is the built-in block that says "compile and evaluate this /now/ in the compiler-code environment" 19:11:57 Which lets you use it in things like macros, infix definitions, etc. 19:11:58 ...but it's so ugly. I'd rather just use Python's existing partial application stuff. 19:12:00 This is all hypothetical, of course. 19:12:04 also use functools stuff because they make it easy to write wrapper objects that preserve all the docs/introspection info of the original function 19:12:07 Ah yeah that stuff 19:12:28 functools.partial(func[, *args][, **keywords]) 19:12:28 Return a new partial object which when called will behave like func called with the positional arguments args and keyword arguments keywords. If more arguments are supplied to the call, they are appended to args. If additional keyword arguments are supplied, they extend and override keywords. Roughly equivalent to: 19:12:31 Oh, it already exists! 19:12:44 ...oh, yes 19:12:47 functools.partial 19:12:55 http://www.vjn.fi/pb/p2957715959.txt 19:12:59 If it handled kwargs, it'd be perfect. 19:13:05 it doesn't? 19:13:13 I swear there's a Python-based thing that has extensible syntax. 19:13:14 Or was it Lua? 19:13:18 CakeProphet: (1,2,x=y) 19:13:20 can't do that in a tuple 19:13:23 and & is a binary op taking a function and a tuple 19:13:25 f & (1,2,3) 19:13:33 neaky. 19:13:35 *sneaky sneaky 19:13:51 | partial(func, *args, **keywords) - new function with partial application | of the given arguments and keywords. 19:13:59 yes but 19:14:02 http://www.vjn.fi/pb/p2957715959.txt 19:14:04 if THAT handled kwargs 19:14:05 it'd be perfect 19:14:34 my god... that was quick implementation 19:14:40 http://www.vjn.fi/pb/p2957715959.txt 19:14:40 If it handled kwargs, it'd be perfect. 19:14:42 Not quick, old :P 19:14:49 CakeProphet: oh you mean I implemented that? 19:14:50 hahaha no,. 19:14:53 this is just concept art 19:14:57 ...oh, okay. 19:15:03 well... what I would do 19:15:07 is silently implement it for all functions 19:15:11 Haskell-like semantics 19:15:15 with a decorator 19:15:30 for lambdas just wrap the expression inside the function call explicitly 19:15:43 ...but before you do that 19:15:50 since you seem to be taking this to a whole new level 19:16:02 I would refactor your design to be easier to extend. 19:16:12 Haskell's lambda thing should be .\ . That is all. 19:16:20 rofl... yes, that too 19:16:34 CakeProphet: http://www.vjn.fi/pb/p1928734847.txt 19:16:38 but if we try to fix everything that's wrong with Python we'll be doing this for months. 19:17:18 BRACES: It's like Python... but AWESOME. 19:17:26 I suggest we remove all the side-effects 19:17:34 rofl 19:17:40 yes, that'll be simple. 19:17:40 then add a hindley-milner type system & inferrer with typeclasses 19:17:46 we could name it after some logician 19:17:49 it'd be easy to curry in 19:17:51 hahaha 19:17:53 since we'd make function application "f x" 19:17:56 so... maybe Curry? 19:17:59 hmm... makes me think of indian 19:18:00 and since there's no side effects 19:18:03 we could lazy evaluate 19:18:07 oh, Schonfinkel really invented currying 19:18:09 but that name sucks 19:18:13 alise: go for his first name 19:18:14 wait, what was Curry's first name? 19:18:15 ooh! OOH! 19:18:17 It was Haskell! 19:18:20 yeah! 19:18:20 coppro: great minds think alike 19:18:21 Good name 19:18:22 :D 19:18:24 I'll form a committee 19:18:26 Let's start writing a report 19:18:47 I'll play email ches 19:18:52 OKAY!! 19:18:59 oerjan: DO YOU HAVE ANY CONTRIBUTIONS WE ARE WRITING THE HASKELL REPORT '98 19:19:05 OH YOU DO? WONDERFUL 19:19:23 alise: hmmm... so I assume prelude and body are macro parameters? 19:19:46 CakeProphet: yes -- "block prelude { body }" -> block_handler('prelude', 'body') 19:19:48 braces code in, braces code out 19:19:56 hmmm... okay. 19:20:08 i guess it would syntax-check prelude and body first 19:20:20 so that as long as your format can be plugged in with any syntactically-correct braces it'll work 19:22:09 alise: you'll probably want a) a few dispatch tables that map to objects that store state about individual declarations. A Block type would contain the source code, line information, possibly AST info, and a method that would take a structure representing your mid-parse source code and plug in its substition somehow 19:22:34 a Operator type would have a simple function. They'll likely inherit some features from a base class. 19:22:45 er... similar function 19:23:17 but yeah... you'd have these dispatch tables associating the statement name to those data structures... and then you'd just call the method to make them go. 19:23:17 $ python braces.py braces.py 19:23:19 whoops. 19:23:28 don't worry i have the files i need to reconstruct 19:23:56 Dammit, nested comments don't work 19:24:44 passing in the mid-parse-source-code/AST structure to the dispatch objects processing method would allow the dispatch code to call a method that lets it substitute its changes into the code in some sane way. 19:25:03 ...this is completely stream-of-consciousness planning though. I'm likely missing some detail. 19:25:26 there'd likely be several steps to compilation. 19:25:51 Yay, now it works. 19:26:01 Noooo it doesn't 19:26:20 alise: or... can we scratch my ideas and just make it a hack-together project? 19:27:14 * Sgeo just acquired a wizard's bit in LambdaMOO 19:27:19 ....rofl. 19:27:24 dude LambdaMOO is the shit. 19:27:33 Nested comments work! 19:27:37 sweet. 19:27:47 Sgeo: you evil man! give the poor wizard his bit back! 19:27:50 Braces 1.6: http://www.vjn.fi/pb/p3941535591.txt 19:27:53 how are they transla---oh, nevermind, they're comments, you just cut them out. 19:27:59 So much fun for 142 lines. 19:28:07 -!- Gracenotes has joined. 19:28:23 so yeah... I think I've got a pretty good idea of how to make implementing control-flow macros in a sane fashion. 19:28:27 Whoops 19:28:29 I left debugging stuff in 19:28:48 * pikhq waveth 19:28:48 alise, I think some Pythonistas want to kill you 19:29:22 Braces 1.7: http://www.vjn.fi/pb/p1222944752.txt 19:29:23 error: not a chance 19:29:23 Sgeo: Of course. 19:29:34 pikhq! 19:29:36 pikhq: http://www.vjn.fi/pb/p1222944752.txt 19:29:42 pikhq: This compiles to Python. Self-hosted, you know. 19:30:00 pikhq: Features: Braces! Semicolons! One-liners work because of this! (# Nested (# comments! #) #) 19:30:05 ah... I was wondering why my computer was being so slow. Chrome is taking up a lot of clock cycles for some reason. 19:30:11 CakeProphet: Don't I know you from somewhere? 19:30:12 alise, great, but how do you actually run it if you don't already have a Braces interpreter? 19:30:23 pikhq: yeah, I used to frequent this channel a few years ago. :) 19:30:28 Sgeo: Howsabout not being a lazy ass and doing s/}//, s/{/:/? 19:30:28 pikhq: ... 19:30:34 Ah. That'd do it. 19:30:37 or was that tongue-in-cheek? 19:30:37 :) 19:30:39 Sgeo: :-) 19:30:50 CakeProphet: Somewhat. 19:30:52 alise: ...so, can I hack ur source plz? 19:31:05 Or, you know, here's a binary: 19:31:09 http://www.vjn.fi/pb/p8823673854.txt 19:31:12 Runs on Python model CPUs. 19:31:14 alise: I'm much slower at implementing things. But I'd like to say I have pretty good design skillz. 19:31:21 CakeProphet: Sure... just make it elegant. 19:31:26 rofl. of course. 19:31:35 This IS production-ready code, after all... 19:31:41 is the latest link the latest source? 19:31:53 Yes. Not the Python one, the Braces one. 19:31:58 Use the Python one to recompile the braces one. 19:32:11 Sgeo: pikhq: Here's some of the debauchery you can achieve with this abominable program: http://www.vjn.fi/pb/p8786875755.txt 19:32:15 -!- sshc_ has changed nick to sshc. 19:32:30 I even refrained from linking to the compiled Python in #python so that people didn't use it unless they really wanted to :-) 19:32:42 pikhq: Note beautiful GNU indentation style now supported. 19:32:48 alise: ..... u_u can I just have a link to the latest Python "object" code? ;) 19:32:58 CakeProphet: Well, I won't accept edits to it. 19:33:01 I already linked to it. 19:33:14 CakeProphet: Edit this: http://www.vjn.fi/pb/p1222944752.txt then compile it to Python with this: http://www.vjn.fi/pb/p8823673854.txt 19:33:14 to test it 19:33:16 Wait, what's the indentation Emacs uses called? 19:33:16 ...oh, right. hmmm, okay. I'll just use to self-host so I can test 19:33:19 Phantom_Hoover: GNU. 19:33:22 It's Evil. 19:33:36 CakeProphet: Usage: python braces.py braces2.py 19:33:38 yes 19:33:40 Don't do >braces.py for obvious reasons 19:33:42 Also, you MUST use .bs 19:33:48 I will accept no other file extension :D 19:33:54 bullshit 19:33:58 Precisely. 19:34:05 The one in which while and for blocks are one level in from the for or while? 19:34:21 for (x) 19:34:22 { 19:34:24 ... 19:34:24 } 19:34:31 Yeah. 19:34:32 Two indents to the brace on its own line, then two additional indents to the body. 19:34:37 Gross, but Python now supports it! 19:34:39 alise: I'm going to go ahead and give it command-line functionality... you can hack the specifics of it to your liking but it'll be pretty straightforward 19:34:40 lol 19:34:46 Exception to the rule: Functions have their braces at column 0. 19:34:49 CakeProphet: it already has it 19:35:01 alise: oh... didn't read down. 19:35:18 alise: what if you want braces on the line with the closing paren? 19:35:26 coppro: that also works 19:35:32 oh ok 19:36:11 def hello() 19:36:11 { 19:36:11 print "Hello, world!" 19:36:11 return 2+2 } 19:36:11 def bar() { lozenge(); retard(); 19:36:11 violate_wizard(); 19:36:13 if x { y 19:36:15 z 19:36:17 }} 19:36:19 Valid Braces code. 19:37:08 alise: uh... is it safe to edit the braces file in a Python IDE? :3 19:37:35 CakeProphet: No 19:37:39 I suggest Emacs in fundamental-mode 19:37:44 didn't figure. Lack of syntax highlighting bugs me. But I'll adjust. 19:37:55 Well, actually 19:37:59 As long as the IDE doesn't reformat 19:38:01 ....never got comfortable with Emacs. I use gedit for non-specific hacking. 19:38:03 It should be fine 19:38:08 vimvimvim 19:38:11 Like, as long as it just syntax-highlights, and only autoindents on new lines 19:38:14 (which you can adjust) 19:38:34 most editors you can turn off autoformatting independently from highlighting 19:38:36 yeah, it's pretty simple. 19:38:45 gedit is great for just random shit. 19:38:53 so is vim 19:39:04 I can't use anything else now 19:39:07 I just use Emacs because it's a bit bloated piece of crap but I know a few key commands and tab complete the rest away 19:39:10 also I can't play games 19:39:14 It's sort of cozy, in the way that a really disorganised, small room is. 19:39:19 unless I rebind the keys to hjkl 19:39:21 coppro: you can play nethack 19:39:30 (or they're already bound that way to startO 19:40:10 alise: I love playing with extremely extensible software though... so I think if I became familiar with all the important key commands I'd love it. 19:40:30 but my computer is kind of slow... so I might wait till I get a new one. 19:40:35 It's a bit naff, Emacs, really, but then I'm a bit naff. 19:40:39 I'm not cool enough for vim. 19:40:56 -!- lament has quit (Ping timeout: 252 seconds). 19:41:06 Emacs has Nethack. 19:41:08 QED. 19:41:45 It has nethack-el 19:41:52 It actually communicates with nethack in s-exps 19:42:01 Yes, I know. 19:42:25 It is still a way of playing Nethack while ostensibly working. 19:42:39 God, I haven't played Nethack in ages... 19:43:26 I'm bad at Nethack. 19:43:44 I died in Sokoban, and then I kind of lost the will to play any more 19:43:54 I had a wand of death in that save, too. 19:44:51 And some other cool stuff. 19:45:12 I wonder if anyone has done timing to game Nethack's RNG 19:45:16 Yes. 19:45:22 Of course; it's open-source. 19:45:24 Cool. 19:45:41 Although the code is near-Lovecraftian in its sanity-destroying powers. 19:45:51 *Everything* is a preprocessor macro. 19:46:32 alise: so... I'm thinking about moving the brace removing code from the central parsing code... is this a bad idea? 19:46:51 CakeProphet: Yes 19:46:57 since blocks should receive their code as braced form 19:47:00 -!- hiato has joined. 19:47:03 because they return brace code 19:47:09 and python indented code doesn't work in braces 19:47:39 alise: well I was going to have it not do the textual substitution just yet and instead construct a fairly lightweight syntax tree. 19:47:50 Well, go ahead with anything. 19:48:20 * Phantom_Hoover looks at Nethack source. 19:48:40 Oh, I've gotten rid of it. 19:48:49 * Sgeo wishes LambdaMOO was more popular 19:48:50 Compiling it is also horrible. 19:49:00 As is reading it. 19:49:02 You have to edit various makefiles by hand 19:49:15 THe language is better than MUSHcode 19:49:22 [Almost any language is better than MUSHcode] 19:50:18 alise: question, is Braces intended to support regular style Python blocks? 19:50:27 * alise 's lip bleeds 19:50:29 CakeProphet: No. Not really. 19:50:36 alise: Good for it. 19:51:59 alise: what about currently? 19:52:20 CakeProphet: it doesn't 19:52:23 because it strips whitespace 19:52:31 because otherwise 19:52:32 } else { 19:52:32 -> 19:52:33 } 19:52:34 else { 19:52:35 -> 19:52:37 else: 19:52:41 -> wrongly indented for a 0-column "if" 19:54:26 ah okay... good. That makes things easier. 19:55:31 -!- hiato has quit (Ping timeout: 240 seconds). 19:57:04 alise, Python already has support for its own syntax tree. So I figured we could go ahead and use that, modify it, and then use the already existing standard lib stuff to reconstruct it back into a string 19:57:16 i guess 19:57:19 have fun :P 19:57:23 ...bad idea? :P 19:57:37 we're just inventing Metathon here 19:58:00 this will give us infix operators though. :D 19:58:10 Although Python's support for its syntax tree is... weird. 19:58:29 Yeah I'm about to play with it to see how its structured 19:58:55 -!- poiuy_qwert has quit (Quit: This computer has gone to sleep). 19:58:58 !haskell if if if if True then False else True then False else True then False else True then False else True 19:59:00 True 19:59:04 Wow, LambdaMOO's tutorial is way too long. 19:59:19 * oerjan whistles innocently 20:02:34 "Insert your peepee into her vag" --spam 20:02:42 How erotic! 20:03:24 -!- ws has quit (Quit: BitchX for president.). 20:03:42 ws was herE? 20:03:44 DAMN! 20:04:07 Please note that we intend that the topology of the LambdaMOO universe be 20:04:08 consistent: rooms should not overlap each other, going east through a door 20:04:08 should be reversable by going west, etc. Please keep this in mind while 20:04:08 building new areas. 20:04:10 BOOOORING 20:04:41 You should be able to do ANYTHING. 20:04:45 directed apathic graph 20:06:44 *apathetic doesn't scan right 20:07:15 How about going through a door and then back takes you into a room nearly identical to the previous. 20:07:35 EXCEPT THAT IT'S MOVED A SQUARE UP. 20:07:57 how elevating 20:09:20 alise, Python intermediate parse tree is ridiculous. 20:09:31 CakeProphet: Yes. 20:09:33 Why do this in Python? 20:09:36 I could have told you that :P 20:09:38 Phantom_Hoover: BECAUSE 20:09:38 Wait, stupid question/ 20:09:41 Yeah :P 20:09:42 Indeed. 20:09:56 What do you actually want to do? 20:10:32 Apparently the Common Lisp spec is 1300 pages long. 20:10:33 Make Python AWESOME. 20:10:35 What. 20:10:35 alise: the MUD I used to maintain could have exits that take you anywhere... they were restricted to compass directions though. :( It was a terrible piece of legacy C code. 20:10:35 Yes. 20:10:40 from like 20 years ago 20:11:00 Phantom_Hoover: FORMAT is actually a huge language in itself. It can loop over arrays, call arbitrary Lisp functions, and format as two kinds of roman numeral -- normal and archaic (four is IIII). 20:11:14 Yes, I know. 20:11:22 LOOP is also mad. 20:11:25 Yes. 20:11:32 for mat in array 20:11:45 Also, FORMAT has the thing that gives you the word form of a number. 20:11:55 Common Lisp is glorious excess and grandeur -- in fact, the most superlative of these a gigantic ball of mud has ever been. 20:12:02 alise: hmmm... using the AST might not be useful except later on. So I'll ditch it for now. 20:12:04 BUT IT'S IN AMERICAN FORMAT. 20:12:29 Phantom_Hoover: hey if american english was good enough for jesus... 20:12:45 Well, the problem with CL is that there's no in-language support for libraries. 20:12:57 So *everything* is in the core language. 20:13:17 alise: I'd use the AST once we have legal Python code maybe, to walk the tree and implement infix operators or something. 20:13:23 but that might not even work either 20:13:26 so yeah, ditching that. 20:13:28 ASDF is the de-facto standard, but it's also hideously complex like CL itself. 20:13:39 -!- zzo38 has joined. 20:13:39 -!- ais523 has joined. 20:13:42 CakeProphet: What we basically need to realise is that the actual Python code we want to leave alone 20:13:43 ASDF still confuses me. 20:13:54 Like we want to write it as a BNF with some thing that's just plain text except it avoids delimiters and handles strings itself 20:14:02 And we use whenever regular python code would be 20:14:03 Sort of thing 20:14:05 Hi ais523 20:14:10 ais523: I made Python likeable for you 20:14:10 hi 20:14:10 And zzo38. 20:14:18 alise: hmm, how? 20:14:21 sec 20:14:22 Phantom_Hoover: at least it's easy to type 20:14:22 DON'T TELL HIM 20:14:23 guys 20:14:26 ais523: http://www.vjn.fi/pb/p1222944752.txt 20:14:30 Click and bask in the glory. 20:14:33 I think this is the first time I've actually used workspaces in linux. 20:14:44 it's helpful when you have four million windows 20:14:46 alise: I filter links... 20:14:56 www. vjn.fi/pb/p1222944752.txt 20:14:59 ais523: did that appear? 20:15:05 the Internet became so much more enjoyable when I cut the Web off from the rest 20:15:05 EVERYONE STOP TALKING. 20:15:07 and yes 20:15:11 ais523: open and bask 20:15:12 I need to actually do stuff. 20:15:21 Phantom_Hoover: you can /part 20:15:41 -!- Phantom_Hoover has left (?). 20:16:07 alise: you added braces to Python? 20:16:25 ais523: And removed the colons. And added properly-working semicolons! And (# nested (# comments! #) #) 20:16:33 And it's written in itself! 20:16:35 WHAT 20:16:35 MORE 20:16:36 COULD 20:16:37 BE 20:16:37 DESIRED 20:16:46 alise: infix operators 20:16:47 perfect 20:17:07 amazingly, when seeing it I thought "that looks like Python" and didn't even notice the braces 20:17:14 -!- coppro has quit (Remote host closed the connection). 20:17:21 I only figured out it was adding braces to Python by trying to work out what it did 20:17:24 ais523: some more desirable not-quite-links: 20:17:32 -!- Halph has joined. 20:17:33 www. vjn.fi/pb/p8786875755.txt debauchery possible with this beautiful gift to humanity 20:17:43 -!- Halph has changed nick to coppro. 20:17:48 ais523: note beautiful ``GNU indentation style'' 20:17:56 too clever, by Halph 20:18:11 ais523: here is a bootstrapping binary for Python-model CPUs: www. vjn.fi/pb/p8823673854.txt 20:18:34 alise: wow, you've been busy 20:18:36 ais523: and finally, here's a look at what's to come when we complete the project of making Python Awesome: www. vjn.fi/pb/p1928734847.txt 20:18:41 -!- huldumadurin has quit (Ping timeout: 276 seconds). 20:18:44 was this all done on the weekends, or did you figure out a way to do it over the week? 20:18:45 Yes indeed, infix operators, and custom control structures! 20:18:50 ais523: I've just done it today... 20:19:02 pretty impressive 20:19:16 at this rate, you'll end up inventing Perl 20:19:21 that's what I said 20:19:32 we kept coming up with ideas that just brought it that little bit closer to perl 20:19:46 Now finally Python has some more useful commands 20:20:00 haha 20:20:04 zzo38: best praise i could receive 20:20:18 that infix/block thing isn't coded yet though 20:20:21 CakeProphet is currently having a go at it 20:21:49 Why does the ".dmg" file contains a lot of stuff, when trying to open it with 7-Zip first I need to extract the .dmg file and then .hfs and then .pax 20:21:56 There is a library in LambdaMOO 20:22:03 People are able to check out books 20:22:17 There's also a book listing all check-outs 20:22:20 There are way too many 20:22:26 Including books left in $nothing 20:22:40 zzo38: sounds like it's an image of an OS X disk 20:22:40 Which is, quite frankly, scary. I think they're gone forever 20:23:05 the .pax files would be on the disk's file system, the .hfs file /is/ the file system, the .dmg file is the disk itself, and the .7z file would be compressing that 20:23:07 Now do you have to program LambdaMOO to recover books 20:23:41 7-Zip documentation doesn't mention .pax files 20:23:52 zzo38: they're backwards-compatible with .tar files 20:23:52 It mentions .dmg and .hfs 20:23:56 braces - straightening out python's bite 20:24:05 try renaming it to end .tar and seeing if it works 20:24:19 Well, it worked when it was .pax 20:24:28 I did manage to get the files I needed 20:24:40 zzo38, I should be able to locate as many of the books themselves and return them to me 20:24:57 Or actually, I think there's a go_home command 20:25:27 the .pax files would be on the disk's file system, the .hfs file /is/ the file system, the .dmg file is the disk itself, and the .7z file would be compressing that 20:25:29 The .dmg when extracted contains a file called "2.hfs" and it seems to contain some sort of package files. I didn't need any package files however, just extracting the .pax contained what I needed 20:25:32 7zip does non-7z 20:25:43 alise: I know, that seems to be confusing zzo38 20:25:50 nope 20:25:59 you were confused by saying the whole thing would be wrapped in a 7z 20:26:01 zzo38: .dmg is a (possibly-compressed) OS X disk image 20:26:10 so it'll have been: wrapping, compression, file system 20:26:11 alise: OK, agreed that the whole thing doesn't need to be wrapped 20:26:15 The file I was looking for was not available in the other format other than .dmg format, but the files in the .pax were able to be used on cross-platform 20:26:44 I know it is a disk image, when downloading from source-forge it said so in the MIME type 20:28:59 I have written only a few program in Python, for solitaire card. (I don't plan to use Python for much else, however) Someone told me Python codes is easy to hack, I think they are correct, I was able to program in these codes without knowing much about Python, so I think they are right 20:29:50 However, I have at the start of each file "game_id=200002" and stuff like that but is there way to make it set it automatically based on the file-name of the codes, instead? 20:29:51 alise: you use while loops quite well. I generally don't end up using them when I program in Python. 20:30:00 -!- Phantom_Hoover has joined. 20:30:08 Like, if the file is called "200002.py" or "200002.pyc" it should set "game_id=200002" 20:31:02 -!- hiato has joined. 20:31:32 I have successfully returned a porn magazine to its rightful location 20:31:49 Gaspeth 20:31:59 zzo38: __file__ or something iirc 20:32:06 zzo38: it's really bad style though, maybe even deprecated 20:32:11 "Cheese it, the cops!" squealed the large-hipped hussy as the vile midget defiled her globular knockers and drove his rapidly dwindling joy stick into her odiferous navel. 20:32:11 CakeProphet: I'd prefer to use a for and a smarter generator, but eh 20:32:22 Python doesn't have many control structures 20:32:27 alise: Why is it bad style deprecated 20:32:31 Sgeo: what. 20:32:37 It's a magical porn magazine. Reading it gives different stuff each time 20:32:39 zzo38: Because it can break things if you move the file, I guess. 20:32:43 Sgeo: Ah. 20:33:03 alise: I wanted to use it so that you can load the different card-games files by renaming them instead of changing each code 20:33:33 So you can put the files in plugin directory 20:33:39 * Sgeo reads the code for the magical scroll he's using that tells him which books were checked out of the library 20:34:07 Otherwise someone else can write the plugin with the same game_id numbers and it can be conflicted 20:34:13 That's why 20:36:23 -!- kar8nga has joined. 20:36:31 Oh, sure, when I'm borrowing something, such as a magical list, it's FULLY CAPABLE of flying home 20:37:56 "Research students still regularly visit the MOO (often sent there by their professors) and start asking users about these events. They are surprised to find that sexual actions are currently used as a form of affectionate greeting." 20:38:14 You cannot escape the fundamental nature of the internet 20:38:24 alise: yeah a generator would be nifty... but ultimately to implement the generator you'd have to use the same control structures. Or am I wrong? 20:38:49 CakeProphet: you would. unless you used an iterator to emulate a while 20:39:08 like, __next__ raises that end of iterator error if not-condition 20:39:14 otherwise it yields, say, None 20:39:15 then 20:39:22 for _ in While(lambda: condition) { ... } 20:39:24 voila! 20:39:25 >:D 20:39:43 News just in, GvR is removing while from Python 4 because it encourages ugly iterating code and can be emulated with for anyway 20:39:43 Sgeo: you're getting awfully close to I Put On My Wizard Robe And Hat territory, here 20:41:53 the idea of sexual actions as an affectionate greeting is hilarious 20:41:53 Of course the stuck books aren't magnetic 20:41:58 "Hi there! *sucks your cock*" 20:43:48 Feynman was a constructivist: "What I cannot create, I do not understand." :P 20:44:34 -!- hiato has quit (Quit: underflow). 20:45:41 ais523: so, you know unix first edition 20:45:49 not really 20:45:55 using it doesn't mean you know it 20:46:00 you haven't used it 20:46:21 ais523: have you? you have only used later ones. 20:46:31 http://code.google.com/p/unix-jun72/ "The unix-jun72 project has scanned in a printout of 1st Edition UNIX from June 1972, and restored it to an incomplete but running system." 20:46:33 ah, I meant the first streak of editions 20:46:36 "Userland binaries and a C compiler have been recovered from other surviving DECtapes." 20:46:44 system 1 or whatever 20:46:46 ais523: You can try 1st Edition UNIX with the very same emulator. 20:46:47 UNIX version numbering is confusing 20:46:50 alise: heh 20:46:53 does it even work? 20:46:55 ais523: Yes. 20:47:04 http://code.google.com/p/unix-jun72/source/browse/trunk/Readme 20:47:07 Man pages: http://man.cat-v.org/unix-1st/ 20:47:14 NAME sin, cos -- sine cosine 20:47:15 SYNOPSIS jsr r5,sin (cos) 20:47:15 DESCRIPTION The sine (cosine) of fr0 (radians) is returned in fr0. Thefloating point simulation should be active in either floating 20:47:19 Yes, it gave library examples in assembly. 20:47:25 heh 20:47:31 that makes sense, actually 20:47:35 I was expecting "wow I'ma try this", not "heh" :( 20:47:46 The C compiler from 2nd Edition UNIX is also installed and works, but the 20:47:46 language is a very early dialect of C. The closest reference to the language 20:47:47 at this point in time is this, but it is probably 2 years too late: 20:47:47 http://cm.bell-labs.com/cm/cs/who/dmr/cman74.pdf 20:47:51 I don't think 1st Edition /had/ C 20:48:06 There's no cc in the scanned man pages, and the library examples are in asm 20:48:14 http://man.cat-v.org/unix-1st/1/for had fortran though 20:48:18 http://man.cat-v.org/unix-1st/1/b and B 20:49:09 http://man.cat-v.org/unix-1st/6/basic basic :) 20:49:23 http://man.cat-v.org/unix-1st/1/bas another basic 20:51:39 alise, instead of spending time in a shitty 3d environment, I'm now spending time in a shitty text environment 20:52:14 Sgeo: :D 20:52:22 i should make my own moo (with blackjack and hookers) 20:53:28 alise: I forgot. Did you say you were going to make an empty brace include a pass? 20:53:42 CakeProphet: Yes, {} should be pass. 20:54:01 a lone semicolon should also be pass? 20:55:28 alise: wow... you know I always had trouble figuring out how to make a parser generate useful information about unterminated strings and paren expressions 20:55:38 but... looking at this source code... it's now very obvious. 20:55:48 CakeProphet: you're welcome :P 20:55:49 if you're in a string, and the source is done, it didn't end. :P 20:56:02 CakeProphet: Of course, you should maintain a stack with (line,col) positions so that the errors can complain where the opener is. 20:56:08 ais523: hmm... no. 20:56:23 it is in C 20:56:29 I mean, a semicolon that's otherwise redundant 20:56:32 like if(a==b) ; 20:56:41 yes 20:56:43 but not here 20:56:47 since ; is strictly newline-and-indent 20:56:52 ah, ok 20:56:54 since you can't tell between 20:56:55 if foo ; 20:56:56 and 20:56:58 foo(bar) ; 20:57:00 without mor complex analysis 20:57:01 so if a==b ; {} 20:57:06 is legal? 20:57:11 that looks crazy 20:58:08 no 20:58:10 that translates to 20:58:12 if a==b 20:58:15 : 20:58:20 or, well 20:58:21 it'd change to 20:58:23 if a==b 20:58:23 : 20:58:26 pass 20:58:26 now 20:58:31 ah 21:02:10 -!- lament has joined. 21:06:36 It takes forever to find the fixed point of this optimisation function on LostKng.b. 21:06:43 Yes. 21:06:49 pikhq: Why aren't you adding a backend to that other one? 21:07:22 Incidentally, it helps to make the optimisation function actually recurse beyond the first loop. 21:07:31 alise: Because I'm not. 21:07:40 pikhq: But I want to see it :-( 21:07:43 It would be amazing. 21:08:43 -!- UppunudLamppu has joined. 21:11:12 Maybe ImageMagick should have a mode to load block JPEG format, to load JPEG without fully decompressing it, so that it is losslessly, such as: convert blockjpeg:1.jpg blockjpeg:2.jpg 21:11:14 -!- Oranjer has joined. 21:11:37 It does actually possess lossless JPEG transformations. 21:14:36 But according to the document there is some problems with it? 21:14:45 alise: I'm worried about whether or not this is just doing an infinite loop. 21:14:55 Though, it *is* just LostKng. :P 21:14:58 pikhq: :P 21:15:10 It worked on hanoi.b just fine, so... 21:15:24 (hanoi.b is, obviously, also massively large. 21:17:43 alise: mind if I use camel case? 21:17:53 CakeProphet: yes. 21:18:02 underscores are so time consuming. :P But okay. 21:18:17 I will end up rewriting half your code anyway :-P 21:18:31 CakeProphet: BTW, I strongly suggest the extensibility is done via @-commands. 21:18:39 Which go where a regular statement would -- ; @foo is acceptable, for instance. 21:18:56 @compiler { ... } should compile & run the enclosed braces code and put the variables, etc. it binds into some internal hash table. 21:19:04 alise: I discovered a massive optimisation on the optimiser. 21:19:12 alise: Yeah I'm just devising a framework and reworking the parsing code so it carries more information around. 21:19:16 Then the regular "@infix a_function_in_compiler_space" where it's called with both arguments 21:19:20 Make it work by both recursing over the whole thing *and* fix-pointing. 21:19:38 and "@block a_function_in_compiler_space" makes "block foo { bar }" call block_handler('foo', 'bar') -- which then returns braces code, which is used in place of the block 21:19:43 pikhq: ha 21:19:46 Compiling hanoi.b takes 1 second instead of 20. 21:19:55 pikhq: there has to be some "proper" way to do optimisation. 21:20:17 alise: XD 21:20:26 I just realised what I just said. 21:20:27 Fine. 21:20:31 pikhq: ? 21:20:32 *I made the optimiser faster*. 21:20:34 pikhq: I don't get what's funny :P 21:20:42 "Optimised the optimiser!" 21:20:43 oh 21:20:44 xD 21:20:52 pikhq: My suggestion is thusly: fixpointing over the whole thing is slow, right? 21:21:14 So divide it into an even number of pieces; fixpoint all of those, and whenever two adjacent pieces become fixpointed, merge them into one piece and fixpoint them. 21:21:16 LostKng now takes 2 seconds to compile. And longer to assemble. 21:21:19 Repeat until there is only one piece; fixpoint that. 21:21:25 This will work for arbitrary-sized programs. 21:21:37 The theory is that after a block is fixedpoint, only the places where it connects to adjacent pieces will need optimisation. 21:21:44 So this is edge/"seam" optimisation after chunk optimisation. 21:21:45 alise: Now, it finds the fixed-point of "Optimise the entire parsed program". 21:21:49 True. 21:22:03 Suboptimal, but it handles LostKng in 2 seconds. 21:22:07 This is fast enough, IMO. 21:22:22 Does it optimise multiplications yet? 21:22:23 for loops? 21:22:28 Not yet. 21:23:05 nasm takes minutes to *assemble* the output. 21:23:15 I get the feeling it dislikes thousands of labels. :) 21:24:39 But hey, it works. :) 21:25:20 How quick? 21:26:08 5 minutes to assemble LostKng. 21:26:24 *Massive* amount of labels. 21:27:19 pikhq: The really interesting thing about an optimising BF compiler is that it's more of a decompiler. 21:27:35 A bunch of low-level instructions to a printing of "Hello, world!". A bunch of low-level instructions to a for-loop doing a multiplication. 21:27:37 etc. 21:29:48 doop 21:30:55 pikhq: you know esotope's intermediate language? 21:30:58 sort of a half-assembly half-bf thing 21:31:00 that's a good idea. 21:32:24 alise: Yeah, if I do much more on this, I'll probably want to implement something like that. 21:32:35 It'd certainly make the code generator function cleaner. 21:35:30 alise: that's cool... (about the BF compiler) and makes sense. 21:35:44 alise: you have a set of very low level operations and need to convert them higher-level constructs. 21:35:50 +to 21:37:53 is there a command line utility that lets you window multiple command lines into one desktop environment window? 21:38:22 I'd love to have bash in the same window as this IRC client. 21:45:33 http://sprunge.us/aUBM 21:46:06 I should really clean up the comp function. 21:48:47 Sum up, this time without the letter 's'. 21:49:26 back 21:49:49 CakeProphet: a tabbed terminal emulator. 21:49:50 or screen 21:50:02 THAT HAS THE LETTER S. 21:50:17 Phantom_Hoover: Your mother. 21:50:26 Hmm. 21:50:28 data Syscalls = Read | Write | Indeterm deriving Eq 21:50:29 Indeterm? 21:50:44 -inate 21:50:45 Indeterminite which was the last syscall used. 21:50:47 "Sum up what you've been doing." "Your mother." 21:50:48 -!- MigoMipo has quit (Read error: Connection reset by peer). 21:50:52 pikhq: Weird. Why? 21:51:15 I shall have to ask for a Haiku this time. 21:51:16 alise: Came after a loop, and I've not bothered doing enough flow analysis to tell. 21:51:20 s/this/next/ 21:53:25 IM is a general raster image processor, for modifying images. It will not do lossless JPEG modifications. But now I invented a idea of the way in which it can do lossless JPEG modifications. The image is formatted such that moving blocks around and flipping/rotating blocks will do the same to the image, while other transformations might not work in the same way 21:53:29 I want a balanced programming language 21:53:58 possibly funge-like 21:53:58 coppro: A balance programming language, for what kind, like, for low-level or high-level or script or whatever?? 21:54:14 Balanced? 21:54:15 What exactly is a "balanced programming language" anyways? 21:54:24 in tune with the universe 21:54:25 O, you want funge like 21:54:26 OK 21:54:32 also it has to use balanced ternary 21:54:52 I wonder if anyone invents a funge-like with balanced ternary 21:54:55 Make one! 21:55:33 coppro: balanced language would always have same number of offs and ons 21:55:38 so the only information is carried in /where/ they are 21:55:48 the = + and - operators will be the tritshift-left, tritshift-left-and-increment, and tritshift-right-and-decrement operators 21:55:57 zzo38: Do funges use bitwise, though? 21:56:18 Literals seem like the only thing that would be affected. 21:56:30 Also, quarter-imaginary > anything else. 21:56:58 no, fibonacci-imaginary 21:57:10 Would that even work? 21:58:27 why not :P 21:58:33 Phantom_Hoover: I suppose if you use INTERCAL operators it can be affected how the bits are stored like?? 21:58:35 I'm sceptical, though. 21:59:13 lol, i is 10.2 in quarter-imaginary 21:59:14 intuitive 21:59:19 hmm... also, you shouldn't be able to cross wires directly. Rather, the < operator, if confronted with an IP coming from the right, will split it into two vertical IPs 22:00:10 err, from the left 22:00:15 alise: What would the base be for fib-imaginary? 22:00:37 Phantom_Hoover: What WOULDN'T be the base. 22:00:46 also vertical IPs should need to use | for constants, - is the reflection operator (and vice versa) 22:00:51 * coppro is going crazy at this point 22:00:57 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12... 22:01:12 Well 22:01:22 Negafibonacci works 22:01:28 Er 22:01:29 I mean 22:01:30 Right 22:01:31 Phinary 22:01:35 is base phi 22:01:41 now quarter-imaginary = 1/4 imaginary = base 2i 22:01:42 so 22:02:03 base ei 22:02:14 n imaginary = base 1/2n i 22:02:30 phimaginary = base 1/2phi i 22:02:35 = base 0.30901699... i 22:02:45 Highly unintuitive. 22:02:50 Combine rules of quarter-imaginary and http://en.wikipedia.org/wiki/Golden_ratio_base. 22:02:51 Q.E.D. 22:02:59 maybe 2phi i would be better 22:03:08 Or just phi i? 22:03:16 what is 100i in base 10i? 22:03:27 coppro: thingy. 22:03:43 thanks for htat 22:03:45 *that 22:03:58 would it have to be a0? 22:05:09 (since 100 would be 100) 22:05:15 CakeProphet: Any luck? 22:05:40 coppro: does quarter-imaginary work like that though? 22:06:21 alise: like how? 22:06:28 that 22:06:30 (and you mean base 0.25i?) 22:06:34 If you use lossless JPEG you might convert to grayscale as: blockjpeg:1.jpg -channel GB -evaluate Set 0 blockjpeg:2.jpg (or, something similar, at least) 22:07:01 bleh, lossless JPEG. 22:07:10 While flipping is just: blockjpeg:1.jpg -flip blockjpeg:2.jpg 22:07:56 alise: yeah. I code slowly though. nowhere actually implementing anything yet. But I should having something done by the end of today. Got anything you want to change? 22:08:48 alise: if you mean weird, yes 22:08:55 -!- dbc has joined. 22:09:01 CakeProphet: Yes I do have a request 22:09:05 CakeProphet: http://why.usesthis.com/images/interviews/why.4.jpg 22:09:30 Lossless scaling: blockjpeg:1.jpg -dctscale 50% blockjpeg:2.jpg 22:09:40 It should allow things like that 22:09:45 (The entire set of brilliance: http://why.usesthis.com/) 22:10:25 "I sip from a peach-colored ring mottle glass lo-ball. the ice cubes I use are semi-circular. and the ice tray itself is a misty blue plastic. my freezer allows 3 trays vertically. the strength of the freezer goes up to 5, but I am personally satisfied with leaving it at 2." 22:10:32 in a what-programs-do-you-use interview 22:11:43 "my favorite software ever is Windows XP, because they colored it to look like the start menu was made from freshly-mowed grass and montana sky! this opened new possibilities for hacker landscapers to send orchards to each other as e-mail attachments. (an entire orchard is 130k if you put it in an APPLES.BIN file.)" 22:11:54 "[...] the only other software I use besides windows xp is kjofol." 22:12:04 That doesn't even seem to make a good sensible 22:12:39 alise: quarter-imaginary allows the use of i. If you used i in base i, 100i would be 100i, but 1000i would be 1000. Weird 22:12:58 Also, neat fact: in base -1+i (or -1-i, which is the same), the set of numbers that share the integer part of a number is a fractal 22:13:01 zzo38: It's even better because it's in why's handwriting! 22:13:05 zzo38: He's crazy but I still miss him. 22:13:27 He mocked everyone mercilessly but never seemed to be unfriendly, and always had something fun/interesting/cool in the world of programming to point out. 22:16:57 -!- kar8nga has quit (Remote host closed the connection). 22:18:07 "I am using a Lemote Yeelong, a netbook with a Loongson chip and a 9-inch display. This is my only computer, and I use it all the time. I chose it because I can run it with 100% free software even at the BIOS level." --rms 22:18:18 this guy uses a shitty chinese netbook just to get 100% open source 22:18:19 god bless'im 22:18:46 Why the hell do you need an open BIOS? 22:18:49 "Until I can have them both, freedom is my priority. I've campaigned for freedom since 1983, and I am not going to surrender that freedom for the sake of a more convenient computer. 22:18:49 I do hope to switch soon to a newer model of Yeelong with a 10-inch display." 22:18:50 Phantom_Hoover: because he's rms 22:18:54 it would be wrong for him not to 22:19:05 But he can't even change it? 22:19:24 FFS does he want the HDL sources for the processors? 22:19:26 alise: .....was that a request? 22:19:38 it seemed more like spam to me. ;) 22:19:38 -!- kar8nga has joined. 22:19:50 CakeProphet: it's not my fault why is (well, was) a beautiful artist. 22:20:02 What happened to him? 22:20:36 Phantom_Hoover: every single account and internet prescense he owned save, uh, I think an almost-empty vimeo account, were completely wiped out overnight. By him. 22:20:58 His GitHub account with all his code, his current & discontinued blogs, his Twitter account, his YouTube account, ... everything. 22:21:02 Who was he? 22:21:03 Disappeared, just like that. Internet suicide. 22:21:06 Phantom_Hoover: Nobody knows. 22:21:16 Also, that takes dedication. 22:21:23 Sure, he went to conferences occasionally and played silly songs about Ruby with his band... 22:21:30 Nobody knew his name though, not for sure. 22:22:05 I also think ImageMagick should support audio formats, which if loaded, load as a image with height=1. You can have red channel = left channel, blue channel = right channel. And use -density operator to set the sample rate. -flop to reverse a sound. Some of the other ImageMagick operators are also useful for audio 22:22:10 It's a real shame because he was one of my heroes basically. 22:22:20 And he had a lot of wonderful programs and code that he can't give his wonderful touch to any more. 22:22:25 And I'll always miss hackety.org. 22:22:46 I have a feeling he's not going to come back -- and if he does it won't be the same personality, so we'll never know. 22:23:16 Do you think some of ImageMagick operators are useful for audio files, which ones do you think are best? 22:23:46 zzo38: Really bad compression of music by using JPEG! 22:24:06 Yes, that would certainly be bad for music, JPEG is meant for photographs 22:24:18 Although, perhaps someone should try it just to see how bad it is, in fact 22:24:37 Someone has 22:24:41 It sounded as awful as you'd expect 22:24:45 Yes 22:24:46 oerjan, yeah D&D was nice 22:24:46 -!- zzo38 has quit (Quit: zzo38). 22:24:46 night 22:24:58 Wait, what? 22:25:40 * Sgeo is magically teleporting books from nowhereland to the library 22:25:59 the library is awesome 22:26:02 do not mock the library 22:26:40 Except for all the non-magnetic books 22:28:36 "Even functions are functions! I invented this concept. Just like Steve Jobs will one day." --why 22:28:52 I fail to get it. 22:29:04 I assume that there is context. 22:29:29 Incidentally, first-edition UNIX is weird. 22:30:22 [[Heres a case where a list is being called as a function. Yes, everything is a function! We could also have called: foods (index=2). 22:30:22 Strings, tables, numbers are also functions. The following returns the 3rd character of the string. 22:30:22 "ヘ(^_^ヘ)(ノ^_^)ノ" (2) 22:30:22 Even functions are functions! I invented this concept. Just like Steve Jobs will one day.]] 22:31:23 Looks suspiciously Japanese. 22:31:49 Any clue on why he disappeared? 22:32:16 pikhq: Well, Ruby is Japanese. 22:32:19 Phantom_Hoover: who knows. 22:32:31 My guesses: 22:32:52 - People were starting to poke at his identity, which he probably didn't like 22:32:57 So it may well have been the Illuminati? 22:32:57 - Some of his last few tweets: 22:33:01 programming is rather thankless. you see your works become replaced by superior works in a year. unable to run at all in a few more. 22:33:01 if you program and want any longevity to your work, make a game. all else recycles, but people rewrite architectures to keep games alive. 22:33:02 ahh im just so totally suspicious of anyone who claims to love progress but stridently defends the status quo!! 22:33:09 I just found evidence that LambdaMOO is a Myst game 22:33:14 alise: That it is. 22:33:38 --why 22:34:28 What is the point of Ruby? 22:34:53 to be a new-generation dynamic language that isn't as strict as Python... essentially. 22:34:53 It's so flexible it's like asbestos dust! 22:34:55 *fibers 22:35:07 **whatever 22:35:09 strict in terms of syntax 22:35:23 Python and Ruby originate from the same time. 22:35:27 Ruby is actually matzlisp. 22:36:04 matz...? 22:37:19 matz is the creator of Ruby. 22:37:47 Ruby was originally called matzlisp; he plugged in a Smalltalk-style object system and reworked the syntax. And made lambdas uglier, so he added "blocks" which are like limited lambdas that you can only have one of per function call. 22:38:01 It's not /that/ bad a language. 22:38:13 incidentally 22:38:19 Larry Wall -- Christian 22:38:26 Matsumoto Yukihiro -- Mormon 22:38:27 COINCIDENCE? 22:38:29 I think not. 22:39:23 -!- Oranjer has left (?). 22:39:33 NEEDZ MOAR DATA 22:39:57 What is McCarthy? 22:42:05 Which McCarthy? 22:42:16 Lisp McCarthy. 22:42:25 Phantom_Hoover: Probably agnostic/atheist. 22:42:34 Religious people usually object to the idea of AI. 22:42:37 Especially back in the 70s. 22:42:43 pikhq: YOU DON'T KNOW MCCARTHY? HOW UNAMERICAN 22:42:46 And in the US. 22:43:15 I want to hug McCarthy and other people :( 22:43:18 THEY WILL DIE SOON THAT IS NOT GOOD 22:43:19 alise: True, but they'll be laughing at us when the robots take over. 22:43:23 oerjan: I find it amusing that it was called the "Committee on UnAmerican Activities". 22:43:43 As though they wanted to be *doing* unAmerican activities. 22:43:46 Were hyphens communist? 22:43:53 Phantom_Hoover: Yes. 22:45:09 preEmptive. 22:45:23 the King's English book suggested that would be good instead of hyphens iirc, but said it was too radical to adopt 22:49:10 CamelCase is generally ugly. 22:49:19 Particularly when handwritten 22:49:58 CamelCase is indeed ugly. 22:50:54 I prefer the diaeresis: "premptive". 22:50:55 !haskell putStrLn "\001swats Phantom_Hoover and alise -----###\001" 22:51:00 oops 22:51:03 ACTION 22:51:12 !haskell putStrLn "\001ACTION swats Phantom_Hoover and alise -----###\001" 22:51:13 * EgoBot swats Phantom_Hoover and alise -----### 22:51:30 !haskell putStrLn "\nQUIT :butt" 22:51:35 preemptive aww. 22:52:06 !haskell putStrLn "\001QUIT :butt\001" 22:52:26 Quit butt. 23:02:04 -!- Sgeo_ has joined. 23:03:42 -!- Sgeo has quit (Ping timeout: 265 seconds). 23:05:23 -!- huldumadurin has joined. 23:06:03 huldumadurin. 23:06:05 what a name 23:06:41 Hehe. 23:06:47 It's Faroese. 23:06:54 ah. 23:06:54 -!- kar8nga has quit (Remote host closed the connection). 23:07:03 I want to know that language now. 23:07:11 Faroese is awesome. 23:07:19 or: Føroyskt er ógvuliga kul. 23:07:50 So, who are you then? 23:08:01 huldumadurin: i thought you were icelandic, was just about to ask you about Besti flokkurin 23:08:23 Just a random Faroese 17-year-old with a newfound interest in Esoteric Languages. 23:08:27 oerjan: ? 23:08:35 huldumadurin: Well, that's certainly an interesting combination. 23:09:02 I'm an English 14-year-old with a long-established interest in esoteric languages. 23:09:04 Hi. 23:09:09 Hi. 23:09:14 alise: a joke party won the local elections in iceland's capital 23:09:19 Also, I'm male despite the nickname. Long, and ultimately pointlessly boring, story. 23:09:23 oerjan: ha! 23:09:24 Hehe. 23:09:30 oerjan: what's their platform 23:09:30 I'm a Scottish 1X year old with a semi-long history in esolangs. 23:09:53 alise: some serious and some silly 23:10:02 oerjan: how boring 23:10:11 1X year old; so assuming X is 10 and this is base 11... 23:10:19 you're 21 years old. 23:10:30 I still wish that Mad Cap'n Tom had won. 23:10:31 http://news.bbc.co.uk/2/hi/10194757.stm 23:10:31 what do the dozenal society guys use? 23:10:33 one of them is X 23:10:40 alise: No. 23:10:42 "Key pledges included "sustainable transparency", free towels at all swimming pools and a new polar bear for the city zoo." 23:10:45 "the best" xD 23:10:50 A case can also be made for 9. 23:11:25 Indeed, you are nine years old 23:13:01 "The party also called for a Disneyland at the airport and a "drug-free parliament" by 2020." 23:13:15 alise: Yes. And let that be the end of it. 23:13:15 yes :D 23:13:25 hm when did i first start coming here 23:13:27 when i was 12 i think 23:13:35 with a brief stint when 11, perhaps 23:13:37 ... 23:13:48 :3 23:13:50 i am making you feel old presently. 23:14:00 I'm not actually sure if I had broadband when I was 11. 23:14:13 'cuz you need broadband to access irc (ok but i did) 23:14:54 I didn't have the internet at all until I was 8. 23:15:04 * oerjan is pretty sure he didn't have broadband when he was 11. 23:15:16 And before that we only had a crappy Windows machine 23:15:25 seeing as that was in '81. 23:15:31 oerjan: They didn't *have* broadband when you were 11. 23:15:55 Phantom_Hoover: quite possibly not 23:16:15 I got internet at 5 or 6 or something 23:16:22 This may explain why I am fucked up! 23:16:47 -!- T-T has joined. 23:16:54 I didn't actually learn to program until I was 13. 23:17:31 Well, I learnt to do basic output when I was 12. 23:17:33 8-10 or something was my first steps 23:17:37 then i started properly programming at like 12 23:17:40 alise: some 10 years from now it will be discovered that everyone who starts internet that young goes insane when they grow up 23:17:48 but i still think of my programming self one or two years ago as quite immature... 23:17:48 my kids aren't gonna learn "mama" or "papa" as their first words 23:17:51 they are gonna learn "hello world" 23:17:53 oerjan: I am already insane! 23:17:55 oerjan: the state proves it 23:17:57 And then because of my school's insane curriculum I didn't touch one of their computers for a year. 23:18:02 myndzi: please don't have kids :D 23:18:05 haha 23:18:08 alise: well you're precocious [sp] 23:18:16 \o. 23:18:16 oerjan: WHYEVER WOULD YOU SAY THAT 23:18:20 \o/ 23:18:20 | 23:18:20 /`\ 23:18:25 i try to stay on the asshole side of things 23:18:26 if i can 23:18:28 *when i can 23:19:13 Also, I learnt to program in Pascal. 23:19:21 -!- UppunudLamppu has quit (Ping timeout: 264 seconds). 23:19:27 Which I didn't like at the time. 23:19:42 But then I changed school and they taught programming in Javascript. 23:19:44 my favourite language is -- i don't have one :( 23:19:50 *With IE 5* 23:19:52 maybe J, J is pretty flawless but it doesn't do much 23:19:57 Phantom_Hoover: JScript then not javascript :P 23:20:16 You expect them to pay that sort of attention to detail? 23:20:49 For exam purposes, a macro has nothing to do with text substitution, it is a script in a word processor. 23:21:39 -!- T-T has quit (Client Quit). 23:25:29 -!- poiuy_qwert has joined. 23:29:00 alise: Y'know what'd be totally awesome to implement? 23:29:10 Love! 23:29:26 Replacing each and every one of the algorithms on the "Brainfuck algorithms" page with their equivalents in assembly. 23:30:42 llvm bc 23:31:08 lightweight love machine 23:31:28 pikhq: What kind of assembly? 23:31:30 ...And no. 23:31:33 That's too ... specific. 23:31:39 Most uses of the algorithm will be tweaked slightly... 23:31:48 like hard-wiring hello world program to an efficient version 23:31:51 or lostkng to a hand-optimised version 23:32:02 -!- CakeProphet has quit (Read error: Operation timed out). 23:32:10 -!- CakeProphet has joined. 23:32:15 alise: Among other things. 23:36:24 -!- BeholdMyGlory has quit (Remote host closed the connection). 23:36:27 -!- Zuu has quit (Read error: Connection reset by peer). 23:37:32 -!- Phantom_Hoover has quit (Ping timeout: 265 seconds). 23:39:04 -!- Zuu has joined. 23:39:31 -!- tombom has quit (Quit: Leaving). 23:44:24 -!- CakeProphet has quit (Ping timeout: 276 seconds). 23:45:45 -!- CakeProphet has joined. 23:51:45 -!- CakeProp1et has joined. 23:51:57 -!- CakeProphet has quit (Ping timeout: 272 seconds). 23:53:06 -!- FireFly has quit (Quit: swatted to death). 23:57:04 -!- CakeProp1et has quit (Ping timeout: 240 seconds). 23:58:19 -!- oerjan has quit (Quit: Good night). 23:59:15 -!- CakeProphet has joined.