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