00:01:42 -!- Patashu has joined. 00:04:12 -!- zzo38 has joined. 00:06:58 I want to replace the front-end of GHC so that I can add stuff 00:07:18 -!- sllide has quit (Ping timeout: 276 seconds). 00:08:09 zzo38: ok 00:09:05 How can I download only the front-end codes? 00:11:42 you can't, just download all of GHC and ignore the rest 00:11:56 http://haskell.org/ghc/dist/7.2.1/ghc-7.2.1-src.tar.bz2 00:16:35 Can you tell me which directories from the tape archive I need, though? 00:16:59 I think they're all mixed together in the source directories; you may find the developer wiki helpful 00:17:23 http://hackage.haskell.org/trac/ghc/wiki 00:17:26 maybe the ghc-api documentation? 00:17:36 oerjan: can't do what he wants 00:18:22 well isn't the rest a wrapper around the ghc-api, more or less? (note: no actual clue inside) 00:19:35 oerjan: I don't know what that means 00:20:56 -!- kmc has joined. 00:21:32 If I do get only the front-end files, will it still compile if I already have Haskell Platform? 00:22:06 Can it make it use the GHC API for everything else? 00:22:14 You cannot get only the front-end files. 00:22:17 GHC is distributed in whole form. 00:22:19 It is not a large tarball. 00:23:01 I did download it already but can I extract only some of the files from the tape archive? 00:24:20 why not just do a git checkout from the darcs server? 00:24:29 cheater: that is, umm, not helpful? 00:24:55 that would be intended as i was trying to help zzo not you 00:25:04 cheater: that is not helpful for him either? 00:25:48 are you asking because you don't know 00:26:21 cheater: no, I'm trying to give you a chance to defend yourself as being mistaken rather than trolling 00:30:36 what happens if i don't take that chance 00:30:43 do i roll? 00:30:54 and, what are my modifiers? 00:31:01 no, you just get banned again 00:31:06 or at least kicked 00:31:09 -!- ChanServ has set channel mode: +o ais523. 00:31:13 -!- ais523 has kicked cheater trolling. 00:31:15 -!- ais523 has set channel mode: -o ais523. 00:31:19 I... 00:31:20 you have ops here? 00:31:30 -!- cheater has joined. 00:31:41 elliott: you wouldn't believe me if I said no after that, would you? 00:31:58 nice, abusing op privileges after falsely assuming i'm trolling 00:32:00 ais523: I'd probably check to see if you removed them afterwards 00:32:02 how cute 00:32:08 cheater: backchat to an op after they kick you after you just got unbanned 00:32:11 smart things to do: the novel 00:32:18 cheater: I doubt the other ops will overrule me on that one, although of course they can if they want to 00:32:32 we have ops here?!? 00:32:33 well, i was trying to help zzo38 00:32:36 I don't think git checkout would help; I am asking which files correspond to the front-end, as well as some other questions such as whether it can access the GHC API to do the stuff after the front-end, whether it can use the different version, etc 00:32:38 oh, you have stealth ops 00:32:38 clever 00:32:46 not taking a chance to prove you aren't trolling, after being given one and making it clear you're suspected as a troll, is tantamount to admitting to trolling 00:32:49 as you can see he just gave a serious answer 00:32:51 Patashu: *MWAHAHAHA* 00:32:51 cheater: I understand you try to help, is OK, but you perhaps have misunderstand my question 00:33:20 zzo38, i did not understand why you only wanted to get a part of the tar file. 00:33:34 i find it easier to get the whole thing and then copy files out as needed. 00:33:49 cheater: I have downloaded the entire file. I can tell 7-Zip to extract only the files I needed. However, I do not know which files I need to extract. 00:34:30 ais523, you started conversation with me by using an derisive tone and then made a statement which i could only take as humor, because i'd have never thought you would be taking yourself seriously at that point. 00:34:49 i was wrong! 00:34:58 -!- elliott has quit (Read error: Connection reset by peer). 00:35:01 cheater: the whole context was relatively clear 00:35:03 -!- elliott has joined. 00:35:16 zzo38, are you perhaps looking for the place where teh ghci ui is defined? 00:35:27 cheater: or do you just not read context at all, like Vorpal? 00:36:17 * elliott wonders what cheater is actually trying to achieve 00:36:19 ais523, the context of your communication to me as i saw it was you picking on me, if you thought htere was a different context then you have failed to communicate it, or have chosen not to, in order to confuse me and then have an excuse for abusing op powers 00:36:34 cheater: the context was that zzo38 /already had the files/, as you could tell from his comments 00:36:37 I am looking for the front-end of GHC, that is, the lexer, parser, renamer, and typechecker. Perhaps I can just try to do it with haskell-src-exts whatever I try to do and see if it helps; although it means I cannot access it with TH if I do that 00:36:52 ais523: has it come up that you can't actually make a git checkout from a darcs repository yet 00:37:02 so suggesting that he gets them again, using git, from a darcs server, is a little silly even if the darcs server provides a git mirror 00:37:13 ais523, i thought maybe he's low on disk space or something like that and that's why he doesn't want to unpack the whole file 00:37:21 elliott: it did, but that's not necessarily wrong in case there's multiple VCSes on the server 00:37:25 the darcs server is a git server. 00:37:39 cheater: well, that /is/ wrong, because git history takes up quite a bit of disk space compared to a tarball 00:38:07 yeah, i guess that's right 00:38:30 still doesn't justify you picking on me 00:38:55 zzo38, let me see if i can find that in my checkout 00:39:00 then i could tell you the file names 00:40:31 Perhaps I will just try to do it by modifying haskell-src-exts at first, and then if that doesn't work, modify GHC. But then, should I install "hint" package, so that I can make a interpreter, and be able to add interpreted codes. But is there a way to use that to add stuff for accessing by Template Haskell? Possibly I need to add my own kind of "reify" commands 00:41:23 i have the directory compiler/parser in my checkout 00:41:47 and compiler/typecheck 00:42:21 Is there a separate one for the renamer, or is the renamer and typechecker together? 00:42:36 cheater: Have you ever made changes to GHC? 00:43:26 oh there is also compiler/rename 00:43:36 OK 00:43:54 i think the lexer is part of the parser: 00:43:55 ./compiler/parser/LexCore.hs 00:43:55 ./compiler/parser/Lexer.x 00:44:01 yes, i have 00:44:03 to ghci 00:44:06 OK 00:44:17 zzo38: you may find #ghc helpful, it contains a lot of people familiar with the ghc source 00:44:23 What things to GHCi, specifically? 00:46:19 i have modified some commands 00:46:42 Which ones, and in what ways? And which version of GHCi? 00:47:49 7 but that part was the same in 6 i think 00:48:08 i was just testing how and what i can modify the commands really 00:48:14 nothing worth of sharing 00:48:21 OK 00:48:33 *in the 01:00:06 Does cabal install user or global by default? Should I install user or global? 01:00:32 on Unix, user; on Windows, it doesn't matter 01:00:40 unless you have a multi-user Windows setup, which is very rare 01:00:43 I'd just stick with the default 01:00:49 which I think depends on your settings at install? 01:03:00 I do actually have two accounts so that I can do adminstrative functions with one account (usually using "runas") and everything else using another account. 01:03:24 You probably want a user install, then 01:03:34 which is the default 01:03:35 elliott: OK, most people don't do Windows accounts correctly; but do you seriously believe that /zzo38/ wouldn't do Windows accounts correctly? 01:03:40 (I do them correctly too) 01:03:45 (when on Windows) 01:04:00 ais523: I think he likes DOS, and doesn't like the computer to try and stop him doing things, even if they're dangerous 01:04:10 so I find it perfectly plausible that zzo38 would want to use only an administrator account 01:04:49 The reason is not to stop me but to stop other software from doing things that I do not run under the administrator account. 01:05:17 fair enough 01:07:23 Is it possible to tell cabal to access multiple servers? Is it possible to give the servers prefixes for package names in case some of them might have packages that have the same name but are different packages? 01:12:55 Some people told me that shell scripts set to suid in Linux doesn't switch. I think it should do it anyways. I did read somewhere that you can make a symlink named -i to trick it, but can you fix it by changing the shebang like to say #!/bin/bash -- 01:13:43 Anyways it should be whoever decides to make it suid whose fault it is if they do it wrong, rather than the kernel. UNIX should not stop you from doing stupid things because then you cannot do smart things either. 01:14:42 zzo38: the problem is not with a symlink called -i, but if you make a symlink to the shellscript itself, then load the shellscript, then after the shebang is read and while sh is loading, change the symlink to point to a different shellscript 01:15:07 there's nothing the person who writes the script can do about that, except to name something in the shebang line that checks to see if the file it's operating on is actually suid with the right user 01:16:11 That could probably be corrected, by making the kernel seize the file if you run any suid program in that way; for consistency it can do that for all programs rather than only shell scripts. 01:16:42 That would violate a principal part of the Unix model 01:20:14 Another way could be to make it if you run a symlink of a suid shell script it will call the program with the name of the actual file instead. Or make it so that symlinks don't run suid unless it is owned by the same user. But either way it seem it is the fault of whoever made it suid 01:22:05 suid is irredeemably broken anyway 01:22:14 "Or make it so that symlinks don't run suid unless it is owned by the same user." I'm parsing that in two ways. One makes suid useless, the other seems risky, in that not all shellscripts owned by the suid-setting user should be suid-able 01:23:55 Sgeo_: You are probably correct. Is the other one any better? 01:24:29 I personally don't see any problems with sending the real file, but I'm not a UNIX geek 01:24:37 zzo38: there is actually a fix that some UNIXes use; upon encountering a suid shell script, they open the shell script, then pass the open file descriptor to the interpreter 01:24:44 changing the symlink won't change what the file descriptor points to 01:25:02 Linux doesn't do it, though, for some reason 01:25:19 kmc: what in particular do you dislike about it, and would recommend as an alternative? 01:25:31 did kmc follow zzo back here? :P 01:26:19 it's a confused deputy problem waiting to happen 01:26:22 I'm one of those people who believes that UNIX is really far from perfect, but that you really need to know what you're doing to come up with anything better 01:26:37 kmc: aren't all methods of escalating permissions? or are some worse than others? 01:26:52 there are just too many ways the person running a binary can screw with that binary's execution 01:27:04 that's more a rebuttal of the entire unix security model 01:27:12 Linux et al try to patch this up with blacklisting 01:27:17 which is certainly valid, but you can't really fix that within the contexts of unix 01:27:21 kmc: pretty much all of them don't work on scripts that are either suid or have called setuid 01:27:24 can't ptrace setuid binary due to special rule. can't set this or that environment variable by special rule. etc. 01:27:36 ais523, right, because there are special blacklist rules, and sometimes they forget one 01:27:38 anyway 01:27:44 i agree this can't really be fixed without changing unix drastically 01:27:47 you can't even look at all the procfiles of a process that's your own child that dropped permissions, if you've also dropped permissions 01:27:48 like including real capabilities 01:27:59 but there are still better alternatives 01:28:03 that work in the confines of existing unix 01:28:09 Better than capabilities? 01:28:09 Unix should just be @ instead, and then have never existed, and then @ should have existed in its place. 01:28:11 Linux does have real capabilities, but I don't see how they avoid the problem 01:28:15 that's my controversial Unix security opinion 01:28:17 * Sgeo_ is curious 01:28:19 they're rather coarse-grained, though 01:28:20 Linux has real capabilities? 01:28:22 ais523: Linux does not have object-capability 01:28:27 it has POSIX-capability, which are something else entirely 01:28:28 Then you should just fix suid so that it prevents the user running it from doing various things. The suid process could then add the permission that allows the actual user that run the program to send signals, if they want to. 01:28:30 elliott: no, just subset-of-root-capability 01:28:34 it has POSIX-capability, which are something else entirely 01:28:41 POSIX capabilities are barely better than root / not-root 01:28:43 -!- azaq23 has joined. 01:28:48 "real capabilities" refers to the object-capability model whenever I've seen it :P 01:28:57 -!- azaq23 has quit (Changing host). 01:28:58 -!- azaq23 has joined. 01:29:04 What's better than capabilities? 01:29:10 well, object-capabilities are /still/ subject to the confused deputy problem 01:29:14 i did not claim anything was better than object capabilities 01:29:26 arguably, even more so than suid, because the person is still running an executable and able to mess with it 01:29:29 ais523, yes, of course. in security one must talk about less-susceptible vs more-susceptible, not in absolutes 01:29:35 -!- azaq23 has quit (Client Quit). 01:29:43 -!- azaq23 has joined. 01:29:46 at least with suid, you can say "that's suid" versus "that's not suid" and use it as a basis for blacklisting 01:29:51 anyway, i propose to replace each setuid binary with a persistent daemon that serves requests over a UNIX socket 01:30:00 Elevation permission can be done using suid; in addition, reduce permission to that of other users while the program is still running could be done with other function calls (if the calling program is root), and then everything else to change permission of processes can be done with ptrace. 01:30:07 it's a much narrower interface to the less-privileged user 01:30:22 people know how to write secure network daemons, more than they know how to write secure setuid binaries 01:30:30 it seems potentially vulnerable to DOS issues that setuid binaries aren't vulnerable to 01:30:36 yeah 01:30:46 and you can do bizarre things on sockets too, like using them to send SIGPIPE signals 01:31:49 I suppose the argument's a resource-limit one; if a daemon is doing work on your behalf, how do you make it count against your own resource limits rather than the daemon's? 01:32:13 that's an interesting question 01:32:46 How does one patch KDE2 under FreeBSD? 01:33:04 one could argue that setuid binaries shouldn't be doing nontrivial work anyway 01:33:12 i'm not sure if that really holds 01:33:30 anyway replacing privilege escalation flaws with denial of service flaws is frequently a good tradeoff 01:34:00 the same way similar things are done in stuff like xen? 01:34:43 What does division by zero do in a language without runtime errors? 01:34:54 Sgeo_: the most sensible answer to that question I know of was one about KDE3 being out 01:35:04 presumably, you could use KDE4 as a substitute nowadays 01:35:36 here's an example which looks much like object capabilities: instead of your HTTP server running as root just so it can get port 80, it talks to a daemon whose sole purpose is to open privileged ports on behalf of other processes 01:35:38 (for those here who don't know of the phrase, it's a meme in certain countries (I forget which) where people ask that question at politicians and other celebrities in apparently serious interviews) 01:35:43 (and send them back through a UNIX socket) 01:35:52 ais523, Wikipedia says Russian 01:35:53 http://en.wikipedia.org/wiki/How_does_one_patch_KDE2_under_FreeBSD%3F 01:36:26 Or, well, hmm 01:36:30 ah, Russian-speaking countries in general, it seems 01:37:01 kmc: and how does the daemon know who can open the port? and what the HTTP server will do with it? 01:37:21 with object capabilities, you attach a "port 80" capability to the file containing the executable for the HTTP server 01:37:27 not necessarily 01:37:29 with a daemon, there's no obvious way to do that 01:37:36 that's only one sort of object-capability system 01:37:42 Well, not only HTTP. It also includes a very large number of other protocols. Maybe even Message Send Protocol; although I forget what its port number is. 01:37:48 well, that's one way in which it works 01:37:54 that's basically the case where the daemon also happens to be the filesystem 01:37:56 and I can't see an obvious way for daemon-capability to duplicate that 01:37:58 ais523: nah, you pass the listen-on-port-80 capability to it at runtime 01:38:05 elliott: oh, init passes it, or whatever? 01:38:13 whoever starts the httpd passes it 01:38:32 and needs it to be able to start the httpd 01:38:52 unless they want to start it on another port, which would presumably be acceptable 01:38:53 why would that whoever happen to have a port-80 capability? I can understand why init would have it 01:39:06 but say I'm a network admin who wants to restart Apache or whatever 01:39:10 where do I get a port-80 capability from? 01:39:50 ais523: presumably you have near-omnipotence, considering that in unix you'd have access to sudo 01:39:59 yep 01:40:11 although, you'd actually only need a suid HTTP server to manage that 01:40:12 so you'd just get one from the network driver 01:40:28 or sudo can be set up to only allow people to run particular executables, which is much the same thing 01:41:41 did kmc follow zzo back here? :P <-- poor HackEgo is going to be overworked 01:41:55 gah, Firefox version numbers make discussions of website problems really hard to follow 01:41:57 The other way is monadic capability system. You have a Haskell program with a monadic type for operating system, and it exposes all of its constructors representing the basic operations (derived ones are just combiniations of the basic ones), when one program calls another in I/O mode it will intercept everything and there is no limit to the number of times it can be done 01:42:11 you get "this doesn't work in Firefox 6" "well it works in Firefox 8" and no longer have an idea of who to follow 01:42:19 or which one's remotely recent 01:42:25 C-INTERCAL is winning, though, it's on version 29 01:42:35 i don't know what a HackEgo is 01:42:44 `run echo :( 01:42:47 some projects like Java have discarded the major version number 01:42:48 sh: -c: line 0: syntax error near unexpected token `(' \ sh: -c: line 0: `echo :(' 01:42:49 `run echo ':(' 01:42:51 ​:( 01:42:55 C-INTERCAL effectively merged the minor and patchlevel, and discarded the major 01:43:29 discard all version numbers, just fork the project and move every developer over before each new release 01:44:13 One part of the system is written in assembly language and manages the lowest level operating system operations, as well as all serialization and saving state to disk and restoring everything properly, and so on. 01:44:18 elliott: haha 01:44:25 but then I couldn't use a -2 version number component for betas 01:44:40 (which I've recently caught myself wanting to do in non-INTERCAL-related projects; it really does make a lot of sense) 01:44:42 ais523: just use more boring names for betas to discourage regular users from trying them 01:44:55 Sigma-Zyzyzyzyzzz INTERCAL becomes Corporate Language Implementation Framework 9 01:45:02 (I don't know how well these ideas work; I have never tried it and am not even quite sure how) 01:45:02 I generally want to encourage people to use betas in the case of INTERCAL 01:45:02 becomes ALL INTERCAL ALL THE TIME!! 01:45:26 ais523: hmm, name each fork after a particularly nice line of INTERCAL 01:45:32 ais523: for the case of betas, a half-broken one 01:45:32 I do'nt think it /has/ any "regular users" 01:45:39 *don't 01:45:54 Please use negative version numbers if it helps in making the version numbers. 01:46:43 I want my version numbers to be arbitrary unicode 01:47:04 Patashu: Including control characters or not? 01:47:08 Sure 01:47:28 No, better - it's a link to a program that calculates the version number when ran 01:47:42 classical chinese numerals 01:47:49 No, better - it's a quine. 01:48:20 Every version number is a quine in echo 01:48:40 every version number is an entire copy of Goedel Escher Bach 01:49:09 I usually just use the Major.Minor.Revision system except that if the minor increases beyond 9 then it is the next major instead, and if the revision increases beyond 9 then it is the next minor instead. 01:50:19 Which allows you to write it as a decimal number such as 100 for version 1.0 01:53:06 ^ul ((version 1.0)!(^ul )SaS(:^)S):^ 01:53:06 ^ul ((version 1.0)!(^ul )SaS(:^)S):^ 01:53:57 version 1.0 < wat 01:54:15 ^ul ((um what is this part)!(^ul )SaS(:^)S):^ 01:54:15 ^ul ((um what is this part)!(^ul )SaS(:^)S):^ 01:54:17 Heh. 01:54:33 !echo 01:54:38 !echo test 01:54:39 test 01:54:43 ^ul ((um what is this part)!(!echo ^ul )SaS(:^)S):^ 01:54:43 !echo ^ul ((um what is this part)!(!echo ^ul )SaS(:^)S):^ 01:54:44 ​^ul ((um what is this part)!(!echo ^ul )SaS(:^)S):^ 01:55:10 kmc: how many printings does it have? you might run out of numbers after a while 01:55:24 Lymee: ( ... )! is a comment in Underload 01:55:34 Ah. 01:55:40 EgoBot sends a zero-width character if the output starts with any punctuation mark 01:56:00 Although it should probably just send NOTICE for replies 01:56:08 > text "test" 01:56:09 test 01:57:05 `echo ^ul ((`echo ^ul )SaS(:^)S):^ 01:57:07 how impossible is it to implement eval in Haskell? 01:57:07 ​^ul ((`echo ^ul )SaS(:^)S):^ 01:57:13 :< 01:57:17 I'm wondering if it's doable at all, just to annoy purists 01:57:20 ais523: not impossible at all 01:57:23 http://hackage.haskell.org/package/hint 01:57:28 haha, it's been done? 01:57:35 ais523: how do you think lambdabot works? 01:57:42 hint is great because it actually reifies the value 01:57:49 I thought it was invoking an interpreter 01:57:53 just like EgoBot runs interpreters 01:57:59 it is, it just happens to use the GHC API to do it :P 01:58:01 and so the eval would be unconnected with the original program 01:58:07 oh, well it doesn't inherit your scope 01:58:13 unless you pass things in explicitly 01:58:25 and I doubt you could pass an IORef or anything 01:58:36 but it provides an eval that results in a bona-fide actual value, so it's good enough :) 01:58:47 and you could ofc have it produce a State monadic value and run that 01:59:06 "monadic value" = "monad action"? or "thing you apply a monad action to"? 01:59:13 monad action, yes 01:59:31 what does EgoBot do? 01:59:52 !help 01:59:52 runs programs in a variety of languages, mostly esolangs 01:59:52 ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help . 01:59:55 !help languages 01:59:56 ​languages: Esoteric: 1l 2l adjust asm axo bch befunge befunge98 bf bf8 bf16 bf32 boolfuck cintercal clcintercal dimensifuck glass glypho haskell kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor sadol sceql trigger udage01 underload unlambda whirl. Competitive: bfjoust fyb. Other: asm c cxx forth sh. 01:59:57 !help userinterps 01:59:58 ​userinterps: Users can add interpreters written in any of the languages in !help languages. See !help addinterp, delinterp, show | !userinterps. List interpreters added with !addinterp. 02:00:03 !userinterps 02:00:04 ​Installed user interpreters: acro aol austro bc bct bfbignum brit brooklyn bypass_ignore bytes chaos chiqrsx9p choo ctcp dc decide drawl drome dubya echo ehird elmer fudd google graph gregor hello id insanetemp jethro kraut lperl lsh map num numberwang ook pansy pi pikhq pirate plot postmodern postmodern_aoler prefixes python redneck reverse rimshot rot13 rot47 sadbf sanetemp sfedeesh sffedeesh simplename slashes svedeesh swedish valspeak wacro warez wc yodawg 02:00:07 those things 02:00:19 it's HackEgo's sibling 02:00:24 !bfjoust simple_attack (>)*8(>[-])*21 02:00:32 ​Score for ais523_simple_attack: 17.1 02:00:52 good, it came last 02:00:55 You can't really use it to modify host functions, can you? 02:00:56 I'd have been a little worried otherwise 02:01:18 Sgeo_: define modify, mutate? you can't mutate values in Haskell 02:01:26 whether through an eval mechanism or not 02:01:32 Mm. 02:02:00 * Sgeo_ mutters about inconveniently-se MIME types 02:02:02 http://code.haskell.org/hint/devel/examples/ 02:02:12 *inconveniently-set 02:03:09 Content-Type: text/x-haskell 02:03:10 looks correct to me 02:03:27 inconvenient because the browser won't open it inline? 02:03:41 there should really be some content-type modifier that says "if you don't understand this, it's just fine for you to treat it as a text file" 02:03:48 "but not try to execute it even if you're Internet Explorer" 02:04:03 ais523: content-disposition: inline 02:04:10 ah, great, it does exist 02:04:22 it's a bit vague though 02:04:31 (Wikipedia will not serve pages raw as text/plain, but will as text/css; text/plain triggers an old-IE bug where it'll interpret it as HTML sometimes) 02:04:54 gross 02:05:06 I know 02:05:12 "Evaluates an expression, given a witness for its monomorphic type." 02:05:26 it actually works with polymorphic types, at least it did when i tried :p 02:05:26 Like a :: String or whatever? 02:05:28 but avoiding a really exploitable XSS bug in old-IE is necessary, I think 02:05:38 a witness is just (undefined :: T) or whatever 02:05:49 Ah, ok, that's what I thought 02:06:49 Wait, why is the as needed? 02:07:02 interpret "head [True,False]" (as :: Bool) 02:07:05 its just sugar 02:07:15 What would that look like without the as function? Ugly? 02:07:34 Oh, type signature of interpret would be different 02:08:18 ... 02:08:23 String -> a? 02:08:25 it would explicitly involve an "undefined" 02:08:26 which is ugly 02:09:03 Sgeo_, I think it'd be either String -> a or String -> IO a 02:09:24 class Eval e where eval :: String -> e ??? 02:09:40 Lymee, http://hackage.haskell.org/packages/archive/hint/0.3.3.2/doc/html/Language-Haskell-Interpreter.html 02:09:41 (Which would make more sense anyways) 02:09:54 elliott, I meant something more like 02:10:12 Sgeo_, ah. 02:10:20 Lymee: a = IO b for when you need IO 02:10:24 so String -> a 02:10:29 interpret "head [True,False]" :: InterpreterT Id Bool 02:10:41 CakeProphet, makes sense. 02:11:59 so yeah you basically want Read except now every instance interprets Haskell to some kind of intermediate value and then makes sure it's the correct type 02:12:01 or something. 02:13:21 also you probably want to name your typeclass IsString 02:13:37 and turn on overloadedstrings 02:13:39 totally a good idea. 02:14:13 * elliott rips CakeProphet's soul. 02:14:25 http://hackage.haskell.org/packages/archive/hint/0.3.3.2/doc/html/Language-Haskell-Interpreter.html#g:10 the parens note here fails to show that that should be =\n and not =n 02:15:50 oh noes 02:15:55 send a patch 02:15:59 its just a missing \ in the haddock 02:16:52 http://pastebin.com/kQ53Wdyy 02:16:54 help what is wrong 02:17:08 pyparsing.ParseException: Expected end of text (at char 0), (line:1, col:1) 02:18:44 I'm not at all set up to send patches 02:20:48 CakeProphet: alternatively instead of providing an isstring instance make a quasiquoter and use dataToExpQ or whatever it is 02:20:56 CakeProphet: to make the quasiquoter 02:21:17 (dataToExpQ/dataToPatQ/dataToQa is very convenient for making quasiquoters) 02:21:48 monqy: help python 02:23:01 CakeProphet: no 02:23:15 I'm probably awful at python by now 02:23:43 CakeProphet: a hunch, are you successfully skipping whitespace where needed? 02:24:09 oerjan: pyparsing skips all whitespace (including newlines) by default 02:24:13 ok 02:24:14 or so I am led to beieve. 02:24:46 i doubt your grammar is non-ambiguous with no newlines involved at all 02:25:26 it still did not work with newlines included. 02:25:41 that isn't what i meant 02:25:43 but w/e :P 02:26:39 elliott: no I mean I used newlines to define the grammar and told the parser to not skip newlines and it still did not work. 02:27:06 CakeProphet: perhaps try smaller test cases, such as just statement on the first line, and so on down until it succeeds? 02:29:33 basic bug case minimization 02:30:10 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 02:31:14 I intended to say something stupid in here, not in #haskell 02:31:26 You can sometimes open any text file inline in Mozilla browsers by prepending view-source: to the URL. 02:31:26 did you say something stupid in #haskell 02:32:35 " I think I can express what makes me uncomfortable about duck-typing lately in terms of the microwave metapho." 02:32:54 yep 02:33:05 -!- GreaseMonkey has joined. 02:33:05 -!- GreaseMonkey has quit (Changing host). 02:33:05 -!- GreaseMonkey has joined. 02:34:42 oerjan: it's giving an error on the first line now, expecting a ( 02:34:53 but with expr << stringLiteral | ... 02:35:01 it should see the " and parse as a string 02:35:02 SO CONFUSED 02:35:32 The browser I use also allows you to show anything internally when the download prompt is displayed. Push i to show as a specified MIME-type, or t to show as text/plain. That only works for HTTP (and HTTPS), though. For gopher, you push M-0 to view as text. 02:35:37 maybe the library is bad...,maybe the python is bad... 02:36:16 CakeProphet: maybe it just gives bad error messages? 02:36:19 maybe I'm bad 02:37:00 But I know that Parsec (with Haskell) displays proper error messages, even though I have not programmed any in. 02:37:44 Just try to feed an invalid program to my Constantinople compiler and it will display an error message telling you exactly what is expected. 02:37:45 btw how do backslashes work inside """ strings anyway 02:38:10 do they actually need doubling or not 02:38:40 I believe so 02:39:02 `run python -c 'print """te\\st"""' 02:39:09 te\st 02:39:17 -!- evincar has joined. 02:39:26 `run echo python -c 'print """te\\st"""' 02:39:32 python -c print """te\\st""" 02:40:07 `run echo python -c "print '''te\\st'''" 02:40:09 python -c print '''te\st''' 02:40:27 um wait 02:40:45 `run echo python -c "print '''te"'\\'"st'''" 02:40:47 python -c print '''te\\st''' 02:40:53 `run python -c "print '''te"'\\'"st'''" 02:40:55 te\st 02:41:02 hm 02:41:30 It displays the following message, which I did not even program in: (line 1, column 1): unexpected '@' expecting white space, "replace", "repeat", "in", "out", "end" or end of input In the expression: $parseConstantinople In the expression: $parseConstantinople initialMem In an equation for `main': main = $parseConstantinople initialMem 02:41:43 CakeProphet: anyway, continue making the error case smaller 02:41:54 working on just that. 02:42:38 " I think I can express what makes me uncomfortable about duck-typing lately in terms of the microwave metapho." <-- that just means you fit in, and are soon ready to make a monad tutorial 02:43:02 (Actually according to the specification for Constantinople, "end" shouldn't go there, but my program treats "end" the same as end of input; i.e. it ends a block of code.) 02:43:03 oerjan: oh, well probably would help if I gave the parse function the correct arguments. 02:43:17 I was still using the same arguments from my own hand-written parser, where the first argument was the filename. 02:43:20 oerjan, more to do with OO and duck-typing than anything to do with monads 02:44:21 the joys of programming. 02:44:34 zzo38: Parsec tries to make good error messages but you can often improve them with the operator 02:45:28 oerjan: OK. Well, in this case the error message seem OK to me. But thank you for telling me in case of future program I write and want to adjust the error message. 02:46:03 Sgeo_: WHOOSH (or just be glad you haven't seen that kind of monad tutorials) 02:46:25 oerjan, I've heard of the monad tutorial issue 02:46:28 I would prefer if it used the serial comma but that doesn't matter much and I don't plan to affect that, it is still OK how it is. 02:52:03 I noticed that it says expecting white space even though the white space check already succeeded (something like (spaces >> (...))) which is still a useful error message, however. 02:52:27 zzo38: hm right if you wanted that you'd probably write your own version of showErrorMessages 02:53:17 that commasOr local function in http://hackage.haskell.org/packages/archive/parsec/3.0.0/doc/html/src/Text-Parsec-Error.html#showErrorMessages looks like the culprit 02:53:57 I never even used showErrorMessages. The output of the parser is just sent to a function of this: either (fail . show) return 02:54:17 yes it's used in the Show instance 02:55:27 I do not really care much about that though. 03:01:34 Is there a TH program to compile regular expressions into Parsec? 03:02:26 I've been using emacs so long now that M-x h M-w is starting to feel naturally 03:02:38 -ly 03:03:29 oerjan: anyways thanks for the help. Here's the current program if you're interested. Currently testing cases and it's looking promising: http://pastebin.com/5kK8B35w 03:07:29 It seems you could make the regular expression compile, depending on capturing and that stuff, the containing type of the monad would correspond to String or (String,String) or (String,[String],String) etc depending on what it is. I don't really know for sure exactly, though. 03:07:52 Hmmm, which of the many file compression formats is the best when speed is paramount (but not to the point that just not compressing at all is better) 03:08:46 As far as I know, ZIP in extra fast mode. I am not sure. I would like to know the *real* answer to this question, too. 03:09:16 Gregor: LZO 03:09:19 Gregor: No contest. 03:09:19 Gregor: Deflate and LZMA are both fairly fast. There are highly optimised libraries for both. 03:09:23 No. 03:09:24 LZO. 03:09:28 Alright then. 03:09:32 LZMA is not even in the same universe. 03:09:41 Gregor: Oh, hmm 03:09:45 Gregor: Compression speed 03:09:57 Gregor: I still suspect LZO will be the fastest 03:10:03 But its primary goal is lightspeed decompression 03:10:06 I'd say either LZO or gzi 03:10:07 p 03:10:21 LZO has the advantage of needing very little RAM to compress :P 03:10:22 LZO, to my knowledge, doesn't have a convenient command-line tool like gzip 03:10:31 sure it does. 03:10:34 sudo apt-get install lzop 03:10:34 Gregor: Then write one. 03:11:24 elliott: WP says compression is "comparable in speed to deflate". 03:11:39 i thought Gregor meant decompression 03:11:40 And that decompression is the "very fast" bit. 03:11:44 I mean both in fact. 03:11:48 regardless, LZMA is nowhere in the same universe :P 03:11:54 Gregor: Yeah, LZO is almost certainly gonna be your best bet 03:12:03 LZO doesn't get massively good compression ratios, does it? 03:12:08 it's purely there for speed and memory usage? 03:12:18 ais523: now with Vorpal context powers 03:12:27 Holy CRAP but LZO is fast. 03:12:29 -!- azaq23 has quit (Ping timeout: 245 seconds). 03:12:34 elliott: I did read context 03:12:39 Its compression rate isn't as good as gzip, no, but wow. 03:12:45 it talked about the decompression speed, but not about ratio at all 03:12:47 We're talking 14sec vs 0.6sec. 03:13:00 surely, a null compressor would be fastest 03:13:06 Hmmm, which of the many file compression formats is the best when speed is paramount (but not to the point that just not compressing at all is better) 03:13:08 You did not read context :P 03:13:13 -!- azaq23 has joined. 03:13:27 Gregor: I think it should be relatively competitive with gzip at the highest level 03:13:31 although, of course, not as fast 03:13:33 erm 03:13:36 although, of course, not as fast as it is on lower levels 03:14:27 Gregor: null compressor fulfils the letter of your request 03:14:32 because not compressing at all is /not/ better than it 03:14:41 ais523 sure is helpful 03:14:48 sorry, I'm tired and being a little silly 03:14:49 program.ignore(cppStyleComment) 03:14:52 elliott: Yeah, so helpful :P 03:14:52 this is almost too easy now... 03:15:06 azip is rather too slow to compress, unfortunately, but decompresses in O(original file) 03:15:12 Also, lzop -9 is crazy-slow X-D 03:15:41 But yeah, lzop default is ridiculously fast and gets 52% compression ratio on this test file, which is good enough for me. 03:15:55 CakeProphet: Screw you and your easy parser combinators. I did mine the hard way. 03:16:04 Gregor: use the GPL version 3 as a test file, it's what I used for azip 03:16:06 Deliberately, though. :P 03:16:16 and thus, is now going to be the only acceptable test benchmark for compressors ever, apart from Lenna 03:16:25 ais523: Yeah, my file is big enough to be borderline-meaningful :P 03:16:28 (I used the C-INTERCAL tarball as a larger test) 03:16:39 Gregor: the GPL-3 is big enough to be borderline-meaningful too 03:16:42 evincar: my parser WORKED... until I realized my language needed infix operators. 03:16:54 why does a language "need" infix operators? 03:17:09 *my implementation of an existing language 03:18:00 ais523: Add macros. Implement infix operators as macros. Language no longer needs them. 03:18:17 evincar: you'd have to implement infix macros, though 03:18:23 Then you need to add macros that are good enough to be able to implement infix operators. 03:18:25 Gregor: the GPL-3 is big enough to be borderline-meaningful too <-- now _there's_ a statement that needs context. 03:18:26 ais523: My file is 86MB and only took lzop -3 0.6sec to compress :P 03:18:27 which still, for decent macros, requires being able to parse infix 03:18:40 ais523: Not at all. You would just need to wrap them. 03:18:55 Gregor: just compress it 1000 times, and dodge cache effects as a bonus 03:19:08 I saw a Pratt parser done as a Lisp macro so you could write (expr '(2 + 3 * 5)) or whatever. 03:19:37 evincar: if it's a macro you wouldn't use ' would you 03:19:44 Anyway, .sf.lzo: Clearly the best lossless audio compression format. 03:19:47 Which is essentially how Tcl does it, if I recall. 03:19:56 sf.lzo, the hip new domain name for sourceforge 03:20:00 oerjan: I don't recall. I think that article did, but you wouldn't necessarily have to... 03:20:20 How do Lisp macros work? 03:20:41 I won't answer, because whatever I say I'll be wrong 03:20:41 well 03:20:44 hth 03:20:45 and shouted at as a result 03:20:48 ais523: try "badly" 03:20:51 Like fuckin' MAGNETS 03:21:05 elliott: I personally dislike them, but am willing to accept that that isn't a majority opinion 03:21:11 and dislike them for reasons unrelated to how well they work 03:21:30 properly-done fexprs are nicer, but macros are a lot easier 03:21:33 to implement well and efficiently 03:21:38 by far 03:22:06 fexpr? 03:22:15 ais523: Unevaluated expression, essentially. 03:22:21 You just don't evaluate terms eagerly. 03:22:42 oh, that is indeed very elegant, nice, and effective 03:22:49 like slipping a call-by-name function into a call-by-value language 03:23:08 no 03:23:25 people really need to stop answering questions addressed at me incorrectly :P 03:23:43 ais523: That's not exactly how it works. 03:23:54 ais523: an fexpr is just a function that doesn't have its arguments evaluated; it's really easy to mess this up, though (see http://www.nhplace.com/kent/Papers/Special-Forms.html, a paper dedicated to advocating monads over fexprs from 1980) 03:23:59 elliott: My explanation wasn't wrong. 03:24:00 but it's possible to make them work well with lexical scoping 03:24:04 see the Kernel language 03:24:06 evincar: yes, it was 03:24:10 fexprs are not unevaluated expressions 03:24:25 Fine, they are functions taking unevaluated expressions. 03:24:36 evincar: which is what a call-by-name function effectively is 03:24:46 if elliott tells me they're different, then one of us is wrong 03:25:05 ais523: it's not quite the same 03:25:11 ais523: call by name functions can't expect their argument's ast, traditionally 03:25:31 oh, the difference is that they can do things with their arguments other than evaluate them (possibly repeatedly)? 03:25:32 (foo (f 9 0)) can't evaluate the same as (f 9 'avocado 0) (generically etc.) 03:25:36 ais523: yes 03:25:42 now I'm trying to work out the difference between that and macros 03:25:45 basically, all their arguments are automatically quoted 03:25:49 ais523: they're run at runtime 03:25:52 ais523: the trick is, you don't need functions like this 03:25:56 you can implement them in terms of fexprs 03:26:06 that is, you can implement lambda in terms of vau 03:26:12 (kernel's name for the fexpr-defining primitive) 03:26:15 s/defining/creating/ 03:26:21 s/primitive/syntax/ I suppose 03:26:25 ais523: Right, and compilation of fexprs is...problematic. 03:26:29 (vau is itself an fexpr ofc) 03:26:37 evincar: no it isn't, it's just constant-folding 03:27:01 elliott: because fexprs are a generalisation of call-by-name, and you can implement call-by-value in call-by-name 03:27:22 hmm, does Underload have fexprs? 03:27:45 Who was it again who was responsible for the Vector skin change? Perhaps somebody could recommend a Design your own wikipedia skin option as most of the options suck. There ought to be a graphic option to design your own wikipedia design and main page. I am aware you can change the main page design in monobook but I want the option to make the frame much darker and make the articles stand out more. There is only so much you can do with changing y 03:27:45 our Internet options colors and fonts. ♦ Dr. Blofeld 19:14, 28 August 2011 (UTC) 03:27:46 it seems to meet every part of the definition so far, except that it can't do anything with the AST but print it 03:27:50 [[Talk:Main Page]] is really weird 03:27:57 ais523: sure it can; it can compose it with things 03:28:06 hardly, you can rarely pick anything apart unless the format is restricted 03:28:07 admittedly, the things it can do are rather "safe" 03:28:19 elliott: I thought you couldn't safely optimise them, at least. 03:28:26 elliott: I'm not certain if that's AST-level composition, except because it's defined ot be 03:28:27 *to be 03:28:32 evincar: that's true iff you can't optimise function applications 03:28:37 which is a rather hilarious, albeit bad, opinion 03:28:38 you could do it without knowing the AST at all, by using a lambda, in other languages 03:28:44 ais523: indeed 03:28:46 Isn't it undecidable whether a particular expression is actually evaluated though? 03:29:02 By static analysis alone. 03:29:03 evincar: you don't need to know that to be able to optimise it, though 03:29:29 in the cases where it is decidable that it's always, say, evaluated once and has no side effects, you can reorder it; but even if it isn't, inlining + standard optimisations will probably help 03:29:29 evincar "You mean it isn't possible to optimise any TC language perfectly?" evincar 03:29:30 But to compile it, you still need to have the data available. 03:29:34 that is your new name 03:29:47 optimisations don't have to work in 100% of cases 03:30:07 the issue is mostly that your AST transformations could change what AST an fexpr gets at runtime 03:30:09 but that's no problem 03:30:09 and one that works in 99% of cases, like recognising if fexprs or call-by-name functions work identically to call-by-value functions, is going to be helpful 03:30:14 I guess I'm just not clear how to compile a language with fexprs without just embedding an interpreter. 03:30:18 since the AST should be semantically equivalent, if it's being used for evaluation 03:30:31 evincar: you have to embed it, but that doesn't mean you have to use it all the time 03:30:36 if you can statically eliminate all uses of it 03:30:36 evincar: Underload's compiled by storing both the source and the meaning of every function together 03:30:41 and using the source only when necessary 03:30:51 and the meaning the rest of the time 03:30:59 We do what we must I guess. 03:31:07 elliott: how did your ul compiler compare to derlo? 03:31:20 I can't remember which was faster, and whether it depended on the program 03:31:28 ais523: badly, I think, but then I started writing a much better one recently 03:31:33 ah, that would make sense 03:31:41 and then didn't finish it because everyone has hundreds of unfinished projects 03:31:43 ais523: (one that optimised numerals) 03:31:51 well, I had a haskell version 03:31:54 I started translating it to C, I forget why 03:31:57 or was it an interpreter 03:31:58 I forget 03:32:06 I think I may have been trying to write a really good interpreter 03:32:16 now I can't remember if derlo optimises numerals 03:32:18 (it's an interp) 03:32:20 it doesn't 03:32:25 (I read derlo when writing mine) 03:32:41 I know I have a Perl Overload interp somewhere which optimises numerals and nothing else 03:32:44 that's unfinished 03:32:49 because all overload interps are unfinished 03:32:52 my numeral optimisation was better :) 03:32:57 and the language itself is too hard to get your head around 03:32:58 oerjan wrote a far-too-general number-detector 03:33:16 elliott: indeed it is, the Perl program just regexes its memory every step looking for numbers 03:34:11 hahaha 03:34:43 So I had a thought about fractals. 03:35:10 If you were to have a VM that logged every operation it evaluated... 03:35:35 ...and decreased a "scale" value whenever it entered a new stack frame and increased it when leaving... 03:35:38 ais523: argh, where is my interp? find it please 03:35:50 elliott: I don't think you sent me a copy 03:35:53 oh, I wonder if I lost it with my Code.tar.gz 03:35:59 * elliott prepares to cry softly 03:36:05 ...then you could make a sort of nonuniform dotplot of the instructions executed, and you'd get a fractal representation of the execution of the program. 03:36:19 It would show iteration at uniform scale and recursion fractionally. 03:36:36 I don't know what purpose it would serve other than to look nice. 03:38:04 ais523: looks like I may have lost it :( 03:38:43 okay so a huge problem with pyparsing is that the error messages are not good. 03:39:14 elliott: how did you lose a tarball of code? 03:39:38 and have you taken steps so it doesn't happen again? 03:39:39 CakeProphet: Fork and improve? 03:39:45 ais523: by not realising that megaupload would expire it rapidly, and by somehow losing my original download of it 03:39:59 ah, right 03:40:13 ais523: (I used it to transfer code from old OS install to new one, with no convenient storage media to hand) 03:40:17 I use gitorious/patch-tag as backup for some things, but wouldn't expect, say, a pastebin or megaupload to do so 03:40:28 well, I didn't intend it to stay there for longer than a day or so 03:40:36 I take it that the old install is no longer accessible/wiped? 03:41:39 evincar: perhaps I can just find a way to augment errors like Parsec allows 03:41:46 ais523: replaced by the new one :P 03:43:10 ah setFailAction is probably what I want. 03:44:57 elliott: I'll generally keep at least an unpacked tarball and the original tarball for importantish tarballs like that 03:45:01 and often a separate copy on a USB stick 03:50:53 -!- BeholdMyGlory has joined. 03:53:50 wooo everything works. 03:56:29 -!- oerjan has quit (Quit: Good night). 04:05:01 wow, TIL that Thomas Edison invented the use of "Hello" to start conversations 04:05:24 and suggested it to Alexander Graham Bell as a standard method of answering the telephone 04:05:43 so that's the one thing edison /did/ invent 04:08:09 heh 04:08:26 the word was around beforehand, but with a different meaning (it was an expression of surprise) 04:08:47 ofc, this is the sort of thing that's very likely to have unreliable sources behind it, so I'm not sure if it's so likely to be true, even if TIL it 04:15:04 it seems to check out on googling 04:15:59 -!- copumpkin has quit (Quit: Leaving...). 04:16:58 -!- copumpkin has joined. 04:21:12 I identify much more with Tesla. Edison should've come to his senses sooner. 04:22:01 Also, it wasn't strictly surprise. It was just a literal "hey there". 04:22:11 DEBUGGING THIS IS PRETTY FUN 04:22:14 Same as "hola". 04:25:08 I can't decide if coming here makes me more or less productive as a programmer... 04:25:25 evincar: you are asking the wrong question. 04:25:38 it is the frequency of coming here 04:26:14 And the duration. 04:26:25 a person is made or broken by their ability to do a day's work 04:26:42 I tend to do a week's work in a day. 04:26:52 That's not to say I'm seven times as productive as anybody. 04:27:03 Rather that I slack off for six days a week then make up for it. 04:27:30 apparently if you have an employer you have to slack off because an employer will simply expect more and more from you for the same pay 04:27:33 so i hear 04:27:43 but if you are working on your own 04:27:45 Being a freelancer seems to be working for me. 04:28:05 ME TOO ESPECIALLY DEBUGGING IT IS GREAT. :D :D :D 04:28:37 I'm making a site for a guy who's going to pay me in Bitcoin... 04:28:51 Mostly because I know him already. 04:29:02 Also the dollar is going down the tubes anyway, so might as well diversify. 04:30:16 But when I come here I get inspired to do stupid fun experimental projects. 04:30:16 I do not actually think the dollar is "going down the tube" 04:30:19 anymore. 04:30:24 Some of which have turned into useful things. 04:30:30 The dollar will fail. 04:30:37 Evidence: every fiat currency ever. 04:31:00 I just realized that I am not drinking these beers. 04:31:01 They might revalue it and re-back it. 04:31:03 clearly that is a problem. 04:31:09 I doubt it, though. 04:31:11 and doing such will probably aid in my debugging skills. 04:31:37 Alcohol tends to put me in a bad programming mindset. 04:31:40 Caffeine as well... 04:31:52 ...if I need to do something mindless and repetitive, caffeine is great. 04:32:05 But my critical thinking skills go down the tubes when I have too much caffeine. 04:32:24 And anyway, if you're using a language where there are mindless and repetitive tasks to be done, that might be your real problem. 04:32:40 no the real problem here is that THIS DOCUMENTATION LIES 04:32:46 it says call backs can take 0-3 arguments 04:32:59 so I give it a callback with one argument, and it calls it with zero 04:33:47 self argument 04:33:51 @ CakeProphet 04:34:09 onOperatorMatch() takes exactly 1 argument (0 given) 04:34:17 if it were being called as a method it would give me 1 argument. 04:34:17 self argument 04:34:20 at least. 04:34:22 ok 04:35:07 lol wat 04:35:12 adding the line: tokens = tokens.asList() 04:35:15 suddenly fixes everything 04:37:00 I don't even see how that's possible 04:37:32 why would adding a line of code in my callback change the way it's called... 04:38:02 CakeProphet: print type(tokens) to see what's up? 04:38:18 Or...what? 04:40:06 tokens is a ParseResult. that doesn't really have anything to do with my confusion. 04:40:22 my confusion is: before, my function was called with zero arguments. I add a line of code _in that function_, and it is called with 1. 04:42:22 CakeProphet: \(°_o)/ 04:42:46 -!- MDude has changed nick to MSleep. 04:43:00 -!- BeholdMyGlory has quit (Remote host closed the connection). 04:47:26 evincar: pyparsing seems to put a function wrapper around my function before it's called. 04:47:50 perhaps the wrapper uses some kind of exception handling hack to detect which number of arguments to use. 04:48:09 meanwhile, an exception in my code was triggering that hack, and giving me an obtuse error message as a result. 04:48:17 fixing my codes error fixed the problem. 04:48:54 Blurg. 04:49:08 Hearing about this makes me cringe at a design I haven't even looked at. 04:49:15 Pyparsing's, that is. 04:49:26 really they should have used inspect to get the actual number of arguments. 04:50:32 >>> inspect.getargspec(test) 04:50:33 ArgSpec(args=['a', 'b', 'c'], varargs=None, keywords=None, defaults=None) 04:50:54 So much simpler. 04:52:19 Do you know how to play Scope or Pasur? 04:53:36 -!- jcp|1 has quit (Read error: Operation timed out). 04:53:47 evincar: granted the logic is still a bit more complicated than just taking len(spec.args), but it's not much more difficult than that and it would be _accurate_ 04:55:08 though I guess the situation could also be improved by fixing Python's exception hierarchy 04:55:20 call to a function with too few / too many arguments = TypeError 04:55:22 obviously. 04:55:25 -!- jcp has quit (Ping timeout: 245 seconds). 04:58:33 THROW TYPEERROR FOR ALL THE THINGS 04:58:57 TypeError is pretty common yes. 04:59:15 TypeError and ValueError are common for logic bugs. 04:59:24 though AttributeError can sometimes be the result of a type error. 04:59:55 Don't most exceptions boil down to "argument was too high/low/otherwise invalid"? 05:00:01 no....? 05:00:18 I don't mean in Python. 05:00:20 I mean in general. 05:00:27 >_> also no? 05:00:28 Name an exception that isn't one of those things. 05:00:42 NameError, IndexError, ImportError 05:00:49 Other than "something blew up that was totally beyond our control". 05:00:59 !python import foo 05:01:00 Traceback (most recent call last): 05:01:11 >_> oh, well yeah that's supposed to say ImportError 05:01:23 Yeah, so the argument "foo" was invalid for "import". 05:01:55 It boils down to "you fucked up" or "something beyond the scope of your program fucked up". 05:02:03 also you're going to argue that NameError is just locals()["variable"] which is silly because that's not how it owrks. 05:02:06 Boil boil boil. 05:02:28 locals().__getkey__("variable") oh look invalid function call=. 05:02:49 YouFuckedUpException 05:02:54 evincar: hammer, nail 05:04:16 evincar: also you changed your definition of what _all exceptions ever_ are at least once now. 05:04:19 elliott: Cactus, Dom DeLuise? 05:04:32 I grouped the earlier three categories. 05:04:41 Because I intended them as one. 05:04:43 But didn't make it clear. 05:05:04 yes "you fucked up" is often a good a characterization of exceptions. 05:05:12 but is not the same as "function argument too low / too high/ invalid" 05:05:48 I didn't say "function", but I would argue that it is. 05:06:00 But it's a pointless argument. 05:06:04 < evincar> Don't most exceptions boil down to "argument was too high/low/otherwise invalid"? 05:06:04 So I won't. 05:06:10 what else has arguments? 05:06:33 Nothing. Statements have "operands" I guess. 05:06:51 The point is that you're supplying an invalid value to a function somewhere. 05:06:53 basically now you're saying "an exception is an exceptional circumstance of the program" 05:06:58 how tautological 05:07:08 No, specifically an invalid argument. 05:07:17 It wasn't supposed to be a profound statement. 05:07:21 We just keep talking about it. 05:07:30 > x 05:07:32 x 05:07:38 oh right. 05:07:40 > hahahaha 05:07:41 Not in scope: `hahahaha' 05:08:23 >>> def test()) 05:08:25 [...] 05:08:30 SyntaxError: invalid syntax 05:09:09 Yeah, you passed an invalid token sequence to the parser. :P 05:09:33 Why is this still going on? 05:09:35 >>> while True: 1+1 05:09:36 ... 05:09:36 KeyboardInterrupt 05:09:37 Go work on your program. 05:11:07 >>> iter([]).next() 05:11:08 ... 05:11:11 StopIteration 05:12:20 heh, I like how warnings in Python are actually exceptions. 05:13:17 warnings that stop your program aren't really very warning-like. 05:13:47 WARNING: YOUR PROGRAM ISNT RUNNING! 05:14:03 there should probably be a setting that suppresses those yes? 05:14:05 oh wait nevermind that's not how warnings work. 05:14:11 yeah they don't raise exceptions 05:14:36 they just have exceptions associated with them, that you can use with the warnings modules to filter warnings and stuff. 05:15:00 Can it make such a thing as "Haskell computer"? 05:15:24 zzo38: You mean can such a thing be made? 05:16:16 Probably. What fundaments of Haskell should be implemented in hardware? 05:16:23 elliott? 05:16:27 reduceron 05:16:30 google it 05:16:33 evincar: no he's currently impersonating Buffalo Bill. 05:16:58 (http://www.cs.york.ac.uk/fp/reduceron/) 05:17:36 Oddly enough, I've read this. 05:17:41 reduceron is also a good name for a giant planet decimating robot. 05:17:53 Must've come by it while looking up something Haskell-related. 05:18:02 Though I can't imagine what. 05:18:13 Considering I don't use Haskell. 05:18:44 this isnt the personal character flaws channel :P 05:18:48 but you totally should. 05:19:31 -!- braap has joined. 05:20:07 Probably. 05:20:07 I've got nothing against it. 05:20:11 braap braap 05:20:32 -!- braap has quit (Client Quit). 05:20:47 -!- jcp has joined. 05:20:58 I have lots of things against most languages. 05:21:02 I am a language antagonist. 05:21:05 -!- jcp|other has joined. 05:21:20 I have lots of things against most languages as well. what are we talking about, now? 05:21:54 I was being sarcastic actually. 05:22:01 I wasn't 8)) 05:22:10 monqy however is a vile fundamentalist. 05:22:16 and thus we are destined to be language enemies. 05:22:21 It's hard for me to feel legitimate, disliking a language I don't use. 05:22:27 So I just reserve judgement. 05:23:49 operator_names = map(itemgetter(0), operator_table) 05:23:54 weeee duck typing + functional programming 05:24:08 What language is that? 05:24:12 python 05:24:23 itemgetter is from the operator module 05:24:50 >>> operator.itemgetter(2)([1,2,3]) 05:24:51 3 05:24:59 I'm dying 05:25:27 monqy: the fact that such constructs are possible in Python is a vast improvement over most languages. 05:25:38 *possible and in the standard library 05:25:47 most languages suck 05:26:09 CakeProphet, have fun with the crappy lambdas >.> 05:26:18 Sgeo_: yeah I don't use them ever... 05:26:25 I'd much rather define named functions. 05:26:40 names are for losers 05:27:22 >>> map(functools.partial(operator.add, 1), [1,2,3]) 05:27:22 [2, 3, 4] 05:27:30 functional programming in Python is very, uh, natural. 05:28:10 Very uhnatural. 05:28:20 Is there possibility of converting GHC Core codes to F-lite codes? 05:28:23 well it's not /too/ bad if you get ride of the module names. 05:28:28 *rid 05:28:42 -!- pumpkin has joined. 05:28:44 it will never not be too bad 05:28:48 -!- pumpkin has quit (Changing host). 05:28:48 -!- pumpkin has joined. 05:28:51 map(partial(add, 1), count(1)) 05:28:58 count(1) being like [1..] in Haskell 05:29:24 though you'll want to use imap from itertools actually. 05:29:28 to maintain laziness; 05:29:29 is count a what generator then 05:29:38 yes. 05:29:48 just an iterator actually. 05:29:55 python terms I will never memorise 05:30:06 actually generator just means a function that returns an iterator 05:30:10 so yes, that is a generator 05:30:26 er, wait, no. fuck I don't know :P 05:31:10 itertools basically has a bunch of lazy versions of python list functions. pretty handy module. 05:31:19 I just wish functools came with more utilities. 05:31:42 However, in Javascript any function with "yield" is a generator function, it returns a Generator object and does not execute until the Generator object is called, and then it returns the first yield, it can be called next time to execute up to and returning the value of the next yield, and so on. 05:32:06 essentially the same in Python. 05:32:08 zzo38, similar to Python 05:32:18 though Python also has the whole coroutine thing. 05:32:30 -!- copumpkin has quit (Ping timeout: 245 seconds). 05:32:54 -!- pumpkin has changed nick to copumpkin. 05:35:58 you know what's really fun to look at? 05:36:07 C++'s operator precedence chart. 05:36:13 Ugh. 05:36:23 C++'s operator precedence is bad. 05:36:26 Dumb and bad. 05:36:39 thats what makes it fun 05:36:54 I guess writing those lazy parsing iterators was kinda fun. 05:36:57 In a horrifying way. 05:37:07 ...this being said by monqy, the language purist. 05:37:16 probably not sarcastically what so ever. 05:37:36 Bad things can be fun by virtue of being bad. 05:37:48 telling when or how much I'm joking at any given time may prove difficult 05:37:50 I've had plenty of fun movie nights with less-than-excellent-quality films. 05:38:10 you know what language has good operator precedence rules? 05:38:15 !wacro 05:38:16 AECMBSP 05:38:20 no its lisp 05:38:21 also J 05:38:44 yeah I love mounds of parens. 05:38:44 Also Factor. 05:38:52 And Forth. 05:38:56 that's why I love Perl so much. all the parens. 05:39:05 And whatever the hell I'm calling the language I'm working on. 05:39:11 It's code-named "Very" at the moment. 05:39:22 I was trying to come up with the least searchable language name I could. 05:39:30 I failed, but it was a good time. 05:39:33 Null 05:39:44 of 05:39:52 Not "Null". "" 05:40:09 No, the name of that one Sigur Rós album, ( ) 05:40:18 name it an operator character so google won't work 05:40:25 Possibly the most painfully artsy thing that has ever been produced. 05:40:42 " " would also work 05:40:56 site:goatse.bz 05:40:57 or a literal mess of parentheses 05:41:17 (((((((((())))))))) 05:41:23 too clean 05:41:29 ())()(()))()()()((()()()()()()()))((()(()() 05:41:31 It's missing an end-paren 05:41:45 It's missing several parens. 05:41:46 it is still too lcean 05:42:02 I was referring to mine >.> 05:42:03 (()(){[]][[]][}}}{[]())()(({}}{{}}0[((){]-0) 05:42:09 > length $ replicateM 20 "()" 05:42:09 the 0s and - are for artistic effect 05:42:10 1048576 05:42:22 replicateM? 05:42:27 replicateM. 05:42:32 > replicateM 20 "()" !! (1048576/2) 05:42:33 No instance for (GHC.Real.Fractional GHC.Types.Int) 05:42:33 arising from a use o... 05:42:38 hheheheh 05:42:40 > replicateM 20 "()" !! (1048576 `div` 2) 05:42:41 Perhaps the GPLv3 encoded in octal where the digits are ([{<>}]). 05:42:42 ")(((((((((((((((((((" 05:42:47 good name 05:42:56 > replicateM 20 "()" !! (1048576 `div` 3) 05:42:57 "()()()()()()()()()()" 05:43:01 ... 05:43:10 > replicateM 20 "()" !! (1048576 `div` 10) 05:43:11 "((())(())(())(())(()" 05:43:17 > replicateM 2 "()" 05:43:18 ["((","()",")(","))"] 05:43:45 > (`replicateM` "abc") =<< [0..] 05:43:45 ["","a","b","c","aa","ab","ac","ba","bb","bc","ca","cb","cc","aaa","aab","a... 05:44:03 "replicateM n act performs the action n times, gathering the results. 05:44:03 " 05:44:09 yep. 05:44:10 > (`replicateM` "abc") -<< [0..] 05:44:11 Not in scope: `-<<' 05:44:13 oops 05:44:17 "performs the action". Entirely, 100% clear outside of the IO monad 05:44:21 > [0..] >>- (`replicateM` "abc") 05:44:22 ["","a","aa","b","aaa","c","ab","aaaa","ac","aab","ba","aaaaa","bb","aac","... 05:44:32 Sgeo_: >> I believe 05:44:34 @src replicateM 05:44:34 replicateM n x = sequence (replicate n x) 05:44:41 Or maybe the list monad's not all that intuitive to me 05:44:43 @src sequence 05:44:43 sequence [] = return [] 05:44:43 sequence (x:xs) = do v <- x; vs <- sequence xs; return (v:vs) 05:44:43 -- OR: sequence = foldr (liftM2 (:)) (return []) 05:44:59 I think I get it 05:45:00 CakeProphet: >> doesn't gather results so it couldn't be that 05:45:16 the list monad is easy 05:45:43 Not when documentation talks about monads in terms of their "actions" 05:46:14 thinking of the list monad as nondeterministic computation, a list action is a list of possible results 05:46:57 I knew the nondeterministic thing, just didn't think of it as an "action", ty 05:48:14 > (`replicate` "abc") =<< [0..] 05:48:15 ["abc","abc","abc","abc","abc","abc","abc","abc","abc","abc","abc","abc","a... 05:48:40 great 05:49:05 > sequence $ (`replicate` "abc") =<< [0..] 05:49:07 *Exception: stack overflow 05:49:35 > sequence "abc" 05:49:36 Couldn't match expected type `m a' 05:49:36 against inferred type `GHC.Types... 05:49:43 > sequence ["abc", "abc"] 05:49:44 ["aa","ab","ac","ba","bb","bc","ca","cb","cc"] 05:50:06 > sequence ["abc", "cba"] 05:50:07 ["ac","ab","aa","bc","bb","ba","cc","cb","ca"] 05:50:20 > sequence ["abc", "123"] 05:50:20 ["a1","a2","a3","b1","b2","b3","c1","c2","c3"] 05:50:46 > sequence ["abc", "123", "!@#"] 05:50:46 ["a1!","a1@","a1#","a2!","a2@","a2#","a3!","a3@","a3#","b1!","b1@","b1#","b... 05:50:47 sequence in list monad is handy 05:51:12 does lambdabot have syb 05:51:13 > everywhere (mkT reverse) [1..10] 05:51:14 Ambiguous type variable `a' in the constraint: 05:51:14 `Data.Typeable.Typeable a... 05:51:16 oops 05:51:26 > everywhere (mkT (reverse :: Integer -> Integer)) [1..10] 05:51:27 Couldn't match expected type `GHC.Integer.Type.Integer' 05:51:27 against inf... 05:51:31 oops oops 05:51:31 :t everywhere 05:51:32 forall a. (Data a) => (forall a1. (Data a1) => a1 -> a1) -> a -> a 05:51:40 lol wat 05:51:45 > everywhere (mkT (reverse :: [Integer] -> [Integer])) [1..10] 05:51:46 [2,4,6,8,10,9,7,5,3,1] 05:51:50 yes lambdabot has syb 05:52:12 :t mkT 05:52:13 forall b a. (Typeable a, Typeable b) => (b -> b) -> a -> a 05:52:23 .... 05:52:27 > everywhere (mkT (reverse :: [Integer] -> [Integer]) `extT` (succ :: Integer -> Integer)) [1..10] 05:52:28 [3,5,7,9,11,10,8,6,4,2] 05:52:57 So there's this girl I know who's a software engineering major. 05:53:24 > everywhere (mkT (map toUpper :: String -> String)) "hello" 05:53:25 "HELLO" 05:53:26 And she was trying to argue today that iteration is more intuitive than recursion. 05:53:30 > everywhere (mkT (reverse :: [Integer] -> [Integer]) `extT` ((:[]) :: Integer -> [Integer]) `extT` (concat :: [[Integer]] -> [Integer])) [1..10] 05:53:31 Couldn't match expected type `GHC.Integer.Type.Integer' 05:53:31 against inf... 05:53:33 oops 05:53:47 evincar: lolno 05:53:48 I would tend to disagree with that viewpoint 05:53:50 And I wept. 05:53:59 Well, not really. 05:54:00 evincar: for simple algorithms, maybe. 05:54:03 I just told her she was wrong. 05:54:07 but... not really. 05:54:10 Or at least misguided. 05:54:11 it's the same thing. 05:54:25 It is... 05:54:40 ...but there's internal repetition and external repetition... 05:55:00 ...and internal repetition is usually more intuitive for, y'know, decomposing problems. 05:55:12 But I can't fault her. 05:55:13 recursion is less confusing to me 05:55:13 I think you're just making up terms now. 05:55:24 recursion is also cleaner 05:55:27 recursion is also better 05:55:27 She's only studied a quarter of Python and two quarters of Java. 05:55:40 not self-taught? pfffffffffffft 05:55:41 And you just know they didn't get into any FP. 05:55:46 monqy: not as efficient if unoptimized, however. 05:56:02 She's surprisingly good for having just started. 05:56:04 To her credit. 05:56:16 But her process is so...processy. 05:56:17 -!- GuestIceKovu has joined. 05:56:19 Businessy. 05:56:54 @pl join . sequence 05:56:54 join . sequence 05:57:05 CakeProphet: congratulations 05:57:28 > everywhere (mkT (join . sequence :: String -> String)) "hello" 05:57:29 Couldn't match expected type `GHC.Types.Char' 05:57:29 against inferred type... 05:57:42 -!- Slereah has quit (Ping timeout: 240 seconds). 05:58:24 oh rite 06:00:01 recursion vs iteration 06:00:05 hi 06:00:20 I think itidus20 is a bot. 06:00:30 Tail-optimizable recursion might not be that intuitive all the time 06:00:51 i wonder if one is more intuitive than another 06:01:07 >_> 06:01:15 Wouldn't tail-calls make more sense to someone who prefers iteration? 06:01:34 Also, just gonna point out, everydamnthing is a fractal. 06:01:45 what? 06:02:06 In nature. Many things exhibit fractal characteristics. They're recursive, in a way. 06:02:24 From clouds to rocks to brains to coastlines. 06:02:31 ah I just didn't association nature to everydamnthing 06:02:53 You bloody well should. 06:03:04 also I don't think coastlines are fractals. 06:03:05 :P 06:03:12 and I've never heard of brains being fractals. 06:03:17 > everywhere (mkT (reverse :: [Integer] -> [Integer])) (take 5 $ inits [0..]) 06:03:18 [[],[0],[1,0],[1,2,0],[1,3,2,0]] 06:03:21 but plants, sure, kind of. 06:03:26 but unpacking a truck is iterative 06:03:26 Talking about self-similarity here. 06:03:27 oh right 06:03:34 i messed up :( 06:03:53 itidus20: you can also describe unpacking a truck recursively. 06:03:54 also I don't think coastlines are fractals. 06:03:56 they are. 06:04:00 In your brain, there is an arrangement of weights in your neurons that mirrors the outside world, and one that mirrors yourself. 06:04:06 elliott: Thank you. 06:04:06 i might be wrong 06:04:17 CakeProphet: Go read Mandelbrot's paper on it. 06:04:17 elliott: how does that work. Where is the self-similarity? 06:04:19 CakeProphet: 06:04:24 http://en.wikipedia.org/wiki/How_Long_Is_the_Coast_of_Britain%3F_Statistical_Self-Similarity_and_Fractional_Dimension 06:04:27 http://en.wikipedia.org/wiki/List_of_fractals_by_Hausdorff_dimension#Random_and_natural_fractals (fourth item) 06:04:37 Hausdorf dimension of the coast of Britain ~= 1.25 06:04:38 Fractional dimension isn't necessarily restricted to self-similar structure. 06:04:52 (credit to Lewis Fry Richardson, popularised by above Mandelbrot paper) 06:04:56 CakeProphet: how exactly would you do that? @ unpacking a truck 06:05:05 describing it recursively i mean 06:05:37 unpack first:rest = unpackOne(first) + unpack(rest)? 06:05:42 itidus20: to unpack a truck with 0 items, you sit back and relax. to unpack a truck with n items, you remove one item from the truck, and then unpack a truck with n-1 items. 06:05:44 ok humm 06:06:11 so is iteration is a specialization of recursion? 06:06:15 yes. 06:06:20 well, no. 06:06:32 They're computationally equivalent. 06:06:45 Neither's really a specialisation of the other. 06:06:46 unpacking a truck: mapM_ unpack stuff 06:06:51 generally the same kinds of problems can be solved with both approaches. however the iterative approach uses extra data structures that are hidden away in the mechanism of recurson. 06:07:03 +i 06:07:14 itidus20: iteration is a specific kind of recursion. 06:07:15 evincar: false 06:07:19 evincar: iteration is equivalent to tail recursion only 06:07:23 How do you figure out the order of specificness of patterns in case alternatives? Would it work to count how many constructors are mentioned? 06:08:04 Would a tree structure work? 06:08:24 is recursion slower and uses more memory for the same task? 06:08:47 only on a typical computer perhaps ^_^; 06:09:04 itidus20: mu 06:09:10 computers aren't built for recursion after all 06:09:19 unwarranted assumption. 06:09:28 implicit unjustified assumption: computers are built for iteration. 06:09:40 implicit unjustified assumption: recursion can never be compiled to iteration. 06:09:48 ooh 06:09:52 They're built for GOTOs, aren't they? Or am I mistaken? 06:09:56 now that last one is interesting 06:10:12 elliott: Yes, but I was only saying that any recursive function can be expressed iteratively. 06:10:39 if you emulate the call stack or what have you 06:10:48 so if the compiler can handle such things, then efficiency is no longer an issue 06:11:00 and its a matter of what is more usable 06:11:06 ~recursion~ 06:11:07 itidus20: also assumption: the fact that hardware is not specifically created for recursion means it's inefficient to recurse. 06:11:11 none of these things are good assumptions 06:11:35 It's memory-inefficient to non-tail-recurse, isn't it? 06:11:37 Hardware these days, and instruction sets specifically, are pretty obviously geared toward compiler writers. 06:11:58 h,,m? 06:12:25 ^^;; 06:12:27 Sgeo_: in lazy languages, nearly irrelevant. 06:12:43 tail recursive functions can leak stack and non-tail recursive functions can use constant space. 06:13:12 tail recursive functions can leak stack? How so? 06:14:09 elliott: I use a slightly different definition in my work; leaking stack means that it's not tail recursion even if it looks like it 06:14:22 space doesn't really matter.. 06:14:55 > let fac n = if n == 0 then 1 else n * fac (n - 1) in fac 1000 06:14:56 402387260077093773543702433923003985719374864210714632543799910429938512398... 06:14:58 ais523: tail recursion is a syntactic thing 06:15:00 > let fac n = if n == 0 then 1 else n * fac (n - 1) in fac 100000 06:15:04 mueval-core: Time limit exceeded 06:15:04 itidus20: space means memory. 06:15:14 ya 06:15:15 elliott: well, "not a legal target for a tail recursion operator" 06:15:18 Time limit, not space limit, bleh. 06:15:28 > let fac n = if n == 0 then 1 else n * fac (n - 1) in fac 10^100 06:15:29 946898192795960083943247682213801587131773992158187493243695155509789235917... 06:16:56 > 10^100 06:16:57 100000000000000000000000000000000000000000000000000000000000000000000000000... 06:17:13 I think [2,3] is equally specific as [2,3,4] even though the former mentions five constructors and the latter mentions seven constructors 06:20:13 ok my assumptions are founded on cognitive dissonance 06:20:23 a good foundation for any healthy assumption 06:20:24 hi 06:20:28 i should probably sleep 06:21:55 Why does fac 10^100 seem to work decently? 06:22:02 > let fac n = if n == 0 then 1 else n * fac (n - 1) in fac (10^100) 06:22:03 *Exception: stack overflow 06:22:10 lol 06:22:11 * Sgeo_ mumbles about precedence 06:26:53 Huh. Neil Gaiman's daughter is Madeleine Rose Elvira Gaiman. 06:27:01 I dated a Madeleine Rose. 06:27:35 She was insane, and not in the usual sense that guys say their ex-girlfriends are insane. 06:28:41 Also, I'm thinking of adding macros to Very but it would involve making parsing the source require executing it. :( 06:29:16 Might hold off on that. 06:31:41 evincar: how do you know what guys mean about their ex's being insane? :D 06:32:14 itidus20: I've asked. 06:32:16 sorry.. yeah.. women can really be insane 06:32:28 Nope. Had nothing to do with the fact that she's female. 06:33:03 insanity can be attractive up to a limit 06:33:27 She's just self-absorbed, elitist, and New Agey, and always had to get her way or would shut down. 06:34:45 Demonstrates mental illness, but I shouldn't get into it. 06:34:45 And I dated her for...almost three years? Two and a half? 06:35:09 nothing you said is actually related to mental illness; signed, someone with mental illnesses 06:35:23 elliott: I don't really want to talk about the legitimately wrong things. 06:35:31 what? 06:36:15 Well, I dunno. It's a bit disrespectful. 06:36:23 Though I've already passed that line somewhere. 06:36:36 calling someone insane is generally seen as disrespectful in most cultures, I think 06:37:47 she probably reads psychology books and plays mind games 06:38:09 "she probably reads psychology books and plays mind games" -- itidus20, expert on women 06:38:10 Alright, so she was depressed, suicidal, would hit and starve herself, sucked her thumb, and I'm sure I'm forgetting things. 06:38:25 mainly the thumb-sucking, right? 06:38:52 Basically she was spoiled to the point of it negatively affecting her life and the lives of those around her. 06:38:58 But her parents didn't do the spoiling. 06:38:59 Nobody did. 06:39:05 She was just *like that*. 06:39:35 i will put this all into context 06:39:49 I didn't find out about these things all at once. 06:39:53 evincar was casually trying to read about neil gaiman, and then his daughters name triggered memories of his insane ex 06:39:59 And I was away at school most of the time. 06:40:03 So that's how it went on so long. 06:40:09 And yes, that's exactly what happened. 06:40:14 It was a shitty period in my life. 06:40:22 I know it's not exactly relevant to your interests, all. 06:40:48 but seriously what has thumb-sucking got to do with anything 06:41:32 elliott: it's a symptom, indicative of his ex's manifold of insanity 06:41:59 I'd call it "not a good sign that she's a well-adjusted adult". 06:42:25 i don't know anyone who is well adjusted to be honest except my relatives 06:42:49 It's a relative thing. I know plenty of people who are perfectly stable in day-to-day life. 06:42:53 But in relationships they go batty. 06:42:57 what is it with relatives, they always seem so well adjusted.. except the uncle who home-brews his beer and tells dirty jokes loudly 06:43:49 Fun fact: because of having painful conversations with this girl on IM while my roommate ate food behind me, I now have a unique response to that sound. 06:44:20 Specifically, if someone eats sloppy or crunchy food around me, especially while I'm on a computer, I get stressed and disoriented and need to leave. 06:44:20 evincar: so all these associative triggers need to be purged? 06:44:39 It's kind of sad how Pavlovian conditioning works. 06:44:39 ah.. wow. 06:44:52 Nah, that's just a fun snippet. 06:44:55 I'm done. 06:45:04 you can refer to my previous statement: "she probably reads psychology books and plays mind games" -- itidus20, expert on women 06:45:26 i think he was being sarcastic but that is probably for good reason 06:45:37 Worst part was, she was totally unaware that anything she did bothered me. :P 06:45:43 I lied constantly. 06:45:50 Now I don't. 06:45:55 And my life is full of win. 06:46:04 oh you poor thing.. women can often tell when a man is lying 06:46:26 s/women/people/ s/man/person/ 06:46:32 I lied compulsively for like eight years. 06:46:38 So I got pretty good at it. 06:46:50 elliott: no, the female gender is especially good at reading body language >:) 06:47:08 I disagree. 06:47:21 ok fine.. more unwarranted assumptions 06:47:23 from me 06:47:29 graaahhh! 06:47:40 s/gender/sex/, then define female sex unambiguously (you will have an almost impossible time doing this) 06:47:41 I don't have any evidence for my opinion that the sexes are roughly evenly matched... 06:47:47 ...but it's a reasonable assumption. 06:47:47 * elliott -- THE GREAT ANTAGONIST 06:47:54 And I can play the "bisexual" card if necessary. 06:47:59 Not sure if that helps. 06:48:40 Hah, yeah, it's practically impossible to determine the gender of an individual in a rigorous way. 06:48:51 If it looks like a female, call it a female. 06:48:54 That's what I say. 06:49:46 you could ask 06:50:00 Also, I appreciate transsexuals have a hard time, but the ones that insist on being called male when they're obviously female, and get angry when strangers "mistake" them for the biological gender that they are, are not winning any points with me. 06:50:25 You can want to live for a while as the other gender, and that's great. 06:50:32 But...you have to cut people some slack. 06:51:25 Asking is frowned upon for some reason. 06:52:38 evincar: theres a few schools of thought i think on this matter of traumatic associations 06:53:09 one is to simply try to avoid the stimulus.. i think this kind of works. 06:53:33 but it has a price to pay also.. it involves kind of micromanaging ones environment 06:54:11 but i should also point out that for example.. if your town is ravaged by a world war that there could be no escaping the reminders 06:54:54 ... 06:55:05 the alternative i do not understand so well 06:55:16 as in, how to combat conditioning 06:55:23 You know, I'm pretty sure no one's gonna be eating beans behind me while I program, in the event of my obscure New Hampshire town being ravaged by world war. 06:55:33 Hell, this is an excellent place to be in the event of a zombie apocalypse. 06:55:58 evincar: what i mean is that if a war is the source of your trauma, it would be kind of inescapable 06:56:02 In the hills, 10 miles from the nearest city, plenty of fresh water, everyone has guns, and a forest full of game. 06:56:36 -!- elliott has left ("Leaving"). 06:56:53 the expectation that it should be somehow easy to get over it is wrong of course 06:57:54 it seems intuitive that beans shouldn't have such an effect on someone. however the truth is that it does. it is not about your strength, but it is just that the damage done is deeper than it appears 06:58:30 It's not damage, though. 06:58:36 It's Pavlovian conditioning. 06:58:47 I simply *associate* that sound with the feeling of a need to escape. 06:59:01 Which isn't the worst feeling. 06:59:02 why is it not damage? 06:59:05 It's not painful. 06:59:29 It's gotten me out on a nice long walk on more than one occasion. 07:00:08 if i was to bestow on someone an association between the sound of eating beans and the need to escape, would they not be damaged by it? 07:01:19 It's not beans specifically. 07:01:27 And no, I wouldn't count it as damage. 07:01:45 if a person is better off without it then i think its damage 07:01:55 I used beans as an example because I could really go for some beans. 07:02:03 ^crunchy foods 07:02:03 The Heinz ones, in the sauce. Mm. 07:03:36 I think it's so oddly specific that it's not a detriment, anyway. 07:03:43 the real trouble is assuming we are entirely responsible for our mental wellbeing through application of willpower 07:03:48 when clearly there is more going on 07:04:16 like just sitting and the thoughts gather and an overwhelming storm of thoughts 07:04:45 the errors introduced by one pavlovian conditioning piled upon another 07:04:51 soon you are very far from the truth 07:05:15 Or...it's an amusing anecdote. 07:05:28 And I ask my roommate to please not eat that right now while I'm trying to work. 07:05:53 like trying to guide a robotic arm, where each of the joints has a slightly inaccurate rotation 07:06:13 and collectively the inaccuracies end up with the robot's arm far from where you expected 07:06:54 you can't really account for every last piece of traumatic conditioning... they don't stop 07:07:07 ok they occasionally stop... but not enough 07:07:28 You're talking about something much broader than what I am. :P 07:07:55 And to be honest I'm not really interested in examining the psychology of it. 07:08:07 Or philosophical implications or whatever. 07:08:32 the rational aspect of the mind tries to explain it all... but it can't 07:09:25 it is practically useless to be rational about these things 07:10:29 i watched indiana jones 4 on tv the other day.. he is trapped in quicksand kinda 07:10:55 someone brings him a snake for him to use as a rope 07:11:07 he can't grab it because of his phobia 07:11:26 so he tells the guy "don't call it a snake! tell me to grab the rope!" 07:11:43 so he is able to grab the snake when the guy says "grab the rope" 07:12:42 its not rational, but it worked (i know its only fiction) 07:24:40 -!- ais523 has quit (Remote host closed the connection). 07:25:14 What happen in Haskell if you make instance of Eq class but == operator is not commutative? Or if == and /= are not the "not" of each other? 07:25:42 things will break 07:31:15 or at least not work as expected 07:33:29 Anyone interested in starting a country? 07:33:41 I've had this idea called "Opensourcia" floating around for awhile. 07:35:50 sounds miserable 07:37:15 I'll take that as a no. 07:37:38 Should Very have references? 07:37:48 Currently everything's done with values. 07:37:52 Not that it matters much I guess. 07:38:18 3 dup results in two copies of "3", not two references to the same instance. 07:38:52 why not have sharing :) 07:39:20 Sharing is nice. It'd increase performance probably. 07:50:43 so uh 07:50:46 what's opensourcia 07:51:44 I dunno, I was thinking about the possibility of a government with full transparency. 07:51:53 Citizens submit bug reports in laws. 07:51:56 That sort of thing. 07:52:05 oh 07:52:17 Do you know about the BLISS programming language? 07:52:20 The currency would be fixed to the population. 07:52:22 what is bliss 07:52:35 "the currency would be fixed to the population"? helo? 07:52:37 help, I mean 07:52:37 bug reports assume that there is a desired and an undesired outcome 07:52:45 ??? 07:52:55 with laws, there will always be some people who desire another outcome as you 07:52:57 monqy: The total amount of Opensourcian dollars would be limited based on the population of Opensourcia. 07:53:24 that is because every society has a big part which is speculative or criminal 07:53:27 So we wouldn't legislate things that are contentious. 07:53:34 at least in some detail 07:53:49 It would be individual and minor court settlement, mostly. 07:53:54 e.g. a majority of people have crossed the street at a red light at least once 07:54:06 yes evincar 07:54:16 you've just described every law system in existence 07:54:19 I think the majority of laws can be made discretionary. 07:54:27 except your bug reports are called court cases 07:54:34 Which is tantamount to not having them. 07:54:48 So what do mathematicians want these days? Are they coming to terms with the fact that their knowledge is effectively a meaningless excuse to sit at a desk and press keys? 07:54:54 Not really. Court cases don't go meta. 07:54:54 Or is there something more going on? 07:54:59 you cannot abide by laws you do not understand 07:55:13 Okay... 07:55:27 ...that's another topic. 07:55:29 BLISS was designed in 1970. 07:55:34 arbitrarily changing laws are not possible to understand in any sort of even slightly complex situation 07:55:44 -!- elliott has joined. 07:55:58 hi 07:56:04 mathematicians are useful for "me"... but are mathematicians useful for themselves? 07:56:21 It's not arbitrary, but okay. 07:56:25 or are they a kind of labor force of the mind... industrialized 07:56:27 most of the time court cases are just discourse that establishes facts and brings up relevant laws, trying to reduce the situation at hand to the outcome pointed to by the laws 07:56:39 most arguments are about the interpretation of said laws 07:56:44 And it's all publicly available anyway. 07:56:56 there are very few so called first precedents happening 07:57:05 mathematics: the sweatshop of the intellect 07:57:47 itidus20, i have no idea where ever you would get a stupid notion like this 07:57:59 mathematics is applicable in lots and lots of places 07:58:02 a more entertaining place than you get yours 07:58:07 But it's a half-formed idea anyway. 07:58:28 I just brought it up because I was curious what people's reactions would be. 07:58:46 It's largely just a name. 07:58:58 And really, most open-source projects are run by "benevolent dictators". 07:59:15 government transparency and openness is a target for many countries 07:59:18 but not all 07:59:20 cheater: but still, are mathematicians nothing more than a highly paid sweatshop 08:00:05 evincar: benevolent dictators such as yourself? 08:00:08 however most governments are structures that are very dated and it's difficult to roll out institutional transparency 08:00:19 did evincar say benevolent dictator 08:00:31 please tell me evincar proposed government by benevolent dictator 08:00:42 guido 4 prez 08:01:24 cheater: it is the way that mathematicians seem to acknowledge that nothing new is really encountered.. they just provide formal proofs for things which are already known etc 08:01:25 he said "benevolent dictator" in relation to open source projects, connecting that to his opensourcia 08:01:37 so i drew the ocnnectione..... 08:02:02 opensourcia "one nation under god (god is a fake, evincar rules the place instead)" 08:02:06 (official motto) 08:02:31 I wouldn't make a good leader. 08:02:40 In BLISS, if you want to read the value of a variable you must prefix it with a dot 08:02:43 I mean, I am a good leader when forced into the position. 08:02:47 But I don't like it. 08:02:59 "I wouldn't make a good leader." "I am a good leader" 08:03:03 -- e v. incar 08:03:06 founder of opensourcia 08:03:07 I'm more of a Pompous Grand Vizier type. 08:03:16 s/ dollar sign/nothing/oops 08:03:21 Welcome to correcting yourself. 08:03:27 Oh wait, you're a functional programmer. 08:03:30 There's no mutation. 08:03:39 I can see how you got confused. 08:04:24 Wait, there's a timestamp. 08:04:27 FRP! 08:04:29 :D 08:04:36 All is well. 08:04:52 "what is FRP" -- e v. incar, founder of opensourcia, motto: "what is frp" 08:05:06 itidus20, that is wrong, new things are encountered, the notion is that they are not created. 08:05:24 that is a deep philosophical rather than every day notion 08:05:45 "bad joke or am i really poking fun at functional programeng and eliot" - evincar, one and only supreme führer of open source ia 08:06:04 itidus20, or to better word it, things are encountered anew 08:06:12 they're not new, but are new to you! 08:06:41 monqy: Can't it be both? 08:06:51 what is frp is a really good country motto 08:07:00 maybe it was an inclusve ore... 08:07:02 i want to live in a country whose motto is "what is frp" 08:07:17 You may want to reconsider. 08:08:35 -!- evincar has quit (Quit: Anyway, sleep.). 08:08:39 bye evincar 08:09:24 "bye evincar" --monqy, enemy of opensourcia, motto: "what isn't frp" 08:09:44 im proprietaria 08:10:05 sorry went afk 08:10:37 proprietaria 08:10:51 proprietaria 08:10:58 cheater: i am projecting. as in, i am taking those things i percieve in myself and accusing you of having them 08:11:08 or not so much "you" as mathematicians 08:11:24 burn 08:12:51 itidus20, can you elaborate? 08:13:45 -!- myndzi has quit (Ping timeout: 245 seconds). 08:14:24 -!- azaq23 has quit (Ping timeout: 252 seconds). 08:17:29 cheater, i was trying to define projectin 08:17:33 ^projection 08:17:39 such as.. 08:17:45 if i said.. you're lazy 08:18:14 if i was projecting, it means, deep down i believe i am lazy, and so i am saying you are the lazy one 08:24:26 right i understand projection 08:24:36 what sort of work are you doing? 08:24:50 i understand you are not working as a mathematician 08:28:56 I read the manual. Declarations of structure types in BLISS are extremely versatile; they can even contain arbitrary program code. They can have access parameters and declaration parameters. You can optionally have field names, but those are also very generalized. 08:31:52 It has a lot of compile-time functions which can be used to write macros. These macros are far more powerful than C macros; I think they are more like TeX macros. 08:33:48 My job is to occupy my bedroom. Loading the dishwasher. Putting groceries away sometimes. Chat in IRC. 08:34:18 good job 08:39:25 And to challenge any obstacles that obstruct me from ... and at this point it gets murky 08:40:45 so rude of cheater not to thank you for your in-depth answer :{ 08:42:14 that obstruct me from (living/forging my mind for myself and humanity/sharpening my mind/doing what I must do in life/making my dead father proud) 08:42:20 etc etc 08:42:33 lol 08:49:36 I think it is because that focusing in a world full of distractions is so difficult that it is good. 08:49:55 Uh. A lot can be learned in the space of one day where attention is focused, you know. 08:50:05 A great deal indeed. 08:50:39 ok 08:50:41 Infact, one can learn so much in the space of a day as to brag about it for a month. 08:51:16 is that what you do 08:51:22 no 08:51:30 bragging about learning things? 08:51:32 is this what you do 08:51:38 i dont learn things 08:51:45 would you brag 08:51:48 i brag because i don't learn things 08:51:53 oh 08:52:16 i should like to think (laughs to myself) that if i learned something substantially useful that i would actually apply it 08:52:32 but... yeah i am the foolish bragging sort 08:52:36 -!- zzo38 has quit (Quit: +!>@./~#!). 08:52:59 i know that even learned mathematicians have their off days, down time.. 08:53:18 heavy learning peaks and then plateaus 08:53:57 maybe they have enough that it comes time to balance theory with practice 08:57:32 maybe i have an aversion to learning in the same way that evincar is conditioned to need to escape when he hears the noise of someone crunching 08:58:43 hm? 08:59:07 hmmmmm 09:09:05 this woman.. would send me email after email of porn images in order to condition me to associate her with pornography 09:10:43 of course it is wrong as elliott explained to tar all women with the same brush.. but that is an example of the madness i attracted into my online life 09:11:37 how did this even happen 09:11:44 itidus20: she might have been a spambot 09:12:18 no she just cut and pasted the images from websites into the email somehow 09:12:22 does this have anything to do with that yahoo chat thing you were talking about 09:12:29 a while ago 09:12:31 of course.. i met her in yahoo 09:12:34 about how it didn't do you any good 09:12:47 I think that may have been all you said 09:13:23 are you sure she wasn't a spambot 09:13:41 its not completely evil... but basically i bit off more than i could chew 09:14:25 "oh isn't it great this girl likes porn and likes sending me porn" he thinks to himself. no she was a demonic woman. hahahaha. 09:14:36 okay 09:16:15 its my own fault for having such twisted perversions 09:42:55 -!- kmc has quit (Ping timeout: 245 seconds). 09:44:13 -!- kmc has joined. 09:50:07 itidus20: I like to eat people. 09:50:09 good night. 09:57:48 -!- kmc has quit (Ping timeout: 252 seconds). 10:02:14 -!- myndzi has joined. 10:05:11 -!- GreaseMonkey has quit (Quit: The Other Game). 10:11:46 -!- kmc has joined. 11:25:50 -!- Patashu has joined. 11:29:16 -!- monqy has quit (Quit: hello). 11:29:48 -!- sllide has joined. 11:34:14 -!- Deewiant has quit (Ping timeout: 258 seconds). 11:38:37 -!- boily has joined. 11:49:58 -!- Deewiant has joined. 12:02:27 -!- boily has quit (Quit: WeeChat 0.3.5). 12:13:59 -!- boily has joined. 12:14:19 -!- augur has joined. 12:33:13 W3 validator seems to be giving me internally-inconsistent errors >_> 12:33:19 Element source not allowed as child of element audio in this context. (Suppressing further errors from this subtree.) 12:33:24 Then: If the element does not have a src attribute: one or more source elements, then zero or more track elements, then transparent, but with no media element descendants. 12:33:31 Except, it doesn't have a src attribute, so that's clearly OK. 13:04:57 Remember I told you about arranging a course on esoteric programming languages? We're arranging an "evening school" (peer meeting) first. See https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet 13:06:06 -!- atehwa has set topic: Esolang event @ Hel/Finland on 3.10.2011 | I think pointers are considerably more useful than lambda calculus | http://codu.org/logs/_esoteric/. 13:06:15 -!- atehwa has set topic: Esolang event @ Hel/Finland on 3.10.2011: https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet | I think pointers are considerably more useful than lambda calculus | http://codu.org/logs/_esoteric/. 13:22:56 neat 13:23:21 ain't it, though :) 13:27:09 "esoteeriset ohjelmointikielet" 13:27:13 Finnish is such a beautiful language. 13:29:37 Gregor: hey, if we talked in Finnish then you'd have no problem deciphering my keyboard-mashings 13:29:45 -!- MSleep has changed nick to MDude. 13:31:50 mika tama on? se on bussi 13:33:38 onko tosiaan? 13:34:20 I'm somehow proud to have an esoteric mother's tongue 13:34:59 *mother tongue 13:37:01 I'm still not convinced Finnish isn't a hilarious fabrication 13:48:35 -!- kmc has quit (Quit: Leaving). 13:53:02 -!- elliott has quit (Read error: Connection reset by peer). 13:53:12 -!- elliott has joined. 13:53:18 oh, but it is 13:53:30 I have the same feeling about German 13:54:15 A language that works so, must be someone's quirk 13:55:28 -!- kmc has joined. 14:16:55 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:20:58 -!- BeholdMyGlory has joined. 14:24:55 -!- CakeProphet has quit (Read error: Operation timed out). 14:27:11 -!- CakeProphet has joined. 14:27:11 -!- CakeProphet has quit (Changing host). 14:27:11 -!- CakeProphet has joined. 14:35:58 -!- FireFly has joined. 14:40:58 -!- copumpkin has joined. 14:41:48 -!- kwertii has joined. 14:51:02 -!- elliott_ has joined. 14:51:03 -!- elliott has quit (Read error: Connection reset by peer). 15:05:47 -!- Phantom_Hoover has joined. 15:10:13 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 15:11:20 -!- derrik has joined. 15:14:46 Hello everyone. 15:14:46 Phantom_Hoover: You have 8 new messages. '/msg lambdabot @messages' to read them. 15:14:57 What a lovely surprise, lambdabot. 15:15:10 That weirdo derrik keeps sending Phantom_Hoover messages. 15:15:48 /msg elliott_ :p 15:16:15 No. 15:16:27 @tell derrik Stop sending me messages, you sick bastard. 15:16:27 Consider it noted. 15:21:00 -!- derrik has quit (Ping timeout: 264 seconds). 15:25:34 -!- augur has quit (Remote host closed the connection). 15:26:59 I guess I'm just a sick, sick bastard. Just one sandwich short of a picnic basket. 15:27:50 -!- augur has joined. 15:28:27 itidus20, are you Deewiant? 15:28:47 `findquote deewiant 15:28:51 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: findquote: not found 15:28:53 oops 15:32:46 `pastequotes deewiant 15:32:48 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.22811 15:53:07 -!- augur has quit (Remote host closed the connection). 15:57:37 -!- cheater has quit (Ping timeout: 276 seconds). 15:59:47 -!- augur has joined. 16:01:05 -!- kmc has quit (Quit: Leaving). 16:09:56 elliott_: so i have this idea 16:10:32 IDEA: Ideas Destined for Esolang Arena 16:10:32 -!- elliott_ has quit (Read error: Connection reset by peer). 16:10:39 -!- elliott has joined. 16:11:00 elliott: so i have this idea 16:11:06 ok 16:11:09 go on 16:11:27 its a game engine idea basically.. one i've been cooking for a while 16:11:39 but.. it is gradually making more sense over time 16:11:46 ok 16:11:47 Is it 2D. 16:12:08 The essence of the idea is 3d gameplay displayed in 2d. 16:12:39 itidus20: dwarf fortress does that 16:12:48 You mean literally every 3D game ever. 16:12:51 arguably, also nethack and all other roguelikes, but that's rather more limited 16:12:58 Phantom_Hoover: well I assumed it's something more nuanced than that : 16:12:58 :D 16:13:00 Phantom_Hoover: well yes and no.... 16:13:02 hmm 16:13:04 itidus20: but go on, is it more interesting than just a cross-section view? 16:13:08 (that's what DF does) 16:13:09 yes in the literal sense 16:13:13 i mean 16:13:17 (because it was designed as a two-dee game first) 16:13:27 yes in the sense that every 3d game is a 2d projection 16:13:36 but... 16:14:20 uhmmm 16:14:22 uhmm 16:14:24 Unfortunately, I realised that there are a few 3D games which don't just project to 2D, but they're like 0.1% of games, so it's not a huge deal. 16:15:03 Basically the key to the idea is that it is to look like a 2d game, and yet play like a 3d game. 16:15:31 >:-) 16:15:38 go on, then 16:15:42 hummm 16:15:48 So you mean like every 3D game ever? 16:15:55 lol 16:16:00 I mean, how do you define 3D in the first place? 16:16:02 there isn't an exact idea 16:16:12 phantom.. 3 dimensional vertices 16:16:16 [x][y][z] 16:16:22 :P 16:16:27 That's pretty vague. 16:16:30 -!- cheater has joined. 16:16:57 so what is the term for a 3d rectangle? is that a prism? 16:17:01 rectangular prism? 16:17:05 A cuboid? 16:17:58 like a umm.. book 16:18:06 A cuboid. 16:18:09 ok thanks 16:18:52 ok so my temporary definition is that 3d gameplay means that collision detection happens between cuboid primitives or spheres 16:19:10 or perhaps finite 3d planes 16:19:30 That doesn't apply to anything polygon-based, does it? 16:20:10 Depends. 16:20:13 a few polygon-based games might be like that ^^; 16:20:30 Oolite, at least, does collision detection on cuboids. 16:20:53 now i have to read up what oolite is 16:21:04 Play DF instead it's better and also obviously comparable. 16:21:10 Open-source Elite remake/ 16:21:24 yes... i am working on the assumption that cuboid collision detection is very common in 3d 16:21:38 * itidus20 winces. 16:21:49 or if not... then spheres 16:21:55 DFDFDFDFDFDFDFDF, you should play DF. 16:22:46 ok so a cuboid and a sphere are both defined in terms of 3d vertices. 16:23:00 I am a Dorf Fartruss 16:23:10 itidus20: will you play DF if I ask real nicely. 16:23:19 itidus20, in older games bounding boxes would be cuboids or upright cylinders or spheres. 16:23:43 nowadays a lot of models also have complicated meshes for collision 16:24:16 i assume here that spheres or cuboids also serve as a kind of preliminary bounds checking 16:24:32 I have a great urge to not go to class today 16:24:35 and just play DF. 16:24:49 itidus20: So if I make a three-dimensional game and it doesn't do collision detection is it not three dimensional? 16:24:51 CakeProphet: can't you transform your classroom into a dwarf fortress? 16:24:52 CakeProphet: A good urge. 16:25:04 hmmm 16:25:20 I am almost certain I will have no reason to go to any of my classes other than, uh, learning. 16:25:25 Dwarf Fartress 16:25:33 she who farts dwarven. 16:25:48 s/.*/Dorf Fartruss/ 16:25:59 CakeProphet: Then clirth. 16:26:03 Phantom_Hoover: (Did I get my -rth form right?) 16:26:18 I guess it should be "Then go-clirth.", which would be stopping going to the class. 16:26:18 elliott: ...I 16:26:25 you are not allowed to use -irth 16:26:28 and get a response from me. 16:26:28 elliott, no, it'd just be girth. 16:26:34 Phantom_Hoover: oh, duh. 16:26:37 CakeProphet: Girth. 16:26:39 CakeProphet, complainirth. 16:26:42 elliott: an interesting counter example is that a 2d rogue-like(i use this slang as if i ever played one) can be implemented with 3d graphics, polygons, procedural textures, geometry shaders, 16:26:50 Phantom_Hoover: That still kind of implies you go and then stop, though, but I guess CakeProphet did go in the past, so. 16:26:56 girthhub 16:27:02 itidus20: You should play DF it is great. 16:27:14 githubirth? 16:27:25 i knew a guy who was working on a 3d ultima frontend of some kind once 16:27:29 dunno which ultima 16:27:45 the chess variant no doubt. 16:28:21 technically anything made of electrons is 11 dimensional isn't it? 16:28:25 I don't think itidus20 wants to play DF. :( 16:28:29 :D 16:28:35 elliott is sad face. :( 16:28:58 i wanna talk more about this though 16:29:27 ಥ_ಥ 16:29:32 elliott, grievirth. 16:29:41 elliott> itidus20: So if I make a three-dimensional game and it doesn't do collision detection is it not three dimensional? -- good question 16:30:02 Phantom_Hoover: But itidus20 considirthed playing DF, if he ever considered it in the first place. 16:30:33 humm 16:30:55 I am kind of confused as to how the cross-section works. 16:31:03 What cross-section? 16:31:05 especially in open places outside. 16:31:07 DF. 16:31:30 CakeProphet, it displays dots with the colour of the stuff below if it's one level down, or blue crosshatch otherwise. 16:31:50 ah okay. 16:32:01 so to move down a level outside you just walk flatly across the ground right? 16:32:10 >_> 16:32:14 You don't move. 16:32:16 elliott: that is a tough question 16:32:22 "You" are an omnipotent camera. 16:32:27 elliott: your dorfs 16:32:35 They can handle slopes, yes. 16:32:39 okay. 16:32:48 The mechanism is irrelevant to you; maybe they crawl. 16:33:15 it might be if I intend for them to be able to reach a specific location and they cannot for whatever reason. 16:33:37 I have thought about using color luminance as an indicator of depth with an orthographic projection. 16:33:57 (naturally i am not the only one >.<;) 16:34:33 ah okay so the giant blue spots are cliffs. 16:34:41 The mechanism is irrelevant to you; maybe they crawl. 16:34:49 I didn't actually have to build a slope downward I realize now... I could have just dug into the mountain south of me 16:34:51 No it isn't. 16:35:00 You should no DF simulates that in painfully exact detail. 16:35:03 *know 16:35:16 As any fule no. 16:35:30 so channel = dig a big pit thing. 16:35:32 Phantom_Hoover: Well OK but I mean, it doesn't matter whether it's just by normal walking or by ascend-walking or anything. 16:35:48 CakeProphet: Mine = Mine the actual block. Channel = Mine the floor. 16:35:56 oky 16:35:59 Channel creates a room as if you mined it out on the level below. 16:36:10 elliott, not as of df2010. 16:36:13 (You're effectively removing the floor, and the block below it.) 16:36:15 Phantom_Hoover: Huh? 16:36:22 It makes ramps on the level below now, which need to be removed. 16:36:25 Phantom_Hoover: That's exactly how it worked in Handlekindled; see: below my bedroom. 16:36:27 Oh, well yeah. 16:36:31 But it's still the essential same thing. 16:36:35 Just with a side-effect. 16:36:36 oh. 16:36:40 * CakeProphet never removed the ramps. 16:36:54 CakeProphet, keep them if you just want a way down to the next level. 16:36:57 CakeProphet: What are you actually trying to channel? 16:37:08 nothing I'm referring to my originate channel in front of my entryway 16:37:14 elliott, I'm assuming he's using the fortress quickstart guide. 16:37:15 that the guide recommends. 16:37:19 yes. 16:37:20 Oh. 16:37:27 ANYWAYS MUST GET READY FOR CLASSES. 16:37:28 Which advises you to channel a 3x3 pit and dig into it if there isn't a convenient cliff. 16:37:39 Umm, but hasn't CakeProphet already got a fortress up. 16:37:48 I mean, one with no workshops or anything, but. 16:37:51 turns out there was a convenient cliff I'm just bad at imagining ASCII cross-sectional textmaps as 3D space 16:38:03 Protip: Blackness is solid rock. 16:38:09 yeah I got that. 16:38:17 now anyways 16:39:05 advantages to 2d graphics: 1)aesthetically pleasing. 2)easy to judge distances. 3)computationally cheap. 4)my girl. my girl. where will you go? i'm going where the cool wind blows. 16:39:19 Always important, is 4. 16:39:41 yes, leadbelly is god. 16:39:53 i dont know them.. im listening to a nirvana cover 16:39:56 or, you know, just this really cool blues musician guy. 16:40:02 Surely berylliumbelly? 16:40:05 itidus20: of course you are because no one knows anything about old blues artists. 16:40:13 Except CakeProphet. 16:40:22 Cake Prophet would be a really good name for an old blues artist. 16:40:23 he announces at the start of the song that he was offered leadbelly's guitar for $500,000 16:40:41 probably not a very good guitar. 16:41:44 "we're passing the basket. i even asked david geffin personally if he'd buy it for me" 16:42:19 hmm 16:42:40 i know which discography to share next then 16:53:03 anyway 16:53:28 advantages to 2d graphics: 1)aesthetically pleasing. 2)easy to judge distances. 3)computationally cheap. 16:54:02 extra detail on '2' one reason for pursuing stereoscopic 3d is to make it easier to judge distances in games and such things 16:54:38 because it's simply difficult 16:55:36 more details on '1' i will present 2 animated scenes.. and those who are bored enough to look can see which looks best :D 16:55:46 if you think three-dee worlds are computationally cheap just because they're rendered two-dimensionally, you _need_ to play DF. 16:56:39 Well, DF is not renowned for its intensive graphical strain. 16:57:04 Phantom_Hoover: No, but if DF was rendered with actual three-dee in OpenGL it's not like the system requirements would skyrocket. 16:57:18 (Heck, it uses OpenGL already to do the twodee.) 16:57:36 this is the contender representing 2d art: http://www.youtube.com/watch?v=kaIliI0gc1I 16:58:57 this is definitely a biased comparison .. sighs.. but 3d example is: http://www.youtube.com/watch?v=zB2gPZRsz0Q 16:59:06 the bias really isnt fair 17:02:24 -!- CakeProphet has quit (Ping timeout: 252 seconds). 17:03:31 i suppose gollum from lord of the rings would be a better contender for 3d 17:10:44 and.. the contrasting side of things is 17:12:11 3d offers richer gameplay... for example.. movement in 26 general directions instead of 8 17:13:10 play df, df has movement in a nearly infinite amount of directions (because it is like being a hundred characters at once) (except you can ALSO count all the menu things and designations as moves!!!!!!!) 17:14:43 a curious note is that some games such as ninja turtles arcade game have 3 dimensions, while some games like wolfenstein 3d have 2 dimensions 17:15:19 -!- elliott has left ("Leaving"). 17:15:25 -!- elliott has joined. 17:15:32 itidus20: will monetary bribes make you play df 17:15:37 yes 17:15:41 how big 17:15:44 name your price 17:16:11 lets start off to the tune of 1,000,000 euros so we have room to move 17:16:18 ok. how about ten euros 17:16:54 oh you are clearly quite taken with df 17:17:02 that is good 17:17:55 we have been taken with df for weeks (where taken means playing it) 17:18:04 (everyone has been admiring df since it started existing ever) 17:18:26 elliott has been ecstatic lately. He admired a fine DF lately. 17:18:47 Phantom_Hoover: What is it with dwarves and, like, admiring doors. 17:18:56 because what i am talking about is not really common, i have spent some time comparing and contrasting 2d and 3d 17:19:11 elliott, it's a *fine* door. 17:19:23 it is hard to really express "2d graphics with 3d gameplay" 17:19:34 Phantom_Hoover: are there even non-fine doors. 17:19:35 It opens with the smoothest of swings. 17:19:40 Dorfs admired shit in my fortress of crap. 17:19:46 Do you know how hard that is with a door made of rock? 17:19:53 By which I don't mean they admired faeces in a fortress made out of faeces. 17:19:57 elliott: hmm.. perhaps i should tell you about a chapter from my childhood. 17:19:57 Although that does give me my next megaproject. 17:20:08 elliott, come on, you don't affect how your masons make stuff, which is why they can make nice things. 17:20:19 itidus20, yesyesyes STORY STORY STORY 17:20:21 Phantom_Hoover: Woodcrafter actually. 17:20:25 Friendship story. 17:20:25 Not that good a one, I don't think either. 17:20:28 elliott, ELF 17:20:34 Phantom_Hoover: um excuse me there was an AQUIFER 17:20:37 Phantom_Hoover: ok i had several artistic visions growing up. 17:20:40 And also LOTS OF TREES _BUT_ 17:20:44 We had to get it all from the REALLY COLD OUTSIDE 17:20:49 THERE WERE HONEY BADGERS AND SNOWSTORMS 17:21:02 elliott, dude, you never even _saw_ the aquifer on that map. 17:21:09 You ran out of food because you're an idiot. 17:21:21 Phantom_Hoover: Nobody has technically died yet. 17:22:01 One vision I had was when i had some paper folded up like a book or whatever... I started to wonder, is there a way I can fold/cut/turn this paper to make it less linear.. to make it more like an interactive fiction 17:22:31 as if my brain was blasting the paper with matrices and the paper was not ready to yield 17:22:55 itidus20, consider that you may have superpowers. 17:23:01 :P 17:23:06 I rate this hypothesis as: plausible. 17:23:22 itidus20 is......... THE MATRIXINATOR 17:23:56 as if my brain had an itching that there was more ways the paper could fold than i could imagine 17:24:22 like back then my idea of interactive fiction was "choose your own adventure" books 17:24:32 where at the bottom of the page you branched via page numbers 17:24:44 itidus20, also, have you considered trying origami. 17:24:48 so the book had already demonstrated a capacity at branching 17:25:32 and maybe because when growing up we had this kids book which had paper pockets in it you could sorta stick things 17:25:42 probably all these things played on my mind 17:26:19 so.. the problem with a book of course is that you can't erase the pages 17:26:50 uh.. it is ROM... vs RAM 17:27:28 yes.. essentially a book is a ROM.. and a few operations are available 17:27:55 Jump to the next page. Jump to the previous page. Jump to page N. 17:28:14 it even had conditional jumps 17:28:57 if (you choose option 1) jump to page A; if (you choose option 2) jump to page B; 17:29:12 and some pages had a HALT instruction 17:31:36 ok so that was one idea.. pondering about the magic of book computation. 17:31:47 Bookputation. 17:32:01 the second idea was more relevant. i had a decent collction of lego which was donated by a parents friend. 17:32:35 one day, while playing with these legos, i got this dream of a giant tower built out of lego bricks which stretched from hte ground to the ceiling 17:32:56 which would basically be 2ft square 17:33:30 and whenever i would go to a toystore growing up i would have my eyes out for lego blocks, secretly having the ambition to build it 17:33:50 but never found any lego compatible bricks or ones cheap enough etc 17:34:16 The saddest story. 17:34:21 eventually about the time i had a 486 i started considering the possibility of creating my own 3d software. 17:34:48 so in a book about turbo pascal 6 system programming i started reading about segmented memory addressing :-s 17:34:49 Here, behold http://www.youtube.com/watch?v=mEFPhXl3QQY and be happy. 17:34:59 Oh god, segments. 17:35:01 * itidus20 facepalms. 17:35:05 I know them only as an ancient horror. 17:35:13 16bits -> 20 bits 17:35:19 anyway... nothing came of that. 17:35:52 ok ill watch video 17:36:43 itidus20: will you play DF. 17:37:34 Nobody likes my unsafe hackery in #haskell. /sniff 17:37:57 not today 17:38:23 my experiment at lego stopmotion can be seen here: http://www.youtube.com/watch?v=NzMEQlK1EBA 17:40:08 Phantom_Hoover: Here, you appreciate my hack: http://hpaste.org/50760 17:42:17 Is that printing IO Strings? 17:42:31 ...no. 17:42:37 THEN WHAT 17:42:42 OK YOU HAVE INSUFFICIENT KNOWLEDGE TO APPRECIATE MY GENIUS SORRY 17:42:53 A SADLY COMMON OCCURRENCE IN MY LIFE 17:43:22 i suppose that what i felt when sitting in my family room floor with a rug full of legos looking into the corner and imagining a tower, is what you feel when you play minecraft 17:43:39 hehe. 17:44:00 elliott: Now make it work without --interactive ;-) 17:44:22 Deewiant: Well that's the thing, I was running main from within GHCi 17:44:51 another of these childhood artistic visions was that i had this idea of carving a car out of wood... but not just a solid block car with the illusion of an interior 17:44:52 *Main> do{ print "Hello, world!"; withInstance litD $ print "Hello, world!" } 17:44:53 "Hello, world!" 17:44:53 "Hello, world!" 17:44:53 *Main> print "Hello, world!" 17:44:53 "Hello, world!" 17:44:53 *Main> withInstance litD $ print "Hello, world!" 17:44:57 Hello, world! 17:45:00 Deewiant: Wow, I broke monads 17:45:24 but a means to carve out the interior of a block of wood 17:45:41 somehow.. i felt a taste of mathematical magic in this primitive idea 17:45:45 as a child getting about 17:46:15 Deewiant: I guess GHC makes unreasonable assumptions like only one instance per type :) 17:46:22 that it was somehow asking too much to carve the interior of a car out of wood 17:46:46 again.. computing provided the means to do it virtually.. again.. i never bothered :-s 17:47:27 also i thought slotcars were very very cool... 17:48:31 the natural progression of the slotcar to me was the ability to change lanes. i still think it is a problem that needs to be solved 17:48:48 so you can have something like the video game daytona usa except with slotcars 17:50:44 this tower.. it may have been inspired by the many towers of final fantasy 6 17:51:33 and perhaps star wars bases 17:56:02 -!- Sgeo has joined. 17:56:48 so theres this george lucasy way of exploring a space as seen in thx 1138 and the opening of starwars 4 17:57:05 and i don't think you really feel it much.. its very schizophrenic 17:58:00 i take it for granted, but it is as if his cameras are haunted by phillip k dick 17:58:10 or franz kafka 17:58:30 -!- Sgeo_ has quit (Ping timeout: 264 seconds). 18:04:48 -!- derrik has joined. 18:04:53 Deewiant: Aha! 18:04:56 main :: IO () 18:04:56 main = a >> b 18:04:56 a = print "Hello, world!" 18:04:57 b = withInstance litD $ print "Hello, world!" 18:04:58 Deewiant: This works. 18:05:01 Deewiant: Not in a where clause though. 18:05:31 Not very robust now is it :-) 18:06:19 Deewiant: I'm... not really sure what I can do about it; I suspect GHC has an instance cache type dealie that kicks in at the top-level declaration scope for whatever reason. 18:29:13 -!- augur has quit (Ping timeout: 240 seconds). 18:54:17 Phantom_Hoover: i just finished the video series 18:54:31 It ended in tragedy. 18:54:42 Noöne would buy the house so they unbuilt it. 18:55:20 my first thought is that what they need to do in future is to design a brick which is some degree more difficult to pull apart than it is to put together 18:55:38 Phantom_Hoover: I would buy it. 18:55:56 Yes, but this is related to the fact that you don't have enough money to. 18:56:13 this is the real appeal of minecraft isn't it 18:56:16 Phantom_Hoover: Face it, I would spend money in the best way possible if I had it. 18:56:27 and.. perhaps df also 18:56:44 except he did it in real life 18:56:47 with lego voxels 18:56:48 It might be the appeal of MC but probably not DF. 18:56:56 DF isn't really about building something aesthetically appealing. 18:57:00 ok just mc 18:57:03 Well, it is, but not aesthetically as far as visuals go, unless you're into that thing. 18:57:05 mc is awesome 18:57:19 now let's wait for the hilarious reveal where coppro is expanding mc to mean something different to the rest of us 18:57:25 oOPS I RUINED IT 18:57:34 ^ 18:57:37 Manilla cream? 18:57:39 so to repeat, my first thought is that what they need to do in future (for a real life minecraft) is to design a brick which is some degree more difficult to pull apart than it is to put together.. 18:57:49 Masturbation Club 18:57:54 Mappers... Castration-arena? 18:58:02 Mreally Clamepeople. 18:58:05 elliott: math and computer 18:58:17 that's the stupidest expansion of any acronym ever 18:58:19 wat 18:58:54 MC: the Math and Computer building at UW 18:59:15 You guys have them in the same building? 18:59:25 Phantom_Hoover: Computer Science is part of the Math faculty 18:59:57 I'd approve if I didn't suspect that they don't just mean the mathsy bits of CS. 19:00:03 a garden of eden would be complete with lego bricks 19:00:16 Phantom_Hoover: regrettably so 19:00:21 and exploding zombie types 19:01:03 (the singular "computer" is not a typo) 19:01:07 And then the serpent came unto Eve and said, approach that green frowny thing, for ye shall not be harmed. 19:01:22 Computers science? 19:01:31 Surgeons general. 19:01:34 Phantom_Hoover: No. It got its name back when there was A Computer. 19:01:48 The building housed Math, and the computer. 19:01:54 [asterisk]the Math 19:01:57 there was A Math then, too 19:02:10 math is an acceptable abbreviation for mathematics 19:02:26 Computer Science has nothing to do with computers. 19:02:33 Therefore calling it "computers science" is nonsense. 19:02:43 elliott, did you know that any sturgeons caught in British waters have to be given to the Queen, and as such a group of them is referred to as a Royal College of Sturgeons? 19:03:07 `quote poultry 19:03:09 219) elliott: My university has two Poultry Science buildings. Two! \ 327) Gregor, yeah, but Purdue has poultry science facilities beyond the dreams of avarice. 19:03:10 [citation needed] 19:03:23 Phantom_Hoover: I don't believe it, but I will henceforth act as if I did for the betterment of humanity 19:03:27 Thank you for enriching my life. 19:03:39 Computer Science has nothing to do with computers. 19:03:40 Therefore calling it "computers science" is nonsense. 19:03:41 elliott, courtesy of J.B.S. Haldane. 19:03:48 Gregor: No more nonsense than calling it computer science 19:04:01 Yeah, it should be computational science or (my favorite) informatics. 19:04:08 Gregor: Computing theory. 19:04:13 ^ 19:04:14 It isn't a science. 19:04:16 elliott: But that's a subfield of computer science. 19:04:21 It /is/ a science. 19:04:31 Gregor: No, theory of computation is a field of CS. 19:04:43 *is a field of mathematics 19:04:51 elliott: I have reversed your "of" to form a synonym X_X 19:04:54 coppro: CS is a branch of mathematics. 19:04:54 Gregor, no it's not. 19:05:03 Do you use the scientific method? 19:05:04 CS is not a science; it is a branch of mathematics. That people incorrectly overlap it with SE is irrelevant. 19:05:12 Are you trying to work out how computers function? 19:05:20 Also the fact that you have machines that operate kind of like your theoretical ones is irrelevant, since calculators exist too. 19:05:30 Calculator Science. 19:05:39 That is henceforth what I will call mathematics. 19:05:44 -!- augur has joined. 19:05:46 Phantom_Hoover: The fact that there are layers of abstraction on top of it is the unfortunate (?) fact that engineering and science are merged in this field. 19:06:01 Phantom_Hoover: But the fact that I'm an engineer does not reduce the legitimacy of the field as a science. 19:06:15 That first sentence was weirdly formed :P 19:06:21 Gregor, dude, it's not a science. 19:06:23 Seriously. 19:06:37 Gregor: That just means you do SE and CS; the former happens to be the applied version of the latter. 19:06:40 In science, you have a complex system and try to model it. 19:06:47 Engineers sometimes do mathematics, too :P 19:06:48 Phantom_Hoover: We did not invent computation. Computation is an extension of mathematics. You need to take some theory courses. 19:06:57 Phantom_Hoover: (Also, math is a science) 19:07:01 Phantom_Hoover: (Also, math is a science) 19:07:01 ...no. 19:07:04 suddenly all credibility is lost 19:07:09 Yeah, you have no idea what a science is. 19:07:27 lol 19:07:38 "Science (from Latin: scientia meaning "knowledge") is a systematic enterprise that builds and organizes knowledge in the form of testable explanations and predictions about the universe.[1][2][3][4]" 19:07:52 Things mathematics is not about: testable predictions about the universe. 19:08:14 Oy, this is so retarded. 19:08:31 Gregor makes pedantic point about naming, reacts badly to further pedantic points. 19:08:40 Novelisation, film in a few years. 19:08:57 Except that your pedantry is clearly not common opinion. See for example: THE NAME "COMPUTER SCIENCE" >_< 19:09:10 Gregor: The name you think is nonsense 19:09:24 I said calling it "computerS science" is nonsense. 19:09:32 Gregor: No more nonsense than calling it computer science 19:09:32 Yeah, it should be computational science or (my favorite) informatics. 19:09:44 Gregor, funnily enough, I'm inclined to be prescriptivist with technical terms. 19:09:51 Y'know, because it's *the entire point*. 19:10:11 elliott: ... lol. You and reading so much into things :P 19:10:44 "Yeah" =/= agreement 19:12:13 Gregor: But seriously, there's no way mathematics is a science. 19:20:08 -!- oerjan has joined. 19:20:34 http://en.wikipedia.org/wiki/Mathematics#Mathematics_as_science bla bla pro and con, neutral viewpoint, [who?] [citation needed] and so on. 19:20:51 lol, apparently my Purdue computer is prone to Totally Random Reboot Syndrome. 19:20:53 I shall determine the cause of this phenomenon ... with COMPUTER SCIENCE! lolololol*shot* 19:21:34 fizzie: bla bla pro and con, neutral viewpoint, [who?] [citation needed] and so on. :P 19:21:44 Well let's see, Gauss is using a different definition of science to common English usage and is also a big ol' douche, "Gödel means mathematics isn't logic ergo science" is the most braindead shit ever... and the rest has nothing compelling at all. 19:21:55 Except that universities sometimes group sciences and mathematics together. 19:21:59 Gregor: it cannot be real science if it's lolololol, sheesh. 19:22:05 Which is compelling if by compelling you mean bulslhit. 19:22:08 you need *MWAHAHAHA* for that 19:22:23 Gregor: No, sometimes it's a direct copy-paste of some PR material. 19:23:14 This point is not worth arguing. Like, at all. We're so far into the pedantry rat hole that I can't see light and the air is stale. 19:23:31 Gregor: Yeah, but which one of us is using up the hot air fastest? 19:23:40 * elliott is tooootally surviving this thing. 19:24:26 so anyway http://esolangs.org/wiki/DPEMOFKOXM is the best language we've ever had 19:25:20 Lemme guess; Brainfuck, NOW WITH LETTERS 19:25:30 Oh, it's a quine. 19:25:39 The page conveniently includes its own interpreter. 19:25:41 DPEMOFKOXM 19:25:59 elliott, it's not a BF derivative, so it is significantly above angry. 19:26:14 DPEMOFKOXM 19:26:34 Incidentally, there was a brain guy giving today's keynote speech. This Mitchell guy -> http://www.ccbi.cmu.edu/projects_neurosemantics.html -- and I have to add, "neurosemantics" is the fanciest term evar. 19:26:35 Here I was about to DPEMOFKOXM out topic, but we have something actually serious in it for once! 19:26:42 s/out/our/ 19:26:49 Also they do mind-reading, they're like more than half the way to supervillainy there. 19:26:55 elliott: I had the same thought X-D 19:27:05 Although I do wonder how many people here are in Finland and don't have some kind of bitter university-related rivalry going on that prevents them from caring. 19:27:13 elliott: I mean, we can't just go removing the pointers-lambda-calculus comparison. 19:27:14 Next they'll just pseudoinverse their matrices and do mind control. (What do you mean that's not how it works?) 19:27:27 fizzie: please assemble relevant Finland statistics; thanks. 19:27:30 -!- Sgeo has quit (Ping timeout: 245 seconds). 19:28:24 I think our "rivalry" with the "UH" guys (best abbrv ev.?) is more of a friendly one than a bitter one. 19:28:37 -!- Sgeo has joined. 19:28:39 fizzie: it _might_ work that way, if the matrix represents the concept -> neuron map 19:29:12 oerjan: Well, they already pseudoinversed it, to make predictions of the neural activations for unseen words. 19:29:26 oerjan: Sadly the FMRI scanner will not suddenly start to control brains even if you inverse some matrices. 19:29:31 fizzie: What if I hopped on the next plane to Finland and crashed the event. 19:29:34 oerjan: (At least I believe it will not. I'm no physicist.) 19:29:39 Would you ban me? 19:29:48 it's a friendly rivalry, the reindeer head in your bed was just for amusement 19:30:34 fizzie: well you need to reverse the MRI rays too, duh 19:30:50 elliott: Oh hey, it says it's co-organized with our student organization too. 19:31:00 fizzie: So would you... ban me... 19:31:10 Also I'm glad that Finland unites for the cause of esolangs. 19:31:41 Is it even a thing you can crash? I mean, limited to any people? 19:32:07 fizzie, how many Finnish people did you even bring here. 19:32:11 fizzie: Weeeell, I'm an annoying little kid, and I doubt you're meant to enter through the window. 19:32:17 Phantom_Hoover: Hey, that guy's the old list administrator. 19:32:19 He found us independently. 19:32:21 -!- zzo38 has joined. 19:32:25 eek spiders in the roof. 19:32:30 Who is? 19:32:39 fizzie: Also if I spend all my time loudly rambling on about Feather's superiority they might get a bit annoyed. 19:32:40 Phantom_Hoover: atehwa, who's organizing that thing. 19:32:46 Phantom_Hoover: The person who set the topic. 19:32:50 Or that, yes. 19:33:19 I don't think I really bought anyone else to the channel. (Except maybe ineiros by copy-pasting the best bits to him. Maybe. I don't quite recall.) 19:33:20 Guys why is it in Finland it should be in Edinburgh. 19:33:32 I read that as "why is it called Finland it should be Edinburgh". 19:33:40 A renaming which I wholeheartedly support. 19:34:14 fizzie, so half the population of Finland ended up here of their own accord? 19:34:31 Um, there are more Finns in here than there are Finns. 19:34:34 I have been over this many times. 19:34:35 -!- Sgeo has quit (Ping timeout: 245 seconds). 19:34:41 elliott, oh. 19:34:45 eviction complete. 19:34:56 one time when i was supposed to be studying at school i took out a book about finnish 19:34:56 Actually, esoteric languages convert people into Finns (if you're not careful). 19:35:07 Case in point -> itidus20. 19:35:10 i didn't learn much. i learned about the mysterious double-v 19:35:34 and i memorized two sentences "mika tama on? se on bussi." 19:35:41 haha......... 19:35:43 Phantom_Hoover: In particular I think I first "met" Deewiant here, even though I think he works in the same place. 19:35:44 I don't think they will convert people into Finns 19:36:09 also.... whenever i see a photo of finland it's always some wonderful wooden bridge going by a lake and trees 19:36:13 fizzie: And you're correct. 19:36:16 ... haha.... 19:36:19 *ceiling 19:36:36 itidus20: FIGHT IT 19:36:42 itidus20: FIIIIIIIIGHT 19:36:44 oh but theres one more thing 19:37:20 ieva's polka 19:37:27 also.... whenever i see a photo of finland it's always some wonderful wooden bridge going by a lake and trees 19:37:33 Deewiant: fizzie: confirm/deny description of Finland. 19:37:44 confirm 19:37:45 Actually not Deewiant he's never fun about these things. 19:37:51 Confirm 19:37:53 Oh 19:37:55 Too late 19:37:59 Norway is also entirely waterfalls 19:38:00 I guess it really is like that 19:38:03 "Huh." 19:38:04 In D&D game, I took one book from some office (probably the office of some evil potion maker). I have a lot of plan the use of this book in the game. (It can be eventually returned, if he survives and his office survives) 19:38:14 ieva's polka .. i'll link to the youtube 19:38:21 I think we've all heard Ieva's Polka. 19:38:21 coppro: FALSE. we also have mountains for them to run from. 19:38:41 and fjords for them to run into. 19:38:41 oerjan: that is part of "entirely waterfalls" 19:38:48 oh well ok then 19:38:54 try and close this song before the end of hte video.. go ahead and try: http://www.youtube.com/watch?v=1ygdAiDxKfI 19:39:05 and the fjords don't count because they're bodies of water. 19:39:10 itidus20: ok i will try 19:39:13 Not that there's anything wrong with the fjords 19:39:18 they are beautiful :D 19:39:21 coppro: but but they have infinite length 19:39:22 and have won awards, I'm told 19:39:23 closed at ten seconds in 19:39:24 im magician 19:39:26 Fjords are just a crappy imitation of firths. 19:39:27 (fractal facts 101) 19:39:43 oerjan: fractal fjords? 19:39:45 oerjan: cakeprophet doubted that coastlines were fractal earlier, the uncultured swine 19:40:11 Phantom_Hoover: So how's that derived as an irth-form? 19:40:31 Phantom_Hoover: Where the water stops going in /forwards/ because it's a body? 19:40:32 It's when you stop going forth. 19:40:43 Right. 19:40:47 elliott: *GASP* 19:41:56 first, go forth to the firth, forsooth. 19:42:41 -!- kmc has joined. 19:43:03 -!- zachk has joined. 19:43:15 hi zachk 19:43:19 hello 19:43:35 once i was innocently wandering around second life and someone approached twirling a leek which was emitting the sound of ieva's polka 19:44:00 it was only much later that i discovered the song outside of secondlife 19:44:00 zachk: this is a channel about esoteric programming languages. sometimes. 19:44:00 oerjan: hide the goats 19:44:12 * zachk nods his head 19:44:45 Hide the Finns! 19:45:05 they're stealth finns 19:45:42 Oh good. 19:45:45 you could say 19:45:48 sealthinns. 19:46:05 and noone hates the finns :P 19:46:12 The Russians do. 19:46:16 Damn you Noone! 19:46:21 Why you gotta be racist! 19:46:35 screw finns they suck 19:46:36 i didn't know finland was a race 19:46:48 swedes think finns are weird 19:46:48 derrik: You have 1 new message. '/msg lambdabot @messages' to read it. 19:47:01 ok so the russians do. thats more realistic 19:47:09 never say never after all 19:47:13 cheater: "Racist" is commonly used for ethnicities and heritages as well. 19:47:23 But is racism a science? 19:47:33 is it? 19:47:37 why would it? 19:47:38 lets just pretend i didnt say noone hates them 19:47:42 elliott: It's an art! 19:47:42 scientific racism comes close 19:47:43 finland is a big race to the bottom 19:48:22 derrik: I would say one of the prominent features of scientific racism is being unscientific crap. 19:48:56 that goes for many isms 19:49:08 Doesn't make it a science :P 19:49:51 generally, if you do lab tests, it is considered a science - if you tend to be materialist 19:49:58 scientific racism is like that 19:50:01 it is difficult to live in a country which was founded by british convicts who arrived 200 years ago and cleansed and assimilated the native tribes.. 19:50:27 derrik, they don't let them do lab tests any more. 19:50:28 there is no meaning in it 19:50:31 derrik: That's a rubbish definition. 19:51:12 -!- ais523 has joined. 19:51:13 elliott: give a better one 19:51:26 ok its not as bad as i describe really :D 19:51:48 derrik: A science is a field of research that meets the minimum standard of being better than terrible at meeting the scientific method. 19:51:57 hi ais523 19:52:33 elliott: there used to be a time when scientific racism was good enough.. so there 19:52:33 hi 19:52:39 stop being a racist now 19:52:47 derrik: Whaddya mean by good enough 19:52:59 How many computers are there that use LFSR-based PC? 19:53:01 as in better than terrible 19:53:11 I doubt that :) 19:53:31 ok i have said too much and stirred up trouble.. i was going so well up till then 19:53:36 MEAT IS MOODER 19:53:43 itidus20: When do you ever stir up trouble ever 19:53:55 The NES CIC uses LFSR-based PC. 19:54:22 itidus20: what do you mean stir up, no one even commented on it :P 19:55:06 itidus20 is the anti-troll 19:55:09 i am an n-dimensional vector... my life's mission is to orient myself to the correct "direction" 19:56:00 * itidus20 is basically kidding. 19:57:12 "A man from the Netherlands is being sued by RealNetworks for linking to a freeware application. The application, RealAlternative, is considered by some to be a competitive product to software from RealNetworks." 19:57:53 is this the 90s 19:57:57 i have that installed 19:58:03 so yes then 19:58:45 heh 19:59:02 -!- Phantom_Hoover has set topic: It is the 90s and there is time for Esolang event @ Hel/Finland on 3.10.2011: https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet | I think pointers are considerably more useful than lambda calculus | http://codu.org/logs/_esoteric/. 19:59:03 yes some motherfuckers choose to encode things in real formats 19:59:17 ais523: umm, wow, you know how you hate Ribbons? 19:59:33 Ribbons? 19:59:34 -!- derrik has left ("better than terrible"). 19:59:46 Oh, the MS Word thing? 19:59:48 elliott: the interface element? 19:59:52 yep 20:00:07 ais523: I might be coming around to your point of view; here's Microsoft's redesigned Explorer: http://i.imgur.com/pJcH5.png 20:00:13 I don't so much hate them, I just think they're less efficient than toolbar+menu for no good reason 20:00:16 a masterful trainwreck 20:00:29 argh, what is taking up all my network pipe? 20:00:30 their intended advantage seems to be discoverability 20:00:59 wow, is that a crazy waste of screen space as well as requiring extra clicks for some actions 20:01:34 ais523: bonus: "Here, they proudly overlay the UI with data from their research into how often various commands are used. They use this to show that “the commands that make up 84% of what users do in Explorer are now in one tab”. But the more important thing is that the remaining 50% of the bar is taken up by buttons that nobody will ever use, ever, even according to Microsoft’s own research. And yet somehow they remain smack bang in the mi 20:01:40 ddle of the interface." 20:01:50 the problem with conlangs such as lojban and esperanto is they cheapen the value of language developing naturally 20:02:00 i 20:02:16 oops i worded that bad 20:02:43 i mean, they lack what the non-constructed languages have in history 20:02:59 elliott: see, as far as I can tell, you want to use a toolbar for one-click access to the most commonly used commands, and a menu for two-click access to more rarely used commands 20:03:19 a ribbon's equivalent to toolbar+menu where the menu doesn't shut after you use it, it just stays covering the menu until you explicitly get rid of it 20:03:20 obviously you want to use @ for everything, come on 20:03:31 it's the age old problem of over-engineering something.. or making something efficient and emotionally-void 20:04:17 elliott: we currently don't have any idea on what @'s UI is, so we can talk about the relative merits of menus and ribbons with a clear concience 20:04:34 ais523: maybe _you_ can. 20:04:46 uhhh... what am I saying? I am saying that i am a natural-language-anarcho-primitivist 20:04:49 I know one important thing about @'s UI, and it's that it's perfect 20:05:08 or perhaps a natural-langage-neo-luddite 20:05:18 elliott: I mean, you can say "A is perfect but I don't know what it is; B is imperfect, but better than C" 20:05:40 anarcho-primitivists and neo-luddites, good role models 20:05:44 by good i mean worst 20:06:20 but instead of applying the idea to technology(which i do sometimes) instead i am applying it to natural languages.. and the advancement of conlangs 20:10:05 elliott: yeah i heard the unabomber was one 20:10:09 not a good sign. 20:12:38 -!- kwertii has quit (Quit: bye). 20:15:01 yes you should take good role models such as mathematicians. ...oh wait... 20:22:36 Hey esopeople, what does this do on a 32-bit system (don't check, just guess): int x = 1234567890123L; if (x == 1234567890123L) printf("A\n"); else printf("B\n"); 20:23:05 Something wacky because this is C. 20:23:19 Gregor: There's those rules about overflow in intermediate expressions, mayhaps they apply to == too. 20:23:23 Pinging fizzie the language lawyer. 20:23:45 hm conversion rules... 20:23:51 -!- Sgeo has joined. 20:23:54 You need a laywer for C? 20:23:56 ... 20:23:57 Sounds about right. 20:24:11 Lymee: isn't that obvious. 20:24:29 -!- zachk has quit (Read error: Connection reset by peer). 20:24:31 the _sane_ thing would be A, i think 20:24:39 converting to the largest type 20:24:56 but i'm not a C lawyer so i'm not sure 20:25:14 -!- zachk has joined. 20:25:54 oh wait duh 20:25:58 B 20:26:15 x has already been truncated 20:26:35 so converting back won't give the original constant 20:26:40 oerjan: um yes but the native integral type is that too 20:26:43 so it should overflow then, as well 20:26:58 I would assume on a 32-bit system you would get some complaints about 1234567890123L, as it doesn't fit in a "long". 20:27:00 In the ==, the x gets promoted to long 20:27:11 In the =, the literal gets truncated 20:27:29 um won't long be 64-bit on a 32-bit system? i don't know that either :P 20:27:35 oerjan: no 20:27:37 i was assuming so 20:27:37 long is generally pointer-size 20:27:50 hm 20:27:53 Oh right, small longs 20:28:12 is there even a difference between int and long then? 20:28:30 Not in value ranges; maybe in conversion rank. 20:28:38 I'm not sure it's a difference you could notice, though. 20:29:18 I'm not really a C lawyer; it's borderline possible that despite the suffix, integer constants automatically get a "long enough" type. 20:29:34 ok my official stance now is "i have no clue" 20:30:25 perhaps it's even undefined behavior 20:30:58 I guess it prints B 20:31:02 "The type of an integer constant is the first of the corresponding list in which its value can be represented. 20:31:05 Only because that's completely unintuitive 20:31:09 The list includes 'long long'. 20:31:09 Which is the only reason Gregor would ask. 20:31:14 is EgoBot 32-bit or 64-bit? 20:31:32 fizzie: Well hmph, if Gregor is relying on long long being sixty four bits then poo to him 20:31:36 If there is a "L" after it, the type is either "long" or "long long", depending on value. 20:31:45 And C99 "long long" is guaranteed to be at least that wide. 20:31:50 aha 20:31:54 Hmm, fair enough 20:32:03 Gregor: Yeah, it says B because mumble long long mumble. 20:32:10 So the x gets truncated in assignment, then promoted to 'long long' in the comparison, probably. 20:32:28 !help languages 20:32:29 ​languages: Esoteric: 1l 2l adjust asm axo bch befunge befunge98 bf bf8 bf16 bf32 boolfuck cintercal clcintercal dimensifuck glass glypho haskell kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor sadol sceql trigger udage01 underload unlambda whirl. Competitive: bfjoust fyb. Other: asm c cxx forth sh. 20:32:38 There was something *really* unintuitive in the automatic integer promotions involving signed and unsigned stuff, but I've forgotten what it was. 20:32:43 !c int x = 1234567890123L; if (x == 1234567890123L) printf("A\n"); else printf("B\n"); 20:32:47 B 20:33:27 !c printf("%zu\n", sizeof(long)); 20:33:29 8 20:33:43 long is irrelevant here 20:33:50 !c printf("%zu\n", sizeof(int)); 20:33:52 4 20:33:52 int is thirty-two bit on linux/xeightsix-sixtyfour 20:33:57 so the results should be accurate 20:34:05 Gregor: what do we win? 20:34:07 !c printf("%zu\n", sizeof(long long)); 20:34:09 8 20:34:13 If L makes it a long long then it doesn't matter whether it's 32 or 64 bit 20:34:30 Notably the type of "2147483648" is "long long int" (assuming 32-bit int, long; >32-bit long long), while the type of 0x80000000 is "unsigned int", despite having the same value. 20:34:38 Deewiant: Yes it does, because "int" matters 20:34:39 Deewiant: well what matters is that it doesn't fit in an int 20:34:48 (The rules are different for decimal constants vs. octal/hex constants.) 20:34:54 All current systems I'm aware of have int <= 32-bit 20:35:04 Deewiant: DING DING DING 20:35:07 DING 20:35:08 DING DING DING 20:35:09 DING DING DING 20:35:11 DING DING DING 20:35:14 DING 20:35:16 DING DING DING 20:35:17 DONG 20:35:18 DAMMIT WHERE IS THE WIKIPEDIA PAGE 20:35:22 elliott: My point is, both 32 and 64-bit systems. 20:35:35 DING DING DING 20:35:37 elliott: Gregor specified "32-bit system" as though it made a difference 20:35:38 http://en.wikipedia.org/wiki/64-bit#Specific_C-language_data_models 20:35:44 Deewiant: Solaris/SPARC64, Unicos 20:35:50 Bitchez 20:36:23 It's what you could call "real 64-bit for men". 20:36:24 Heh, Unicos is Cray, and has sixty-four bit shorts. How completely unexpected. 20:36:39 What is it with Cray and weird bit-widths? 20:36:59 Alright, Unicos. Solaris/SPARC64 doesn't count as "current" :-P 20:37:02 I seem to recall that at least some of the stuff that Cray makes is completely word-accessible, and they fake CHAR_BIT == 8 with those funky "word + offset" pointers. 20:37:22 But maybe that's just older stuff. 20:37:39 Deewiant: TBH I hate LLP64 and LP64 20:37:45 Because int is C's Standard Type(tm) 20:37:59 It really sucks to waste half of everything unless you write your program atypically, and that doesn't help with libraries 20:38:15 People who write typically write stupidly 20:38:28 Deewiant: Yep, but have you coded @ yet? 20:38:46 It don't exist bro 20:39:06 Deewiant: I was making a vague point about perfection vs. conventions and compatibility 20:39:51 There's not much of a compatibility argument for using int everywhere, I find 20:39:55 Maybe I just don't use enough C libraries 20:40:13 int is a lot less typing than unsigned long for loop indexes :-D 20:40:21 (Yeah yeah, typedef ulong) 20:40:23 hm today's iwc is unexpected. i was guessing they'd choose Me. 20:40:33 oerjan: how close to the end is it 20:40:50 about 24 strips iirc 20:40:55 elliott: size_t 20:41:15 Deewiant: And ssize_t for all the values? 20:41:18 Brillant 20:41:27 ptrdiff_t 20:41:41 ssize_t makes me vomit puppy blood. I mean, metaphorically. 20:41:49 But maybe also literally in a sufficiently animal-themed OS. 20:42:06 How often do you find yourself needing ptrdiff_t/ssize_t? :-P 20:42:14 ssize_t is a nasty hack 20:42:28 Deewiant: Every time I use any function returning ssize_t 20:42:28 http://www.irregularwebcomic.net/cgi-bin/poll.pl 20:42:32 I kill a few people when that happens 20:42:37 Good to get the spirit cleansed 20:42:43 29% of people don't wear any form of footwear at home. 20:42:46 Whaaaaaaaaaaaat 20:42:46 err, http://esolangs.org/wiki/DPEMOFKOXM 20:42:50 that isn't even spam 20:42:51 ais523: do not delete 20:42:56 do not modify 20:43:00 in fact, protect it, if you can 20:43:07 it isn't categorized correctly 20:43:13 hm today's iwc is unexpected. i was guessing they'd choose Me. <-- could be changed. Like "no, that won't do" 20:43:13 ais523: ah, but it is 20:43:23 ais523: your error is presuming that any categories could possibly fit it. 20:43:25 oerjan, anyway is it confirmed IWC is going to end? 20:43:28 apart from maybe [[Category:DPEMOFKOXM]] 20:43:32 elliott: I expect you to expand it into a full article about something ontopic for Esolang 20:43:44 -!- Sgeo has quit (Read error: Connection reset by peer). 20:43:45 ais523: No, I'm just going to invent an esolang called [[Talk:DPEMOFKOXM]] 20:43:51 It can be discussed at [[Talk talk:DPEMOFKOXM]] 20:44:00 I'm sure you will agree this policy is reasonable + sane 20:44:03 29% of people don't wear any form of footwear at home. <-- that is a lot 20:44:18 Phantom_Hoover: And five percent wear shoes. 20:45:40 Vorpal: no, but i'm still worried about it, with DMM always complaining about lack of time for stuff... 20:45:49 oerjan, ah... 20:46:03 maybe I'll binge iwc after its INEVITABLE END 20:46:07 he might very well decide to stop iwc when he hits his milestone 20:46:25 oerjan, true :( 20:46:33 Vorpal: I don't wear footwear at home, partly because most of the time I spend at home, I spend in bed 20:46:37 I do wear it everywhere else 20:46:43 I find it kind of hard to conceptualise the idea of IWC ending, and that was a very ais523 thought apparently because I almost put a - between sort and of instead of a space 20:46:50 It's like a constant force of nature 20:46:50 except in a few extreme circumstances like swimming baths 20:46:56 I find it relatively hard to imagine IWC starting 20:47:04 I've never actually read IWC 20:47:06 ais523: someone mentioned that on the forum, and DMM said he hoped that wasn't the reason for the poll result 20:47:10 ais523, I tend to use indoor-sandals in home during summer, and warmer slippers during winter. 20:47:26 Vorpal: ah, I see 20:47:35 (spring and autumn are undefined) 20:47:35 I find default house temperature warm enough as it is 20:48:37 socks are the only option; I don't know why I hold this rabid opinion but it's probably for some good tradition-related reason 20:48:38 ais523, I live in an old house. It can get quite cold inside even with both fireplaces in use. I mean, in an old house, when it is -27 C outside, it will get a bit colder inside too. 20:48:41 I trust Phantom_Hoover has the good taste to agree 20:48:58 Vorpal: -27 outside is a little rare in the UK 20:49:12 ais523, yeah 20:49:13 what does -27 feel like, i'm not sure i understand temperatures that low 20:49:13 elliott, I wear slippers, actually. 20:49:18 I'm one of those people who is known to open the window even in winter 20:49:23 elliott: -8 is about where I start feeling the cold 20:49:31 I have mentioned that my breath mists indoors in May, right? 20:49:32 ais523, it is not exactly common here either. But happened a few times during the last winter. 20:49:39 -15 is the coldest I've been out in in just a T-shirt, and got shouted at for that 20:49:44 and to be fair, in retrospect it was a mistake 20:49:48 I was once on top of a glacier in shorts. 20:49:55 Phantom_Hoover: How soft are they; also how many depictions of rabbits do they contain. (These are literally the only important aspects of slippers.) (Also yes I exaggerate my liking of rabbits to please the crowd, shut up.) 20:49:57 elliott, open a freezer. It is -18 C or so iirc? 20:50:02 then make it worse 20:50:07 Vorpal: in the UK? probably not that cold 20:50:07 elliott, stay inside for a while too 20:50:08 Vorpal: freezers are pretty mild as far as cold goes 20:50:10 elliott, they are soft but lack rabbits. 20:50:20 elliott: Gregor specified "32-bit system" as though it made a difference // it does make a difference in how the code is compiled, although the result happens to be the same 20:50:34 Phantom_Hoover: OK fine. (Some slippers are not soft and their prime purpose is to make you step on your own toes and go ow because they are not soft; these slippers are the enemy.) 20:50:39 elliott, only because you don't stay inside them. And when you open them the warm air from the room quickly mix with the cold air inside. 20:50:44 Gregor: I don't see why, all the types involved are the same 20:50:46 * oerjan is wearing woolen socks with cotton socks inside. and shorts, my body is weird... 20:50:57 Vorpal: Well, I guess I'll visit one of you guys' cold countries some time to find out 20:51:15 I can't imagine it's that bad though, because below a certain temperature my behaviour is constant 20:51:18 elliott, how do you even step on your feet. 20:51:19 elliott, well -27 C was like during a week in total during the last two winters. 20:51:26 Also most places have warmer summers than the UK. 20:51:27 ("Freak out and shake wildly and uncontrollably and gibber about death.") 20:51:30 (I'm not kidding.) 20:51:41 Phantom_Hoover: You step on your feet because the slippers that are not soft are also inevitably too big for some reason. 20:51:44 So if you're looking for consistent cold, you're better just moving here. 20:51:53 elliott, consider that you are merely a midget. 20:51:53 elliott, so yeah not exactly common, but it happens often enough that it isn't a freak event you will never encounter again in your lifetime 20:51:55 I think we can all agree that the ideal form of footwear is whatever the smurfs use. 20:52:02 Wait, do they even wear anything or are they just partly white. 20:52:16 smurf cartoons = easy to find.. 20:52:18 however 20:52:27 smurf comicbooks = very difficult to track down 20:52:35 Phantom_Hoover: Scotland might indeed be superior to England for temperature purposes for me 20:53:11 elliott, btw, I know someone who been in -50 C. He walked from a hotel to a house across the square. He said that his moustache hard frozen hard from the moist in the exhaling air when he reached the other side. 20:53:29 that's his fault for having a moustache 20:53:32 thankfully I never experienced that 20:53:36 Phantom_Hoover: i have now seen 2 episodes of james may's toy stories.. 20:53:38 ais523, it is annoyingly warm in the summer even then, though. 20:53:51 elliott, what is wrong with facial hair? 20:53:51 indeed 20:54:07 This may simply because I wear a jumper in all conditions, though. 20:54:09 Vorpal: Show me a moustache that is not terrible and I'll show you a moustache that doesn't exist. 20:54:13 Also, they will be the same moustache 20:54:17 elliott, handlebar. 20:54:29 elliott, moustache + beard of course. Grown together. 20:54:30 Phantom_Hoover: Your definition of terrible is inadequate. 20:54:47 -!- Sgeo has joined. 20:54:48 elliott, dude. 20:54:51 Ohwait. 20:54:53 Of course. 20:54:57 Moustache envy. 20:55:51 You can get a frozen-beard experience in something like -20 already. 20:55:54 Actually my face seems to want to develop a moustache before any other kind of hair at all, which is really annoying because I look like a prick and can't really do anything about it. 20:56:04 elliott, shave? 20:56:22 Vorpal: It's not a moustache, it's a hint that one day there might be a fledgling moustache attempting to claim this spot :P 20:56:39 I suppose I could, like, rip the top layer of skin off. 20:56:40 elliott, anyway that is common, I got moustache first too. Took a few years until I got a proper beard. 20:56:56 Yes OK but this one is a really annoying moustache you don't UNDERSTAND my face is ANTAGONISING ME. 20:57:07 Still, not enough to grow a full beard. But then, why would I want to look like RMS 20:57:12 (oh god) 20:57:25 elliott, I... think that's the natural pattern of beard growth. 20:57:35 Phantom_Hoover: Yes OK but MY MOUTH STRUCTURE IS ALL WRONG FOR IT OKAY 20:57:58 Phantom_Hoover, you will get that too one day, remember. 20:58:09 ONE DAY PH YOU WILL BE AS OLD AS ME, VORPAL, WISEST IN THE LAND 20:58:22 Vorpal, no I am actually a woman. 20:58:28 elliott, nah, I wouldn't say that. I'm probably only second or third ;) 20:58:44 Phantom_Hoover: This explains everything! I think! 20:58:49 Phantom_Hoover, ah, then it will take a couple of more years 20:58:58 err, grammar fail there 20:59:10 Vorpal has not seen a woman. 20:59:26 Also, speaking of beards! Here's a surprise visitor at the Interspeech 2011 opening ceremony: http://www.interspeech2011.org/photos/getimage+ip.php?id=809400295 20:59:27 Or maybe he's only seen prepu— no, I'm not going down that train of thought. 20:59:55 Phantom_Hoover, I'm talking about http://en.wikipedia.org/wiki/Bearded_lady 21:00:05 Vorpal has that article bookmarked. 21:00:10 elliott, no I googled it 21:00:19 Vorpal cannot love anything without a beard. 21:00:20 elliott, try it yourself, awesome website 21:00:21 Maybe Vorpal is a dorf. 21:00:22 He is also straight. 21:00:25 He fits the stupidity criterion. 21:00:27 Phantom_Hoover, XD 21:00:30 elliott, female dorfs don't have beards. 21:00:38 (Also http://www.interspeech2011.org/photos/gallery.php?gallery=Sunday_28_August_2011 has three other photos of him about 1/4th down the page.) 21:00:40 As such, his options are extremely limited. 21:00:48 Phantom_Hoover, depends on which fictional setting. 21:00:50 Phantom_Hoover: Goblins? 21:01:03 Phantom_Hoover, NOW YOU KNOW WHY I ALWAYS LIKED DISCWORLD ;) 21:01:30 did anyone link http://gerrycanavan.files.wordpress.com/2010/12/phmf5.jpeg yet 21:02:00 No, but I was considering it. 21:02:13 elliott, yes, what about Riker's beard WHAT NOW 21:02:32 Phantom_Hoover: what. 21:02:48 oerjan, nice 21:03:04 elliott, CHECKMATE 21:03:09 UNO 21:03:26 oerjan: I really don't think we need to supply Vorpal his fetish material. 21:03:32 This channel is rated PG OK. 21:03:36 elliott, XD 21:03:47 elliott, especially after his search for SCSI porn. 21:04:17 "scsi porn" gets upsettingly few results. 21:04:42 Phantom_Hoover: Goblins? 21:04:47 Do goblins even have beards? 21:04:56 elliott, you and Vorpal both, then? 21:04:59 I don't know, but they sure are ugly. 21:05:02 elliott, yes, what about Riker's beard WHAT NOW <-- that would suit you in a few years 21:05:03 SCSI must be one sexy interface standard. 21:05:23 Vorpal, no I will not be objectified by you I am a Strong Female Character. 21:05:26 Actually I literally just conceptualise goblins as Prequel-Gro-Upp, but I'm fine with that. 21:05:30 Except stupider. 21:05:41 elliott, especially after his search for SCSI porn. <-- don't forget google image search on PCMIA rule 34 21:05:46 -!- zachk has left. 21:05:47 (safe search off) 21:06:14 Phantom_Hoover, then it would suit elliott 21:06:32 rule 34 always struck me as cheating a bit 21:06:35 Were you looking for a bearded lady taking male and female plugs to a whole new level? 21:06:39 ais523, oh? 21:06:46 Phantom_Hoover, XD 21:06:49 maybe i should grow the longest beard ever grown 21:06:50 oerjan: I really don't think we need to supply Vorpal his fetish material. <-- sorry i didn't see that part as i was busy trying to find the picture, and then to find a version which wasn't an unreadable jpeg 21:06:50 35 seems a more accurate description of those sort of things 21:06:52 that would be fun 21:06:57 like if i tripped over my own beard 21:06:57 elliott, good luck 21:07:01 (it's a corollary/exception to rule 34, "if it doesn't exist it will be made") 21:07:29 elliott: growing a long beard is rather difficult and requires a lot of knowledge of beard mechanics 21:07:33 ais523: you just need to be biblical about it; rule thirty-four is more of a statement about many worlds 21:07:35 I never shave, but my beard naturally stays quite short 21:07:47 in that, over time, the world approximates a world in which porn of everything exists 21:07:50 precisely /because/ I don't shave, apparently 21:07:53 driven by rule thirty-five 21:08:00 elliott: indeed, that's why I think rule 34 is cheating/misleading 21:08:06 ais523, anyway as far as I can tell, there was *no* porn on PCMIA when I checked. Thankfully. 21:08:07 ais523: welcome to religion 21:08:09 ais523: beard mechanics sounds like a good thing to get a phd in 21:08:15 http://www.sikhiwiki.org/index.php/Longest_beard_in_the_world 21:08:18 how can this be the longest?? wtf 21:08:20 cartoons have lied to me 21:08:23 Vorpal: perhaps because you can't spell PCMCIA? 21:08:27 i thought there were relaly people whose beard stretches out in front of them 21:08:31 : / 21:08:38 elliott, the beard *is* longer than him. 21:08:43 Phantom_Hoover: Yes but come on. 21:08:43 ais523, err I didn't typo it then. I got pictures of PCMCIA cards so :P 21:08:45 I mean enough to trip on. 21:08:46 just no pron 21:08:48 porn* 21:08:50 -!- kwertii has joined. 21:08:51 gah that typo 21:09:08 http://farm5.static.flickr.com/4002/4488411025_b5aa0b0874.jpg 21:09:17 apparently this is what google thinks constituets PCMCIA porn 21:09:18 elliott, Phantom_Hoover: the reason why I checked this was that I was trying to find something that had no porn made on it. :P 21:09:19 it might even be right 21:09:29 "I have a feeling of divine happiness and I am thankful that God has chosen me for the gift of the longest beard," said Singh, 42. The measurement was presided over by Surrey-Newton MLA Harry S Bains, Surrey RCMP Sgt. Baltej S Dhillon and lawyer Sukhjinder S Grewal. 21:09:35 that's the best blessing i've ever heard of 21:09:43 elliott, what length was it? 21:09:54 Referring to Sikhs as 'Singh': the stupidest? 21:09:57 seven feet or w/e 21:10:08 It's like referring to Dutch people as 'van'. 21:10:11 "The longest beard ever was grown by Hans Langseth of Norway, whose whiskers stretched an incredible 5.33 m (17' 6) when measured upon his death in Kensett, Iowa, in 1927. The beard was presented to the Smithsonian Institution, Washington, DC, in 1967." 21:10:13 2.1 meters. Impressive 21:10:17 measured upon his death 21:10:17 -!- Labbekak has joined. 21:10:17 awesome 21:10:19 ah 21:10:25 oerjan: props 21:10:27 hi Labbekak 21:10:28 Such as noted Dutch musician, Van Morrison. 21:10:32 goodday 21:10:32 we're talking about the longest beards. 21:10:37 (If you don't know who he is you are fortunate.) 21:10:38 elliott, and 5.33 m, wow 21:10:41 Phantom_Hoover: "what are lambdas" --van 21:10:48 help what is lambda 21:10:57 ais523: scary, that's what 21:10:58 ais523, the cosmological constant. 21:11:12 lol i got to this irc through ais523 esolang page 21:11:18 ah 21:11:23 Labbekak, a bit off topic at times 21:11:25 and hes online 21:11:25 Labbekak: that's one way to get there 21:11:37 * oerjan thinks Labbekak sounds norwegian. 21:11:38 going via the community portal is the usual way, but I'm glad my userpage is doing something useful 21:11:45 are you here to discuss esolangs or report spam? 21:11:47 Labbekak, like... a lot of the time. Though when esolangs come up that is generally discussed. 21:11:49 its dutch :p 21:11:51 discuss spam and report esolangs 21:11:52 ah 21:11:58 Labbekak, ah, van. 21:12:02 hmm, that's actually more fitting of what we do here 21:12:15 heh, it actually is as well 21:12:17 at least, i like to consider myself a spam connoisseur 21:12:24 and there are certainly plenty of esolangs to whine about 21:12:27 new esolangs typically get reported as being incredibly bad 21:12:28 s/esolangs/bad esolangs/ 21:12:33 :p was just interested in what was going on here 21:12:37 why have all the people who make good esolangs stopped? 21:12:47 ais523, well go implement feather! 21:12:47 ais523: because of all the people who make bad ones? 21:12:48 ;) 21:12:54 Because all the good esolangs have been made. 21:12:58 elliott: I'm still waiting on a spec for My Name Is Johny 21:13:04 so what are the ideas behind feather 21:13:08 ais523: I'm working on it, I got distracted by Rezzo, which is similar 21:13:10 don't ask 21:13:11 Labbekak, you don't want to know. 21:13:14 /please/ don't ask 21:13:16 Labbekak: try reading the esowiki article, then never ask again 21:13:18 it's inhumane 21:13:23 It's like referring to Dutch people as 'van'. <-- well at least singh is a noun (meaning lion iirc) 21:13:25 Phantom_Hoover, that raises an interesting question: While the set of possible esolangs is clearly infinite, is the set of good esolangs finite or infinite? 21:13:35 ais523: honestly, I don't think production has slowed down, it's just that we get so much rubbish on the wiki at a higher rate than good esolangs have ever been generated 21:13:42 could be 21:13:49 ais523: catseye still churns out multiple languages a year, after all, and most of them are interesting 21:13:49 Vorpal, given that it's a subjective thing, I'm going to go for "shut up Vorpal". 21:14:05 Labbekak: (http://esolangs.org/wiki/Feather) 21:14:07 come back cpressey we mmiss you 21:14:08 the random sample experiment I did a year back showed that the majority of esolangs are not completely awful, still, if you take all esolangs ever written 21:14:24 oerjan: props <-- wat 21:14:34 oerjan: norwegian guy had the longest beard ever, five metres 21:15:46 Labbekak, Feather is a language that allows you to retroactively modify the language itself. 21:16:31 now i have to find out wat retroactive means 21:16:35 Vorpal: you can start to get to Feather by following a sequence of perfectly logical steps, then start to realise the implications and stop thinking about it in a pre-emptive attempt to stop your head exploding 21:16:44 Labbekak: making a change to something that happened in the past 21:16:58 sort-of like time travel 21:16:59 ah right 21:17:07 ais523, ah, it is a bit like that 4D puzzle game I read about. But worse? 21:17:19 comparing a four dimensional puzzle to feather? 21:17:21 that's insulting 21:17:30 ais523, anyway just use IOT to implement it. 21:17:30 -!- sllide has quit (Ping timeout: 245 seconds). 21:17:36 elliott: not really, /all/ comparisons involving Feather are inaccurate 21:17:38 I think, at least 21:17:40 i don't think iot provides enough 21:17:45 so it's no more insulting than any other comparison 21:17:47 it just provides standard-issue time travel 21:17:48 I think call/cc provides enough 21:17:55 well, I mean 21:17:56 the problem is proving it 21:17:57 for easy implementation 21:18:02 that's insulting <-- true, but there are few other things to measure it against. Nothing as bad as Feather for a start. 21:18:54 -!- Sgeo has quit (Quit: Leaving). 21:19:03 ais523, would it be possible to make a nerfed version of feather, then based on what you learnt from that make a better one and so on? 21:19:09 learned* 21:19:22 -!- Sgeo has joined. 21:19:26 Vorpal: that's how I'm going about it 21:19:40 the thing is, as it's Feather, you can start with the first nerfed version and then retroactively change it into a full version 21:20:22 -!- monqy has joined. 21:20:24 ais523, well yeah.... I was thinking about maybe a trial one that is more limited than that, to work out concepts and so on. 21:20:39 > map ord "DPEMOFKOXM" 21:20:40 [68,80,69,77,79,70,75,79,88,77] 21:20:48 > ord "AB" 21:20:48 Couldn't match expected type `GHC.Types.Char' 21:20:48 against inferred type... 21:20:51 :< 21:20:57 Vorpal: either it has the inherent concepts that make it Feather, or it doesn't 21:20:58 > ord "A" 21:20:58 Couldn't match expected type `GHC.Types.Char' 21:20:59 against inferred type... 21:21:04 > ord 'A' 21:21:04 65 21:21:17 ord 'b' 21:21:20 if it doesn't, then none of the problems involved in retroactive modification come up, so it won't help 21:21:25 > chr 65 21:21:25 'A' 21:21:29 if it /does/, then it's a protoFeather 21:21:31 ais523, ah hm 21:21:45 > ord 'c' 21:21:46 99 21:21:47 ais523, so there are no hard concepts that could be tested on their own as such? 21:21:47 i just thought it looked vaguely vaguely russian, so i wanted to check the characters :P 21:21:55 ais523, I thought the tricky bit was stuff like infinite stacks of interpreters. 21:22:00 > map (chr . (+) 5 . ord) "Huggles for everybody! Even the elves!" 21:22:02 "Mzllqjx%ktw%j{jw~gti~&%J{js%ymj%jq{jx&" 21:22:11 lambdabot, DIE YO UBASATRD 21:22:28 > "oke" 21:22:46 > map (chr . (-) 5 . ord) "Mzllqjx%ktw%j{jw~gti~&%J{js%ymj%jq{jx&" 21:22:47 Phantom_Hoover: it's not really infinite, you just pick a finite number for the size of your stack, and if it's too small, you retroactively make it bigger 21:22:47 "*Exception: Prelude.chr: bad argument: (-72) 21:23:01 > map (chr . (flip (-)) 5 . ord) "Mzllqjx%ktw%j{jw~gti~&%J{js%ymj%jq{jx&" 21:23:03 "Huggles for everybody! Even the elves!" 21:23:04 ais523, yes, I surmised as much. 21:23:15 Lymee: just use (-5) 21:23:21 rather than (flip (-)) 5 21:23:31 Okey 21:23:45 thats Haskell right? 21:23:48 Labbekak: you had a space before the > 21:23:55 and yes 21:23:55 :t (flip (-)) 21:23:56 forall a. (Num a) => a -> a -> a 21:23:59 :t (-5) 21:23:59 forall a. (Num a) => a 21:24:02 hehehehehehe 21:24:10 ah it is the binary - 21:24:12 of course 21:24:12 Welp, I guess I need to make an esolang. 21:24:16 :t subtract 5 21:24:16 forall t. (Num t) => t -> t 21:24:22 It's been, what, five years since my last one? :P 21:24:23 Gregor, sure you do 21:24:50 Lymee: you want (subtract 5) 21:25:07 -!- kwertii has quit (Quit: kwertii). 21:25:14 Gregor you made glass right? 21:25:19 Labbekak: Yeah 21:25:31 cool :) 21:25:39 @pl \f -> map (chr . f . ord) 21:25:39 map . (chr .) . (. ord) 21:25:48 Phantom_Hoover: it's not really infinite, [...] <-- i had this small idea that you could maybe use something equivalent to haskell's repeat for the bottom level? 21:25:56 :t map . (chr .) . (. ord) 21:25:56 (Int -> Int) -> [Char] -> [Char] 21:26:12 Yay obfuscation 21:26:35 @pl map.(chr.).(.ord)$+5$"Test" 21:26:35 (line 1, column 18): 21:26:35 unexpected "+" or "$" 21:26:35 expecting variable, "(", ".", white space, operator or end of input 21:26:35 ambiguous use of a left associative operator 21:26:36 ais523: - is the one operator you cannot section properly. but there is subtract. 21:26:38 :( 21:26:49 @pl map.(chr.).(.ord)(+5)"Test" 21:26:49 map . (chr .) . (ord "Test" + 5) 21:26:53 Erm 21:26:56 > map.(chr.).(.ord)(+5)"Test" 21:26:57 Couldn't match expected type `f (a -> GHC.Types.Int)' 21:26:57 against infer... 21:26:58 oerjan: the bottom level is just a function that retroactively adds more levels 21:26:59 and oh, right 21:27:15 fun fact about ICA: if you're applying a function f to -5, the syntax is, logically, f((-5)) 21:27:23 but I added an abbreviation which allows just the one set of parens 21:27:36 (the unary minus operator is a circumfix (- ... )) 21:27:45 (the unary minus operator is a circumfix (- ... )) 21:27:46 don't 21:27:53 this has caused massive problems for haskell 21:28:10 make it part of the number literal syntax for all that's good and holy, with a separate negate operator :P 21:28:17 _? 21:28:19 elliott: it's not - 21:28:24 as in, -x 21:28:27 it's (-x) 21:28:29 with the parens 21:28:34 or at least have it bind tighter than application 21:28:35 this makes it very different from binary - 21:28:41 ais523: well that's hardly better but okay. 21:28:45 :P 21:28:46 What's wrong with _ for negative? 21:28:50 how it binds is irrelevant because there's only one way circumfix operators can bind 21:29:03 Sgeo: it looks silly, and it's not commonly used enough to be worth wasting a single character on 21:30:26 unary - would be entirely sane if haskell didn't have sections. 21:30:37 Sections? 21:30:40 negate for negation, -5 for negative 5, x - 5 for x minus five 21:30:51 Phantom_Hoover, (5*) etc 21:30:56 -!- FireFly has quit (Quit: FireFly). 21:30:57 > (+5) 2 21:30:57 7 21:31:03 Oh, right. 21:31:11 > (-5) 2 -- >:) 21:31:11 -5 21:31:31 nice one 21:31:39 I don't get it. 21:31:45 that's because of lambdabot's special Num (a -> b) instance 21:31:53 @pl (-5) 2 21:31:53 -5 2 21:31:55 unary - would be entirely sane if haskell didn't have sections. 21:32:06 f -9 should really do the obvious. 21:32:10 Lymee: don't trust @pl to get subtle syntax details right 21:32:15 =p 21:32:52 elliott: haskell does things inspired by math. f -9 is not common math notation. well admittedly neither is f 9. 21:33:02 qed :P 21:33:10 oerjan, does it? 21:33:17 The syntax isn't very mathsy, really. 21:33:32 math but better 21:33:39 monqy, no 21:33:41 you are bad 21:33:50 Phantom_Hoover: haskell's parsing of -x*y+z is exactly as math would do it 21:33:56 -!- Labbekak has quit (Quit: Page closed). 21:34:03 actually that's a bad example 21:34:11 oerjan, sure, but that's just operator precedence any binding and all that. 21:34:14 -x^y+z is better 21:34:24 y*-x+z 21:34:26 :t (^) 21:34:26 forall a b. (Num a, Integral b) => a -> b -> a 21:34:32 > (-(x^y+z)) 21:34:36 mueval-core: Time limit exceeded 21:34:51 :t \x y z -> (-(x^y+z)) 21:34:52 Um. 21:34:57 forall a b. (Num a, Integral b) => a -> b -> a -> a 21:35:07 Shouldn't that've just complained about unbound variables? 21:35:08 Lymee: that's another lambdabot feature, single letters are defined as that special Expr type 21:35:12 doesn't math have like a ton of notations 21:35:13 ...... 21:35:14 Phantom_Hoover: ^ 21:35:17 Ah. 21:35:20 :t x 21:35:21 Expr 21:35:41 > (-(xx^yy+zz)) 21:35:41 Not in scope: `xx'Not in scope: `yy'Not in scope: `zz' 21:35:53 and x^y loops because y isn't a number which is reduced to 0 by the usual recursive definition of ^ 21:35:57 (i guess) 21:35:59 e.g. f 9 seems a lot more like lambda calculus notation than math notation, anyway 21:36:34 or would normal math notation not make a mess of parentheses when used in haskell 21:36:34 > map(reverse)([[1,2,3],[4,5,6]]) 21:36:36 [[3,2,1],[6,5,4]] 21:36:37 I can't believe it's not C! 21:36:44 i can....... 21:36:48 * Lymee runs 21:36:57 Jokes. :V 21:37:03 bad ones 21:37:12 it doesn't look anything like c 21:37:17 more like what python 21:37:31 -!- elliott has quit (Ping timeout: 245 seconds). 21:37:33 What Python? August 2011. 21:37:37 does javascript have that notation for lists it's been so long since I've used it 21:37:48 !python map(reverse,[[1,2,3],[4,5,6]]) 21:37:49 Traceback (most recent call last): 21:37:49 Today: we compare the Burmese to the Boa. 21:39:09 monqy: ok haskell's notation isn't exactly the same as math, but basic arithmetic is the same wrt precedence, and that's not a feature that i think is frequently redefined in math subfields 21:39:28 (the _meaning_ of the operators is redefined, but not their syntax) 21:39:57 because rings and groups are used everywhere 21:40:04 Indeed, the meaning is usually redefined to fit the syntax. 21:40:23 Well, I guess it's more general semantics, but still. 21:46:22 -!- BeholdMyGlory has quit (Remote host closed the connection). 21:47:06 -!- kwertii has joined. 21:51:34 * Phantom_Hoover → sleep 21:51:35 -!- Phantom_Hoover has quit (Quit: Leaving). 22:01:53 How much pain would I cause myself trying to implement something that's only partially continuation-passing style 22:03:20 -!- GreaseMonkey has joined. 22:05:09 i am thinking haskell could at least keep it sane if you use the ContT monad transformer to track the CPS-using parts 22:05:24 (just an idea) 22:05:54 or just Cont if the non-CPS-using parts are pure 22:22:52 I didn't mean implementing in Haskell 22:23:08 Although maybe if I studied the Cont monad, that would give me inspiration? 22:23:31 But I am implementing this in LSL 22:23:40 hehehe 22:25:11 no i'm meaning that if you used haskell, it might actually provide enough type security not to go mad while doing this >:P 22:29:18 trying to raise a continuation when there are intervening non-CPS parts would be disastrous, i think 22:29:36 lots of programs use continuations without being in full CPS 22:29:46 full CPS is pretty rare in human-written code 22:36:34 -!- ais523 has quit (Remote host closed the connection). 22:39:50 Well, I'm planning on compiling to CPS or CPS-like 22:40:00 But I want to avoid using continuations unless necessary 22:40:16 For efficiency purposes. But it might complicate implementation 22:41:12 On the other hand, full CPS would mean not needing to worry about ... what's the term for the stack of functions? call stack? 22:41:21 well afaiu you need to use CPS whenever you call something which might raise a continuation outside of it. 22:42:33 yeah, you turn your call stack into a chain of closures in the heap, probably 22:42:47 that's a known implementation technique, and it does simplify things 22:42:59 but you pay for tracking that info one way or another :) 22:43:09 it makes it easy to provide an actual call/cc primitive, for one 22:43:48 I'm still a little uncertain how I'm going to handle memory 22:46:39 -!- CakeProphet has joined. 23:03:18 -!- cheater has quit (Ping timeout: 264 seconds). 23:07:03 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 23:26:48 -!- sllide has joined. 23:30:04 -!- cheater has joined. 23:46:34 -!- sllide has quit (Read error: Connection reset by peer). 23:56:21 -!- copumpkin has joined. 23:58:22 -!- CakeProphet has quit (Ping timeout: 240 seconds).