< 1276128023 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :originally lisp was intended to have a syntax (M-expressions) but everyone found working directly with the AST format (S-expressions) more useful instead < 1276128066 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :the main downside is the sometimes confusing heap of parentheses < 1276128083 0 :relet!unknown@unknown.invalid QUIT :Quit: Leaving. < 1276128186 0 :coppro!~coppro@unaffiliated/coppro JOIN :#esoteric < 1276128367 0 :leBMD!unknown@unknown.invalid PRIVMSG #esoteric :Have you ever noticed that most esoteric languages are interpreted and never actually compiled? < 1276128407 0 :leBMD!unknown@unknown.invalid PRIVMSG #esoteric :I guess it's because no one wants to turn >#ajv% into assembly, since that would just be a nightmare. < 1276128526 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :there are people here who _have_ tried compiling befunge, though < 1276128548 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it was _designed_ to be hard to compile < 1276128661 0 :leBMD!unknown@unknown.invalid PRIVMSG #esoteric :You do have a point. < 1276128698 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :brainfuck on the other hand, was the opposite, but i guess that's why you said "most" :) < 1276128706 0 :leBMD!unknown@unknown.invalid PRIVMSG #esoteric :If I had enough knowledge in ASM, I'd try to make a lolcode compiler. < 1276128708 0 :leBMD!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1276128740 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :compiling via C is also a popular option < 1276128826 0 :leBMD!unknown@unknown.invalid PRIVMSG #esoteric :true < 1276128832 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :for that matter there's nothing preventing compiling into a higher-level language; one of the few "compilers" i've made (i put it in quotes because it did _very_ little work) compiled unlambda to ocaml < 1276128841 0 :leBMD!unknown@unknown.invalid PRIVMSG #esoteric :I made a lolcode library once, but it wasn't the same as making a compiler program. < 1276128883 0 :leBMD!unknown@unknown.invalid PRIVMSG #esoteric :I suppose. I just always think low-level when I hear "compile". < 1276128887 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(few _might_ be == 1 btw, i've certainly never compiled anything advanced) < 1276128925 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :leBMD: are you new here? i don't recognise your nick < 1276128942 0 :leBMD!unknown@unknown.invalid PRIVMSG #esoteric :I've been on about once. Other than that, yeah I'm new here. < 1276128964 0 :leBMD!unknown@unknown.invalid PRIVMSG #esoteric :I mainly just lurk the wiki and every once in a while see if my piet forum has any members. < 1276128983 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :in that case, welcome to #esoteric, where we guarantee you'll lose your sanity -- oh wait that's the IWC forum motto < 1276129002 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(irregular webcomic) < 1276129020 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(where i lurk) < 1276129037 0 :leBMD!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1276129072 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh piet? you're not taneb from that forum by any chance? (he currently has a piet program avatar) < 1276129116 0 :leBMD!unknown@unknown.invalid PRIVMSG #esoteric :nope < 1276129119 0 :leBMD!unknown@unknown.invalid PRIVMSG #esoteric :I'm Batmanfiestdestiny < 1276129131 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :huh < 1276129150 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(i meant the IWC forum btw, i'm not on the piet forum) < 1276129153 0 :leBMD!unknown@unknown.invalid PRIVMSG #esoteric :are there multiple piet forums? < 1276129155 0 :leBMD!unknown@unknown.invalid PRIVMSG #esoteric :oh, lol < 1276129187 0 :leBMD!unknown@unknown.invalid PRIVMSG #esoteric :piet got VERY popular when a card of it was made for Perplex City, so it's gotten a bit more mainstream. < 1276129221 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :however, IWC is made by the inventor of Piet, in case you didn't know < 1276129247 0 :leBMD!unknown@unknown.invalid PRIVMSG #esoteric :oh, I had no idea < 1276129268 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(i've not seen any esolang discussion on the iwc forum though) < 1276129308 0 :iamcal!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1276129316 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :he's just passed on to other endeavors. < 1276129331 0 :leBMD!unknown@unknown.invalid PRIVMSG #esoteric :esolangs to the rest of the world are kind of like dead kittens: some people find them interesting, but most people try to ignore them. < 1276129339 0 :leBMD!unknown@unknown.invalid PRIVMSG #esoteric :and I understand that. < 1276129340 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :alrite < 1276129340 0 :cal153!~cal@70.36.237.178 JOIN :#esoteric < 1276129353 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i'd try to ignore people who found dead kittens interesting, personally < 1276129362 0 :leBMD!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1276129392 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, ok, makes sense < 1276129455 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :cheater99: i am a _little_ unsure which of my comments you are referring to, here :D < 1276129467 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(you may of course answer "all of them") < 1276129536 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :you know what confuses me < 1276129551 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :why did befunge use instead of hjkl < 1276129569 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: some of them < 1276129573 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :BUT NOT ALL. < 1276129574 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :cheater99: um visual intuitiveness? < 1276129576 0 :leBMD!unknown@unknown.invalid PRIVMSG #esoteric :because looks more arrow-ey, I think. < 1276129584 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :hjkl is totally intuitive < 1276129601 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :cheater99: i see we have managed to make you insane already < 1276129604 0 :leBMD!unknown@unknown.invalid PRIVMSG #esoteric :h != go left, in my mind. < 1276129662 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :that's because you use notepad.exe to edit your code < 1276129681 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :and play only games inferior to ADVENT < 1276129692 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :er, nethack < 1276129694 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :! < 1276129699 0 :zzo38!~zzo38@h24-207-48-53.dlt.dccnet.com JOIN :#esoteric < 1276129708 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :leBMD: btw Mark Chu-Carroll of the Good Math, Bad Math blog had a blog series about esolangs a few years ago < 1276129731 0 :leBMD!unknown@unknown.invalid PRIVMSG #esoteric :well that's cool < 1276129733 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :but the only thing better than ADVENT is nethack, and there's nothing above, and anything else is worse than ADVENT, so that's fine < 1276129735 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :I know there is a Japanese company that will make customized mahjong tiles. I don't know if there is of cards? < 1276129737 0 :leBMD!unknown@unknown.invalid PRIVMSG #esoteric :mmm,nethack is a fun game < 1276129746 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :good math bad math? < 1276129754 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :cheater99: i thought we had already established i use vim. i confess to frequently using the arrow keys though. < 1276129761 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :me google sit < 1276129764 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :googles it < 1276129775 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, that's not using vim! that's pretending to use it :p < 1276129911 0 :leBMD!unknown@unknown.invalid PRIVMSG #esoteric :COMPLETELY RANDOM NOTE: I hate it when a site gets one good thing in it, and then they ignore all the other good parts and turn the one famous thing into a sort of gimmick.' < 1276129998 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :why < 1276130033 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :cheater99: actually i sometimes _do_ use hjkl, because of a bug in windows gvim that makes arrow keys not work in the selection modes < 1276130066 0 :leBMD!unknown@unknown.invalid PRIVMSG #esoteric :because, in my opinion, when something like a blog gets one good story or game and they turn it into a site gimmick, it kind of ruins the rest of the site for me when I'm trying to see the other stuff. < 1276130092 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :however when i'm in insertion mode arrow keys feel more natural than whatever contortion i need to move around otherwise < 1276130094 0 :kar8nga!unknown@unknown.invalid QUIT :Remote host closed the connection < 1276130409 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm i also use space rather than l sometimes, like when replacing a particular number of characters with c < 1276130525 0 :MizardX!unknown@unknown.invalid QUIT :Ping timeout: 276 seconds < 1276130841 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :See this message: http://forums.thedailywtf.com/forums/p/17274/224223.aspx#224223 < 1276130870 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :The lights on my keyboard are broken, how do I fix it? < 1276131001 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :cheater99: btw i don't know if you know haskell or ml (sml/ocaml), but their abstract data types are like the perfect match for implementing ASTs < 1276131036 0 :leBMD!unknown@unknown.invalid PRIVMSG #esoteric :well, I gotta go < 1276131040 0 :leBMD!unknown@unknown.invalid PRIVMSG #esoteric :seeya! < 1276131065 0 :leBMD!unknown@unknown.invalid QUIT :Quit: why date people when you can sit in your basement reading H.P. Lovecraft stories? < 1276131139 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :data BrainfuckCMD = Increment | Decrement | Output | Input | Left | Right | Loop [BrainfuckCMD] < 1276131158 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(shush everyone who says ASTs are overkill for Brainfuck) < 1276131275 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, that's what i heard. < 1276131347 0 :jabb!unknown@unknown.invalid QUIT :Quit: Page closed < 1276131673 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, I used something a bit more complicated. Then again, it's also probably a little bit bad for lazy BF executionb < 1276131676 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :*execution < 1276131709 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo_: well if you want to optimize stuff you probably want a more complicated one < 1276131723 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :so you can rewrite it < 1276132792 0 :zzo38!unknown@unknown.invalid QUIT :Remote host closed the connection < 1276132941 0 :cal153!unknown@unknown.invalid QUIT :Ping timeout: 264 seconds < 1276134312 0 :augur!~augur@pool-74-96-5-237.washdc.east.verizon.net JOIN :#esoteric < 1276135521 0 :cal153!~cal@c-24-4-207-72.hsd1.ca.comcast.net JOIN :#esoteric < 1276136563 0 :Oranjer!~HP_Admini@adsl-243-205-116.cae.bellsouth.net JOIN :#esoteric < 1276137711 0 :lament!~lament@S0106002312fa554a.vc.shawcable.net JOIN :#esoteric < 1276138949 0 :cheater99!unknown@unknown.invalid QUIT :Ping timeout: 276 seconds < 1276139043 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Olen, olet, on. < 1276139076 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Koira nostaa kiven. < 1276139186 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Syödä... drat, that's one of those verbs ending in one vowel. < 1276139194 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :ACTION looks up the conjugation again. < 1276139228 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Syön, syöt, syö. Okay. < 1276139254 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Syön koiran. < 1276139261 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Eating dogs is not a very nice thing to do. < 1276139311 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Let's see, the negation verb is en, et, ei, and it takes syö, whatever form that is. < 1276139316 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :why not? < 1276139320 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :En syö koiran. < 1276139328 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :I like dogs. < 1276139332 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :maybe you just don't know how to cook dogs properly < 1276139349 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i like dogs too < 1276139355 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :they're good in a stew < 1276139386 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Let's see. "To like" is pitää, and it takes the elative case... what case is that? < 1276139406 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :A locative case meaning "out of". < 1276139423 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :That doesn't make any sense, but okay. < 1276139453 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :So, pitän koirasta. I think. < 1276139469 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Okay, it's actually pidän for some reason. < 1276139488 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Koirasta is correct, though. Yay! < 1276139768 0 :cheater99!~cheater@ip-80-226-13-51.vodafone-net.de JOIN :#esoteric < 1276140126 0 :cheater99!unknown@unknown.invalid QUIT :Ping timeout: 258 seconds < 1276140159 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :uorygl: http://en.wikipedia.org/wiki/Consonant_gradation#Finnish < 1276140274 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Whoa. < 1276140301 0 :cheater99!~cheater@ip-80-226-13-51.vodafone-net.de JOIN :#esoteric < 1276140307 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(why it is pidän iirc) < 1276140322 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Mmkay, I think I understand the gist of that. < 1276140495 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :My mom's playing with our new Spöka. She's hugging it and saying "bork bork bork!" < 1276140503 0 :coppro!unknown@unknown.invalid QUIT :Read error: Connection reset by peer < 1276141388 0 :Gregor!~Gregor@user980.newres.utoronto.ca JOIN :#esoteric < 1276141398 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :LANGUAGE IDEA: < 1276141422 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :A language that insures type "safety" and progress through a technique called "recycling" < 1276141431 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :uorygl: the historical changes section of that article complicates matters even further >:D < 1276141443 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :By which any typing error is rectified by querying the garbage error and replacing the offending object with a dead one of the correct type. < 1276141456 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: eek < 1276141458 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :*garbage collector < 1276141509 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Naturally, this language should have no other features. < 1276141588 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Whaaa? No, you could just take Java, remove all type annotations, and do this :P < 1276141604 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Well, yes, you *could*. < 1276141631 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :X-P < 1276141744 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm how would this interact with cyclic structures < 1276141765 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :or even without actually < 1276141783 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :if object x of class X contains a reference to object y of class Y < 1276141791 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Doesn't matter. Everything's reference based, so you just have to be able to revive the dead stuff. < 1276141818 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :now say both die, then x is revived < 1276141825 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: reference _what_ based? < 1276141843 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :OK, you would need something to guarantee that no object is actually collected while it has references from half-dead objects. < 1276141853 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :But since the garbage collector sees all these anyway, that's trivial. < 1276141877 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :you couldn't really collect anything - it might be needed later < 1276141899 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :And THAT'S the greatest problem with this language design, eh? :P < 1276141907 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :the thing is _after_ x is revived, y is now live < 1276141920 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, you have to transitively revive. < 1276141946 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm i guess that may not be that hard < 1276141968 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :If every object contains a bit for its liveness state, that's utterly trivial. < 1276141987 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Just trace the objects and stop whenever you get to a living object, make sure you mark it living (and move it or whatever's necessary) before recursing. < 1276142112 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :I also concluded that it would be unbelievably awesome to write a paper giving the formal operational semantics of operational semantics :P < 1276142125 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :O_o < 1276142166 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :And try to prove things like transitive progress (if the language being represented in operational semantics progresses, then the operational semantics progress :P ) < 1276142266 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :I figure that would be greek enough to be a shoe-in to POPL X-P < 1276142403 0 :zzo38!~zzo38@h24-207-48-53.dlt.dccnet.com JOIN :#esoteric < 1276142486 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :*shoo-in < 1276142514 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :The problem with "shoe-in" vs. "shoo-in" is that both make perfect sense both as phrases and in the context :P < 1276142528 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :How I (and the DM) is idea about D&D game, is, some of the following: < 1276142541 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :* "Impossible" is the correct level of difficulty. < 1276142546 0 :coppro!~coppro@unaffiliated/coppro JOIN :#esoteric < 1276142593 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :* I can find ways of solving the game with preferably not anyone being dead (that especially includes all NPCs). < 1276142618 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :* Nothing ever happens quite as the DM expects. < 1276142654 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :What do you think? < 1276144101 0 :sshc!unknown@unknown.invalid QUIT :Ping timeout: 264 seconds < 1276144287 0 :pikhq!~pikhq@75-173-192-87.clsp.qwest.net JOIN :#esoteric < 1276144297 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I should stop not being on IRC. < 1276144357 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :There is a log file too, in case you need it < 1276144365 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :But why should you stop not being on IRC? < 1276144371 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Surely you can't be IRC always? < 1276144390 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I NEVER SLEEP EVER EVER EVER < 1276144433 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :AND I LACK A LIFE < 1276144434 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1276144849 0 :augur!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1276145071 0 :zzo38!unknown@unknown.invalid QUIT :Remote host closed the connection < 1276145702 0 :augur!~augur@pool-74-96-5-237.washdc.east.verizon.net JOIN :#esoteric < 1276146029 0 :augur!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1276146227 0 :pikhq!unknown@unknown.invalid QUIT :Read error: Connection reset by peer < 1276146274 0 :zzo38!~zzo38@h24-207-48-53.dlt.dccnet.com JOIN :#esoteric < 1276147201 0 :sshc!~sshc@unaffiliated/sshc JOIN :#esoteric < 1276148012 0 :jabb!~grue@71.94.31.166 JOIN :#esoteric < 1276148015 0 :jabb!unknown@unknown.invalid PRIVMSG #esoteric :hey all < 1276149809 0 :Oranjer!unknown@unknown.invalid PART #esoteric :? < 1276150756 0 :CakeProphet!unknown@unknown.invalid QUIT :Ping timeout: 260 seconds < 1276151918 0 :Mathnerd314!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1276152090 0 :oerjan!unknown@unknown.invalid QUIT :Quit: Good night < 1276152460 0 :sebbu!unknown@unknown.invalid QUIT :Ping timeout: 245 seconds < 1276152495 0 :sebbu!~sebbu@ADijon-152-1-89-238.w81-50.abo.wanadoo.fr JOIN :#esoteric < 1276153287 0 :ZosMagistus!~mrgrim@bas8-hamilton14-2925006905.dsl.bell.ca JOIN :#esoteric < 1276153364 0 :FireFly!~firefly@unaffiliated/firefly JOIN :#esoteric < 1276153406 0 :ZosMagistus!unknown@unknown.invalid PART #esoteric :? < 1276153482 0 :augur!~augur@216-164-33-76.c3-0.slvr-ubr1.lnh-slvr.md.cable.rcn.com JOIN :#esoteric < 1276153720 0 :tombom!tombom@wikipedia/Tombomp JOIN :#esoteric < 1276153773 0 :coppro!unknown@unknown.invalid QUIT :Ping timeout: 260 seconds < 1276154392 0 :zzo38!unknown@unknown.invalid QUIT :Remote host closed the connection < 1276155056 0 :lament!unknown@unknown.invalid QUIT :Ping timeout: 276 seconds < 1276155135 0 :augur!unknown@unknown.invalid QUIT :Remote host closed the connection < 1276155148 0 :augur!~augur@216-164-33-76.c3-0.slvr-ubr1.lnh-slvr.md.cable.rcn.com JOIN :#esoteric < 1276155904 0 :Vegabondmx!unknown@unknown.invalid QUIT :Quit: Vegabondmx < 1276156091 0 :Vegabondmx!~Vegabonds@unaffiliated/vegabondsx JOIN :#esoteric < 1276156319 0 :tombom!unknown@unknown.invalid QUIT :Quit: Leaving < 1276156799 0 :clog!unknown@unknown.invalid QUIT :ended < 1276156800 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1276158934 0 :Vegabondmx!unknown@unknown.invalid QUIT :Quit: Vegabondmx < 1276158963 0 :kar8nga!~kar8nga@jol13-1-82-66-176-74.fbx.proxad.net JOIN :#esoteric < 1276159895 0 :Rugxulo!~rugxulo@adsl-065-013-115-246.sip.mob.bellsouth.net JOIN :#esoteric < 1276160254 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :"The COBOL 2002 standard includes support for object-oriented programming and other modern language features." HA! (you can't keep OOP out of any language these days, can you??) < 1276160839 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :"COBOL has many reserved words (over 400), called keywords. The original COBOL specification supported self-modifying code via the infamous "ALTER X TO PROCEED TO Y" statement. This capability has since been removed." < 1276160846 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :awwwww < 1276160991 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :ACTION should slep now < 1276161068 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :u mislep'd dat < 1276161089 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION sleps Sgeo_ with a lerge troot < 1276161098 0 :ais523!~ais523@unaffiliated/ais523 JOIN :#esoteric < 1276161124 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :moer roof that I need slep < 1276161130 0 :ais523!unknown@unknown.invalid QUIT :Read error: Connection reset by peer < 1276161136 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric ::( < 1276161141 0 :ais523!~ais523@unaffiliated/ais523 JOIN :#esoteric < 1276161186 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :cheater99: according to Wikipedia, OpenCobol translates to C < 1276161186 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :;0 < 1276161208 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :im tired does it show/ < 1276161258 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :cheater99: parser and scanner in Bison and Flex, too < 1276161648 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :"This makes it incompatible with the GNU General Public License (GPL) because restrictions exist regarding the use of the term PHP." < 1276161662 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :uh, the term "Linux" is trademarked, does that mean Linux isn't compatible??? :-/ < 1276161699 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Rugxulo: it depends on the trademark licence, IIRC < 1276161723 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but even then, there could only be a problem if the product was designed in such a way that it couldn't be changed to remove the trademarks < 1276161735 0 :Ilari!unknown@unknown.invalid PRIVMSG #esoteric :ALTER and segmentation made nice combo in making weird code... < 1276161741 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :think about the whole Firefox/Iceweasel thing, for instance < 1276161769 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in order to make a non-Mozilla-approved derivative of Firefox, you need to change all the trademarks < 1276162065 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :ah, so it's just GPL incompatible but still "free" (weird) < 1276162078 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :not that I care or use it, just vaguely curious < 1276162283 0 :augur!unknown@unknown.invalid QUIT :Remote host closed the connection < 1276162295 0 :augur!~augur@216-164-33-76.c3-0.slvr-ubr1.lnh-slvr.md.cable.rcn.com JOIN :#esoteric < 1276162587 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :"In December 2008, the Supreme Court of the Australian Capital Territory ruled that Facebook is a valid protocol to serve court notices to defendants." < 1276162595 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :crazy ... I guess you learn something new every day ;-) < 1276163030 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :ACTION needs to sleep now < 1276163058 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :ACTION has often got without Internet access for some time... < 1276163108 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :g'nite < 1276163750 0 :MizardX!~MizardX@unaffiliated/mizardx JOIN :#esoteric < 1276163931 0 :atrapado!~rodrigo@193.144.79.241 JOIN :#esoteric < 1276164269 0 :BeholdMyGlory!~behold@unaffiliated/beholdmyglory JOIN :#esoteric < 1276164636 0 :kar8nga!unknown@unknown.invalid QUIT :Remote host closed the connection < 1276165414 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1276165414 0 :clog!nef@bespin.org JOIN :#esoteric < 1276166738 0 :MizardX!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1276168523 0 :CakeProphet!~adam@h244.13.18.98.dynamic.ip.windstream.net JOIN :#esoteric < 1276168631 0 :Rugxulo!unknown@unknown.invalid PART #esoteric :? < 1276170807 0 :kar8nga!~kar8nga@jol13-1-82-66-176-74.fbx.proxad.net JOIN :#esoteric < 1276172285 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, hm do you know if latex has any command like \clearpage that only does the "force all floats before this point to end up somewhere before here" but not the "insert page break"-bit? < 1276172302 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I don't know < 1276172305 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1276172810 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :"If it is undesirable to have a pagebreak you can use the afterpage package and the following command: < 1276172811 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :\afterpage{\clearpage} < 1276172811 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :This will wait until the current page is finished and then flush all outstanding floats." < 1276172814 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :(Needed that once.) < 1276172839 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1276172839 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :It's not exactly what you want, but a bit like it. < 1276172859 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, yeah probably gives the same effect. < 1276172948 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :It might still put some floats after the page the command is in, though, so it's not quite "all pending floats must appear before this point". But they won't go very far away. < 1276172996 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :no it doesn't what I intended < 1276172998 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1276173014 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :(The quoted text was from http://people.cs.uu.nl/piet/floats/node1.html which has some other float-placement tips too.) < 1276173031 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :okay: I need the floats from one section to not appear in the middle of the next section. Have lots of floats, mostly scope images... < 1276173054 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :without having a awkward half-empty page there < 1276173064 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :which is what I got with plain \clearpage < 1276173068 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well, more than half-empty < 1276173078 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :98% empty or so < 1276173124 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but with the after page thing instead all the floats ended up just after the header for the next section < 1276173173 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Sure, it'll fill the current page first before flushing the floats. I doubt there exists exactly what you want. Unless someone's done a package for it, of course. < 1276173183 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hah < 1276173196 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :haven't found any, but not sure what on earth to search for < 1276173200 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Anyway, twiddling those float-positioning parameters manually might help for a single document, but it's a bit hit-and-miss. < 1276173280 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, you mean miss-and-miss? I think the rotated floats might screw things up even more (some of them are timing diagrams from simulation of VHDL stuff... very wide..., needed to be rotated to not be shrunk into unreadability) < 1276173368 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :You can of course place all your floats manually if you can't seem to get LaTeX placement working. < 1276173396 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Googling found a LaTeX 3 project document for a new float-placement algorithm that sounds like it'd support what you want, but that's not so helpful. < 1276173499 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1276173535 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, is latex 3 stalled or what is going on there? < 1276173568 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :No clue, really. < 1276173577 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric ::o < 1276173580 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :my topic is still up < 1276173608 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :They classify LaTeX3 as "a long-term research project", which of course means it can't be "stalled"; it's just "long-term". < 1276173609 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, hm that's suspicious, that "really" there. < 1276173610 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :;P < 1276173639 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, hm do they seem to use 5 digit years in the schedules or not? < 1276173649 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :if not everything is okay < 1276173737 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, any idea how to prevent having 3 pages of floats in the middle of a code listing in latex? < 1276173784 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it is rather awkward with { on one page and then 3 pages of figures before the code of that block shows up < 1276173834 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :The SVN repository for LaTeX3 experimental bits and pieces has last change two days ago, so it doesn't seem completely dead anyway. < 1276173908 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Don't know about that. There's a \suppressfloats command, but it's just "don't put floats at top or bottom of current page", nothing that'd prevent it from putting separate float-pages wherever it wants. < 1276173928 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1276174074 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :You could move the floats earlier, so that they'd hopefully end up before the code. Or put them after the code listing. Or just not provide "p" in the placement specifiers, but then you won't get any only-floats pages at all. < 1276175548 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I am lonely spaceship captain. < 1276176703 0 :ais523!unknown@unknown.invalid QUIT :Remote host closed the connection < 1276177883 0 :kar8nga!unknown@unknown.invalid QUIT :Remote host closed the connection < 1276178617 0 :MizardX!~MizardX@unaffiliated/mizardx JOIN :#esoteric < 1276179090 0 :oktolol!~oklopol@a91-153-122-35.elisa-laajakaista.fi JOIN :#esoteric < 1276179682 0 :ais523!~ais523@unaffiliated/ais523 JOIN :#esoteric < 1276181721 0 :cpressey!~CPressey@173-9-215-173-Illinois.hfc.comcastbusiness.net JOIN :#esoteric < 1276184481 0 :oerjan!~oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1276184506 0 :relet!~thomas@c905DBF51.dhcp.bluecom.no JOIN :#esoteric < 1276184745 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, hm? how would the p thing interact with rotated floats? < 1276184758 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :moving them about did reduce the problem however < 1276184887 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :you shouldn't rotate a float, then it'll just sink < 1276184894 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :XD < 1276184947 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, wait that can't be right < 1276184963 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, floats are point shaped aren't they? As indicated by the full name < 1276184989 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is designing a bitchin' roleplay-oriented MUD server < 1276184991 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so rotating them won't even make any sense, but nor will they sink < 1276185001 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...not esoteric, but awesome nonetheless < 1276185014 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well maybe if you get them too close to each other, those points might be sharp < 1276185027 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, I guess you have a point there < 1276185067 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :AND I'M NOT AFRAID TO USE IT < 1276185124 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: why would you want bitching in your MUD anyway... < 1276185135 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, hm, " AND I'M NOT AFRAID TO USE IT" looks rather nice in 9 points. < 1276185160 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :eek < 1276185162 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(okay, now I'm truly out of ideas for how to continue this) < 1276185176 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :good, good < 1276185180 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1276185181 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: because it's bitchin' < 1276185184 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...so, question < 1276185187 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :what is a good C++ IDE? < 1276185211 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :.... C++? You got to be joking < 1276185214 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :the more useful features and/or less clutter, the better. < 1276185228 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ACTION has never programmed in C++, to be honest. Until now. < 1276185253 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, there? Any idea how much of a problem local packages will be during upgrade from jaunty to newer ubuntu? < 1276185258 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I plan to do that tomorrow < 1276185268 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :looking for tutorials as well. I'm sure there's plenty, but if there's a particularly good one let me know < 1276185271 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: no idea really < 1276185287 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :although I know I once had to repair a distro upgrade by hand because there was something screwy in /usr/local < 1276185319 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well in this case it is a local rebuild of some packages to select other options. < 1276185324 0 :Gregor!unknown@unknown.invalid QUIT :Quit: Leaving < 1276185337 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so long as the package isn't installed non-local and local at the same time, it should be fine < 1276185338 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, and then there is the virtualbox package, which is the non-OSI one < 1276185349 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and thus is from their upstream < 1276185354 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :although admittedly my only installed local packages (AFAIR) are INTERCAL compilers, which I wouldn't expect to be a typical case < 1276185355 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, also what about PPAs? < 1276185360 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :PPAs should be fine, IIRC < 1276185364 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah good < 1276185365 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because the package manager understands them < 1276185389 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...it would be pretty cool if there was a Chrome/Firefox extension that attempted to predict which directory you're going to place a bookmark < 1276185392 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well okay, as long as it knows how to switch the "bleeding edge bzr" PPA to the relevant version < 1276185420 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :PPAs specify which versions are OK for dependencies < 1276185431 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the PPA will just be uninstalled if it can't handle the versions you're installing < 1276185435 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and the distro upgrader warns you about that < 1276185436 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1276185459 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, how would it predict this? < 1276185489 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, hm then what about changed config files? I turned off a number of services that were not visible in the GUI tool for services. < 1276185510 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it prompts you about those if it wants to change them itself as well as you changing them < 1276185515 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :mostly stuff I only use sometimes, like postgresql, only use it when developing database stuff < 1276185515 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :whether to use the old or the new version < 1276185541 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: previous placement and the title/content of the page < 1276185548 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, it consists in this case of changed symlinks in the rc[0-6].d < 1276185569 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that isn't a config file... < 1276185576 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well it is in /etc/ < 1276185584 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm, I wouldn't guarantee that that would work properly < 1276185589 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :for exampe... I just bookmarked a C++ tutorial in my "CS" directory... seems like you could devise a reasonable sophisticated algorithm to make those assumptions and automatically select CS as the directory on the save bookmark dialog. < 1276185593 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I was more thinking about the upstart stuff < 1276185602 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, presumably it will have to be converted to that somehow < 1276185628 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :and then sort directory options by weighted relevance. < 1276185638 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so you can pick them quickly without having to hunt through them. < 1276185912 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...C++ class declaration syntax is pretty nice compared to Java. < 1276185943 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :goddammit google what is it with your progressively more annoying frontpage design... < 1276185949 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :*you and your < 1276186010 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: I discovered that you can turn it back to "normal" in your account options. < 1276186014 0 :jabb!unknown@unknown.invalid QUIT :Quit: leaving < 1276186018 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :though... I actually like having a pretty picture. < 1276186025 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : goddammit google what is it with your progressively more annoying frontpage design... <-- it got even worse? < 1276186028 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :What I mainly dislike are the new buttons and the fade-in thing. < 1276186029 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: i don't have an account and i don't want it. < 1276186056 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: there's a fading-in background image now... < 1276186064 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, where in the account settings? < 1276186110 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :huh I just mistyped http://gooogle.com as https://[...] < 1276186114 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and I got "Google SSL Beta" < 1276186116 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :uh....... -checks- < 1276186118 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :wtf :) < 1276186145 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I seriously can't see how they could possible handle the load < 1276186146 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: yes i saw an announcement for that ssl thing somewhere (i.e. probably reddit) < 1276186181 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: oh... apparently I liked... there's only the remove background image button < 1276186193 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :background image? < 1276186209 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I haven't seen any bg image < 1276186217 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, also is this search settings or account settings? < 1276186232 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: google does changes gradually so not all users get them at the same time. < 1276186233 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I'm apparently senile and no such option exists. < 1276186234 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :... < 1276186251 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, hm I see < 1276186366 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :anyway i'm changing to advanced search as my homepage for now (again, like when they had that pacman thing) < 1276186426 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :there's also sites advertising that they have free google wallpapers. < 1276186430 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, I use about:blank for the "homepage" < 1276186520 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :The Next Web suggests going to the URL http://www.google.com/ncr (the "ncr" stands for "no country redirect") to restore the old-school Google search page, but the trick didn't work for us. < 1276186524 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :from some glob. < 1276186525 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :... *blog < 1276186531 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :interesting typo. < 1276186554 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :doesn't seem to work though. < 1276186566 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: alas in IE the about pages (both :tab and :blank) have the annoying property that they disappear from the history when you open another page in the same tab < 1276186594 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :about:blank does that in FF as well < 1276186606 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I actually like the one that's a bunch of cherries. It's the one I have set now. < 1276186616 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :which means it's useless as a base for a tab you want to keep as a default open one < 1276186668 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh well google themselves has started messing up my history as well < 1276186688 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...though all the white blocks intersecting the picture looks really bad. They should have made the top bar transparent with some kind of fancy dynamic font color that contrasts well. < 1276186699 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...possibly too fancy. < 1276186712 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(if i open a google suggested link in the same tab, the original google page disappears from the history list) < 1276186737 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :really? That's weird. < 1276186759 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :however it doesn't _really_ disappear < 1276186788 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so... I think I have pretty much learned the basics of C++. didn't take long. < 1276186789 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it only gets hidden, and if i go to the bottom page in history google reappears afterwards < 1276186807 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :the only thing that I was not familiar with was some of the non-C syntax and friend classes. < 1276186842 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :does C++ standard library have things like Java's ArrayList? hash tables? < 1276186863 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :mainly just want hash tables. < 1276186879 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :and maybe a linked list... so I don't have to hand code yet another one. < 1276186879 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :C++0x has std::unordered_map < 1276186895 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :std::map is like a TreeMap < 1276186899 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :is C++0x some kind of fancy new C++ I haven't heard about? < 1276186902 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :ArrayList <-> std::vector < 1276186908 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Linked list <-> std::list < 1276186920 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :C++0x is the upcoming standard < 1276186924 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :and these are all non-0x except for unordered_map < 1276186928 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Yep < 1276186953 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :GCC and MSVC have std::hash_map but it's not standard < 1276186966 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :vector just automatically resizes like a Python list right? < 1276186971 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Aye < 1276186982 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wasn't sure how the algorithm worked. < 1276187022 0 :sshc!unknown@unknown.invalid QUIT :Ping timeout: 265 seconds < 1276187193 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... interesting, so are instances in C++ constructed immediately when declared? < 1276187202 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :On the stack, yes < 1276187220 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Classes are value types < 1276187231 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :oh okay. < 1276187249 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so you'll still be passing around pointers if you want to get reference type semantics in C++ < 1276187269 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Or references, but yeah < 1276187310 0 :zzo38!~zzo38@h24-207-48-53.dlt.dccnet.com JOIN :#esoteric < 1276187315 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...I'm so used to garbage collection that I completely forgot that C++ doesn't do it. < 1276187361 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric ::-P < 1276187634 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Do you think "impossible" is the correct level of difficulty in D&D game? Do you agree with the other things I put abou D&D game yesterday? (Read the log if you are unsure) < 1276187671 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is a WoD fan. < 1276187674 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so. < 1276187690 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :My answer is "screw D&D" < 1276187718 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :What is WoD? < 1276187769 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :World of Darkness < 1276187773 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :(Presumably) < 1276187790 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :yes. < 1276187823 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :Operators new and delete are exclusive of C++. They are not available in the C language. But using pure C language and its library, dynamic memory can also be used through the functions malloc, calloc, realloc and free, which are also available in C++ including the header file (see cstdlib for more info). < 1276187836 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :....that sounds like a clusterfuck if you use C code in your C++ code. < 1276187899 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :A bit < 1276187920 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Maybe someone who knows D&D can answer my questions then (it is D&D 3.5 edition) < 1276188010 0 :lament!~lament@S0106002312fa554a.vc.shawcable.net JOIN :#esoteric < 1276188054 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :What ho, zzo38! < 1276188122 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :From what little I recall from my earlier days, all D&D campaigns have the potential to be impossible if the dungeonmaster is a jerk. < 1276188179 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: Maybe, but I think "impossible" is the correct level of difficulty for a game. < 1276188189 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :I guess that applies to role-playing generally... < 1276188194 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :I also think it is good I can try to win even without someone else to be dead < 1276188196 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :huh... it's weird that you can put non-class parameters in templates. < 1276188207 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Well, if the game is not impossible, then you eventually "win". Then you stop playing. What fun is that? < 1276188212 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :So yes, in that sense, I agree. < 1276188236 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :oh... you mean in general? < 1276188263 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :the impossibility is completely up to the DM... I thought you were talking about some kind of difficulty system, due to my ignorance of DnD rules. < 1276188269 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Well, it is nearly impossible but that mean we find the new way of winning anyways, but still it might not be complete because you have to continue even though one part is success..... < 1276188290 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: I am not talking about any kind of difficulty system < 1276188297 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :but there's a difference in impossible and perpetual. < 1276188310 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :impossible implies that the gameplay itself is challenging < 1276188322 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :you can have a very non-challenging game that lasts forever. < 1276188398 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :you are stuck in a little room with no doors or windows. < 1276188405 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :I think "impossible" needs to be qualified. "impossible to win"? "impossible to end"? < 1276188421 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Or is the DM just impossible to get along with? < 1276188439 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Meaning, the DM attempts to make anything impossible to win, but that we can find completely different unexpected way < 1276188445 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the game generally has no defined win condition, and thus it's impossible to win on that basis < 1276188458 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :But it still has to be reasonable. For example, no planet falling on you for no reason < 1276188494 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :psh... since when do you even try to "win" roleplaying games in the first place. < 1276188506 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :ais523: The win condition is not well defined, but I consider to win if we have completed the goal (possibly in a different way than the ordinary way), even if my character is then dead as soon as the goal is accomplished. < 1276188509 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :computer RPGs, you try to iwn all the time < 1276188511 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :*win < 1276188518 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :OK, forget "win". "Impossible to survive"? < 1276188534 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: Something like that. < 1276188563 0 :oerjan!unknown@unknown.invalid QUIT :Quit: Later < 1276188587 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :But what is your opinion on the other messages, such as, that I try to win even without making anyone else dead when I can avoid it (which is nearly all time) < 1276188613 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :sometimes you can be "winning" but the game's no fun anyway < 1276188624 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ais523: RPGs are not roleplaying games... they lie to you. < 1276188628 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :e.g. a diplomancer is fun to play once in a while, but you wouldn't want to keep it up indefinitely < 1276188647 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: If you're lucky enough to have a DM who will listen to reason, then nothing's strictly impossible. There's at least a chance you can come up with some (reasonable) solution to whatever's (reasonably) presented. < 1276188650 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...okay, C++ question. < 1276188674 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: I went and DMed the Tomb of Horrors (3rd edition port) once < 1276188680 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :the relationship between include and namespaces is kind of fuzzy to me. Does "using namespace" implicitly "import" a file or do you have to add an include /and/ a using namespace. < 1276188686 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I intentionally told the players to try to break the game, and tried to DM the rules literally < 1276188701 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :As for not killing any one/thing else -- that kind of constraint might make things more difficult, but still, not impossible < 1276188707 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it was pretty fun, although not the sort of thing you'd want to do more than once or twice < 1276188722 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: "using namespace" simply means you don't have to state the namespace < 1276188739 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :e.g. "using namespace std" means you can refer to std::string as just string < 1276188754 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :You can have multiple namespaces per file, they're completely separate things < 1276188759 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in that sense, it has nothing to do with includes at all, although includes often import loads of symbols into the same namespace < 1276188782 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: Yes, I know, it is not impossible. But it is difficult and I like to play this way! (I even play good-alignment character) < 1276188799 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : AnMaster: alas in IE the about pages (both :tab and :blank) have the annoying property that they disappear from the history when you open another page in the same tab <-- why are you using IE?! < 1276188804 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm he left < 1276188809 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: Nothing wrong with that :) < 1276188821 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ais523: ah okay. So namespace std is used across multiple files, that you still have to include. Got it. < 1276188841 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: yep, and you can even put stuff into namespace std yourself, it's just probably a bad idea < 1276188849 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ha. < 1276188870 0 :lament!unknown@unknown.invalid QUIT :Ping timeout: 272 seconds < 1276188880 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I assume it's good practice and all to encapsulate all your code in namespaces right? < 1276188896 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I think the CPU temp is going insane. it is jumping fast between 31 C and 47 C. In a matter of 1-2 seconds < 1276188906 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :pretty much, in order to avoid name clashes < 1276188910 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :back and forth, sure the system is under load, but constant load... < 1276188962 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm for some weird reason it seems the load is jumping between the cpu cores. I guess that explains the temperature at least < 1276188966 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: Yes there is nothing wrong with it, it is just differently than other people. < 1276188976 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I like the way C# does namespaces and file importing all at once. < 1276188990 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :But my character is ettercap even, I even play monster character < 1276188995 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :the using statement imports a namespace... which can be multiple files. < 1276188998 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :And there is a otyugh NPC in our team as well < 1276189000 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: loads of languages work like that, it makes me a bit suspicious though < 1276189002 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :But my brother's character is human < 1276189009 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ais523: ha. why's that? < 1276189009 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :All other NPCs in our team also human < 1276189013 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I don't like filename dependencies in languages < 1276189022 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :ais523: Hear, hear < 1276189038 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(especially fun with Java, where it's case-sensitive; extra fun if DOS is involved somewhere) < 1276189049 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I actually haven't seen too many languages that use namespaces. At least languages of the conventional variety. It seems most use the Java/Python style module/package setup. < 1276189068 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: I don't think I've ever played a non-human in D&D -- not even an elf. But it's been a looooong time since I've played. < 1276189082 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: packages are namespaces, pretty much < 1276189099 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :after all, they follow much the same ruels < 1276189100 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :*rules < 1276189114 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :except that there are defined search paths for packages, and not for namespaces, which adds a filename dependency < 1276189116 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: Ah, OK. Some people have never done so. But some people play elf character. Others (including myself) will play monster characters < 1276189116 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well yeah... but they're filesystem dependent I believe. I don't believe C#'s namespace system is filename dependent at all. < 1276189118 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :ais523: Case-sensitive in Python too. < 1276189128 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: and Perl I think < 1276189145 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :yeah Python is case-sensitive on imports < 1276189150 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :What language isn't? < 1276189157 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...dunno. < 1276189171 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : CakeProphet: loads of languages work like that, it makes me a bit suspicious though <-- what about VHDL, I always thought "why?" every time < 1276189172 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :ais523: Every time I set up a new sandbox at work, I have to delete one of the import lines from one of the packages, because I'm running it off a case-insensitive FS, and it pulls in the wrong file. < 1276189174 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :well, there are languages that inform case conventions < 1276189176 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :like Ruby. < 1276189182 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it has a rather... strange system for that stuff < 1276189184 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :and uh.... I think Go does that too. < 1276189189 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :BASIC is not case-sensitive. < 1276189195 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: ouch < 1276189201 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: depends on the version, BBC BASIC is < 1276189212 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you could use lowercase variable names there in order to avoid clashes with keywords < 1276189213 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, library ieee; use ieee.foo.bar.all; but why the library line?... < 1276189215 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :er... *enforce not inform < 1276189233 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: probably mimicing ADA, that's the explanation for most of VHDL's weirdnesses < 1276189237 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :as to why ADA works like that, who knows? < 1276189245 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1276189258 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :having a two word declaration for using namespace is kind of odd in C++ I think. < 1276189261 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :why not just using? < 1276189272 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :using by itself already has a meaning. < 1276189277 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ah. < 1276189278 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :using std::string; < 1276189285 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, and what does that do? < 1276189294 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ah okay, probably like importing one name from a module in Python < 1276189297 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :imports just that part of std? < 1276189301 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :And for dynamic languages like Python and Perl, why do I need to put in the require/import line at all? I should be able to just call the functions I want, and if they're there, it should import the module they're from. < 1276189305 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Yes. < 1276189311 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Actually I think there's a Perl hack that does something like that. < 1276189314 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :not really "importing" so much as allowing you to not append std:: < 1276189325 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :to that one name. < 1276189335 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, okay, but C++ already has language constructs that do different things depending on the type of the stuff in it. So why not just do: using std; and using std::string; < 1276189339 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1276189350 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ha. THERE < 1276189356 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I WIN. < 1276189357 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :... < 1276189358 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :It's disambiguation < 1276189372 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I'm not sure if you're allowed to have a namespace and a symbol of the same name though < 1276189379 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, http://yosefk.com/c++fqa/web-vs-c++.html#misfeature-2 <-- I rest my case < 1276189413 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :more like schmischamschmischuation < 1276189416 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :... < 1276189423 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :That's different because only one of those can be valid at a time < 1276189433 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Or, it may be different; like said, I don't know what's the case here < 1276189453 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, ah so you could have a class std; as well as namespace std, both visible at the time of the using statement? < 1276189469 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :That too I suppose < 1276189479 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I was thinking of both a variable std::foo and a namespace std::foo < 1276189483 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1276189484 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :using std::hiv; // :P < 1276189506 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, that's imported by default in C++ < 1276189508 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :that is what std is for right? < 1276189524 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: ah okay... good to know. < 1276189551 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... so should I use C++ as my language of choice? Basically I'm looking for a language I haven't already learned to do my MUD server project in. < 1276189572 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: there are few reasons to use C++ nowadays < 1276189574 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, no, never use C++ as "language of choice" < 1276189581 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :computer game development is the main one, because all the libraries for it are in C++ < 1276189583 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I was thinking about Ruby or Perl, but those (especially Perl) might be better for a smaller project like an IRC bot that I want to write. < 1276189588 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :for anything else, there's normally some more appropriate language < 1276189594 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, C++ can only be "language forced upon you under threat of a gun" < 1276189594 0 :zzo38!unknown@unknown.invalid QUIT :Quit: My D&D character have 8 eyes < 1276189611 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, SDL works fine from C afaik? < 1276189629 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... so what's another good statically typed, compiled, OO-based language that isn't Java or C#? < 1276189634 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: it does, but if you think most commercial game development is done in C, you're probably stuck in a Linux mindset < 1276189635 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :(or C++, obviously) < 1276189636 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :D! < 1276189643 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :mostly it's done in DirectX for Windows only, in C++ < 1276189652 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :or in OpenGL for a console, also in C++ < 1276189659 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I never thought about what most commercial games are done in. Probably inner platform if anything < 1276189664 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :Xbox used C# and XNA. < 1276189667 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :*uses < 1276189697 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, does xbox use directx or opengl? < 1276189698 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :though you can write games in C++ as well. < 1276189699 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: yep, it's the exception; both Wii and PS3 use C++ and (slightly customized I think) OpenGL < 1276189708 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: it uses DirectX, which should be relatively obvious given the circumstances < 1276189740 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, since xbox does not run windows and is a console " mostly it's done in DirectX for Windows only, in C++ or in OpenGL for a console, also in C++" would have implied opengl < 1276189746 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :which I found unlikely < 1276189758 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep, I was mentally lumping Xbox with Windows < 1276189766 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :right < 1276189766 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :as they're both Microsoft and based on very similar technology < 1276189774 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I /could/ use C#... because it's actually not a bad language at all. but I pretty much already know it and want to learn something new. < 1276189785 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, also you forgot one platform: mobile phone 3D games < 1276189789 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I suspect java there < 1276189797 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well, apart from iphone < 1276189798 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :depends < 1276189800 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1276189805 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: J2ME, isn't it? < 1276189807 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :Palm uses javascript.. Android is Java < 1276189815 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and iphone would use Objective-C < 1276189815 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :dunno about Blackberry... Java I think. < 1276189816 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, isn't that a subset of java? < 1276189825 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so I would think my statement was correct < 1276189827 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: probably, with a few extra libraries or something, I haven't looked into it < 1276189830 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Java-based, certainly < 1276189830 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ais523: ..why on earth would anything use Objective-C though? < 1276189840 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: because Objective-C is what all things Apple use < 1276189848 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :....the question still remains though. < 1276189860 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, ah I didn't mean "subset of desktop java" I meant "subset of the set of all java implementations and variants" < 1276189861 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric : CakeProphet: there are few reasons to use C++ nowadays < 1276189864 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and because C++ is a really screwed-up language < 1276189874 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :The biggest one is probably working at a giant dotcom. < 1276189890 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: I'd imagine they wouldn't all use C++, it would depend on what they were doing specifically < 1276189895 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :what's screwed up about C++? So far it seems pretty mangable. < 1276189905 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :but I haven't actually programmed with it yet. < 1276189932 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :ais523: No, but it has been predominantly C++ at the ones I've worked at. < 1276189940 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: http://www.yosefk.com/c++fqa/?r=t < 1276189943 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: hmm, interesting < 1276189962 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so yeah... language suggestions? < 1276189968 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :nothing too weird. < 1276189972 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :well... maybe. < 1276189976 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, afaik you need to use objc on iphone, there is no alternatives to it there < 1276189979 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :one of my day jobs is teaching Java; in my other, I get my own choice of lang, and have used both Perl and Haskell (for rather different things) < 1276189983 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: correct. < 1276190000 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, I think that answered " ais523: ..why on earth would anything use Objective-C though?" < 1276190002 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I don't think I'm comfortable enough with Haskell's concepts yet to make a full MUD server. < 1276190005 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :because there is no option < 1276190011 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :if you want to develop for iphone < 1276190024 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, anyway, objc is still better than C++. so that is another reason < 1276190028 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Well.. I meant in the first place, why would Apple use Objective-C. In that case I don't mean developers that are forced to use a language. < 1276190034 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'm not convinced Haskell is an ideal lang for a MUD server anyway < 1276190046 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Scala, mayhap? < 1276190047 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: As much as they both annoy me sometimes, have you considered Ruby or Python? < 1276190050 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ais523: doesn't seem like it would be. < 1276190059 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, erlang maybe? < 1276190064 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: learned Python first. I'm really kind of tired of it now. < 1276190068 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :good for highly concurrent stuff < 1276190072 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I find static type systems actually help me design better. < 1276190087 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :whereas in dynamic languages it's far too easy to overkill < 1276190087 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Hm, I'll second Erlang as a good choice. I tried to write a mini-MUD in it once... < 1276190098 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...hmmm, Erlang. Didn't think about that. < 1276190105 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :easy to pick up? < 1276190111 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :a tip from me: you can't hang around with computer scientists for a whole year without concluding that ML and its variants are the answer to every programming problem of this type < 1276190116 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, used to functional languages? then yes probably < 1276190117 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: Dynamically typed :-P < 1276190120 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that doesn't mean that that conclusion is correct, though < 1276190129 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, it does have something like an _optional_ very strong type system. < 1276190132 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :erlang that is < 1276190139 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: I'm considering Ruby just to learn it... but probably not going to use Python for this. < 1276190140 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :through the use of dialyzer < 1276190140 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but at least ML is less insane than Haskell from the point of view of someone who's used to imperative programing < 1276190150 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: er... yeah, that's what I meant. < 1276190164 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: I meant, Erlang is. < 1276190197 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I've learned Haskell up to understanding monads, but haven't done anything practical. does that qualify as "used to" functional languages? < 1276190206 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: oooh okay. < 1276190214 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :well... that's fine. < 1276190221 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, but as I said. It nowdays have a separate tool that performs both strict type checks from type declarations, and can infer types for untyped functions rather well. Not as well as haskell I think but still not too shabby. < 1276190227 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: pretty much, you have to "get" functional programming to be able to write programs that aren't incredibly convoluted with that level of knowledge < 1276190234 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :concurrency might be fun... would you recommend using threads if I choose Erlang? < 1276190236 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, erlang does not use monads though < 1276190255 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: IMO, that's a bad thing; I've often found myself wanting monads in Perl < 1276190264 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :once you get the concept, it's a pretty useful one < 1276190280 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: ah okay... so optionally type checked but still dynamic? I think I could enjoy the mix. < 1276190300 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I wish Python had currying. < 1276190301 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it is not strictly functional like haskell is in that sense. But side effects are rather strictly controlled to a few things, IO, special storage tables (useful for db table backends kind of stuff, as well as funge space) and a few other things < 1276190313 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :implicit currying that is... I can make my own function wrappers for it. < 1276190336 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: That actually sounds pretty nice < 1276190350 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :Is there state outside of that? < 1276190356 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :or... mutable state rather. < 1276190385 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Heh < 1276190385 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, the optional type checking is not done in the compiler, you invoke a separate tool. But it does a very throughout job. And also checks other stuff, like not handling some possible return values (that check isn't on by default iirc) < 1276190399 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :I can never quite explain Erlang's state model. < 1276190400 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :very nice static analyser though < 1276190402 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: That's fine. I'd probably use it to just to help me design. < 1276190409 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :and debug. < 1276190419 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :You have functions which are pure, except that they send messages to each other, so they're not pure. < 1276190423 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, ah erlang has a built in debugger as well, works rather well < 1276190444 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :how does the hotswapping work? < 1276190448 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, plus there is ETS/DETS tables < 1276190450 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :that would actually very useful for a MUD server. < 1276190453 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :+be < 1276190469 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :So it's not pure, but it's a heck of lot less messy than imperative programming (in which I include Scheme with its set! and such) when done right < 1276190489 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm, okay so variables are write-once < 1276190492 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I think of ETS tables as something you are exchanging a message with. Conceptually. Even though it might not be implemented that way < 1276190498 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :and then state changes happen via messages. < 1276190519 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I don't particularly care about strict purity... as long as the semantic model makes sense I can use it. < 1276190521 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, in erlang? well, by calling the new module instead and if required translating the state. erlang can keep two versions of a module in memory at once. In general you use the standard library behaviour callback modules, which means it handles most of that, and you just implement the logic of that process < 1276190528 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :like a callback module handling messages and such < 1276190549 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :of course you can make your own if you need it, but it is rare. Only needed it once, and that was in a concurrent befunge implementation < 1276190554 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(rather special case!) < 1276190555 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... not sure I follow. I'll just have to read up on it. < 1276190580 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :this reminds me, I was planning to extend the INTERCAL networking specification to include a password < 1276190587 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because I think it's the easiest way to implement lambdas < 1276190592 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: I only care about it insofar as it leads to nice code. IMO Erlang's approach is pretty good for that. (Although the language does have some other warts -- they tend to be minor) < 1276190594 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :but it would be nice to push code changes without having to do any kind of "copyover" < 1276190596 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, also you have service supervision and such, again implemented easily by callback modules < 1276190601 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(INTERCAL has a tendency to do this sort of thing to you...) < 1276190613 0 :sshc!~sshc@unaffiliated/sshc JOIN :#esoteric < 1276190633 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :but there's no reason not to use concurrency in Erlang pretty much? < 1276190633 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, well sure, that should be easy enough, upgrading the erlang vm itself would need restarting it (or doing migration between distributed nodes and then updating one at a time!) < 1276190634 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: The only reason I don't code in Erlang more these days is because, like you with Python, I'm a bit sick of it. < 1276190658 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey,what bits? < 1276190667 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(that you are sick of in erlang I mean) < 1276190694 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :recommend a good tutorial or can I pretty much google a good one? < 1276190732 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :also how do compound data structures work. Any kind of OO? < 1276190735 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :http://learnyousomeerlang.com/ < 1276190740 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, anyway, with the callback module you implement stuff like "handle_message" or "function_to_upgrade_state_on_hot_code_swap" (only if required, far from all upgrades would need to change the data format of the state of the process I bet!) < 1276190752 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the state being passed as a parameter (to keep it pure) < 1276190755 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ah okay... so an optional callback system. < 1276190762 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Mainly the bloat. I wouldn't call it "lightweight" by any measure. < 1276190812 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :Python is still my language of choice for small scripts... but I just get tired of using it for larger projects. < 1276190816 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, well true. It is rather complete though. which is rather nice when you think something like "hm I really want a module that implements a directed graph using ETS as backend" < 1276190820 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(erlang has that) < 1276190826 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, I know a rather nice ebook... hm < 1276190834 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :a bit dated now perhaps < 1276190836 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :is it "getting started with erlang?" < 1276190845 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :that showed up as first hit. < 1276190864 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, something like "programming for a concurrent world" in the title iirc < 1276190867 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Granted. My current tastes would prefer something which is to Erlang like Scheme is to Common Lisp, though. < 1276190879 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... so in Erlang < 1276190892 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, but somewhat dated, it doesn't have anything on the strict type checking stuff < 1276190893 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :would be insane to give each socket a thread for read/write? < 1276190896 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :since it was written before that < 1276190902 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, in erlang? no < 1276190905 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it would be idiomatic < 1276190910 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...oh, well good. < 1276190915 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, very lightweight erlang threads < 1276190946 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Idiomatic? Requisite, almost :) < 1276190949 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I've heard Erlang is good for concurrent design. Can you still get unexpected issues from message passing? < 1276190951 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :they are userspace threads which the erlang VM schedules. erlang itself can use multiple cores of course < 1276190974 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, I think it may be possible to do async sockets. I looked into that some months ago, forgot why < 1276190997 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(async as in async and handling more than one in a single thread) < 1276191000 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I concluded it possible at least. < 1276191001 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: You can always get unexpected issues from any concurrent design. But Erlang... gets in your way less. < 1276191009 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :my usual strategy is to just keep it all in one thread and do a loop... for a MUD server this is sufficient. But a fully concurrent design would be quite nice. < 1276191011 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yes that is an advantage < 1276191020 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, erlang is not shared memory concurrent, it is message passing < 1276191034 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Messages are easier to handle than freakin' mutexes, which is often the best the competition has to offer. < 1276191036 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :-nod- I've known this. < 1276191043 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(technically there may be shared memory for large objects passing between threads, but that is copy-on-write and so on) < 1276191045 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... so like < 1276191060 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Whenever I write concurrent code in Java, I end up rebuilding a message-passing infrastructure anyway. < 1276191091 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :say your player is editing a room or item or something... how would locking work so that other player threads doing the same thing (a rare occurance in a MUD) won't interact with intermediate state. < 1276191094 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :iirc beam (the erlang vm) uses shared refcounted memory for binaries (an erlang data type) larger than some threshold. < 1276191116 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, why does it need locking? < 1276191124 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, that would prevent cooperative editing! < 1276191130 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :well. < 1276191133 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :consider things like a get < 1276191136 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: By "editing" a room, do you mean, changing one attribute? < 1276191142 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :which moves the item around in space, essentially... from the room to the player < 1276191157 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :there's a possibility that multiple threads might try to do that operation at the same time or something. < 1276191161 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :like... it's never going to happen < 1276191163 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :but if it does. < 1276191178 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: Each action is a message, and you process the messages sequentially. < 1276191178 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, you just send editing messages from the user thread to the room thread. Probably including "expected current state" would be a good idea. Then it would work a bit like a compare-and-swap < 1276191184 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :So, no conflicts occur. < 1276191187 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :no locking needed there, right? < 1276191205 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ah okay. < 1276191205 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so < 1276191211 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, no idea if that works for this case < 1276191218 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but it is how I would do it probably. < 1276191218 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :sequential messages would ensure atomicity of operations. < 1276191244 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Or, if you MUST think about locking, think of the message-passing infrastructure doing it for you (locking the mailbox as a low-level operation you don't have to think about because you're working on a higher level.) < 1276191249 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :as long as an operation doesn't consist of multiple messages. < 1276191253 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, well, you could have players edit different parts of the room at the same time I assume < 1276191256 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: Exactly. < 1276191264 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :just as long as they don't pick up the same object at once < 1276191277 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :It becomes an exercise in message design, kind of. < 1276191281 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :yeah. < 1276191286 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, for picking up object, why not make the room return an error if the object is no longer there? < 1276191290 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :again, no race condition < 1276191315 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :For picking up an object, I would want to send a message to the object, not the room :) < 1276191316 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :well... that would happen anyways in this case. With message passing the get command won't be an issue < 1276191323 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, okay good point < 1276191327 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :things like long-term editing and stuff will need to be thought out though. < 1276191342 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :after all, rooms and players and objects should all be the same at that level of abstraction < 1276191355 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: well... you'll be asking the room to give you the object in question < 1276191369 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :But then you get to the point where you're modelling EVERYTHING -- maybe 1000's of objects -- as a process. Erlang's processes are lightweight enough to do that, though. Generally. < 1276191372 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :and then send the object whatever request you need, I suppose. < 1276191380 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1276191392 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, 100000 might be a slight issue though, not sure < 1276191395 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so is that a good idea? I don't know if individual objects need their own threads. < 1276191408 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :but I guess it would be fine... most of the time they'll just be idling anyways. I assume Erlang has a good scheduler. < 1276191422 0 :tombom!tombom@wikipedia/Tombomp JOIN :#esoteric < 1276191448 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, depends. Do they need to do stuff like change every now and then? It would make implementing something like food rotting after a while simple < 1276191449 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: Is it a good idea? Well -- conceptually I think it is -- and if anything has a scheduler that can handle it, Erlang does. < 1276191464 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :for an editing system I will probably implement a lock of some kind, to prevent interference with the object while it's being edited in whatever way. < 1276191482 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: hmmm... you've got a point < 1276191484 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :but < 1276191488 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :It would be nice to actually solve that "everything looks like a process, even static things" problem. Erlang comes very close. < 1276191498 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :the codebase itself is going to be targeted towards roleplaying games... like WoD and DnD < 1276191504 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so no explicit coding of events, generally. < 1276191522 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :it's more or less just an environment to communicate and roll dice in < 1276191524 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, btw, erlang by default limits number of threads to 32768, but you can rise it to 268435456 with a command line switch. That is on 32-bit. As far as I understand the limit is even higher on 64-bit systems < 1276191540 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :that should be plenty < 1276191560 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :Erlang actually sounds perfect for this kind of system. < 1276191583 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, but the docs point out that it might be hard to reach 268435456 on a single 32-bit system due to memory limits inherent in 32-bit systems < 1276191585 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :but yeah... did anyone ever mention how compound data types work? < 1276191594 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, because 268435456 processes = 16 bytes per thread < 1276191601 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and that is a bit unrealistic < 1276191629 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ah. < 1276191640 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I don't think the number of threads will be an issue. < 1276191642 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, that is using the full 4 GB available on a 32-bit system. In practise the VM needs some memory and so does the OS and so on < 1276191670 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, as for compound data types, erlang has records. which is similar to C structs I guess < 1276191681 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :named fields? < 1276191687 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well yes that is given < 1276191693 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it has cons style lists with a rather nice notation < 1276191695 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :-shrug- could be Haskell-style. < 1276191700 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :then there is tuples < 1276191703 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Erlang record syntax/semantics I find a bit ugly. But you'll live :) < 1276191706 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... any of this mutable? < 1276191712 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, I plan to learn haskell, how does it do it? < 1276191715 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :if not named fields? < 1276191725 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, sure, but not in place ;P < 1276191725 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: Nope, not mutable. < 1276191726 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :positional/optionally-named-accessor-functions. < 1276191745 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... non-mutable writing is inefficient. :P < 1276191751 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, if you want mutable there is ETS tables. which provides rather fast storage of terms in a {key,value} style < 1276191762 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: that might be exactly what I want. < 1276191763 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, efunge uses that for fungespace btw < 1276191764 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: Non-mutable writing can become mutable under the hood :) < 1276191774 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and yeah what cpressey said < 1276191778 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: automatically or with design consideration? < 1276191781 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, the compiler optimises some stuff < 1276191785 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: ALSO - non-mutable writing is much more cache-friendly < 1276191794 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :automatically, you don't really have much to say about it < 1276191812 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: With Haskell you declare data types like this. < 1276191816 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, and in general you don't need mutable state I found. befunge is kind of special case again, self modifying language and so on < 1276191836 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :!haskell data TypeName = ConstructorName Int String Int Int < 1276191839 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and it was befunge98 < 1276191841 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :not 93 < 1276191865 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: would I be implementing the cache or is this a compiler thing? < 1276191877 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, btw about thread count, I think that is per node, and you could have more if you connected another node (possibly on another computer, possibly on the same computer) < 1276191911 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: and then, using the example I just typed up, you would construct a value of type TypeName using the ConstructorName function. < 1276191920 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and... the number of nodes is pretty much unlimited. Well there is the "OS limits number of sockets" and so on. < 1276191926 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but apart from that, pretty much unlimited < 1276191951 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: it's sort of like named, type-safe, tuples... sort of. < 1276191961 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: You shouldn't have to think about it unless you are pushing the envelope. < 1276191966 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, how would you access the third int in it? and what if you want to extend it and add other fields (setting the new ones to default values so all old code doesn't have to be updated < 1276191968 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :) < 1276191981 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :(That's sort of my general philosophy about what makes a good language/abstraction, btw) < 1276191996 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, very true < 1276192002 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: If you have a TypeName called x. You would pattern match over x. < 1276192004 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I very much doubt a MUD will push the envelope < 1276192013 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :let (ConstructorName x y z) = x < 1276192023 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :er < 1276192024 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :well < 1276192024 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, ah, erlang is based on pattern matching < 1276192025 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :name clash < 1276192026 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :but < 1276192031 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :somewhat different syntax of course < 1276192041 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and probably somewhat varying capabilities < 1276192055 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: also if you can give each field an accesor function < 1276192063 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :{constructor_name, X, Y, Z} = Ecks, ... < 1276192066 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, okay that sounds awkward < 1276192075 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :data Example = Example {X::Int, y::Int} < 1276192077 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :OK, that's a tuple, not a record, but whatever < 1276192086 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, yeah < 1276192089 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :here I gave the constructor and type the same name... this is psuedo-idiomatic depending on the type in question. < 1276192101 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, that :: thing looks similar to the optional type checking thing for erlang < 1276192108 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it would be :: integer() instead < 1276192117 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric ::: is type constraints in Haskell < 1276192121 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or pos_integer() or such < 1276192126 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :f :: Int -> Int -> Int < 1276192129 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :f x y = x+y < 1276192133 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Hm, I don't usually name fields in my alg data types in Haskell < 1276192138 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Maybe I should < 1276192164 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :But data Example = Example Integer Integer looks so much cleaner < 1276192167 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: it's good in some situations... if I wrote a MUd server I would definitely use it as the number of fields could grow quite a bit unless I use a hash table design of some kind. < 1276192175 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: Yeah. < 1276192206 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, btw this is a text MUD right? < 1276192219 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: so yeah, the accessors x and y are one-argument functions that automatically grab their respective fields from a value of type whatever. < 1276192223 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: yes. < 1276192230 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :mmh < 1276192235 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :is there any other kind? I mean, I've seen some graphical ones but they're bad. < 1276192240 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so I don't count those. < 1276192241 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well I don't know < 1276192253 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I don't even know the diff between a MUD and an MMORPG really < 1276192281 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :not a lot of hack and slash though... mostly focusing on a clean architecture for allowing approved players to host their own games as DMs (Storytellers in WoD speak) < 1276192293 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, WoD? < 1276192297 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :in their own custom-built environments < 1276192302 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :World of Darkness... it's a tabletop system. < 1276192307 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :that I particularly enjoy. < 1276192315 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, so like, virtual reality in text? < 1276192317 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :;P < 1276192319 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :yes. < 1276192333 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, you could call it thirdlife? < 1276192335 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :ACTION picks up the blood-stained sword. < 1276192338 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or perhaps "getalife"? < 1276192369 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :with more emphasis on narrative than having coded-in environments. Usually you'll just have a room with a description and no objects inside of it... the players would just interact with non-existent things as they write out what they're doing. Kind of like collaborative fiction. < 1276192377 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :MUD is like IRC with resource controls on the imaginary objects. < 1276192379 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: ha < 1276192388 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: I've known people to do that in Feng Shui, but not in WoD < 1276192396 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :on the other hand, WoD games do have a lot of interaction < 1276192407 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, you mean they are too lazy to create the objects? < 1276192413 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in our groups, there's little need for the games to actually have a plot; every week is spent clearing up the mess the players created the week before < 1276192421 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :often working at cross-purposes < 1276192423 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: not too lazy... just being imaginative affords more possibilities < 1276192431 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :you don't have to have coded in effects for things like cars, guns, elevators, etcf < 1276192435 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :you just write out what they do < 1276192447 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :and, in the case of things like guns and cars, roll dice to see how successful you are with them. < 1276192452 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, can't you just create those on the fly? < 1276192460 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: At some point I fail to see how this is much different from IRC :) < 1276192465 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the logic I mean < 1276192469 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :you could. < 1276192472 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :just not necessary. < 1276192538 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: it's not too different really. You could easily make a dice roller bot and host games on IRC. But the MUD server is more dedicated to this kind of thing. Characters have score sheets and information that needs keeping track of... which you could do with a bot but it would be more cumbersome < 1276192545 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: MUDs do end up working rather like IRC, normally they track more state though < 1276192548 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :there's a community I know that does this kind of stuff... so I have an audience of sorts. < 1276192562 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :does EgoBot (or was it HackEgo?) still have its MUD? < 1276192634 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :does Erlang have any kind of interface-like feature? < 1276192650 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :since it's dynamically typed I assume you can do polymorphism through duck typing. < 1276192664 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :but a statically enumerated list of operations would be nice. < 1276192678 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, not sure what you mean there < 1276192683 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: Guh, Sort of. Modules can expose a common interface. < 1276192696 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ah... like hide names and export names and such? < 1276192710 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :or... no? < 1276192728 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, hm? erlang has funs, which can be like lambdas or like function pointers. < 1276192750 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it is easy to just decide which module to call on fly. I assume that is what you mean < 1276192753 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: Well, a module name is just a symbol. Instead of foo:fun(123), you can say Module:fun(123). < 1276192762 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yes and there is that too < 1276192791 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, oh btw, in erlang variables begin with either _ or upper case letter. < 1276192794 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :should clarify what cpressey said < 1276192795 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :And/or you can use pattern matching to dispatch to different functions, depending on what args your function is called with (closest match to "duck typing") < 1276192812 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Right. Uppercase means variable. Like Prolog. < 1276192827 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... I guess my OO thoughts just don't apply to Erlang then... < 1276192830 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, and atoms (think 'foo in lisp kind of) begin with lower case. though you can make anything an atom by quoting if you want to < 1276192851 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, erlang normally use processes for that < 1276192859 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: OO thoughts have to be twisted slightly to apply, yes. But it can mostly be done. < 1276192872 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so it's massive Actor model? :P < 1276192874 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, then you could just call the process, and have different modules implementing the same messages < 1276192884 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, I don't know the actor model. Can't answer < 1276192900 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :message passing concurrent objects... in essence. < 1276192903 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :It's close to the Actor model, or sort of an idealized Actor model, from what I know about it. < 1276192904 0 :atrapado!unknown@unknown.invalid QUIT :Quit: Saliendo < 1276192911 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, that would work rather well in erlang < 1276192915 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmmm.... so < 1276192936 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :what if I /don't/ want to use a process, but still want to use similar principles of OO design. < 1276192968 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :like, I might not want a process for every MUD object... for example... but maybe for each occupied room. < 1276192994 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, and of course, once the day comes for needing to scale up to a cluster to hos this thing erlang is ready and almost no code needs any change ;) (just a bit in the code that handles starting of your program, to change what starts where) < 1276192996 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: It can be done. But then, I consider it possible to write OO code in C, so maybe I'm the wrong person to ask. < 1276193013 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...OO can be done in C, definitely < 1276193028 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :you have structs... you have functions (and function pointers). Done. < 1276193031 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, doesn't the linux kernel do something OO-like in C for the vfs layer? < 1276193051 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :having a struct with pointers like xfs_methods or ext3_methods or whatever < 1276193057 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :The Python interpret actually does " inheritance" in C with casting hacks. < 1276193061 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: I think the main diff you'd see is that inheritance would occur between *functions*, not objects. < 1276193081 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: hmmm... functions can inherit? < 1276193094 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, I used the python C api... I have no idea how it actually works. Seems to be black magic with macros and pointers < 1276193099 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: Well, you have to build it. Delegate is a better word. < 1276193102 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: it is. < 1276193109 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :aaah okay. < 1276193127 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, had to fix some bugs in a program that used python as an embedded scripting language. Got to know that API rather well < 1276193131 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: so you rely on first-class functions to implement a lot of overriden/polymorphic design. < 1276193147 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :get(sword) -> something; get(AnythingElse) -> parent_get(AnythingElse). < 1276193151 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :is sort of what i'm getting at < 1276193166 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmmm... I gotcha < 1276193170 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :pattern matching, using the default case to go to default behavior < 1276193181 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, btw, in the last version erlang gained experimental support for having modules implemented in C or such. However in erlang terms "experimental" means "stable as a rock but we just might change the API in case we need it still" < 1276193239 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :do exceptions work like every other exception system? < 1276193241 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :erlang is rather special in that way, a great focus on stability. < 1276193250 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, define how every other system work < 1276193255 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... oh, is it like Python with coroutines? In Python you can throw exceptions inside coroutines. < 1276193261 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but I suspect the answer might be "close, but not exactly" < 1276193267 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Java, Python, C++... everything else. throw and catch < 1276193269 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, what is like coroutines? < 1276193284 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :well... < 1276193293 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: Um - no coroutines in Erlang. Processes make them unnecessary, more or less. < 1276193294 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the processes? I guess so if you want it < 1276193298 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :if you have a coroutine x in python < 1276193306 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :you can do: x.throw(SomeException) < 1276193318 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :and the code inside the coroutine has an opportunity to catch it or fail out. < 1276193335 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so what I was asking < 1276193338 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, you could send an exception message to another thread I guess... sounds rather nasty though < 1276193341 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :is if you can do that in Erlang with processes. < 1276193349 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Well, Erlang has exceptions. < 1276193365 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :It also has a mechanism where processes can be notified if other processes die. < 1276193370 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ah okay. < 1276193385 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :that's quite a handy mechanism. < 1276193400 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :And I think they're related in that, an uncaught exception makes a process die. < 1276193416 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :can an exception make the whole program die? < 1276193432 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Only if there's only one process :) < 1276193435 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :or do you design that to occur by having all processes die when one does... if it's that kind of error. < 1276193436 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, erlang has throw, and try of catch < 1276193447 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well, that was not completely syntactically correct < 1276193450 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but you get the idea < 1276193452 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :There can be catastrophic failures of the runtime, but those aren't supposed to happen :) < 1276193453 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :right. < 1276193465 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :you can lave out the whole "of " bit of course < 1276193493 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...I'll probably just answer all of my questions in the process of reading. < 1276193496 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, could you send an unconditional kill message to the init process of erlang... I wonder... < 1276193501 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION goes to try < 1276193509 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :I think there's a way to say "This process dies if any of its children die". So you can set it up so that an exception will take down the entire program. < 1276193515 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, yes there is < 1276193530 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :just set a handler for SIGCHLD < 1276193539 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, E_USER_SPACE_THREADS < 1276193550 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, (in erlang) < 1276193561 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so ti doesn't quite apply here < 1276193595 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: Also note, there is a philosophy associated with Erlang called "Let it crash": Basically, don't write error-handling code, because it's horrible to get right and maintain. Instead, set up a supervisor which restarts your process whenever it crashes. < 1276193615 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: ah okay. There's a similar design philosophy in Python < 1276193634 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :wow < 1276193641 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :erlang is still running with the init process killed < 1276193646 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1276193652 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :8> q(). < 1276193652 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :** exception error: bad argument < 1276193652 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : in function init:stop/0 < 1276193656 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but the usual quitting doesn't work < 1276193661 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION uses the other way < 1276193665 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so it seems Erlang is pretty hard to fully kill. < 1276193675 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, well, double ctrl-c does it every time < 1276193679 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ha. < 1276193691 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, first time you get this prompt: < 1276193693 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded < 1276193693 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : (v)ersion (k)ill (D)b-tables (d)istribution < 1276193699 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :then ctrl-c again just kills it < 1276193714 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I think k there is for "kill process" < 1276193725 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :That's a rather nice system design though. If you have parts of a program that can continue running while something else is not working correctly... you can have it continue to run without a catastrophic system-wide crash, and then hotswap a bugfix in for the part that isn't work < 1276193728 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1276193730 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ing < 1276193736 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I never used that before < 1276193745 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION tries to figure out the prompt he got from that < 1276193769 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh, process selection which shows backtrace of process and so on < 1276193772 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :makes sense < 1276193828 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, I never seen the init process die though (except today by killing it) < 1276193857 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :the arity declaration thing is kind of odd. < 1276193861 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: Indeed, that was one of design goals -- it was developed for telephony equipment like switches, where it's important for as much of it to keep going as it can < 1276193865 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, and erlang has built in support for stuff like making supervisor threads that restart child processes if they die and so on < 1276193869 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :what does init do? < 1276193908 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, iirc it starts up other system processes and the REPL (or whatever program you make it run if you do that) and also handles the orderly shutdown of things < 1276193937 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :which includes telling IO server processes to flush buffers and close files and so on < 1276193945 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm.. this tutorial is using c(modulename) to compile code... is c an erlang function or a shell command? < 1276193958 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(yeah should mention that, normally in erlang IO is really sending messages tn another process) < 1276193969 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, c() is a shorthand in the repl for compile:something() < 1276193992 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, there is help(). in the REPL to list the shorthands it defines < 1276193995 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :what is :? < 1276194010 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, : as in compile:something ? < 1276194014 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :yes. < 1276194016 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :modulename:function < 1276194024 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ah okay. < 1276194027 0 :kar8nga!~kar8nga@jol13-1-82-66-176-74.fbx.proxad.net JOIN :#esoteric < 1276194029 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I kind of guessed but wasn't sure. < 1276194044 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :....hmmm, so compile is a module? < 1276194049 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :that has compile functions? < 1276194060 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, err maybe compiler < 1276194067 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :don't remember name of module that compiler is in < 1276194072 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :bbiab, food is ready < 1276194218 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :how are atoms represented? < 1276194231 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :low-level < 1276194250 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: I think they're interned. So, like, an opaque 32-bit value/ < 1276194258 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Or maybe 64-bit < 1276194275 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :They're turned into textual strings when shared between nodes though < 1276194283 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Oi - haven't even got into the distributed programming support < 1276194310 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Multiple Erlang nodes on different machines can send each other messages across the network. < 1276194314 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :But don't worry about that now. < 1276194322 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :yeah I think that was explained < 1276194325 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :sounds pretty sweet. < 1276194329 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :not that I'll ever need it. < 1276194375 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :It is, but the built-in support isn't fit for every purpose (I find) -- sometimes it's still nicer to roll your own. Luckily that's not that hard, if you ever need to. < 1276194708 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... is " the special character character? < 1276194712 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :like \ in C strings? < 1276194728 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :oh... ~ < 1276194734 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is far away from his monitor < 1276194929 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... function overloading and pattern matching. interesting. < 1276194949 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :that makes tail recursive iterators less ugly looking, I think. < 1276195184 0 :Phantom_Hoover!~phantomho@cpc2-belf9-2-0-cust994.2-1.cable.virginmedia.com JOIN :#esoteric < 1276195209 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :....Erlang's statement delimiters are kind of crazy. < 1276195213 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :. , ; < 1276195277 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :back < 1276195289 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, agreed. No one is perfect ;) < 1276195315 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :What were you talking about? < 1276195318 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, but you get used to it. Same as you get used to python's or C style for blcoks < 1276195334 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I'm not sure I understand , < 1276195343 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so far I've only seend it after end in an if block < 1276195344 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : They're turned into textual strings when shared between nodes though <-- not any longer afaik < 1276195356 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, there is some sort of atom cache nowdays iirc < 1276195358 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :*seen < 1276195368 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so it is sent as a number after the first time < 1276195429 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Weird, WP is messed up. < 1276195432 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :On IE and FFX. < 1276195434 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : like \ in C strings? <-- you mean escaping in strings?, < 1276195445 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, well ~ is like % in printf() or such < 1276195460 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Wait, are we talking about CL now? < 1276195466 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, while for escaping inside strings you want \ < 1276195478 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, for chars you use $ < 1276195484 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :as in $a < 1276195492 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :will give you an integer 97 < 1276195498 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I sw code that used ~n < 1276195507 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :for newline, I think. < 1276195520 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, console IO? < 1276195524 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Oh, not CL then. < 1276195539 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, iirc the difference is that on windows it does CRLF, but \n always does LF only < 1276195569 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, don't quote me on that one though < 1276195570 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...why on earth does the traceback show you the code in AST < 1276195614 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, erlang has nice pattern matching on binary blobs btw. Saw some erlang code that matches an MPEG header or such in one line of erlang code. It has various strange sized bit width fields iirc < 1276195619 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :no problems for erlang < 1276195623 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, hm? < 1276195627 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what are you talking about < 1276195636 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :fif clause,[ftut9,test if,2g,ferl eval,exprs,4g,fshell,eval loop,2g]g < 1276195637 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :** exited: fif clause,[ftut9,test if,2g, < 1276195646 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :....meh PDF copypaste is bad. < 1276195649 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that doesn't look like valid erlang though < 1276195652 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Oh, ~n is used by io:printf < 1276195655 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :iirc < 1276195663 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :io:format you mean < 1276195668 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :And is literally a ~n that is interpreted by .. yes < 1276195676 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and io_lib:format (the latter is like sprintf) < 1276195684 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :It's not physically a newline char < 1276195687 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :{if_clause, [{tut9,test_if,2},{erl_eval,exprs,4},{shell,eval_loop,2}]} < 1276195690 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :....what am I looking at. < 1276195691 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo_, indeed < 1276195708 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, you know, in the REPL erlang gives much nicer formatted backtraces < 1276195727 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :is the shell not the REPL? < 1276195729 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, but I think you somehow got an if clause where no of the patterns matched, then a backtrace < 1276195735 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, the shell is the REPL yes. < 1276195739 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :it was from a tutorial < 1276195740 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :not my code. < 1276195742 0 :MizardX-!~MizardX@unaffiliated/mizardx JOIN :#esoteric < 1276195745 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, old tutorial? < 1276195750 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :yes, that's what's happening. I was just confused about the format. < 1276195754 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: possibly. < 1276195776 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, the shell pretty prints that sort of stuff iirc < 1276195801 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :are the numbers line numbers? < 1276195807 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, no, arity numbers < 1276195811 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ah. < 1276195832 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, in erlang foo/2 and foo/3 are different functions. the first one could be foo(A,B) and the later foo(A,B,C) < 1276195836 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :right. < 1276195839 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and they are for all purposes different functions < 1276195840 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I've read that much so far. < 1276195861 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :(loop (print (eval (read)))) < 1276195870 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so, I haven't learned funs yet, but I assume when you want to use a fun you would specify the arity of the function? < 1276195870 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :BEST. REPL. EVER. < 1276195884 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Must dash. < 1276195885 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover, no exception handling, no line editing? < 1276195893 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, you can get line numbers out of backtraces, but iirc you need to compile with debug info then < 1276195905 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster, but the ELEGANCE! < 1276195920 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover, useless for practical purposes though ;P < 1276195946 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, don't remember how with the c() command or such since I tend to use emake, which is basically a nice build system for erlang code, very erlang specific but doesn't suck as such < 1276195983 0 :MizardX!unknown@unknown.invalid QUIT :Ping timeout: 276 seconds < 1276195986 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :emake. I'll remember to check it out. < 1276195987 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :though it has the downside of not being designed with multi-core systems in mind. should be easy to fix in theory < 1276195993 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, it is erl -make < 1276195997 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :comes with the system < 1276196000 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :sweet < 1276196008 0 :MizardX-!unknown@unknown.invalid NICK :MizardX < 1276196009 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, I use a short Makefile to provide a clean target < 1276196010 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so does Erlang compile to native code? < 1276196023 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, not by default, it is possible though < 1276196051 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :might not be necessary. I'll look into my hosting options and see if I can get erlang on the server I'll be using. < 1276196051 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, check when you start the erlang REPL, the first line. Does it contain [hipe] in it? < 1276196065 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :if so, then your build supports compiling to native < 1276196070 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1276196073 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :Erlang R13B03 (erts-5.7.4) [source] [rq:1] [async-threads:0] [hipe] [kernel-poll:false] < 1276196073 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :still runs under the VM though < 1276196096 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ah... it essentially compiled a stand-alone VM < 1276196097 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, anyway in practise I never found that it mattered much on my system. But iirc for Deewiant it made a huge speed difference in efunge < 1276196099 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :*compiles < 1276196106 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :forgot how much he said < 1276196122 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :something like 70% or so iirc. For me the reduction is usually around 20% for it < 1276196131 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and efunge is CPU bound mostly < 1276196132 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so makes sense < 1276196139 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well, CPU and memory < 1276196148 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : ah... it essentially compiled a stand-alone VM <-- no < 1276196162 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, it compiles a module with native code that can be loaded in the normal VM < 1276196163 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1276196175 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that is what HIPE does < 1276196211 0 :Phantom_Hoover!unknown@unknown.invalid QUIT :Ping timeout: 265 seconds < 1276196231 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, in any case, I doubt that sort of performance will be a blocker for you unless you do something stupid in your design (which is possible if you aren't used to erlang, I sure did stupid things in the beginning!) < 1276196275 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :anyone know of any free hosting that allows SSH and FTP? < 1276196382 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...top-level domain too. Would be amazing. < 1276196384 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, btw there is one small issue currently with atoms. It is being worked on afaik. And that is that when you use an atom, it is assigned an integer, but currently the atom table in erlang is not garbage collected. this is probably a remaining part of the prolog inspiration and legacy you could say. they used to have that issue too. But from what I heard it is being worked on. Next version ma < 1276196385 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ybe. < 1276196412 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the number you can have is 1048576. Just don't go around creating atoms for stuff like every line the user say and you should be fine < 1276196441 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... okay < 1276196454 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, I know shell servers that allow irc bouncers and has web space but does not in general allow other servers by users < 1276196459 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :very nice freebsd shell < 1276196460 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I would define atoms statically anyways. < 1276196470 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :have one, sadly some issues with the server the last few days < 1276196494 0 :ais523_!~ais523@unaffiliated/ais523 JOIN :#esoteric < 1276196505 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, right, that is very unlikely to make you run out of atoms. < 1276196506 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is looking for free hosting for said MUD server. < 1276196510 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah hm < 1276196522 0 :ais523!unknown@unknown.invalid QUIT :Disconnected by services < 1276196523 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, no clue. VPS are rather cheap nowdays though < 1276196525 0 :ais523_!unknown@unknown.invalid NICK :ais523 < 1276196527 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I can get a paid host if necessary. In the distant future, when I have income. < 1276196528 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and I'm sure that would be enough < 1276196540 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1276196566 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :how cheap? Know any numbers? < 1276196589 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, well $5 or such isn't an uncommon number iirc < 1276196605 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :brb, need to clean glasses < 1276196709 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, one way would be to find someone else who has a server or such. Some friend at the local LUG perhaps? < 1276196772 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...local LUG? < 1276196774 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :... < 1276196783 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I'm in a somewhat rural/suburban area. < 1276196803 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah... < 1276196819 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, well, are you at university? < 1276196828 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or after or before that? < 1276196830 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :temporarily not. but yes, student. < 1276196840 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, you mean temp as in summer holidays? < 1276196844 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :yes. < 1276196853 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, well doesn't universities tend to generate computer clubs? < 1276196867 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I'll look into it. Dunno if any of them would have hosting though. < 1276196873 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :surely you could interest someone somewhere there < 1276196898 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, the computer club itself might have it? < 1276196903 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it isn't uncommon < 1276196905 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I might have a friend who would let me host some stuff. He'd likely bitch about how server resources aren't cheap... but a MUD server would hardly have an impact. < 1276196971 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... with the VPS idea, I actually know a host that's dedicated to MUD hosting that would likely be cheaper than that per year. < 1276196973 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, erlang probably isn't the type of program that calls free() all the time, rather it is the type of program that tries to keep free pages around for reuse (though I have seen it return memory to the OS, but I think it only does that when it has a large enough chunk of memory) < 1276196989 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, per year? I meant per month < 1276196994 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :right. < 1276197025 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, or you could poke a hole in your router if your ISP doesn't get all sour about that < 1276197038 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :bbl, going to take some photos, now that the light is just right! < 1276197040 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :poke a hole? < 1276197047 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :port forwarding < 1276197087 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ah. < 1276197254 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I'm going to go fry some bologna < 1276197257 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :because it's fucking delicious. < 1276197373 0 :kar8nga!unknown@unknown.invalid QUIT :Remote host closed the connection < 1276197395 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I have actually discovered that fried bologna is apparently a regional thing < 1276197421 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I live in the southern U.S., and I know people online from southwest and midwest U.S. that have never heard of such a thing. < 1276197901 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I never heard of it, but wtf is a bologna? < 1276197907 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(Europe so...) < 1276198076 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :lunch meat. < 1276198128 0 :SevenInchBread!~adam@h178.21.18.98.dynamic.ip.windstream.net JOIN :#esoteric < 1276198130 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Generally, a highly-processed lunch meat. < 1276198161 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Kind of like hot dog meat but in larger round slices. < 1276198178 0 :CakeProphet!unknown@unknown.invalid QUIT :Ping timeout: 258 seconds < 1276198627 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :You know, I used the word "meat" in the last three lines, but there are many who would argue otherwise. < 1276198800 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :and yes... hot dog "meat" in larger slices < 1276198805 0 :SevenInchBread!unknown@unknown.invalid NICK :CakeProphet < 1276198830 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :you can get it unsliced and slice it yourself to get nice thick pieces too. < 1276198992 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I have made a monsterous creation < 1276199029 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :a sandwich with a fried egg, fried bacon, with three slices of bologna forming layers between the other two. < 1276199179 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :The fried bologna sandwich has been elevated to a regional specialty in the Midwest and Appalachia. It is the sandwich served at lunch counters of small family run markets that surround the Great Smoky Mountains.[1] They are sometimes sold at concession stands in stadiums, like those of the Cincinnati Reds and Buffalo Sabres.[2] < 1276199184 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ah... so I am a product of my environment. < 1276199190 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :Didn't know that. < 1276199848 0 :tombom_!tombom@wikipedia/Tombomp JOIN :#esoteric < 1276199849 0 :tombom!unknown@unknown.invalid QUIT :Ping timeout: 252 seconds < 1276201185 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :argh, when shooting a panorama, make sure that the sun doesn't disappear behind a could for one or two shots in the middle < 1276201190 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :question about Erlang. < 1276201201 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :what is the default case? < 1276201201 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I suspect this will be unstitchable... < 1276201206 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, case as in? < 1276201212 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :case statement. < 1276201221 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, _ -> maybe? < 1276201226 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :is that what you mean < 1276201229 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :makes sense. < 1276201230 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :yes. < 1276201235 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, _ is "match anything" after all < 1276201240 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :for if it would be true -> < 1276201250 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... will a variable name match anything? < 1276201261 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...I assume so. < 1276201267 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, if it isn't bound to anything yet. If it is bound to something it will match that < 1276201272 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :remember, single assignment < 1276201402 0 :ais523!unknown@unknown.invalid QUIT :Remote host closed the connection < 1276201419 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so wait. < 1276201437 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :a bound variable in a case statement matches its value? < 1276201754 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, yes < 1276201762 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, it does that anywhere of course < 1276201769 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I mean, in any match on either side < 1276201775 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :like: < 1276201778 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Foo=a < 1276201787 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :{Foo,Bar} = {a,b} < 1276201794 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :then that Foo will match the a < 1276201796 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :had it been: < 1276201801 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :{Foo,Bar} = {b,c} < 1276201807 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :you would have got a bad match exception < 1276201809 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well not in a case < 1276201812 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Which can be both awesome and horrific < 1276201816 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :then it moves on to the next case < 1276201827 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, pretty useful. Never found it horrific < 1276201868 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Sometimes I want it to be clearer whether B will be bound in this statement or if it's already been bound. They're syntactically the same. < 1276201912 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :It would be nice if there was some marker like *B to say, "B does not yet have a value. We're giving it one here" < 1276201917 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :But, that's just me. < 1276201925 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Write short functions and you won't run into it much :) < 1276201926 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, you mean shadowing? < 1276201934 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :No, not shadowing < 1276201940 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1276201956 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :B = 3 has two meanings, depending on whether B is already bound or not < 1276201964 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, anyway it is good practise to write short functions or at least short short per entry point < 1276201999 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Maybe I should write out my vision for Schemerlang :) < 1276202006 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I mean, the main interpreter thing in efunge is quite long, it goes like process_instruction($| , ...) ... ; process_instruction($-, ...) ... ; < 1276202007 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and so on < 1276202015 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but each entry point is quite short < 1276202029 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I don't think efunge has many functions longer than, say, 10 lines < 1276202042 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :perhaps main/1 (called with -run) < 1276202046 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :That's because efunge isn't a business application :D < 1276202063 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Oh god, page after page after page... not Erlang though < 1276202073 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... this tutorial uses a function called process_flag < 1276202073 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :but < 1276202078 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I can't find it in erl -man < 1276202085 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, well I guess the auto generated code for returning an array defining what instructions a fingerprint implements is fairly long < 1276202096 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, erl -man does module names < 1276202098 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1276202100 0 :augur!unknown@unknown.invalid QUIT :Read error: Connection reset by peer < 1276202110 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, I suspect it is in the module erlang < 1276202123 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, it includes a few auto imported functions < 1276202132 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :... but I would need a better name than "SchemErlang" ... < 1276202132 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :stuff that would be annoying to not auto-import < 1276202135 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :No manual entry for erlang < 1276202146 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, sure the docs are installed? < 1276202157 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, it is a separate download iirc < 1276202163 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and many distros do it as separate package < 1276202165 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ah... might check then. < 1276202187 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, all functions in the erlang module are implemented in the runtime btw. < 1276202204 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :erlang-typer is probably the type system you were talking about. < 1276202208 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, either for reasons like "can't be done elsewhere" or "a lot faster" or such < 1276202226 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, that is a tool to auto generate type specs < 1276202234 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :from untyped or partly typed code < 1276202244 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, the thing you want is called dialyzer < 1276202248 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well you would want typer too < 1276202254 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but dialyzer primarily < 1276202285 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :some are auto-imported functions from erlang include abs(Number), length(List) < 1276202286 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and so on < 1276202288 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :erlang-pman "erlang process manager"? useful? < 1276202295 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is going down a list of packages. < 1276202306 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, well could be, but why the hell is that a separate package < 1276202311 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it is called from inside erlang < 1276202318 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it doesn't even make any sense to make it separate < 1276202329 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it is just a TK thing for seeing erlang processes < 1276202332 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :already have it then. < 1276202335 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pman:start(). < 1276202346 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, well I blame distro for crappy packaging if it is a separate package < 1276202365 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, what is this? debian or some shit? < 1276202427 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :....so many erlang packages. < 1276202432 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :they all look potentially useful. < 1276202442 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, what distro? < 1276202448 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :Ubuntu < 1276202466 0 :chuck_!unknown@unknown.invalid NICK :chuck < 1276202475 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, huh? must be recent ubuntu, iirc on jaunty it is like: erlang-base, erlang-x11-stuff, erlang-docs < 1276202477 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or such < 1276202485 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :possibly one or two more packages < 1276202493 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ah found it < 1276202495 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :erlang-manpages < 1276202521 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, I would suggest you install most of the other except if any of them conflict. I seem to remember ubuntu had erlang-hipe and erlang-nohipe < 1276202530 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :where you should of course pick the HIPE version < 1276202537 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :shell says I have HIPE. < 1276202563 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :going to get debugger and maybe runtime tools < 1276202564 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, well yes, but if you try to install a no-hipe version and get a package manager conflict I meant < 1276202570 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :concurrency profiler might be good too < 1276202574 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, wait, runtime tools? < 1276202576 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :wth would that be < 1276202579 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...no clue. < 1276202604 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, never found the concurrency profiler that useful. Rather in that case the code coverage tool < 1276202607 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that is very very nice < 1276202611 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :get the web UI for it too < 1276202624 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :code coverage? < 1276202625 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I presume this insane distro had split that into a separate package < 1276202645 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, yes you know, like gcov, shows which lines were executed during a run < 1276202651 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :What's worse? A less than stellar programmer, or a manager who's going to make the less than stellar programmer's vacation permanent because he's completely blind to what said programmer did < 1276202654 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :useful for making complete test suits and for finding dead code < 1276202673 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo_, and you being the former? < 1276202677 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :No < 1276202681 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah hm < 1276202686 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo_, you are the latter? < 1276202703 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Me being the programmer thankful that there is a framework made by the former, even if it's not really that perfect < 1276202728 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo_, wait what do you mean? < 1276202738 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the former there would refer to the "A less than stellar programmer" < 1276202740 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and you said no < 1276202741 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :erlang-observer? < 1276202743 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :then you say yes? < 1276202760 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :I'm a third party, thankful to the work that the less than stellar programmer did < 1276202770 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, I heard of it. Don't remember what it does. It maaay be related to tracing of processes. Check documentation. < 1276202834 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :hello sweeties < 1276202837 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :is alize back yet < 1276202841 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :i'm missing her < 1276202852 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :It's Thursday, and alise is a guy < 1276202877 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :you have generated two answers which have nothing to do with the question uttered < 1276202882 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ACTION was not positive of alise's gender. < 1276202891 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :i should hire you as a source of randomness < 1276202910 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :i will feed you with thermal entropy < 1276202917 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :do we have a deal or what? < 1276202925 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Blue! < 1276202934 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :sweet... I now have all these Erlang tools and packages that are somewhere on my filesystem. Where? dunno. < 1276202956 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :wait < 1276202956 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cheater99, wrong. "It's Thursday" is very relevant to alise < 1276202960 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :you're getting into erlang? < 1276202970 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, /usr/lib/erlang/lib/ I guess < 1276202985 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, well typer and dialyzer should be in /usr/bin < 1276202992 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but yeah some of them are called from the erlang REPL < 1276203052 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, btw let me pastebin a short escript program that finds duplicate files in a rather efficient manner. (as in, it checks for same size first and only then compares the stuff in the files). < 1276203060 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, oh and escript is erlang script < 1276203073 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :....script? < 1276203078 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, yes as in #!/usr/bin/escript < 1276203089 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ah... < 1276203099 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, normal erlang applications requires a wrapper script to start things < 1276203105 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :erl is specifically the shell. Do you normally keep a shell open for erlang programs? < 1276203132 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, calling something like: erl -noshell -run mainmodule functionname command line parameters here < 1276203164 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :is this script written in Erlang? < 1276203172 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, escript is erlang script so yes < 1276203191 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is slightly confused... but thinks he understands. < 1276203192 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, also "normal" erlang is optimised for long running applications. escript for short running ones. "normal" erlang has a rather long startup and exit time < 1276203200 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :while escript has short such < 1276203234 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, and escript doesn't need to be compiled < 1276203241 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, it can be still < 1276203246 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :http://sprunge.us/AQgR < 1276203248 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :there < 1276203268 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :in fact I made that one compiled < 1276203269 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I find it ridiculous that there are erlang programs that have been running for years nonstop. < 1276203276 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, why is that? < 1276203288 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, you can't shut down a telecom switch just to upgrade it < 1276203298 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, most extreme I heard about so far was 10 years < 1276203303 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :by "ridiculous" I mean remarkable. < 1276203305 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :with hot hardware standby < 1276203318 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so it did seamless failover when the main hardware failed < 1276203325 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :not dropping anything < 1276203335 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... can Erlang serialize processes? < 1276203344 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, define what you mean with that < 1276203361 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :to swap it over to another node/machine < 1276203379 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, hm I think it probably kept a hot standby by running a copy of everything < 1276203399 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, but actually I'm not sure about that, you could send the data over < 1276203419 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, the thing is the actual process is likely to depend on stuff like architecture of system < 1276203428 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ah okay. < 1276203429 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :you couldn't move a process from SPARC to x86_64 like that < 1276203446 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :while you could easily link them as nodes < 1276203447 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :I think there have been debates in the erlang community about this. The general sentiment was, iirc, why do you need failover? < 1276203453 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I know Stackless Python uses message-passing lightweight threads that can be serialized and transferred across network to be run on other machines. < 1276203459 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, wait, what? < 1276203490 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Why do you need to serialize a process? < 1276203496 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, how does that work when moving from a 32-bit big endian machine to a 64-bit little endian system? < 1276203509 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Implying: if you think hard about it, you don't < 1276203510 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :Python isn't native. doesn't matter. < 1276203517 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, no I meant "why do you need failover?" < 1276203520 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :or at least, I don't think so. < 1276203543 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, needing a hot standby in telecom if hardware fails is pretty obvious < 1276203554 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, stuff like CPU does break, ram does go bad < 1276203555 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and so on < 1276203564 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :"failover" in the sense of "serialize a process and move it to another node" < 1276203567 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, good point < 1276203578 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, well true, you can't make a hot standby work that way < 1276203582 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1276203609 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, how does rpc:call() work then? < 1276203615 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :well... you might want serialization for other reasons. < 1276203620 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Processes crash all the time, what is the point of saving one and restoring it elsewhere? Just start a new one :) < 1276203630 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, likely to be problematic if you upgrade the runtime < 1276203631 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :consider a cluster that runs redundant copies of a process in the event that a server fails. < 1276203643 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, yep I'm considering it < 1276203650 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: Well, think of it as serializing the process's important data, rather than the process itself. < 1276203659 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : Processes crash all the time, what is the point of saving one and restoring it elsewhere? Just start a new one :) <-- I hope that was a joke < 1276203659 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :That use case makes sense. < 1276203666 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: yeah that would work. < 1276203676 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Not really. < 1276203687 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I think it's just a matter of design, really. < 1276203694 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :you can implement designs that don't require process serialization. < 1276203710 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :but still achieve an equivalent or better result. < 1276203752 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, you mean people use the erlang supervision stuff for that? Rather than as a way to handle things gracefully (and log the error) if things goes very wrong < 1276203758 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and then fix the bug as soon as possible < 1276203788 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: er, no, I didn't mean to imply anything about how people use the supervision stuff. < 1276203796 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, then what did you mean? < 1276203822 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :If "let it crash" is your philosophy, why are processes so precious they have to be retained? < 1276203830 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :They don't. < 1276203839 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :It's state, not processes, that you need to care about. < 1276203845 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, why would it be my philosophy though? < 1276203860 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, also that is a pita if the process has file IO or socket IO open < 1276203868 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :doesn't it get closed with the process by default? < 1276203871 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Because the Erlang folks are holding a gun to your head, of course :/ < 1276203900 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so is link() how you do supervisor stuff? < 1276203920 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, my philosophy is "don't let it crash, but if it does then handle it gracefully and log an error, then as soon as possible track down and fix the bug" < 1276203977 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, well, link() is bidirectional, also there is a race condition there, what if process dies between spawn() and link()? that is why you use spawn_link() < 1276203992 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: That's great. I was explaining the Erlang-community-at-large's position. < 1276203994 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, again bidirectional, for one directional there is some monitor stuff < 1276204002 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, hm never noticed that in #erlang < 1276204006 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but okay < 1276204023 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: do you follow erlang-questions@ ? < 1276204033 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, I strongly dislike mailing lists < 1276204038 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, I use IRC and usenet < 1276204040 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :does link() do anything else other than error handling semantics? < 1276204047 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :I would be surprised to hear that the core Erlang gurus hang out on IRC < 1276204069 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, how do you mean? well there is the "die if linked process dies, unless you set the relevant process flag" < 1276204081 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but that maybe was what you meant < 1276204082 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: I think it's closer to death-handling (error or not) semantics. < 1276204092 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :yeah that's what I meant. < 1276204096 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is still reading. < 1276204109 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, anyway spawn_monitor() is getting used a lot more these days due to the lack of bidirectional semantics < 1276204110 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :I remember being confused between link and throw/catch for that reason < 1276204119 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :WOW pretty sunset < 1276204122 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :bbl *gets camera* < 1276204177 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I assume monitor is pretty much the same as link but one way then? Which way? < 1276204202 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :I think monitor's the one that's bidirectional. < 1276204243 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, wrong < 1276204250 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :monitor is the unidirectional one < 1276204264 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :yeah monitor is unidirectional < 1276204266 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, spawn_monitor() : you monitor the child < 1276204274 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and get a message if it dies < 1276204276 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :makes sense. < 1276204290 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :I stand corrected. < 1276204291 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, the other would be fairly useless < 1276204308 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, spawn_link() is 1) older 2) still very useful for supervision trees < 1276204320 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :if the superviser crashes the children should probably exit too < 1276204368 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so is superviser just a name for a process that is monitoring a child? Or is there special stuff. < 1276204382 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I'll let cpressey explain this one < 1276204392 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :I don't remember. < 1276204408 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :I think there is special stuff for it at least in OTP, but I don't do OTP. < 1276204424 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :More educational to roll your own :) < 1276204452 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Wait, is it even called OTP? What's all that boilerplate they provide for processes, that you don't need, called? < 1276204460 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...and what is OTP? < 1276204507 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :No, not OTP. That just stands for Open Telecom Platform. < 1276204538 0 :bsmntbombdood!unknown@unknown.invalid QUIT :Ping timeout: 265 seconds < 1276204548 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... erase() "returns the process dictionary and deletes it" < 1276204557 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :sounds bad to me. < 1276204571 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :oh... is that like register()'s dictionary? < 1276204584 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :-like < 1276204596 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :ahhh gen_server is what i was thinking of. < 1276204599 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :anyway < 1276204619 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Don't use the process dictionary! < 1276204626 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :(Requisite admonishment.) < 1276204640 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...why not? < 1276204673 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Because it's destructive update, leads to less clean code than writing functional, single-assignment code, etc, etc. < 1276204679 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Use it if you like. < 1276204734 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :But ETS tables are probably better for any keeping around mutable state of any importance. < 1276204876 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, you don't use gen_server? < 1276204892 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :oh so process dictionary is different from using regster() < 1276204895 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and yes it is otp < 1276204897 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: No. < 1276204918 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, yes iirc register() allows you to name a process so you don't need to know the PID to call it < 1276204924 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I thought you meant don't use register()... which seems like a good thing to me. < 1276204927 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :also makes things easier to follow in crash dumps ;P < 1276204984 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, anyway, process dict is an "modify in place" storage area that should not be used in general < 1276205017 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :only legal reason I can think of is the random module. which uses it to store the current prng state < 1276205030 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :which is not global but per process < 1276205138 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hibernate() is a cool function. < 1276205212 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I'd use hibernate on objects/rooms that players are not current in. < 1276205217 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :*currently < 1276205222 0 :Phantom_Hoover!~phantomho@cpc2-belf9-2-0-cust994.2-1.cable.virginmedia.com JOIN :#esoteric < 1276205227 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :after a wait period. < 1276205243 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :??? < 1276205294 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...talking about using hivernate() to save memory in an Erlang MUD client < 1276205315 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: That's a new one to me, although ISTR a conversation about adding something like that it the language. < 1276205367 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :yeah, it basically reduces most of its performance/memory impact until it receives a new message. < 1276205384 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :and then calls a function that you pass to hibernate() when you call it. < 1276205395 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :because it destroys the call stack when you hibernate < 1276205403 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wonders why the functional languages he knows of don't use the standard f(x, y, z) notation for functions < 1276205415 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :faster to type I assume. < 1276205421 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :lots of functions being used. < 1276205486 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :actually I'll probably just kill room processes after they're left vacant. < 1276205487 0 :oktolol!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wonders why mathematics doesn't use the more sensible f x y z notation < 1276205497 0 :oktolol!unknown@unknown.invalid NICK :oklopol < 1276205523 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Or x y z f < 1276205526 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :actually... < 1276205531 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :smalltalk syntax is the best < 1276205559 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :f: x where: y and: z < 1276205565 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...I think. < 1276205568 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :it's been a while. < 1276205722 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Pointlessly verbose. < 1276205724 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :what's after and: < 1276205732 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :then: < 1276205734 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :also: < 1276205742 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :.... < 1276205744 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :nothing? < 1276205747 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :z? < 1276205762 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :what if you need more than 3 args < 1276205767 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :oh. < 1276205776 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :where/and aren't static names < 1276205781 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :they're method dependent < 1276205790 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :f: x where: y and: z but also: w and ofc: q < 1276205793 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so when you define a method you specify the names < 1276205794 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Again, pointlessly verbose. < 1276205800 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :f:where:and: < 1276205805 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I think is the syntax < 1276205826 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I could see it being useful for particularly numerously argumented functions. < 1276205831 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover: isn't math notation all about being verbose? < 1276205833 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :like named keywords in Python. < 1276205849 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I think math notation was supposed to be concise...? < 1276205853 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :*is < 1276205857 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :well.. was, I guess. < 1276205870 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :since it does get out of hand. < 1276205882 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :often math notation seems to be concise at the expense of readability, judging by the fact most proofs are just english text < 1276205909 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :(another reason might be there isn't really standard notation for many things but just an english name) < 1276205933 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Mathematicians would sooner pick a letter from another *alphabet* than make up a multi-character variable name... < 1276205942 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1276205950 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :'Cept category theorists. < 1276205957 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and complexity theorists < 1276205962 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :But even they keep it to three, dawg. < 1276205973 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :But using multi-character variable names is confusing. < 1276205995 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :Rel < 1276205998 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Unless you don't have multiplication or don't represent it as xy. < 1276206001 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :only if your objects use multiplication, Top isn't confusing in any way < 1276206015 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :because you don't have a T that likes to be multiplied < 1276206064 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :should I ever fiddle with process priority in erlang? < 1276206144 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: Unlikely to need to. < 1276206240 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :save_calls is a nifty flag. < 1276206895 0 :CakeProphet!unknown@unknown.invalid QUIT :Ping timeout: 258 seconds < 1276206936 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wonders if he can make his computer boot from an ISO image < 1276207272 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :i want alizar to win < 1276207274 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :OMGOMGOMGOMG < 1276207334 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :(i'm talking about germany's next top model) < 1276207762 0 :cheater99!unknown@unknown.invalid QUIT :Ping timeout: 248 seconds < 1276208046 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : Mathematicians would sooner pick a letter from another *alphabet* than make up a multi-character variable name... <-- yes but what about "log", "sin", "cos" and so on? < 1276208058 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :of course those are function names < 1276208060 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but < 1276208069 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :f(x) g(x) seems common for non-standard functions < 1276208078 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :which again shows this terseness < 1276208163 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : save_calls is a nifty flag. <-- ? < 1276208195 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :* Phantom_Hoover wonders if he can make his computer boot from an ISO image <-- yes, just burn it to a CD < 1276208197 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :;P < 1276208205 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Don't have a CD. < 1276208224 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover, probably NAND memory with an USB interface will work too < 1276208241 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that is, memory stick < 1276208245 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :of some sort < 1276208278 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Don't have one of them either. < 1276208301 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover, have more than one computer? < 1276208304 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :if so: PXE < 1276208311 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that is, network boot < 1276208343 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover, also, _everyone_ has a usb stick these days. < 1276208348 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover: Depending on why you need to boot from it... have you considered installing Bochs or VMWare? < 1276208358 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, or virtualbox < 1276208363 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :vmware is pretty much crap nowdays < 1276208372 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and also expensive for the non-crap version < 1276208376 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :while virtualbox is very nice < 1276208382 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :bochs is slow < 1276208386 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :For the installation of an OS from an ISO. < 1276208391 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I would suggest qemu rather than bochs < 1276208399 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, so yeah strange suggestions < 1276208400 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I'm working on VMWare at work -- I may try virtualbox, if you think it's better < 1276208401 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Or just booting a live CD. < 1276208422 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, I think virtualbox is better than the free vmware server thingy at least < 1276208427 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, don't know about vmware workstation < 1276208428 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Weird? My first inclination was to suggest DOSBox. ;) < 1276208439 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpressey, okay that is bloody strange < 1276208565 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover: You may be up the creek. Consider going out and purchasing a couple of blank CDs/DVDs... assuming you have some way to burn to them. < 1276208595 0 :cheater99!~cheater@ip-80-226-28-126.vodafone-net.de JOIN :#esoteric < 1276208646 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover, or some usb memory assuming you can boot from that < 1276208664 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :a lot of linux installers can run from usb memory pins < 1276208710 0 :Gregor!~Gregor@user980.newres.utoronto.ca JOIN :#esoteric < 1276208919 0 :cheater99!unknown@unknown.invalid QUIT :Ping timeout: 258 seconds < 1276208935 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Pins? < 1276209797 0 :cheater99!~cheater@ip-80-226-22-253.vodafone-net.de JOIN :#esoteric < 1276209941 0 :CakeProphet!~adam@h147.18.18.98.dynamic.ip.windstream.net JOIN :#esoteric < 1276209947 0 :CakeProphet!unknown@unknown.invalid QUIT :Changing host < 1276209948 0 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake JOIN :#esoteric < 1276209987 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm < 1276210060 0 :Phantom_Hoover!unknown@unknown.invalid QUIT :Ping timeout: 245 seconds < 1276210277 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :is there a name for the formal language that contains all other languages as a subset? < 1276210292 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :or do you have to define that per-alphabet? < 1276210301 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: .......... OmniGlot? < 1276210336 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I was just thinking about formal languages for some reason < 1276210338 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :like with IRC bots < 1276210369 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :if you have a language, like the language of IRC, that allows this sort of superlanguage within itself < 1276210384 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :then you can nest any number of equally complex languages within. < 1276210395 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Well... modulo quoting rules, yes. < 1276210398 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :right. < 1276210410 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :on IRC that would be \n < 1276210430 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :So it's never really possible to embed Omniglot proper. < 1276210439 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :If you try, you become Omniglot. < 1276210454 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Well, maybe with a prefix. < 1276210457 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Hm. < 1276210493 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Whhh < 1276210525 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm < 1276210536 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I wonder, can you apply the concept of a Kleen star to automata? < 1276210543 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :*Kleene < 1276210600 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Sure. < 1276210618 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...I do not know how though < 1276210635 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Well, < 1276210637 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :it seems quite tailored to an automata that reports success or failure or string patterns. < 1276210656 0 :BeholdMyGlory!unknown@unknown.invalid QUIT :Remote host closed the connection < 1276210659 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Oh, ok. I was assuming that as the definition for automaton. < 1276210762 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I mean < 1276210793 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :could you construct an operation that takes an autoamton and produces a new one with similar semantics to the Kleene star? < 1276210814 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :or, in general, what kind of operations on automata can one make? < 1276210848 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :If the automaton accepts/rejects strings, sure. If not -- not sure. < 1276210886 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :If it's a transducer (takes input, produces output), then probably still yes. < 1276210928 0 :GreaseMonkey!~gm@unaffiliated/greasemonkey JOIN :#esoteric < 1276211106 0 :tombom_!unknown@unknown.invalid QUIT :Quit: Leaving < 1276211556 0 :iamcal!~cal@c-24-4-207-72.hsd1.ca.comcast.net JOIN :#esoteric < 1276211660 0 :cal153!unknown@unknown.invalid QUIT :Ping timeout: 245 seconds < 1276211981 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmmm... wonder if you could make an automata in which present states are based on future states. < 1276211991 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :using some kind of fancy nondeterminism to actually implement that. < 1276212022 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Again, I will be bold and say "Sure". < 1276212039 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :But, uh. < 1276212054 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :oh hey it's cpressey < 1276212055 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :It kind of cheapens the concept "state". < 1276212101 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: it'd be a hell of a job making a compiler for it, i guess < 1276212121 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :well... essentially determinization occurs backwards... sort of < 1276212133 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so you have these undetermined states that become determined upon future input. < 1276212140 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :10: if (this program terminates) then terminate else goto 10 < 1276212161 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so, to implement, you're basically executing every possible path, and reduce as new states are received. < 1276212181 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :That one would seem to have two perfectly valid execution paths < 1276212218 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... well it'd be like < 1276212242 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :state 2 is A if state 3 is B < 1276212323 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :and state 3 is B if your mom terminates. < 1276212350 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...I think you'd end up having to solve the halting problem somewhere in the transition function < 1276212385 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :though it might be optional... thus making the concept "more" possible. < 1276212394 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Well, you'd need some way to at least *look for* solutions to it, yes -- fixed points. Which is quite possible, as long as you don't mind it not being perfect. < 1276212403 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :oh, right < 1276212412 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :future input, not future states... or is it? < 1276212424 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...future states. < 1276212438 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :ouch. < 1276212438 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :not /all/ states have to be determined by future states though < 1276212446 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :but < 1276212451 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :since some states are determined by future states < 1276212455 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :you have points of nondeterminism < 1276212461 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Anyway, must be off. Later, folks. < 1276212469 0 :cpressey!unknown@unknown.invalid PART #esoteric :? < 1276212472 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric : 10: if (this program terminates) then terminate else goto 10 <-- but what if you'd rather go to 10 instead? then it won't terminate. < 1276212474 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :cya...? < 1276212483 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :in which you must run the program for /every/ possible state up until the point in state that uniquely determines your past state < 1276212507 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :and that narrows the execution paths down to one (maybe more?) < 1276212639 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so... I would go ahead and say that this computational model is impossible for programs with infinite possible states. < 1276212642 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... well < 1276212645 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :maybe not. < 1276212670 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :a Turing machine stores an infinite number of FSMs < 1276212674 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so < 1276212685 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :as long you're working with one or more FSMs you should be good. < 1276212688 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :+as < 1276212695 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :and not... infinite state machines or what have you. < 1276212712 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :because you cannot split execution into infinite paths., < 1276212720 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...conceptually, but not practically. < 1276212866 0 :coppro!~coppro@unaffiliated/coppro JOIN :#esoteric < 1276212922 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm < 1276212931 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I think to implement this < 1276212944 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :you'd need to have one of the possible states to be bottom < 1276212969 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: nondeterminism essentially bases present states on future states, you just fail if you at some point go to a fail state instead of the future state you wanted to get to < 1276212992 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :as in you need something like "if state of automata X is S at time T, then halt, otherwise..." < 1276213008 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: yeah... okay. What you're saying sounds equivalent to what I'm saying. < 1276213050 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so then the question is... can you remove the halt restriction? < 1276213054 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :sanely? < 1276213125 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm < 1276213134 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and nondeterministic turing machines are in fact stronger than deterministic ones, for instance you can solve the halting problem of a deterministic one, say "yes, it doesn't halt" and if it does halt then fail < 1276213140 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1276213169 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :x = 2; if (x is ever 3): x = 1 (in the present) else: x = 4 < 1276213181 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :you would branch at that condition < 1276213184 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :and then in the future < 1276213185 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'm not sure that's a sensible model in general, but it is consistent, can't solve it's own halting problem for instance < 1276213196 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :when x becomes 3 in one of the possible executions < 1276213202 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :you halt < 1276213253 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so... essentially the halting semantics are still there I guess... < 1276213260 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :but only in implementation < 1276213345 0 :Oranjer!~HP_Admini@adsl-243-205-116.cae.bellsouth.net JOIN :#esoteric < 1276213356 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :no okay umm < 1276213373 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :something wrong? < 1276213400 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :of course a nondeterministic turing machine should halt if there's a computation path that says yes, which can be emulated with a tm < 1276213427 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so what i'm thinking is not a nondeterministic tm exactly, i wonder what i'm thinking... < 1276213464 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :oh, the one that can solve halting problem for deterministic turing machines? < 1276213469 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1276213482 0 :biber!~Biber@d86-33-77-18.cust.tele2.at JOIN :#esoteric < 1276213484 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :yeah... not nondeterministic then, because that would mean you can simulate the algorithm that does that in a tm < 1276213516 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... is it quantum maybe? I dunno < 1276213527 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :quantum = nondeterministic < 1276213530 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :the only other types of tm I know are probabilistic and quantum < 1276213541 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :coppro: not quite equal < 1276213545 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I'd say they're conceptually distinct. < 1276213547 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :no quantum is not nondeterministic < 1276213559 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :just like nondeterministic != exponential time < 1276213559 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1276213570 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1276213574 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ok I get it < 1276213586 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is greatly enjoying the concept of nondetermnism. < 1276213592 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :spelled properly. < 1276213596 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well not "just like" except in the sense that both are often confused < 1276213648 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so basically my future state condition language is nondeterministic? < 1276213701 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :if x will be 2 then x = 1 else x = 3 < 1276213708 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :is conceptually the same as < 1276213712 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :x = 1 and 3 < 1276213754 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...well no < 1276213762 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I was going to add some more to that, but my idea didn't hold < 1276213768 0 :pikhq!~pikhq@75-173-192-87.clsp.qwest.net JOIN :#esoteric < 1276213786 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :x = 1 and 3 until x = 2 < 1276213787 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :essentially < 1276213801 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so basically in my model you can check a language whose complement is in RE, i guess that's... co-turing machines? :P < 1276213808 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :(English until, not Perl until :P ) < 1276213816 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :x = 3 until x = 2 then x = 1 < 1276213819 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :(because you say yes unless at some point the computation finds a problem with the input) < 1276213863 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :(so the complement -- problems with input -- can be recursively enumerated) < 1276213864 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :GreaseMonkey: well see... you have to do both 1 and 3 < 1276213871 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :because either could result in x becoming 2 later < 1276213885 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :hmmkay < 1276213885 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :once x becomes 2... you can eliminate one < 1276213900 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmmm... < 1276213911 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :x = (3 until x = 2 then 1) < 1276213947 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :that would implement a kind of backtracking < 1276213965 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1276213973 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :though... hmmm < 1276213981 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :you have causality issues there. < 1276213985 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :"STABLE TIME LOOP ACHIEVED" < 1276213999 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so okay < 1276214015 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :what i was originally thinking is a machine that can check any language in RE \cup co-RE < 1276214016 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...thinking about future states in a program makes my head hurt... < 1276214026 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :once you've hit x = 2 normally and backtracked, if you hit a halt before x = 2, then you have to backtrack AGAIN < 1276214040 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :because you can always guess YES/NO, and then run until you find proof that the string is in the language, or proof that it's not < 1276214065 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :this is not at all what nondeterministic turing machines do, i've just needed a model like this < 1276214080 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :now let's see what you've been talkign about < 1276214081 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*talking < 1276214097 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I have no clue what I'm talking about < 1276214104 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :but I think semantically it involves solving the halting problem < 1276214137 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ACTION finds a good operator for will equal < 1276214142 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm < 1276214159 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :@= ? < 1276214178 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I like ?= < 1276214200 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :if x ?= C then A else B < 1276214214 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i actually don't know anything about the probabilitic models of computation < 1276214227 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :x = A and B until x = c < 1276214232 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :although it's not very hard to guess how that's best formalized < 1276214262 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :see < 1276214273 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I think I've figured it out < 1276214278 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :A can be determined completely < 1276214283 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :if x becomes C in the future < 1276214284 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :but B < 1276214293 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :cannot, because if x does not ever equal C < 1276214306 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :then it will never be determined whether or not x was B < 1276214311 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :until the program halts. < 1276214339 0 :oerjan!~oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1276214368 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :x = (x ?= 2 ? 1 : 3); < 1276214369 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :x = (x == 3 ? 2 : 4); < 1276214372 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so being able to simulate those semantics with a tm would require solving of the halting problem. < 1276214375 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :KABOOM < 1276214377 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: i say stupid things in the log, just warning you if you comment on them before reading my elaborations, i might swat you