←2012-02-25 2012-02-26 2012-02-27→ ↑2012 ↑all
00:00:05 <oerjan> elliott: you _could_ use build >:)
00:00:09 <oerjan> i assume.
00:00:14 <elliott> anyway, traversing the whole thing is probably the best because of the 90% case
00:00:22 <elliott> i.e. exactly one element satisfying the predicate
00:00:42 <oerjan> anyway you don't need to construct the list, either.
00:01:12 <ais523> oerjan: oh, I see
00:01:53 <ais523> elliott: traverse it; remember the first element that passes you encounter with a 1/1 chance, then if you encounter a second, replace it with that with a 1/2 chance, then a 1/3 chance, etc
00:01:59 <elliott> I know
00:02:03 <ais523> the last element you end up with will be random and equally weighted
00:02:11 <oerjan> ais523: yep that's what i was thinking
00:02:25 <elliott> but I suspect that performs badly for the common case
00:02:31 -!- tzxn3 has quit (Ping timeout: 240 seconds).
00:02:46 <elliott> the thing is that if i pre-traverse, I can avoid doing /any/ RNG generations
00:02:56 <elliott> I don't think GHC's RNG is fast
00:03:17 <oerjan> elliott: except for the final index, i assume...
00:03:28 <ais523> elliott: that ends up well for the common case
00:03:30 <elliott> oerjan: huh?
00:03:39 <elliott> I meant I can avoid it if there's only one satisfier
00:03:41 <ais523> if there's only one element, you don't RNG call, you only need an RNG call for the second
00:03:56 <elliott> hmm, OK
00:04:00 <ais523> it's the rare case where it's bad, as it uses O(n that satisfy predicate - 1) RNG calls
00:05:10 <oerjan> now i'm wondering however, if there's a way to do this only selecting n random bits where 2^(n-1) < length of list <= 2^n
00:06:49 <oerjan> or i mean, using just a single RNG number in some way, changing its interpretation as you discover more elements
00:07:10 <oerjan> oh hm
00:07:35 <oerjan> there's that usual problem with 1/3 not being k/2^i
00:08:33 <oerjan> wait, this is essentially a fisher-yates shuffle, except you're only keeping the first element.
00:10:05 <elliott> something smells kind of fisher-yatesy to me
00:10:49 <ais523> I was surprised that Fisher-Yates even had a name, it was so obvious to me
00:10:57 <ais523> (I implemented it myself before I'd ever heard of the algo having a name)
00:11:25 <elliott> oerjan: come on that was even worse than yours
00:11:47 <tswett> Well, the reflexive property of equality has a name, too.
00:12:55 <elliott> is it the reflexive property of equality
00:14:09 <elliott> tswett: How did you manage to write ///? Did an angel beam down and give you the spec?
00:14:32 <tswett> elliott: maybe; I don't remember.
00:14:54 <elliott> tswett: SUSPICIOUS.
00:15:17 <tswett> I mean, I didn't do it on purpose.
00:15:36 <tswett> What's the cutting edge in /// technology, anyway?
00:16:28 <ais523> tswett: ask oerjan, he invented most of it
00:16:30 <elliott> http://esolangs.org/wiki////#Simpler_counter, http://esolangs.org/wiki////#Bitwise_Cyclic_Tag_interpreter
00:16:46 <ais523> hmm, I think oerjan is the main esolang programmer here, in that he does more ground-breaking actual programming in esolangs than anyone else
00:16:48 <elliott> http://esolangs.org/wiki/Truth-machine#itflabtijtslwi is the latest program. ok not strictly ///
00:17:01 <elliott> there's also http://esolangs.org/wiki/Itflabtijtslwi#Examples
00:17:09 <oerjan> yay!
00:17:19 <elliott> tswett: but probably http://oerjan.nvg.org/esoteric/slashes/bct.sss and its generator http://oerjan.nvg.org/esoteric/slashes/BCT.hs are the most impressive things
00:17:20 <oerjan> also the deadfish one
00:17:45 <elliott> oerjan: i linked that
00:17:54 <elliott> oh, I didn't
00:17:54 <elliott> http://esolangs.org/wiki/Deadfish#itflabtijtslwi
00:18:02 * elliott thinks BCT is more impressiv
00:18:03 <elliott> e
00:19:16 <ais523> oh, I thought you meant there was a truth-machine in BCT
00:19:22 <ais523> that surely can't be very hard
00:19:41 <oerjan> well yes. although the difficult parts are different, with the BCT the hard thing was encoding things as /\, for Deadfish i had to get arithmetic including printing
00:21:04 <oerjan> it's much easier to do /// with more characters, most of the programs in that style are made "by hand"
00:21:14 <elliott> ais523: BCT doesn't have input
00:21:18 <elliott> so that would be exceptionally hard
00:21:21 <oerjan> (modulo a little vim substitution)
00:21:30 <ais523> elliott: languages that don't take input get to do it by having the input encoded into the program
00:21:41 <ais523> so you'd want two programs, one with a 0 and the other with a 1, that were otherwise the same
00:21:41 <elliott> oerjan: you know, we would have cnosidered BCT impressive even without the \/ thing :P
00:21:48 <oerjan> heh :P
00:21:53 <ais523> and did truth-machine behaviour
00:22:03 <ais523> elliott: the \/ thing makes loops easier to write, I think
00:22:10 <elliott> i don't think so
00:22:26 <tswett> You know, I would slightly expect a quoted program in /// to contain no slashes of either direction at all.
00:23:25 <oerjan> ais523: um no. the \/ loops are precisely like the other loops, except for choice of encoding of tokens
00:23:41 <ais523> ah, OK
00:24:02 <oerjan> only the first looping program was essentially different
00:25:00 <elliott> oerjan: btw have you thought about the asymptotic complexity of ///?
00:25:05 <elliott> e.g., how much slower it is at doing things
00:25:08 <oerjan> using a different and much less efficient method for removing the quoting.
00:25:24 <elliott> since obviously it isn't equally "fast" as brainfuck or the like
00:25:37 <Phantom_Hoover> I... the Python standard lib includes Turtle?
00:26:00 <elliott> so does logo's!
00:26:09 <oerjan> elliott: hm. well i have thought that a more efficient implementation could avoid checking substrings that obviously don't match and such things, and so get better asymptotic behavior
00:26:42 <Phantom_Hoover> Looking up Logo just gives me Sburb flashbacks,
00:26:54 <oerjan> like we've discussed before, just not restarting at the beginning of the string every time would help
00:28:11 <tswett> What if you assume that every substitution takes time 1? Can it do things as fast as...
00:28:18 <tswett> What *is* our standard for speed, anyway?
00:29:30 <elliott> oerjan: right, I meant more in terms of how slower it is at common tasks
00:29:33 <tswett> An FSA with a couple of registers, each capable of storing arbitrary integers, attached to some RAM indexed by the integers, with each storage spot capable of storing... an integer, maybe with a size restriction?
00:29:38 <elliott> like arithmetic, and sorting
00:29:54 <elliott> tswett: our standard is something like a machine equipped with arbitrary indexing into an array of bignums
00:29:55 <elliott> and while loops
00:30:01 <elliott> as far as complexities go
00:30:07 <elliott> arithmetic is O(1), etc.
00:30:29 <Phantom_Hoover> [[Hindley-Milner]] is the worst-written thing ever.
00:30:53 <tswett> But isn't that machine capable of doing arithmetic in constant time?
00:30:53 <oerjan> Phantom_Hoover: on our wiki, or on wikipedia?
00:30:59 <Phantom_Hoover> WP.
00:31:04 <tswett> (Yes, because you said so.)
00:31:15 <elliott> tswett: yes
00:31:22 <elliott> tswett: which applies to standard complexity analysis too
00:31:29 <oerjan> it's on my watchlist, it's been rewritten a lot lately but it may be getting worse rather than better
00:31:32 <elliott> Phantom_Hoover: looks ok to me
00:31:50 <Phantom_Hoover> Look at the 'syntax' secion.
00:31:52 <tswett> I guess the word "arithmetic" can apply to two different properties, though.
00:31:53 <Phantom_Hoover> *section
00:32:01 <Phantom_Hoover> "Perhaps a bit irritating, type variables are monotypes, either."
00:32:01 <oerjan> actually it was split from type inference, sort of
00:32:29 <tswett> Er, problems.
00:32:50 <tswett> Either the one where you have the numbers in your registers already, or the one where you're just given individual digits and have to calculate with those.
00:33:00 <tswett> Then again, that still allows you to do multiplication in linear time...
00:33:23 <Phantom_Hoover> "^ Luis Damas (1985): Type Assignment in Programming Languages. PhD thesis, University of Edinburg (CST-33-85)
00:33:23 <Phantom_Hoover> "
00:33:31 <Phantom_Hoover> I want to stab whoever wrote that citation.
00:34:02 <elliott> edinburg
00:34:03 <oerjan> stab them with a bagpipe
00:34:16 <oerjan> hm
00:34:20 <oerjan> *your bagpipes
00:35:13 <itidus21> what you may not realize is that all the mistakes are intentional and the whole article is a troll
00:35:14 <tswett> Phantom_Hoover: wherefore?
00:35:15 <elliott> hey, did we ever decide on a slogan for the wiki?
00:35:30 <oerjan> solider than thou
00:35:41 -!- Jafet1 has joined.
00:35:52 <Phantom_Hoover> tswett, because there is no University of Edinburg.
00:36:09 <elliott> there is, it's in helsinki
00:36:14 <Phantom_Hoover> There's a University of Edinburgh, which Luis Damas went to.
00:36:24 <tswett> Hm, yeah, that's true. Plenty of Edinburgs, but no Edinburg has a University of it.
00:36:26 <itidus21> which "a" Luis Damas went to
00:36:39 <Phantom_Hoover> http://en.wikipedia.org/wiki/Edinburg,_Texas
00:36:49 <Phantom_Hoover> The fact that this is a place sears at my very soul.
00:37:14 <oerjan> hm i think if you assume a substitution takes time 1, then /// should be able to do as well as a minsky machine.
00:37:16 <Phantom_Hoover> I can just hear Americans saying "Edinburg" over and over and over and over
00:38:31 <itidus21> I know I couldn't understand that article no matter who it was written by.
00:38:31 -!- Jafet has quit (Ping timeout: 240 seconds).
00:38:57 <elliott> oerjan: so, not very well then :P
00:39:13 <oerjan> because you don't need your unary registers to do more than a constant number of substitutions per step
00:39:35 <oerjan> oh hm wait
00:39:51 <elliott> but an actual minsky machine interpreter would be slower, right?
00:39:55 <oerjan> actually i think you can also get a TM
00:39:57 <elliott> because it needs its own main loop around every operation
00:40:42 <oerjan> elliott: you can have data that isn't copied through the main loop mechanicm
00:40:43 <oerjan> *s
00:41:01 <elliott> hmm, ok
00:41:05 <oerjan> this is one of the advantages of not coding solely with \/, btw
00:41:40 <elliott> as if we needed more :P
00:42:43 <tswett> Can everything that can be written using \, /, and two other symbols be written using \, /, and one other symbol, with only a constant penalty?
00:42:50 <oerjan> but anyway, i think it can be asymptotically comparable to a TM as well.
00:43:27 <oerjan> tswett: hm that's not obvious, i think
00:43:41 <oerjan> reducing anything else down to 2 is though
00:44:03 <elliott> oerjan: btw my intention is that a loop replacement would _not_ be considered O(1)
00:44:07 <elliott> since you can infiniloop with only a single one
00:44:24 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
00:44:45 <elliott> or did you mean a single replacement?
00:44:49 <elliott> in which case it's still not O(1) :P
00:44:54 <oerjan> elliott: fine, i think it's still asymptotically equal
00:44:56 <elliott> ok
00:45:02 <elliott> that's surprising
00:45:06 <elliott> although I guess TMs are still pretty slow
00:45:15 <oerjan> elliott: er i wrote that before your last line
00:45:23 -!- derdon has quit (Remote host closed the connection).
00:45:36 <elliott> ah
00:45:58 <oerjan> i went with tswett's suggestion that substitutions should be considered O(1), although only single replacements are needed for what i thought of
00:49:43 <elliott> Terminus - a terminal emulator with support for inline HTML (github.com)
00:49:45 <elliott> that's a new one
00:50:30 <oerjan> tswett: with only one symbol there's no way to separate symbols without using \ or /, which means you cannot do copying of non-unary data without the quoting mechanism
00:50:48 -!- Frooxius_ has joined.
00:51:03 <oerjan> so my hunch is it is less efficient
00:54:38 -!- Frooxius has quit (Ping timeout: 260 seconds).
00:54:45 -!- Frooxius_ has changed nick to Frooxius.
00:55:05 -!- ais523 has quit (Remote host closed the connection).
01:07:12 -!- cheater_ has joined.
01:09:07 -!- Vorpal has quit (Ping timeout: 276 seconds).
01:10:51 -!- cheater__ has quit (Ping timeout: 260 seconds).
01:13:57 <elliott> oerjan: you! quick! site tagline!
01:16:22 <oerjan> elliott: "solider than thou", i said!
01:16:52 <elliott> oerjan: you did?
01:16:57 <oerjan> yes.
01:17:24 <oerjan> or wrote, to be precise.
01:17:45 <elliott> ok. your suggestion will be considered.
01:17:48 -!- augur has quit (Remote host closed the connection).
01:17:51 <elliott> your suggestion has been considered and rejected.
01:18:10 <oerjan> at least the bureaucracy worked quickly.
01:18:59 <elliott> helps that there's only one member
01:19:14 <oerjan> "Computational madness"
01:21:13 <oerjan> "It's computation Jim, but not as we know it"
01:22:03 <oerjan> "Asymptotic incomprehensibility"
01:22:21 -!- azaq23 has quit (Remote host closed the connection).
01:22:47 <elliott> before i asked oerjan, i was sure "Weirder Than You" was the worst possible subtitle
01:23:00 <oerjan> ;_;
01:24:02 <oerjan> "Is bubble-wrap Turing-complete?"
01:26:52 <itidus21> "Tea for Thue"
01:29:17 <oerjan> i sense the customer has not specified the task properly.
01:30:00 <itidus21> It really helps a lot when someone just blurts out an incomprehensible soundbyte like <treederwright> enjoy your matrix of solidarity
01:30:26 <oerjan> but he's already rejected that theme :(
01:31:43 <itidus21> (i know i probably didn't quote it perfectly) well looking at that sentence.. part of the fun is he said "enjoy your" ... implying some antagonism
01:32:34 <oerjan> "Trying to out-weird the other kind of esoteric"
01:32:51 <oerjan> elliott: ^
01:33:36 -!- kwertii has joined.
01:33:40 <itidus21> it's essentially an esolang meme.
01:33:58 <oerjan> and we all know how much elliott loves memes.
01:34:20 <oerjan> "Esoteric languages for fun and profit. Wait, scratch profit."
01:34:21 <itidus21> im not suggesting we use it.. im just analyzing it
01:36:13 <itidus21> `quote treeder
01:36:21 <HackEgo> 296) <treederwright> enjoy being locked in your matrix of solidity
01:36:49 <itidus21> wow... such powerful words
01:37:20 <oerjan> they're obviously from the other kind of esoteric.
01:38:46 <itidus21> `pastelogs [<]treederwright>
01:39:17 <oerjan> i doubt there's more, e didn't stay long.
01:39:19 <HackEgo> No output.
01:39:31 <itidus21> `pastelogs [t]reederwright
01:39:42 <Friendship> <itidus21> It really helps a lot when someone just blurts out an incomprehensible soundbyte
01:39:51 <Friendship> It wasn't really "blurted out"
01:39:53 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.3800
01:39:59 <Friendship> He was spouting nonsense the whole time he was here.
01:40:13 <itidus21> ahh,,, now i see
01:42:12 <elliott> back
01:42:40 <elliott> <oerjan> "Trying to out-weird the other kind of esoteric"
01:42:40 <elliott> <oerjan> elliott: ^
01:42:43 <elliott> oerjan: guess what
01:43:01 <oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
01:43:03 <elliott> Friendship: It was his parting shot, though.
01:43:18 * oerjan cannot take the suspense
01:43:45 <Friendship> Yup
01:44:19 <Friendship> I'm still kinda uncomfortable with being the representative of friendship.
01:44:21 <ion> oerjan: http://uncyclopedia.wikia.com/wiki/AAAAAAAAA!
01:44:28 <oerjan> elliott: there were others above, including one by itidus21
01:44:42 <elliott> oerjan: they all sucked
01:44:42 <itidus21> oerjan: that wasn't serious
01:44:56 <itidus21> hehe
01:44:56 <elliott> ion: http://esolangs.org/wiki/AAAAAAAAAAAAAA!!!!
01:45:02 <oerjan> elliott: except that one, right?
01:45:50 <ion> “If you type a line beginning with @ it can be a comment and contains anything, but it must be removed from the program before the interpreter can use it.” So… just like Haskell?
01:46:30 <oerjan> elliott: i have no idea why the suck, which means i have no idea what you could possibly consider not sucking. also i get a deja-vu.
01:46:33 <oerjan> *y
01:49:29 <oerjan> also, i think the deja vu would be complete if you rageparted just about now.
01:51:09 <oerjan> "Programming made wrong"
01:51:43 <oerjan> "And you thought PHP was bad"
01:52:55 <oerjan> "Distilling the suck from success"
01:53:25 <elliott> oerjan: they're all trying too hard :p
01:53:53 <oerjan> "Because, meh."
01:54:18 <Friendship> PHP is awesome: http://www.reddit.com/r/lolphp/comments/ps6x5/0x0_wat/
01:54:42 <oerjan> elliott: dammit why do you ask me if you want something without a joke in it
01:54:43 <monqy> out of everything I've heard my favorites are still "Irrelevant" and "hello"
01:55:04 <oerjan> "Your site for esoteric programming languages"
01:55:05 <itidus21> "We spent hours deliberating on a slogan"
01:55:19 <monqy> that one (itidus') is good too
01:55:32 <itidus21> it's self deprecating
01:55:41 <elliott> i am still a fan of "stop using cologne blue"
01:55:49 <monqy> ooh also good
01:55:58 <oerjan> what is cologne blue
01:56:07 <elliott> the only skin the subtitle shows up in
01:56:18 <oerjan> aha
01:57:20 <oerjan> i must have out-aged today's sense of humor. :(
01:57:33 <itidus21> We should call it Java.
01:57:39 <itidus21> "Java."
01:57:55 <elliott> oerjan: :D
01:58:46 <oerjan> "Insert tagline here"
01:58:48 <itidus21> "T.A.G.L.I.N.E."
01:59:03 <elliott> it's technically the "subtitle" btw
01:59:19 <oerjan> "<sub>title</sub>"
02:00:08 <oerjan> "There is more than one way to skin a wiki"
02:00:32 <elliott> oh it's called the "tagline" too
02:00:44 <oerjan> "Tag! You're it!"
02:01:03 <monqy> ""
02:01:05 <elliott> oh hm
02:01:10 <elliott> http://esolangs.org/wiki/MediaWiki:Tagline, http://esolangs.org/wiki/MediaWiki:Sitesubtitle
02:01:26 <monqy> does tagline show up anywhere
02:02:01 <itidus21> "DNS is Not a Subtitle"
02:02:28 <oerjan> itidus21: upvoted for trut
02:02:30 <oerjan> h
02:03:43 <itidus21> "Second only to Haskell.org as a MediaWiki Wiki"
02:03:46 <monqy> "esolang"
02:03:51 <oerjan> "Why are you reading this anyway?"
02:03:58 <monqy> "cologne blue"
02:04:12 <monqy> "yes"
02:04:17 <oerjan> "moscow red"
02:04:50 <oerjan> "Open on Fridays"
02:05:16 <itidus21> "Rumour has it this is a wiki about esolangs"
02:05:30 <elliott> "diabolical"
02:05:41 <oerjan> "This subtitle was an unfortunate victim of a bikeshed accident"
02:05:42 <monqy> "looking ghostly"
02:05:51 <oerjan> *the
02:06:14 <monqy> "no"
02:06:26 <itidus21> "The Revenge"
02:06:26 <Friendship> "Surprisingly often covered in tree sap."
02:06:29 <oerjan> "The site with the brick Phantom"
02:07:09 <oerjan> "Let it Be"
02:07:18 <elliott> "Wikipedia"
02:07:23 <Friendship> +
02:07:25 <Friendship> *+1
02:07:39 <itidus21> hahahahha
02:08:27 <Friendship> Esoteric "Two Sheds" Programming Wiki
02:08:29 <oerjan> "Sponsored by RIAA"
02:09:04 <elliott> "ok"
02:09:16 <oerjan> "The"
02:09:53 <elliott> +1
02:09:59 <itidus21> "Build your own private cloud with microsoft technology"
02:10:41 <oerjan> "The wiki with its head in the cloud"
02:11:13 <Friendship> My vote is still for "Wikipedia"
02:11:18 <Friendship> Or "Surprisingly often covered in tree sap"
02:11:34 <itidus21> "Wikipedia" is very good
02:12:28 <oerjan> "Wikipedia, the"
02:13:47 <oerjan> "Trying too hard"
02:14:45 <monqy> "oh"
02:15:32 <itidus21> "A new translation of War and Peace"
02:16:20 <oerjan> "43"
02:16:40 <elliott> wait, detroit is in michigan?
02:16:42 -!- augur has joined.
02:16:54 <elliott> new proposal "Wait, Detroit is in Michigan?"
02:17:01 <oerjan> "Detroit is in Miching dammit
02:17:46 <oerjan> "Michigan's largest website"
02:18:23 <ion> largest web shite
02:18:41 <elliott> diabolical
02:19:01 <itidus21> "Wikipedia is surprisingly often covered in tree sap."
02:20:05 <oerjan> `quote tree sap
02:20:08 <HackEgo> No output.
02:20:15 <oerjan> shocking
02:20:22 <oerjan> `pastlog tree sap
02:20:36 <HackEgo> 2011-01-07.txt:17:09:34: <elliott> j-invariant: then pick up the little tree saplings
02:20:50 <oerjan> `pastlog covered in tree sap
02:21:01 <HackEgo> No output.
02:21:04 <oerjan> shocking
02:22:24 <oerjan> why do i still have the feeling i've seen it before?
02:22:45 <oerjan> "Why do i still have the feeling i've seen it before?"
02:22:54 <oerjan> "Shocking"
02:23:03 <itidus21> `pastelogs [t]ree sap
02:23:12 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.10941
02:23:32 <Friendship> oerjan: Because you're surprisingly often covered in tree sap?
02:23:48 <itidus21> `pastelogs [t]ree
02:23:53 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.28614
02:24:20 <elliott> monqy: what do you think of "Wait, Detroit is in Michigan?"
02:24:22 <oerjan> `pastelogs surprisingly often covered
02:24:30 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.4902
02:24:39 <monqy> elliott: I can't tell if I like it or not
02:24:48 <itidus21> `pastelogs surprisingly
02:24:48 <monqy> it's very mysterious like that.
02:24:55 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.7250
02:26:31 <itidus21> `pastelogs unsurprisingly
02:26:38 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.15661
02:29:48 <itidus21> 2010-04-29.txt:14:50:44: <fizzie> Misread an Amazon title recommendation as "Purely Fictional Data Structures". (Unsurprisingly, they were functional instead. I might have bought a book on fictional ones.)
02:31:45 <oerjan> Black and blue trees
02:31:51 <elliott> fizzie doesn't own Okasaki. :(
02:40:52 <tswett> elliott: you're trying to come up with a slogan for Esolang?
02:42:04 <tswett> I suggest "Ellenikö va ruoda he milapaa sty evästäkkä puola märri to."
02:45:49 <oerjan> google translate was surprisingly useless on that one
02:46:01 <itidus21> indeed
02:46:49 <itidus21> as is bing translator
02:48:00 <ion> It’s Finnish for “Ellen spouted her fecal matter all over the kitchen floor.”
02:48:25 <itidus21> i am not in any way perturbed when an online translator fails :-D
02:48:57 <itidus21> its more the successful feeling when a human beats a non-human at chess
02:49:16 <Sgeo> That seems easy to arrange.
02:49:22 <Sgeo> Have the computer make moves randomly.
02:49:28 <Sgeo> Better yet, play against a rock.
02:49:43 <ion> It’s even more impressive when three fifths of a human beats a non-human at chess.
02:51:17 -!- zzo38 has joined.
02:51:18 <itidus21> impressiveness increases as fraction of human approaches zero
02:52:04 <zzo38> Using the limited RAM available in NES, how much of Thue-Morse sequence could be generated at runtime by using a short program?
03:03:55 -!- amca_ has joined.
03:04:47 -!- TeruFSX has quit (Read error: Connection reset by peer).
03:05:30 -!- TeruFSX has joined.
03:08:22 <elliott> <ion> It’s Finnish for “Ellen spouted her fecal matter all over the kitchen floor.”
03:08:24 <elliott> Seriously?
03:09:07 <itidus21> that's not bad for a tagline
03:10:28 <ion> elliott: Nope, it’s either autogenerated words using a Markov chain from a Finnish dictionary or some other language that looks like autogenerated words using a Markov chain from a Finnish dictionary.
03:11:12 <elliott> You disappointed me.
03:11:36 <elliott> Kaksikymmentäneljätuntiaikakausitämänhetkinen will be the day you die.
03:12:23 <itidus21> Ellenik vuotanut hnen ulosteessa koko keittin lattialle.
03:14:55 <zzo38> I have heard that the policy of credit card companies that they are not allowed to discount to customers who pay cash. But I have another idea: After pay, the store owner offers 50% refund if the customer wins at a game against the store owner. And the store owner will ensure to win if paid by credit card, and lost (ensuring customer win) if paid by cash.
03:15:44 <zzo38> What would happen if they did that?
03:16:33 <Sgeo> elliott, update
03:21:34 -!- amca_ has changed nick to amca.
03:24:35 <augur> are there no finns awake? :(
03:24:54 <zzo38> What timezone are you in???
03:25:09 <augur> est but i was here earlier!
03:25:26 <augur> besides, i know there are latenight finns
03:25:35 <ion> I’m about to go asleep.
03:26:27 <elliott> augur: All you use this place for anymore is asking for Finns, right?
03:26:43 <augur> well, finnish IS an esoteric language
03:26:43 <augur> so
03:26:46 <augur> i figure its on topic
03:27:12 <augur> ion: are you a native finnish speaker
03:27:29 <ion> I promised elliott i wouldn’t say this, but yes.
03:27:48 <augur> :X
03:27:52 <elliott> No, native Finnish speaker is OK.
03:27:58 <elliott> Native resident of Finland is not.
03:28:05 <augur> ion: i just need a yes/no judgement from you
03:28:09 <elliott> Actually it doesn't matter whether you're native or not.
03:28:18 <ion> I judge: no.
03:28:22 <augur> ion: :P
03:28:25 <oerjan> finland, finland, finland
03:28:26 <augur> ion: on some finnish!
03:28:35 <elliott> I bet augur doesn't have to do it kaksikymmentäneljätuntiaikakausitämänhetkinen. He could wait until tomorrow.
03:29:46 <augur> i can wait tho yes
03:29:52 <augur> ion: ill annoy you tomorrow. what time would be good?
03:30:00 <elliott> That was a joke.
03:30:05 <ion> Feel free to ask now.
03:30:18 * elliott wonders if augur thinks "kaksikymmentäneljätuntiaikakausitämänhetkinen" is an actual word.
03:30:22 <augur> ill have to construct an example sentence and i dont want to stop you from going to sleep
03:30:47 <ion> I’ve been “about to go to sleep” for about five hours. :-P
03:31:08 <ion> I’ll probably actually do it now, but i’m in no real hurry.
03:33:45 <augur> ion: /msg
03:36:06 -!- Jafet1 has changed nick to Jafet.
03:41:06 <elliott> Oh, we don't even get to see the sentence?
03:43:21 <augur> elliott: i have to annoy him and figure out what sentences are even useful to answer the question :P
03:43:27 <augur> so i dont want to spam the channel with that shit
03:55:00 -!- oerjan has quit (Quit: Good night).
03:57:38 <kmc> http://heterodoxy.cc/meowdocs/pseudo/pseudosynth.pdf "A Simple and Convenient Synthesis of Pseudoephedrine From N-Methylamphetamine"
03:58:04 <Jafet> For science
03:59:04 <kmc> "A quick search of several neighborhoods of the United States revealed that while pseudoephedrine is difficult to obtain, N-methylamphetamine can be procured at almost any time on short notice and in quantities sufficient for synthesis of useful amounts of the desired material."
03:59:13 <kmc> "We expect that the simultaneous trends of restricting pseudoephedrine sales while N-methylamphetamine becomes less expensive and of higher purity will make the methods presented here increasingly attractive."
04:24:33 <augur> kmc: lolol
04:33:03 <ion> kmc: heh
04:33:09 <zzo38> In Haskell channel, someone said I made the same problem of including Int in Prelude. I agree and I realized I made a few other mistakes too, in Ibtlfmm example, so I will write the specification fix these problems. There shall be no Int, but there can be Int8, Int16, Int32, Int64, and Integer. Do you think so?
04:33:35 <zzo38> (And the corresponding unsigned types: Nat8, Nat16, Nat32, Nat64, and Natural.)
04:34:08 <ion> I’m not sure IntN, NatN belong to the Prelude either. In a separately imported module, sure.
04:36:25 <zzo38> Well, maybe... but I think Int doesn't belong anywhere; you have to use Int32 or whatever to specify the number of bits explicitly. But tell me your reasoning anyways; I would like to understand better what you mean any why you think it should be.
04:36:49 <elliott> (It's already like that, in Data.Int.)
04:38:18 <ion> I’m just thinking the IntN, NatN types are used quite infrequently.
04:38:48 <kmc> (set! lambda ((lambda (base-lambda) (vau (param . body) env (eval env (list base-lambda param (cons begin body))))) lambda))
04:38:49 <kmc> whee
04:39:26 <zzo38> elliott: I understand; what I mean is if it is make entirely new programming language. (One idea, of the name Nat8 instead of Word8 for unsigned 8-bit number)
04:40:17 <ion> kmc: What am i looking at?
04:40:25 -!- itidus21 has quit (Ping timeout: 252 seconds).
04:42:07 <kmc> a computer
04:42:23 <kmc> do i win a prize for guessing
04:42:55 <kmc> the code is for a language i implemented, which is similar to Kernel
04:43:03 <kmc> an fexpr / vau calculus sort of language
04:43:41 <kmc> it redefines lambda to support the syntactic sugar (lambda (x) a b c ...) => (lambda (x) (begin a b c ...))
04:43:44 * elliott doesn't like the explicit env thing much.
04:44:24 <kmc> it holds the old lambda in a closure constructed by (what else?) lambda
04:44:52 <kmc> elliott, do you have a proposed alternative?
04:45:13 <kmc> i saw someone on LtU talking about pairing the arguments with the dynamic environment
04:45:19 <kmc> to form a 'quasipromise'
04:45:55 <elliott> no proposed alternative :P ... but one idea I had would be to carry environments with values
04:46:00 <elliott> so "body" there would know its environment
04:46:06 <elliott> so (eval body) would eval it in the right environment
04:46:09 <elliott> maybe that's what you mean by that
04:46:12 <kmc> yeah, that's what i was talking about
04:46:25 <kmc> that makes it somewhat like a promise
04:46:38 <kmc> except you can still crack it open and get at the juicy cons pairs inside
04:47:11 <elliott> right
04:47:28 <elliott> if you supported explicitly transforming environments of these values you could still do anaphoric stuff
04:49:32 <kmc> yeah
04:49:45 <kmc> in my interpreter i totally expose the fact that environments are lists of alists
04:49:59 <kmc> which means there is no end of hax
04:50:14 <kmc> i don't know what a sane abstract-data interface to first class environments would look like
04:50:31 <kmc> this way is convenient because you can define 'define' and 'set!' in library code
04:50:49 <elliott> all you need is mutation, access, and enumeration, really
04:52:53 <kmc> all you need is love
04:53:11 <kmc> maybe i should rename "vau" to "love"
04:54:04 <ion> Vau is Finnish for “wow”.
04:58:35 -!- amca has quit (Quit: Farewell).
05:22:04 <zzo38> Is this good so far? So far I have only the main headings. http://zzo38computer.cjb.net/Ibtlfmm/ibtlfmm_specification.tex Perhaps I might change the name; if you can suggest better name ("Ibtlfmm" is not necessarily best name to call it)
06:23:03 -!- cswords has quit (Ping timeout: 260 seconds).
06:25:28 -!- cswords has joined.
06:33:18 <elliott> @tell ais523 yep, Yandex is violating /robots.txt: 87.250.255.243 - - [26/Feb/2012:06:30:56 +0000] "GET /w/index.php?title=Auo&action=edit&section=6 HTTP/1.1" 302 161 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"
06:33:18 <lambdabot> Consider it noted.
06:34:27 <Sgeo> o.O
06:34:48 <Sgeo> Some sort of third-rate search engine?
06:35:28 <elliott> Third-rate = the top in Russia, or so they cliam.
06:35:29 <elliott> *claim
06:35:45 <Sgeo> Its documentation makes it seem like it's supposed to
06:35:46 <elliott> http://en.wikipedia.org/wiki/Yandex
06:35:48 <elliott> WP agrees.
06:35:57 <Sgeo> http://help.yandex.com/search/?id=1112639
06:36:06 <Sgeo> Is /w/ valid like that in robots.txt?
06:36:25 <elliott> What do you mean "valid"?
06:36:28 <elliott> It's a path on the server.
06:36:55 <elliott> (Googlebot, bing etc. all respect the robots.txt I have just fine.)
06:37:08 <elliott> *bingbot, I think.
06:43:13 <zzo38> You can just block Yandex at the router configuration if you need to
06:43:23 <zzo38> Or the server configuration
06:43:26 <zzo38> Whichever works
06:48:20 <elliott> I know.
06:48:43 <Sgeo> But then we'd be hurting all our Russian fans
06:49:16 <elliott> We'd only be hurting the ones using that search engine.
06:49:24 <zzo38> Use some server configuration to block Yandex from /w/ only, then.
06:50:29 <elliott> It's not just that they violate robots.txt; they also spider far faster than they should.
06:50:43 -!- MoALTz_ has quit (Ping timeout: 245 seconds).
06:53:59 -!- calamari has joined.
06:57:25 -!- MoALTz has joined.
07:45:04 -!- kwertii has quit (Quit: bye).
07:48:06 -!- Ngevd has joined.
07:49:17 <elliott> hi Ngevd
07:49:27 <Ngevd> Hello!
07:49:43 <elliott> . Function application .ab... ...(λx.a(bx))
07:49:46 <elliott> i do not quite understand this
07:49:51 <elliott> is it really meant to turn those two into a lambda?
07:49:56 <Ngevd> Neither do I
07:49:57 <elliott> surely it should be something like
07:50:09 <elliott> (\x.y)b --> y[x:=b]
07:50:10 <elliott> or such
07:50:11 <Ngevd> I made the esolang when I was pretty much asleep
07:50:13 <elliott> using substitution syntax or something
07:50:22 <elliott> also $ is kinda vague
07:50:40 <Ngevd> $3. turns into ...
07:50:56 <Ngevd> $6~ turns into ~~~~~~
07:51:11 <Ngevd> I'm not sure if I need .
07:51:17 <Ngevd> I think I'll remove it
07:51:33 -!- monqy_ has joined.
07:51:54 -!- monqy has quit (Quit: Reconnecting).
07:52:03 <elliott> oh, "a lots of b"
07:52:05 <elliott> not "a lot of b"
07:52:27 <Ngevd> If you can clarify that better, go ahead
07:54:00 <elliott> yeah, I'm tweaking the article now
07:56:28 <elliott> Ngevd: you have ! doing two things
07:56:39 <Ngevd> Aaah!
07:57:13 <Ngevd> Make the first one ?
07:57:50 <elliott> That's not ASCII
07:57:51 <elliott> FWIW
07:59:05 <elliott> Ngevd: If you're fixing it, refresh
07:59:07 <elliott> (I edited the page)
08:01:01 <elliott> Ngevd: You did not fix the example.
08:01:37 <Ngevd> Refresh
08:06:16 <elliott> Yay.
08:06:39 <elliott> You forgot to add it to your userpage. :
08:06:39 <elliott> :p
08:06:53 <Ngevd> I'll do that later
08:08:33 <Ngevd> Have I just made the esolang with the longest sequence of vowels in a non-onomatpic title?
08:10:03 <Ngevd> (By the way, later has already happened)
08:12:56 <elliott> Ngevd: Dude.
08:12:59 <elliott> You misspelled it on the language list.
08:13:26 <Ngevd> Blerg
08:13:28 <elliott> Either that, or in the page title.
08:14:13 <Ngevd> No, the language list
08:14:21 <Ngevd> It's based on the word "queue"
08:14:34 <Ngevd> And I misplaced it
08:17:38 -!- monqy_ has changed nick to monqy.
08:18:21 <elliott> hi monqy
08:19:34 * Sgeo wonders if he should be upset that http://common-lisp.net/project/cl-monad-macros/monad-macros.htm uses macros like with-monad rather than having bind dispatch on the type. I'm not even sure how return could be made to work generically, so
08:24:44 <elliott> You can't do return in a dynamically-typed language.
08:25:43 <Sgeo> Pass it the class?
08:25:58 -!- calamari has quit (Quit: Leaving).
08:26:24 <elliott> Yes, that's what you have to do to make it not the same and work.
08:27:44 * Sgeo is somewhat glad of monad macros in CL
08:28:13 <Sgeo> And that was weird grammar
08:28:13 -!- Ngevd has quit (Quit: Goodbye).
08:32:40 <Sgeo> "So that's it: A monad is a code-transformer. Like a macro. It's simple to remember: Both names even start with a 'M'."
08:32:51 <Sgeo> Blood is coming out of my gums for having read that
08:33:01 <Sgeo> http://kawagner.blogspot.com/2007/02/understanding-monads-for-real.html
08:33:37 <Sgeo> Oh, e says that they're not really macros
08:33:40 <Sgeo> >.>
08:33:50 <Sgeo> "I put the '' around the word 'macro' because Monads are not really macros by definition. So if you want to be picky you can find reasons why this picture isn't totally correct. But does this really matter? Or isn't it more important to have a useful way of thinking if we deal with an abstraction?"
08:34:54 <elliott> thank you for telling us about this article.
08:35:20 <elliott> http://kawagner.blogspot.com/2007/02/why-monads-are-evil.html
08:35:45 <elliott> Slava Pestov said...
08:35:46 <elliott> If Lisp and Haskell are too powerful for you and your fellow web developers, stick to Java. But don't waste your time posting ignorant tripe.
08:35:46 <elliott> 6:14 AM
08:42:20 <Sgeo> elliott, read Karsten's thoughts on undo/redo
08:43:36 <Sgeo> Although I am a bit disturbed at what wellsed said
08:44:01 <Sgeo> "It is an undecideable problem to determine a Haskell program's
08:44:01 <Sgeo> evaluation order without actually evaluating the program. This is a consequence of the
08:44:01 <Sgeo> non-strict semantics of Haskell; Haskell is the "standard non-strict, pure, functional language".
08:44:01 <Sgeo> The decision for Haskell to be pure forces the necessity of its non-strict nature."
08:44:31 <Sgeo> Pretty sure that non-strictness forces (or at least strongly indicates) purity, rather than purity strongly suggesting non-strictness.
08:45:16 <elliott> Sgeo: I'm not going to read anything this idiot said.
08:45:37 <elliott> @tell oerjan wow, your BCT interpreter was 2009?
08:45:37 <lambdabot> Consider it noted.
08:45:51 <Madoka-Kaname> Isn't the difference that...
08:46:14 <Madoka-Kaname> Closures operate at runtime, and, operates on live values.
08:46:23 <Madoka-Kaname> Macros operate at compiletime, and operate on code.
08:46:24 <Madoka-Kaname> That...
08:46:29 <Madoka-Kaname> Is a major difference, don't you think?
08:46:41 <Madoka-Kaname> Esp in languages with state
08:48:49 <elliott> The two concepts are pretty much unrelated, except that monads are a useful abstraction when defining EDSLs, and macros can also be used for EDSLs.
08:50:37 <Madoka-Kaname> Also
08:50:44 <Madoka-Kaname> Why are they pointing out monads
08:50:49 <Madoka-Kaname> Instead of higher order functions again??
08:51:16 <shachaf> The great thing about ignorant tripe is that everyone feels like they can contribute to a discussion of it.
08:51:28 <shachaf> When the best contribution would be a lack of discussion, of course.
08:51:37 <Madoka-Kaname> =p
08:52:00 <shachaf> Esp in languages with state sometimes refers to the stack pointer.
08:53:49 -!- Ngevd has joined.
08:53:53 <Ngevd> Hello
08:56:05 -!- cheater_ has quit (Ping timeout: 248 seconds).
08:57:06 -!- MoALTz_ has joined.
08:57:13 -!- cheater_ has joined.
08:59:51 -!- MoALTz has quit (Ping timeout: 260 seconds).
09:00:22 <elliott> shachaf: Did you know that Haskell is just mathematical notation?
09:00:55 <Ngevd> Aaaaaargh
09:01:24 <Ngevd> I'm playing VVVVVV, just did the whole Doing Things The Hard Way, but landed on the wrong side of the block,...
09:07:39 <Madoka-Kaname> VVVVVV was fun.
09:07:40 <Madoka-Kaname> Though
09:07:55 <Madoka-Kaname> I went "you want me to do WHAT" when it started off an escort mission...
09:13:06 <zzo38> Do you want to define a monad using join instead of bind?
09:13:23 <Ngevd> Who, me?
09:14:38 <zzo38> Ngevd: Whoever answer, so, that can include you
09:14:59 <Ngevd> It could be useful to have the option and oh god I'm Ngevd
09:15:01 -!- Ngevd has changed nick to Taneb.
09:17:05 <elliott> Have you considered just changing your name in your client.
09:17:16 <Taneb> I've tried to. Twice
09:17:35 -!- Phantom_Hoover has joined.
09:17:38 <elliott> Try harder.
09:17:38 <zzo38> Did you read the documentation for your client?
09:17:51 <Taneb> It doesn't seem to stick
09:17:54 <Taneb> Hang on
09:17:56 -!- Taneb has quit (Quit: Goodbye).
09:18:11 -!- Taneb has joined.
09:19:21 <Sgeo> zzo38, if it's easier for you to imagine join rather than bind, write oin
09:19:56 -!- Ngevd has joined.
09:19:57 -!- Taneb has quit (Read error: Connection reset by peer).
09:20:10 <zzo38> To me, bind is just a shortcut to combine join with fmap
09:20:42 -!- Ngevd has changed nick to Taneb.
09:20:46 <Taneb> That seemed to work
09:21:08 <elliott> Except it didn't
09:21:11 <elliott> What on earth did you do
09:21:14 <elliott> Oh, I see
09:22:03 <zzo38> At least in the IRC client I use, nothing persists across sessions; you have to put your configuration in a init script.
09:24:20 <Sgeo> There's a new I Wanna Be The Guy
09:24:22 <Sgeo> Apparently
09:24:35 <zzo38> (The same thing applies in Astrolog; you have to put all your configurations in the init script)
09:25:46 <zzo38> Either that or enter the commands manually every time; both PHIRC and Astrolog do that.
09:47:04 <Taneb> ...There are two Helgi the Sharps on Wikipedia
10:04:07 -!- cheater_ has quit (Ping timeout: 265 seconds).
10:11:28 -!- zzo38 has quit (Remote host closed the connection).
10:39:04 -!- graue has joined.
10:39:17 <mRoman> Damn :(
10:39:26 <graue> hello #esoteric people
10:39:42 <mRoman> I'm failing to implement a program that compares two values in Beam :(
10:39:52 <graue> :(
10:40:11 <Phantom_Hoover> hello graue
10:40:22 <mRoman> >-! is a loop that sets the beam to zero
10:40:30 <mRoman> but that only works, if beam % 3 is zero.
10:40:31 <mRoman> :(
10:41:13 <mRoman> >-! is executed >-!->-!->-! and so on
10:41:47 <graue> i don't know Beam yet
10:41:48 <mRoman> The idea would have been to decrement both values each at a time
10:41:55 <mRoman> and stop if one value reached zero
10:41:58 -!- Ngevd has joined.
10:42:01 -!- cheater has joined.
10:42:03 <mRoman> which would make that value the smaller of both.
10:42:10 <graue> sounds good
10:42:27 <mRoman> Except I have not figured out yet how to decrement 1 :)
10:43:18 <mRoman> hm
10:43:25 -!- Taneb has quit (Read error: Connection reset by peer).
10:43:30 -!- MoALTz_ has quit (Quit: brb).
10:43:49 -!- MoALTz has joined.
10:45:13 <mRoman> I can subtract even numbers with >--!
10:45:31 <mRoman> which is >--!-->--!-->--!
10:46:24 <mRoman> beam -= 2; while(beam != 0) { beam -= 4 }; would that bee.
10:46:29 <mRoman> -e
10:47:03 <mRoman> obviously that won't terminate if beam is not even.
10:48:58 <mRoman> >-! zeroes the beam, if the beam is odd.
10:49:08 <mRoman> >--! zeroes the beam, if the beam is even.
10:50:02 <mRoman> But I may be able to figure out how to test, if it is even or not.
10:50:23 <graue> that'd do it!
10:50:41 <mRoman> Yes.
10:50:52 <mRoman> But I guess I need loops for that too.
10:51:02 <mRoman> and so fall in to the same problem.
10:51:18 <mRoman> actually it is the same problem.
10:51:44 <graue> did you invent this language?
10:52:18 <mRoman> Somehow yes ;)
10:52:57 <graue> maybe it's impossible to do what you're trying to do
10:53:34 <mRoman> I think the language has all the necessary stuff to be turing complete
10:53:41 <mRoman> which means, that it must be possible somehow :D
10:53:59 <mRoman> I can test for 0 or 1
10:54:05 <mRoman> so that must be enough.
10:54:14 <elliott> well, turing-completeness doesn't necessarily mean you can accomplish some operation with the primitive data types in the language
10:54:33 <elliott> e.g., there may be a BF interpreter you can write that never needs to decrement 1, or such
10:54:48 <graue> yeah, i was thinking the same
10:55:11 <graue> or perhaps since you can test for 0 or 1, use only those values in your program, and represent larger numbers as bitstrings
10:57:24 <mRoman> At least I can test for (beam != 0) and (beam != 1)
10:57:38 <mRoman> instructions n and u
10:57:52 <graue> well if you only use 0 and 1, then (beam != 0) <=> (beam == 1), and vice versa
10:59:46 <mRoman> v v <
10:59:47 <mRoman> >+>-u:
11:00:03 <mRoman> That loop always zeroes the beam if the store is zero
11:00:40 <mRoman> Looking good so far.
11:06:39 <graue> hey guys!
11:06:50 <graue> i resurrected my weird 7 year old string-rewriting language, Sortle
11:07:12 <graue> and successfully wrote a fibonacci program in it after many hours
11:07:19 <graue> http://esoteric.voxelperfect.net/files/sortle/src/fib.sort check it out
11:08:34 <graue> the C interpreter was hopelessly buggy, so most of those hours were spent writing a new interpreter: http://esoteric.voxelperfect.net/files/sortle/impl/sortle.pl
11:08:52 <elliott> that fibonacci looks cool
11:09:31 <graue> thanks
11:09:40 <elliott> hmm, reminds me of Muriel, at least if that quoting /is/ the quiney-program-rewriting it looks like
11:10:06 <mRoman> \o/.
11:10:07 <myndzi> |
11:10:07 <myndzi> /`\
11:10:30 <graue> /me refreshes memory on how Muriel works
11:11:20 <elliott> looks like cpressey wrote a perl interpreter for sortle too, heh: http://catseye.tc/projects/muriel/script/muriel.pl
11:11:37 <graue> you mean for muriel?
11:11:49 <graue> muriel looks cool, but sortle is different
11:12:00 <elliott> oh, oops
11:12:03 <graue> the code doesn't get modified
11:12:04 <elliott> i completely forgot which article i was reading :)
11:12:12 -!- tzxn3 has joined.
11:12:26 <Ngevd> Programming in Fueue is haaaard
11:12:30 <mRoman> http://esolangs.org/wiki/Beam#Even_.2F_Odd
11:12:34 <mRoman> Got it.
11:12:39 <mRoman> Tests even/odd.
11:12:44 <graue> congrats mRoman!
11:12:54 <Ngevd> ^celebrate
11:12:54 <fungot> \o| |o| |o/ \m/ \m/ |o/ \o/ \o| \m/ \m/ \o| |o| |o/
11:12:55 <myndzi> | | | `\o/´ | | | `\o/´ | | |
11:12:56 <myndzi> /'\ |\ |\ | /'\ /< /< | /< /| /´\
11:12:56 <myndzi> /`\ (_|¯`¯|_)
11:12:56 <myndzi> (_| |_)
11:13:34 <mRoman> Trick is to subtract two
11:13:40 <mRoman> and test for !=0 or !=1
11:14:12 <Ngevd> So, if it's not 1 or 0, then subtract 2 again?
11:14:24 <mRoman> Yes.
11:14:35 <Ngevd> Cool
11:17:47 <graue> elliott: so, in sortle, the only form of data storage is in expression names
11:18:21 <graue> and it can only be accessed by trying to match other expression names (not the expression being evaluated) with a regex
11:18:37 <elliott> ah, I see
11:18:56 <elliott> where does the sort part come into it?
11:19:07 <graue> execution order
11:19:27 <graue> at each step, the expressions are sorted by name
11:19:40 <graue> whichever one comes after the one that just got evaluated, is evaluated next
11:19:45 <graue> (wrapping)
11:20:00 <elliott> ah
11:20:05 <elliott> reminds me of Forte, in the execution order
11:21:07 <graue> i've only glanced at that one
11:21:08 <mRoman> Esolangs are so baaaad for code reuse
11:21:26 <graue> though the wiki tells me that sortle is a year older, so i win :P
11:21:29 <mRoman> Even if you were able to write a program to test for even/odd
11:21:34 <mRoman> you can't just use that code :(
11:21:53 <mRoman> because it assumes starting position and since it's 2d
11:22:03 <mRoman> it also assumes position in the code
11:22:18 <mRoman> *starting values
11:22:24 <elliott> code reuse is terrible. you might build something useful
11:22:52 <graue> code reuse is for people who aren't cool enough to program esolangs
11:23:02 <mRoman> Ok. I get that.
11:23:21 <mRoman> I prefer to say that people who can't program esolangs, can't program ;)
11:23:30 <graue> damn right
11:23:41 <mRoman> *who can't program (in) esolangs
11:23:45 <elliott> it also reminds me of Forte in that you "relabel" statements to get them to execute in the order that you want
11:23:53 <elliott> (except in Forte you do it by changing the numbers themselves :))
11:24:08 -!- cswords_ has joined.
11:24:27 <graue> whoa, cool
11:24:28 -!- cswords has quit (Ping timeout: 272 seconds).
11:24:42 <graue> so forte is "probably turing-complete", according to esowiki
11:25:02 <elliott> well, you can do loops, it's just confusing
11:25:10 <graue> i'm very interested in whether sortle is turing-complete; i think that assuming unbounded length strings, it might be
11:25:24 <elliott> probably BCT would be feasible; if it can be implemented in /// it can be implemented in anything
11:25:28 <mRoman> Loop until 99 becomes 2
11:25:31 <mRoman> that even looks insane.
11:25:39 <elliott> but I suspect nobody has the patience :P
11:25:44 <graue> so i should implement BCT in sortle?
11:26:13 <elliott> if it's any good at simple string manipulation, it's an easy way to prove TCness, yeah
11:26:16 <mRoman> oh
11:26:20 <mRoman> that is just pseudocode
11:26:35 <elliott> mRoman: the actual language is worse, you have to reassign numbers to even loop
11:26:46 <graue> forte looks awesome, actually
11:26:55 <graue> i dig the idea of using numbers themselves as variables
11:26:57 <elliott> graue: the one problem I could see for TCness is if regular expressions don't end up being powerful enough... but I don't think you'd need that to do BCT
11:27:24 <mRoman> A language like the pseudocode would have been cool.
11:27:52 <graue> my so-called regular expressions in Sortle are pretty weak
11:28:34 <elliott> yeah, they're more like super globs :P
11:29:01 <mRoman> Sortle paper.
11:29:04 <elliott> it definitely looks like it has enough freedom to be TC
11:29:23 * elliott is reluctant to call anything sub-TC after his series of terrible Underload predictions
11:29:48 <graue> so i guess the idea is to create bct.sort that somewhere in it has "replace this with BCT program string" and "replace this with BCT initial data string", and you replace them and then run it
11:29:55 <mRoman> graue: Did you invent Sortle for some sort of school project?
11:29:56 <elliott> (every time oerjan tried to figure out whether another subset of Underload is TC I would insist it can't possibly be, but he proved me wrong every time :))
11:30:00 <mRoman> or university project whatever.
11:30:09 <graue> and if the BCT program halts, the sortle program halts and produces the final data string as output
11:30:22 <elliott> you don't need the output at all, really
11:30:24 <graue> mRoman: no, i just decided to create a .pdf of the spec for no reason
11:30:29 <elliott> though it helps as a constructive proof that the computation is actually happening :)
11:30:54 <graue> well, in sortle, any program that halts has already thrown away all data EXCEPT what is output
11:31:03 <graue> so, yes, it would help :)
11:31:07 <elliott> right, but the only thing you need to maintain is whether it halts or not
11:31:14 <elliott> by definition of TCness
11:31:14 <mRoman> So you're Mike Feeney?
11:31:40 <graue> i used my middle name in that paper for some reason
11:31:42 <graue> so i guess so, yeah
11:33:09 <Ngevd> I know Luigi is TC, but I can't get anyone to believe me
11:33:23 <graue> elliott: if i can make it halt, it's not a lot more work to save the data string, really
11:33:23 -!- Ngevd has changed nick to Taneb.
11:33:28 <elliott> right
11:33:31 <graue> Ngevd: write a proof
11:33:39 <graue> or implement BCT in it
11:33:40 <graue> or something
11:33:52 <Taneb> A proof is simple but tedious
11:34:04 <monqy> tedious?
11:34:05 <Taneb> I can implement arbitrary Turing machines in it
11:34:38 <elliott> you haven't proved you can, only done so for specific instances :P
11:34:52 <elliott> just translate a UTM?
11:35:06 <graue> is the proof of BCT's turing-completeness not online anymore?
11:35:18 <graue> wiki mentions a link under External resources, but there isn't one
11:35:25 <Taneb> It's sooo tedious
11:35:44 <monqy> would automating it be tedious too
11:35:47 <elliott> graue: http://esolangs.org/wiki/Bitwise_Cyclic_Tag#BCT_emulation_of_cyclic_tag_systems?
11:36:03 <graue> oh, gotcha
11:37:11 <graue> heh, which relies on a 1961 proof by Marvin Minsky
11:37:17 <graue> waaaay before my time
11:39:39 <monqy> taneb do fueue programs ever terminate
11:39:53 <monqy> oh, H
11:39:56 <monqy> is that the only way
11:40:06 <Taneb> Yes
11:40:38 <Taneb> Or maybe...
11:40:44 <monqy> and the empty program is cat?
11:40:45 <Taneb> I think an empty program terminates
11:40:45 <mRoman> Is there a list of esofilearchive mirrors?
11:40:52 <monqy> you only think that?
11:40:55 <graue> oh, i just noticed BCT halts iff the data string becomes empty
11:41:07 <graue> so there's literally no data to preserve other than "the program halts"
11:41:21 <elliott> mRoman: I'm not sure there are any
11:41:27 <graue> mRoman: i don't think there are any public mirrors right now, feel free to set one up
11:41:34 <mRoman> ok
11:42:25 * Sgeo boggles at a thing that supposedly can turn CL into a Lisp-1
11:43:09 <elliott> mRoman: on the off-chance that you do, do the wiki too. i'm not convinced pgimeno is still taking backups :p
11:43:45 <Phantom_Hoover> Sgeo, seriously?
11:43:51 <Phantom_Hoover> Oh, wait.
11:44:00 <mRoman> So. We have one public esofilearchive mirror then.
11:44:05 <Phantom_Hoover> I thought you meant Lisp-1 like Banana Scheme's Scheme-ns.
11:44:34 <Sgeo> http://www.cl-user.net/asp/22C3/sdataQIUx9IbXRN5hDQ30CH8X8yBX8yBXnMq=/sdataQu3F$sSHnB==
11:44:47 <Sgeo> This is not, in fact, an entirely understandable to me introduction to code walking
11:45:01 -!- ais523 has joined.
11:45:12 <mRoman> pgimeno?
11:45:31 <mRoman> I hope users are periodically downloading the latest dump.
11:45:35 <elliott> An inactive-ish admin on the wiki listed on the old wiki preservation page.
11:45:36 <graue> pgimeno was a guy who was involved in the esolang community but hasn't been around much for 5+ years (i think)
11:45:50 <elliott> he was around only a few years ago when paintfuck was popular
11:46:08 <elliott> mRoman: i doubt anybody is, really
11:46:10 <graue> oh, ok... anyways, he claims to be backing up the wiki but who knows
11:46:17 <elliott> there were a few mirrors but they slowly died off but one
11:46:27 <elliott> well, he'll certainly have to update the crontab if he is :)
11:48:18 <graue> new mediawiki pet peeve: edit a page => save => go back 2 pages => "Are you sure you want to leave? Data may not be saved."
11:48:57 <elliott> oh, that's annoying... I think I can make that warning a preference
11:50:03 <ais523> you can use your browser's "back 2" command rather than clicking on back twice, but that's not really a perfect solutin
11:50:03 <lambdabot> ais523: You have 1 new message. '/msg lambdabot @messages' to read it.
11:50:03 <elliott> yes, apparently... I'll look into it later
11:50:07 <ais523> *solution
11:50:09 <ais523> @messages
11:50:10 <lambdabot> elliott said 5h 16m 48s ago: yep, Yandex is violating /robots.txt: 87.250.255.243 - - [26/Feb/2012:06:30:56 +0000] "GET /w/index.php?title=Auo&action=edit&section=6 HTTP/1.1" 302 161 "-" "Mozilla/5.
11:50:10 <lambdabot> 0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"
11:50:31 * elliott 's browser doesn't have a back 2 command
11:50:38 <elliott> unless you mean just going to the list of previous pages in the back button
11:51:31 <ais523> yep, that's what I mean
11:51:47 <ais523> oh, and I just ran your robots.txt through a syntax checker in case that was the problem, it parses fine
11:52:20 <elliott> I think what happened for that one, actually, is that it loaded http://www.esolangs.org/w/...
11:52:31 <elliott> and then got redirected to the www-less domain (thus the 302), and didn't load the target page
11:52:48 <elliott> hmm, actually, that doesn't make any sense, it should have loaded http://www.esolangs.org/robots.txt first anyway
11:53:03 <ais523> I guess you could make that page not a redirect?
11:53:18 <ais523> I can conceive of bots that don't follow redirects on robots.txt
11:53:55 <elliott> meh, I'll just wait to see if it does a third naughty thing and block it :p
11:54:04 <ais523> heh, Slashdot are discussing the whole issue of whether Macs get viruses, and someone mentioned that the worst malware infection they saw was on Solaris, and it had got in via a CDE vulnerability
11:54:18 <ais523> and the person was trying to figure out why anyone would bother to target CDE
11:54:45 <Phantom_Hoover> What do they mean by 'worst'?
11:56:05 -!- monqy has quit (Quit: hello).
11:56:06 <ais523> they didn't say
11:56:20 <ais523> and there doesn't seem to be a lot of point in asking
11:56:42 <graue> hey mRoman: thanks for setting up a mirror of the file archive
11:56:58 <graue> did you set up a cron job or script or something so it'll update automatically?
11:57:54 <ais523> wow that was a bizarre advert I just saw on YouTube, it was advertising some sort of game, which had bonus levels if you were using IE9
11:58:14 <ais523> I'm not entirely sure if that's an attempt to get people to switch away from IE8, or from Firefox/Chrome
11:58:21 <ais523> (or from IE6…)
11:58:29 -!- Taneb has quit (Read error: Connection reset by peer).
11:59:22 <mRoman> elliott: Ic.
12:00:49 <Sgeo> CDE?
12:02:07 <ais523> a really old desktop environment
12:02:12 <ais523> with a famously obnoxious color scheme
12:03:21 -!- Phantom_Hoover has quit (Remote host closed the connection).
12:04:35 -!- Phantom_Hoover has joined.
12:09:56 <mRoman> does zsync use special ports?
12:10:00 <mRoman> Or does it sync over http?
12:10:50 <elliott> HTTP
12:11:05 <mRoman> ok
12:12:03 <elliott> it might be an unwise idea to expose the sync'd dump on your server, depending on your bandwidth quota, since it's ~150 megs
12:12:18 <elliott> it would be nice if zsync could work on a compressed copy itself but i haven't been able to look into that yet
12:12:44 <graue> yeah, i wrote a little script that does gzip -d && zsync && gzip
12:13:38 <graue> && rm esolang.xml.zs-old, or else it seems to leave the old version behind
12:13:50 <elliott> yes, that's probably the best way for servers that want to offer downloads
12:13:51 <elliott> and yeah, it does
12:14:12 <elliott> i picked it over rsync because it means i don't have to maintain another server :p
12:14:32 <mRoman> I have no traffic limit
12:14:37 <mRoman> hm. ok
12:17:54 <mRoman> SVN apparently uses more than just 3690 tcp
12:18:44 <elliott> it uses 80 for http svn servers, presumably
12:19:04 <mRoman> then the filearchive is probably http
12:19:50 <elliott> " svn co http://esoteric.voxelperfect.net/svn/esofiles/ ./"
12:19:56 <elliott> seems like an accurate assessment to me :p
12:21:02 <mRoman> yeah :)
12:21:22 <mRoman> Someone locked the repository
12:21:27 <mRoman> I can't update right now
12:21:33 <mRoman> svn: Working copy '.' locked
12:21:41 <elliott> that sounds like a local problem
12:21:42 <graue> that's your local copy
12:21:44 <elliott> perhaps you locked it in a failed update?
12:21:45 <mRoman> oh
12:21:45 <mRoman> ok
12:21:49 <mRoman> yeah.
12:22:01 <mRoman> It failed because iptables kicked it's ass ;)
12:22:07 <elliott> "svn unlock ." apparently
12:22:12 <mRoman> svn cleanup
12:22:22 <elliott> oh, or "svn cle" -yeah
12:24:03 <mRoman> I have so many iptables rules I had to write to my virtual hoster do increase my allowed rules count :)
12:26:09 <elliott> esolangs.org has... 0 :p
12:32:45 <graue> i'm implementing BCT in sortle
12:32:59 <mRoman> ok
12:33:12 <mRoman> I download the latest dump at 06:30 my current local time
12:33:23 <elliott> what local time is that?
12:33:24 <mRoman> and update the filearchive mirror at 06:30 my current local time
12:33:27 <mRoman> gmt +1
12:33:30 <mRoman> with DST
12:33:37 <elliott> fair enough
12:33:44 <elliott> anything after 6:15 UTC or so is fine
12:33:48 <mRoman> currently it's 13:36 here
12:33:57 <mRoman> 1:30 pm
12:34:05 <elliott> (before that runs the risk of triggering when the dump is being generated)
12:34:16 <mRoman> oh.
12:34:20 <mRoman> ok
12:34:54 <graue> could you generate the dump as .xml.gz.part and rename it over the old .xml.gz only when it's finished?
12:34:55 <mRoman> I'm UTC 1
12:35:13 <graue> (or even better have the .part be in a non-web-accessible directory)
12:35:24 <elliott> graue: yeah, I was planning to make the script do that
12:35:26 <mRoman> I just overwrite the last dump with a wget.
12:35:32 <elliott> mRoman: oh, ouch
12:35:42 <mRoman> Which is baaad
12:35:53 <mRoman> If your server gives me a bad dump.
12:36:04 <mRoman> But I can't afford a history of 20mb files
12:36:07 <mRoman> that'd flood the server.
12:36:21 <elliott> why not use zsync?
12:36:31 <mRoman> I'll implement something like round-robin
12:36:49 <mRoman> elliott: Will that help if your server goes boom boom?
12:36:56 <mRoman> does zsync have a history so I can rollback?
12:36:56 <elliott> graue: but even then, if you download at e.g. 6:00 and it still gets the old dump, that means it takes you 24 hours to get any changes m:)
12:37:17 <elliott> mRoman: zsync saves the old file to zs-old if there are any changes
12:37:22 <elliott> mRoman: but if my server goes kaboom, it won't even start
12:37:44 <elliott> the main advantage of zsync is that it uses a tenth of the traffic :p
12:37:44 <mRoman> With boom boom I mean "delivers me a corrupt file"
12:37:51 <elliott> zsync verifies checksums
12:38:04 <elliott> and it'd still go to zs-old
12:38:13 <elliott> (and the zsync file itself would have to be validly-formed for it to even start)
12:38:31 <graue> elliott: who cares if the dump is ~2 days old instead of ~1
12:38:49 <elliott> well, probably nobody :P
12:38:50 <graue> the idea is just to not lose this stuff if the main server fails and/or the person hosting it disappears
12:39:07 <elliott> yeah
12:39:10 <graue> which was a recurrent problem with esolang sites before we started the wiki
12:39:15 <graue> long before you were born. :P
12:39:38 <elliott> hehe
12:39:57 <elliott> i have felt the effects with the 2400 different urls for catseye :)
12:40:26 <graue> indeed, catseye still has a lot of great content that's not on the wiki or file archive
12:40:44 <graue> we should see if we can get more of chris's implementations and docs into the archive
12:41:08 <elliott> I think catseye is pretty unlikely to go kaput these days, but yeah
13:11:37 -!- azaq23 has joined.
13:11:46 -!- azaq23 has quit (Max SendQ exceeded).
13:12:10 -!- azaq23 has joined.
13:25:41 <mRoman> ok
13:25:54 <mRoman> I have now a 3 day rotation of esowikidumps
13:26:10 <mRoman> http://eso.fmnssun.ibone.ch/wikidump/
13:26:21 -!- Taneb has joined.
13:26:23 <Taneb> Hello
13:26:53 <elliott> hi
13:26:55 <elliott> mRoman: great
13:27:32 -!- hagb4rd has quit (Ping timeout: 240 seconds).
13:30:57 <mRoman> Which means I suck every day 20mb :)
13:31:14 <mRoman> (which is no problem for me)
13:31:20 <mRoman> My server has an average traffic of zero
13:32:29 <mRoman> If it weren't for irc.
13:32:42 <mRoman> which sucks about 5MB a day.
13:33:46 -!- MoALTz_ has joined.
13:35:30 <elliott> is there a reason you can't use zsync, out of curiosity? I'd like to fix any issues with adopting it so it's as useful as possible
13:36:07 -!- Taneb has quit (Quit: Lunch?).
13:36:59 -!- MoALTz has quit (Ping timeout: 252 seconds).
13:39:16 <mRoman> elliott: The wiki says it stores the file uncompressed.
13:39:19 <mRoman> Which is 150Mb
13:39:51 <mRoman> a three day rotation of the gz-file uses only half of that.
13:39:58 <mRoman> So space is my concern.
13:40:19 <elliott> fair enough -- you could ask graue for his shell script, which would only use 150 megs for the duration of the download
13:40:33 <elliott> but it'd be nice if it could operate directly on the compressed files, i agree
13:41:53 <mRoman> My html/ is currently 442MB
13:42:01 <mRoman> and the uncompressed would exceed the 500MB
13:43:11 <elliott> right -- but by decompressing before and recompressing after as graue's shell script does, it'd be the same amount of storage (~57 megs) used normally, and about ~131 megs extra used for only a few minute interval when it actually does the download
13:43:22 <elliott> which is a lot less than 500 ;)
13:44:32 <Jafet> MB? Still using zip drives?
13:44:52 <elliott> you mean most people don't use zip drives?
13:45:02 <mRoman> although
13:45:09 <mRoman> I have 100MB of flash games on my server
13:45:14 <mRoman> which aren't really necessary
13:45:25 <mRoman> that would make enough space for the zsync
13:45:59 <mRoman> and 106MB of IRC logs.
13:46:44 <elliott> if you have a shell-script to do the rotation it's just 2 lines extra or so to compress post-zsync, which I'd recommend
13:46:50 <elliott> which would require freeing up considerably less space :p
13:47:08 <mRoman> I just delete files older than 3 days with find ctime
13:47:17 <elliott> ah, ok
13:50:05 -!- Vorpal has joined.
14:37:01 -!- cswords has joined.
14:37:44 -!- cswords_ has quit (Ping timeout: 276 seconds).
14:44:40 <mRoman> Error: uncaught exception: [Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIDOMWindow.alert]" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)"
14:44:45 <mRoman> wtf.
14:46:36 <ais523> leading "ns" means either OS X or Firefox, doesn't it?
14:46:48 <ais523> they both use the same namespace prefix, much to everyone's confusion
14:47:42 <ais523> (for historical reasons in both cases: NeXTstep, and Netscape)
14:49:03 <kmc> netscape more like nutscrape
14:49:17 <kmc> intersuck exploder
14:49:54 <graue> welcome to 1997, kmc
14:50:17 <mRoman> yeah
14:50:25 <mRoman> firefox does not refresh innerHtml fast enough
14:50:26 <mRoman> or at all.
14:50:59 <mRoman> I may have to refactor that to use setTimout calls
14:51:06 <mRoman> but that sucks.
14:52:52 <elliott> graue: [THIS WEBSITE UNDER CONSTRUCTION]
14:53:23 <elliott> I think all wikis should have that, in big red letters, at the top of every page
14:55:49 <mRoman> puh
14:55:54 <mRoman> i hate dom/js
14:56:26 <ais523> elliott: what if they have a red background?
14:56:57 <kmc> <blink><marquee>THIS WEBSITE UNDER CONSTRUCTION</blink></marquee>
14:57:08 <elliott> ais523: Even better.
14:58:08 <mRoman> Firefox won't display what I tell him with innerHtml
14:58:40 <mRoman> oh
14:58:45 <mRoman> maybe invalid html
15:00:29 <elliott> maybe because it's innerHTML
15:01:21 <mRoman> interesting.
15:01:32 <mRoman> Why doesn't firefox tell me there's no innerHtml o_O
15:01:42 <elliott> because you can set any property you want on an object
15:01:48 <elliott> although, hmm, I'm not sure that applies to DOM objects
15:01:50 <elliott> you're using Firebug, right?
15:01:58 <kmc> the first rule of programming language design is, don't give any error messages
15:02:06 <kmc> programmers /hate/ error messages
15:02:09 <kmc> makes them feel stupid
15:03:24 <olsner> don't give errors, just delete the source file if it's wrong
15:10:18 <graue> and just to be safe, delete any other source files in the directory
15:10:24 <graue> you know, in case they have errors too
15:11:05 <graue> so i successfully implemented BCT in sortle but then i tried to get fancy and i broke it
15:11:21 <graue> and that is where this story ends, for now
15:13:05 <mRoman> http://eso.fmnssun.ibone.ch/beam/ <- Works \o/
15:13:06 <myndzi> |
15:13:06 <myndzi> /|
15:13:26 <mRoman> Fancy JS which displays how the code runs.
15:13:47 <graue> this is cool
15:14:06 <elliott> sortle was turing-complete for a few brief minutes
15:14:31 <elliott> mRoman: does not appear to work in chromium :(
15:14:33 <graue> well i still have the working version, it's just not fancy
15:14:37 <mRoman> elliott: Hm?
15:14:43 <mRoman> Define "not appear to work"?
15:15:07 <elliott> the prgoram appears when i click run, but then nothing happens :)
15:15:24 <mRoman> If you click on run under Debug the program should appear
15:15:31 <mRoman> and the current instruction is highlighted green.
15:15:34 <elliott> it isn't
15:15:40 <elliott> the program appears, but black on white, and nothing further happens
15:15:47 <mRoman> weird.
15:17:16 <mRoman> works in my chromium.
15:17:22 <elliott> what version?
15:17:31 <elliott> hmm, the output does come out after a while though
15:17:36 <olsner> I wonder if this is the fix for that bug: https://github.com/ghc/ghc/commit/536e2a029dcc11c33c9448146b34513c682f17a
15:17:39 <elliott> but still no highlighting
15:17:41 <mRoman> 6.0.472.63 (59945) Built on Debian 6.0, running on Debian 6.0.4
15:17:56 <elliott> olsner: seems too recent
15:18:25 <elliott> mRoman: heh, well, mine is chrome 17 so it's pretty incomparable
15:19:16 <mRoman> elliott: Refresh the page
15:19:18 <mRoman> and click run again
15:19:23 <kmc> i can see the green highlight, but only barely
15:19:32 <mRoman> does it at least show an underline under the current instruction
15:19:41 <mRoman> I admit depending on contrast the green is difficult to see :D
15:19:50 <elliott> it works now. how strange.
15:20:04 <elliott> nice flow
15:20:17 <elliott> is it meant to get stuck in >-! ?
15:20:19 <graue> what if instead of foreground you set the background color to #ff0 or something?
15:20:28 <elliott> oh, it got out
15:20:49 <mRoman> elliott: Not forever @stuck
15:21:00 <mRoman> >-! zeroes the cell
15:21:03 <mRoman> in that case
15:21:08 <mRoman> not in all cases as discussed above
15:21:12 <elliott> #E1FECB and #EEF are good light backgrounds :p
15:21:15 <mRoman> -cell +beam
15:21:21 <elliott> mRoman: right, it escaped eventually
15:22:00 <kmc> why is the variable in this language called a "beam"
15:22:15 <mRoman> >-! only works if the value to zero is odd
15:22:40 <mRoman> kmc: It's like a beam of light which travels through space
15:22:48 <mRoman> and that beam can hold a value :)
15:23:08 <graue> if it's a beam of light, that makes the bright yellow background color even more appropriate
15:23:15 <mRoman> :)
15:23:39 <graue> i changed line 45 of beam.js to text += '<span style="background-color: #ee0;">' + re + '</span>';
15:23:44 <graue> looks great
15:24:10 <graue> btw, very nicely done javascript implementation
15:24:24 <graue> it's great to be able to see code run in this kind of language
15:24:30 <mRoman> now it's white on black
15:24:39 <mRoman> with yellow highlight
15:25:12 <elliott> yes, i really like tracers of 2d languages
15:26:30 <mRoman> feed it the even/odd program
15:26:34 <mRoman> and the character A in stdin.
15:26:41 <mRoman> that looks more funny
15:26:54 <mRoman> http://esolangs.org/wiki/Beam#Even_.2F_Odd
15:27:29 <mRoman> (A is odd, B would be even and so)
15:40:59 -!- Taneb has joined.
15:45:30 <Taneb> Hello!
15:47:21 <mRoman> I should probably reset stdout at run()
15:48:43 <mRoman> I guess I should also dump the beam, store and memory access
15:50:02 <kmc> hi Taneb
15:53:09 <mRoman> done.
15:53:21 <mRoman> No you can monitor the beam, store and memory at those locations
16:04:54 -!- pikhq_ has quit (Ping timeout: 240 seconds).
16:04:55 -!- pikhq has joined.
16:10:44 <mRoman> *Now
16:11:58 <cheater> kmc: do you know any language where the parsing rules are affected by the so-far inferred types of elements of the expression being parsed
16:26:17 <kmc> i know languages which you can't really parse at all without executing them
16:26:27 <kmc> like Perl or TeX
16:27:40 <kmc> aiui TeX basically consumes characters from its input one at a time, and processes them according to a table of rules, which can be modified by said processing
16:41:26 -!- azaq23 has quit (Ping timeout: 252 seconds).
16:57:39 -!- azaq23 has joined.
17:06:55 <Phantom_Hoover> I wish more esolangs actually bothered to have a syntax.
17:07:22 <Phantom_Hoover> Most of them are just specified as a flat list of instructions.
17:07:40 <kmc> that's because most of them are brainfuck clones ;)
17:08:17 <Phantom_Hoover> That I wish less esolangs were BF clones is putting it mildly, to say the least.
17:09:04 <Taneb> brainfuck is a gateway esolang
17:11:20 <Taneb> It's the Sailor Moon of esolangs.
17:11:54 <elliott> Phantom_Hoover
17:12:01 <elliott> your whole LIFE is a brainfuck derivative
17:12:06 <Phantom_Hoover> oh no
17:12:11 * Phantom_Hoover brickbrains life
17:13:10 <Phantom_Hoover> we are become brick
17:13:23 <elliott> Plural?
17:13:33 <Taneb> No, Phantom_Hoover, you ARE the brainfuck derivative.
17:13:46 <Taneb> (and then Phantom_Hoover was a brainfuck derivative)
17:13:47 <kmc> it seems like s-expression syntax would be a good choice for an esolang
17:13:55 <kmc> it seems like scheme would be a good choice for implementing esolangs
17:14:08 <elliott> why?
17:14:20 <kmc> it's very flexible
17:14:25 <elliott> i see
17:14:44 <Phantom_Hoover> rubber: a good joice for implementing esolangs
17:14:49 <Phantom_Hoover> also
17:14:52 <Phantom_Hoover> a good choice
17:15:33 <kmc> and you can play fun metacircular tricks
17:16:35 <elliott> that only works when your language is close to scheme
17:16:38 <elliott> which it probably isn't
17:16:43 <kmc> and you have first-class continuations
17:16:51 <kmc> which you can use to provide crazy control flow in your esolang
17:17:02 <kmc> or to provide fancy implementations that can run backwards etc
17:17:13 <kmc> well, i'd like to see more esolangs that are close to scheme
17:17:18 <kmc> at least they would not be brainfuck clones ;)
17:17:34 <kmc> that's an age-old rivalry of course
17:17:36 <elliott> it's kind of a well-mapped design space
17:17:41 <elliott> but http://esolangs.org/wiki/Banana_Scheme :p
17:17:49 <kmc> turing machines vs. lambda calculus
17:18:18 * kmc reads about banana scheme
17:21:03 <kmc> i'm not sure it's that well-mapped
17:23:42 -!- derdon has joined.
17:24:27 <kmc> congrats on the new domain btw
17:24:56 <ais523> well, same domain, new server
17:25:05 <kmc> oh, did esolangs.org work before?
17:26:36 <elliott> esolangs.org has worked since 2005
17:27:30 <ais523> it's been a mirror of esoteric.voxelperfect.net for pretty much forever
17:27:37 <ais523> although we swapped round which was the primary domain in the server move
17:27:39 <kmc> oh cool
17:28:37 <elliott> (though esolangs.org was always the more popular domain)
17:31:43 <Taneb> (I always used esoteric.voxelperfect.net, which seemed easier to remember
17:31:44 <Taneb> )
17:33:00 <Friendship> Easier to remember than 'esolangs.org'???
17:33:37 <mRoman> esolangs.org not the direct link to the wiki
17:33:51 <mRoman> esolangs.org pointed to some intermediate page
17:33:55 <mRoman> which had a link to the wiki
17:33:59 <Friendship> Still does, always has.
17:34:05 <mRoman> no @still does
17:34:11 <mRoman> esolangs.org now redirects directly to the wiki
17:34:15 <Friendship> Uh, no.
17:34:20 <Friendship> Oh wtf
17:34:24 <Friendship> Wow, my cache was WAY out of date.
17:34:27 <Taneb> Friendship, I kept think it was esolang.com
17:34:29 <Friendship> Hard refresh and it goes to the wiki X-D
17:34:32 <mRoman> or without a time interval
17:34:52 <mRoman> Friendship: Using cache is so 1990 ;)
17:38:47 <elliott> <mRoman> esolangs.org pointed to some intermediate page
17:38:48 <elliott> <mRoman> which had a link to the wiki
17:38:52 <elliott> So did esoteric.voxelperfect.net.
17:40:42 <mRoman> I thought esoteric.voxelperfect.net went directly to the wiki
17:40:49 <Taneb> Nope
17:40:52 <mRoman> but I usually typed esolangs.org/wiki/
17:40:53 <ais523> no, esoteric.voxelperfect.net/wiki did
17:41:24 <mRoman> In the esoteric file archive there is a Brainfuck Genetic Text Generator.
17:41:31 <elliott> !bf_txtgen this thing
17:41:36 <EgoBot> ​88 +++++++++++++[>++>+++++++++>++++++++>+<<<<-]>>-.>.+.<-.<++++++.>+.>-.+.<------.>--.>---. [649]
17:41:50 <elliott> Anyway, esoteric.voxelperfect.net was literally identical to esolangs.org.
17:41:52 <elliott> Now they're not.
17:41:58 <mRoman> Does this produce optimal bf-code to print out strings?
17:42:05 <mRoman> optimal = smallest possible?
17:42:19 <mRoman> !bf_txtgen A
17:42:22 <EgoBot> ​35 ++++++++[>++++++++>+>><<<<-]>+.>++. [7]
17:42:53 <elliott> mRoman: that's (provably) impossible.
17:43:14 <Taneb> How is it impossible? It's just extremely inefficient
17:43:30 <mRoman> Halting problem?
17:43:32 <mRoman> (I guess)
17:43:37 <Taneb> Ah yes
17:43:38 <elliott> http://en.wikipedia.org/wiki/Kolmogorov_complexity#Incomputability_of_Kolmogorov_complexity
17:43:42 <Taneb> Damn
17:43:48 <Taneb> Halting problem my enemy
17:44:01 <Taneb> Okay, it's impossible /and/ extremely inefficient
17:44:03 <elliott> the halting problem only breaks the obvious brute-forcing approach.
17:44:15 <mRoman> elliott: In theory yes.
17:44:21 <mRoman> You could just limit the runtime of a program.
17:44:32 <elliott> yes, which would stop you getting the "optimal", "smallest possible"
17:44:40 <mRoman> Not necessarily.
17:44:46 <Taneb> It would
17:44:54 <elliott> the fact that you might sometimes hit upon the optimal program with such a process does not mean it would "work"
17:44:55 <Taneb> You'd need to redefine optimal
17:44:58 <mRoman> If a program runs longer than 10seconds
17:45:06 <elliott> e.g., the process "return '.' for every string" also gives the optimal program for the output string "\000"
17:45:11 <mRoman> and has not generated a single number from 0-255
17:45:17 <mRoman> it's probably not a useful program ;)
17:45:23 <elliott> well, you never said useful.
17:45:30 <Taneb> If you define optimal as in "shortest running time", then generate an upper bound, and then brute force with a time limit
17:45:35 <elliott> useful is a whole 'nother bag of constraints... and one incredibly hard to codify
17:45:37 <mRoman> and by that I mean endless loop
17:45:58 <elliott> no, there are in fact an infinite number of programs fitting that criterion that are not infinite loops :)
17:45:58 -!- Taneb has left ("Goodbye").
17:46:04 -!- Taneb has joined.
17:46:07 <mRoman> How high is the probability that the optimal program to print 'A' runs longer than 10 seconds?
17:46:14 <Taneb> Then you end up with just +++++++++++++...
17:46:23 <Taneb> mRoman, non-zero
17:46:33 <mRoman> Yes, non-zero.
17:46:42 <elliott> mRoman: you can create a provably perfect program for 'A' I'm sure
17:46:51 <elliott> it's just the optimal program to generate ord 'A' plus a .
17:46:56 <mRoman> The propability that 1 bit got shifted in your memory is also non-zero ;)
17:47:07 <elliott> it's much higher than zero, RAM errors happen all the time
17:47:28 <elliott> anyway, it's unlikely for "A" but there will be pathological strings that any such "reasonable" algorithm fails at
17:47:29 <Taneb> The probability of an ice cream suddenly appearing in my hand is non-zero
17:47:44 <Taneb> It's unlikely, but still theoretically possible
17:47:50 <elliott> making something reasonable doesn't defeat the mathematics :)
17:50:56 <mRoman> How about
17:51:11 <mRoman> Printing 'A' requires a programm of length 65
17:51:15 <mRoman> if not optimal
17:51:32 <mRoman> +++(65x).
17:51:53 -!- Taneb has quit (Read error: Connection reset by peer).
17:51:54 <mRoman> Which takes 65 "cycles"
17:52:16 <mRoman> Does a theoretical optimal program have more or less cycles or the same amount of cycles?
17:52:46 <fizzie> I would assume, if there are no qualifiers, that "optimal" in this context is the shortest.
17:52:49 <ion> Incidentally, i wrote a brute force-ish hack to convert strings to BF code recently. I’ll paste it, a moment…
17:53:16 <mRoman> fizzie: In this context, yes.
17:53:18 <fizzie> Which is likely to take more cycles than that.
17:53:36 <fizzie> ^bf ++++++++[>++++++++<-]>+.
17:53:36 <fungot> A
17:54:04 <mRoman> 8*8+1
17:54:20 <mRoman> well
17:54:26 <mRoman> do we count [ and ] as a cycle?
17:54:47 <fizzie> Sure, why not?
17:54:49 <mRoman> []
17:54:58 <mRoman> that have infinite cycles
17:55:01 <mRoman> at max
17:55:03 <mRoman> two at least
17:55:06 <mRoman> *has
17:55:19 <ion> https://gist.github.com/1917958
17:55:28 <mRoman> so
17:55:35 <mRoman> it has more than 65 cycles, yes.
17:55:41 <fizzie> One, if you think that the [ skips past the matching ], and current value is zero.
17:55:48 <fizzie> It has more than 65 even if you don't count the loops.
17:55:56 <mRoman> Yes
17:55:58 <mRoman> ><-
17:56:05 <fizzie> ^bf ++++[>+<++++]>++.!it's shorter with wrapping cells.
17:56:05 <fungot> A
17:56:21 <mRoman> It would be nice to have two lists of brainfuck constants.
17:56:44 <mRoman> except
17:56:57 <mRoman> is it even possible to have a brainfuck program that prints A with less than 65 cycles?
17:57:04 <mRoman> *in less
17:57:10 <elliott> ion: Does it beat our GENETICS?
17:57:30 <mRoman> !bf_textgen ABCDE
17:57:41 <ion> elliott: It probably won’t beat anything.
17:58:07 <fizzie> !bf_txtgen ABCDE
17:58:12 <fizzie> bf_txtgen is rather bad for short strings if you don't manually lower the number of "terms".
17:58:12 <EgoBot> ​43 +++++++++[>+++++++>+>><<<<-]>++.+.+.+.+.>+. [189]
17:58:21 <fizzie> See the >><< there, for example.
17:58:30 <fizzie> That should've been run with -t 2.
17:58:32 <ion> λ> toBF "ABCDE"
17:58:33 <ion> expr 34 ">+++++++[<+++++++++>-]<++.+.+.+.+."
17:59:08 <Friendship> !bf_txtgen Sure, but bf_txtgen is pretty darn good for very long strings. How does ion's toBF cope?
17:59:11 <EgoBot> ​804 ++++++++++++++[>+++>++++++>++++++++>++++++++<<<<-]>>-.>>+++++.<++.-------------.<<++.------------.>>---.>.-.<<<.>+++++++++++++++.>++++.-------.>.++++.----.<<+++++.--.>>------.<---------------------------------------------------------------.>-----.++++++++++.<.>---.++.<<.>>++..+++++.<.<<++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.---.>>>-------.----.<.<++.++++++++..<+++.>>.<<++.>.+++.>.<++++.<-.>----.+++++++.>.<<+++++++.>----------.-.
17:59:22 <elliott> FSVO pretty darn good.
17:59:32 <fizzie> Yeah, that got kind of cut off, too.
17:59:34 <elliott> fizzie: You have that there scientific cluster, don't you?
17:59:36 <ion> friendship: 1443
17:59:44 <elliott> How willing are you to misuse it for important esoteric research?
17:59:59 <mRoman> *important*
18:00:20 <elliott> Yes.
18:00:22 <elliott> important.
18:00:28 -!- oerjan has joined.
18:00:31 <ion> It simply generates a constant expression for each character’s delta from the previous one.
18:00:32 <mRoman> finding shortest brainfuck constants?
18:00:39 <elliott> Brute-forcing, to be precise.
18:00:41 <fizzie> Friendship: With -t 6 and a bit of running, it goes down to 722.
18:00:55 <elliott> (Yes, a theoretically-impossible task; except I have a semiprecise definition of "useful".)
18:01:05 <elliott> (For instance in this case the setting is actually sub-TC.)
18:01:06 <fizzie> And not very.
18:01:19 <elliott> fizzie: But... what if it was *super* fun?
18:01:20 <fizzie> I haven't even misused it for that AI tournament, and that's even a course.
18:01:27 <elliott> I thought you misused it for a silly once.
18:01:29 <elliott> Do I misremember?
18:01:52 <fizzie> I don't remember anything like that, but that's no proof.
18:01:59 <fizzie> Ooh, 679.
18:02:03 <fizzie> Soon it'll fit in IRC.
18:02:08 <fizzie> Well, "soon".
18:02:15 <ion> !bf_txtgen ☺
18:02:17 <EgoBot> ​86 +++++++++++++++[>+++++++++++++++>++++++++++>++++++++++++>+<<<<-]>+.>++.>++++++.>-----. [107]
18:02:31 <elliott> fizzie: Well, if you chose not to remember it not happening, would that convince you?
18:02:54 <fizzie> ^bf +++++++++[>+++++++>+>><<<<-]>++.+.+.+.+.>+.
18:02:55 <fungot> ABCDE.
18:02:59 <fizzie> Right, it adds a newline too.
18:03:30 <fizzie> So the proper comparison would've been against "ABCDE\n".
18:04:02 <oerjan> @messages
18:04:02 <lambdabot> elliott said 9h 18m 19s ago: wow, your BCT interpreter was 2009?
18:04:03 <ion> Oh, my code is actually broken when it makes nested loops. Oh well, i have already lost the interest to toy with it.
18:04:10 <oerjan> elliott: seems so
18:04:27 <elliott> oerjan: seems later.
18:05:18 <fizzie> It's not wanting to go down from 622. :/ :/ :\
18:05:52 <elliott> fizzie: Do you know what could help it?
18:07:11 <elliott> fizzie: PERFECT CONSTANTS.
18:07:24 -!- Taneb has joined.
18:08:20 <oerjan> elliott: maybe it's because i didn't do anything big in 2010. or did i?
18:08:52 <fizzie> oerjan: Well, there was that one time you saved the world from an alien attack.
18:09:13 <Taneb> Hello!
18:09:15 <oerjan> fizzie: sadly i had to erase that from memory. or so i assume.
18:10:46 <elliott> oerjan: did you know that you have the most edits on the wiki?
18:10:54 <elliott> even ignoring reverts, undos and edits with "spam" in the summary
18:11:04 <oerjan> elliott: wow
18:11:22 <elliott> yep. 1813 total, 1473 non-spamcleanup
18:11:34 <elliott> (I ran a DB query out of curiosity)
18:12:05 <oerjan> elliott: it is _possible_ some of the remaining summaries are still spam, of course :)
18:12:19 <Taneb> Bug report: Special:Statistics shows there are -1 active members.
18:12:25 <Taneb> I'm fairly confident this is false
18:12:58 <elliott> oerjan: well
18:12:59 <elliott> mysql> select count(*) from revision where rev_user = 89 and rev_comment not like 'Undo%' and rev_comment not like 'Revert%' and rev_comment not like '%spam%' and rev_comment not like '%SPAM%';
18:12:59 <elliott> +----------+
18:12:59 <elliott> | count(*) |
18:12:59 <elliott> +----------+
18:13:00 <elliott> | 1472 |
18:13:02 <elliott> +----------+
18:13:04 <elliott> better query suggestions welcome :P
18:13:14 <elliott> Taneb: yes, seen and annoyed
18:13:18 <elliott> i think it might fix itself in ~30 days
18:13:36 <elliott> mysql> select count(*) from revision where rev_user = 89 and rev_comment not like 'Undo%' and rev_comment not like 'Revert%' and rev_comment not like '%spam%' and rev_comment not like '%SPAM%' and rev_comment not like '%Spam%';
18:13:36 <elliott> +----------+
18:13:36 <elliott> | count(*) |
18:13:36 <elliott> +----------+
18:13:38 <elliott> | 1471 |
18:13:40 <elliott> +----------+
18:13:44 <elliott> oerjan: i don't think there's any way down from this totem pole of prominence.
18:13:57 <Taneb> On another note, this is my best family tree making program ever
18:13:59 <oerjan> elliott: i'm suggesting that i sometimes use rather punny summaries
18:14:07 <Taneb> It actually has an interface
18:14:12 <elliott> mysql> select count(*) from revision where rev_user = 89 and rev_comment not like 'Undo%' and rev_comment not like 'Revert%' and rev_comment not like '%spam%' and rev_comment not like '%SPAM%' and rev_comment not like '%Spam%' and rev_comment not like '%revert%' and rev_comment not like '%rv%'; ---> 1461
18:14:32 <oerjan> of course i _do_ correct a lot of typos and stuff
18:14:47 <elliott> oerjan: ok well if you figure out a way to shave off another 192 edits from that total you'll be second place
18:14:50 <elliott> good luck with that
18:15:12 <elliott> oh, it'll take more than that i guess. since the second place has done spam reversions too, obviously
18:15:24 <elliott> i think you should just accept it. as well as the mandatory administrator rights it brings :D
18:16:01 <elliott> hmph. what a disappointingly subdued reaction.
18:16:14 <oerjan> elliott: O KAY
18:16:23 <oerjan> what subdued reaction?
18:16:30 <elliott> see you'll be lulled into complacency
18:16:37 <elliott> and then ais523 will do it out of the blue
18:16:49 <oerjan> do what?
18:17:03 <elliott> sysop you.
18:17:11 <oerjan> can he do that?
18:17:14 <ais523> I wouldn't sysop someone without their permission
18:17:16 <ais523> and yes, I can
18:17:16 <elliott> yes. i made him a 'crat
18:17:30 <ais523> (elliott gave me the required perms as part of the wiki move)
18:18:02 <elliott> he is all-powerful. second only to the aller-powerfulest me. i have the ability to run fun queries to satisfy my curiosity on the live database
18:18:56 <Taneb> (Okay, why does elliott have imperium maius?)
18:18:59 <elliott> oerjan: anyway, see, complacency.
18:19:10 <elliott> Taneb: COMPLACENCY
18:19:32 <oerjan> Taneb: the alternative was timwi, or something.
18:19:48 <elliott> The alternative was the communists.
18:19:54 <ais523> if you translate Esolang permissions into Wikimedia permissions, I'd be a steward and elliott'd be a dev
18:19:57 <elliott> they walk among us
18:20:46 <elliott> ais523: devs don't usually have divine right to rule, do they?
18:20:57 <elliott> wait, i said nothing.
18:21:08 <ais523> they have the technical capability to do so, but aren't allowed to
18:21:10 <ais523> CAN but SHALL NOT, etc
18:21:16 <Taneb> elliott, I thought you were a communist? You were on Pyralspite
18:21:38 <elliott> That was just a trap. to track down the communists.
18:21:40 <oerjan> once a year they go around wearing red and putting evil communist subsidies in americans' socks
18:21:55 <Taneb> `quote communism
18:21:58 <oerjan> (well they always wear red, of course, when they're not being stealthy)
18:22:04 <HackEgo> 486) <Taneb> This staircase is very good for correcting people's opininons about communism
18:22:33 <Taneb> COMPLETELY NEUTRAL OUT OF CONTEXT
18:22:39 <Taneb> RELATIVELY NEUTRAL IN CONTEXT
18:22:52 <Taneb> Oh, I love being centre-left on the political spectrum
18:23:08 <elliott> do you ever get the feeling Taneb isn't real
18:23:32 <Taneb> I once convinced myself I was a figment of elliott's imagination.
18:23:48 <elliott> i don't think i could think you up
18:23:54 <oerjan> elliott: hm i'd be assuming the reason you never met was because _you_ aren't real, but perhaps neither of you is.
18:23:57 <oerjan> *been
18:24:29 <Taneb> The entire of South West Northumberland doesn't exist
18:24:37 <elliott> oerjan: come on, which is more believable?
18:24:41 <elliott> i was here first.
18:24:50 <oerjan> true.
18:24:52 <Taneb> I have been heard of outside of IRC
18:25:14 <ais523> Taneb: Northumberland doesn't have a South West, it's North by definition
18:25:17 <oerjan> so has elliott.
18:25:27 <Taneb> I have been heard of outside the Internet
18:25:31 <ais523> oh right, that's what you said, just in different words
18:25:32 <oerjan> Taneb: not by me
18:25:38 -!- FireFly has quit (Changing host).
18:25:53 <Taneb> BY THE MAJORITY OF 15-18 YEAR OLDS IN SOUTH-WEST NORTHUMBERLAND
18:25:54 <oerjan> (neither has elliott)
18:26:17 <elliott> oerjan: is being a hermit nice? hexham is so crowded.
18:26:20 <elliott> with Taneb, and all.
18:26:29 <oerjan> Taneb: they don't count, since that place doesn't exist
18:26:46 <oerjan> `quote hermit
18:26:50 <Taneb> My name has been mentioned in the Hexham Courant
18:26:50 <HackEgo> 512) <oerjan> i try to be a hermit but it's hard with all these housemates.
18:27:06 <oerjan> THEY'RE STILL THERE
18:27:06 <elliott> yeah sure. "housemates"
18:28:24 <oerjan> oh god, one of them started coughing like on queue
18:28:59 <elliott> *cue
18:29:04 <oerjan> dammit
18:29:11 <elliott> que?
18:29:33 <oerjan> spell things correctly, that's the quay
18:29:58 <oerjan> food ->
18:30:24 <fizzie> elliott: rev_comment not regexp '^(Undo|Revert|[Ss][Pp][Aa][Mm])' or some-such.
18:30:26 -!- Taneb has quit (Read error: Connection reset by peer).
18:31:44 <elliott> fizzie: Oh sure. With your fancy "regexps".
18:31:47 <elliott> And your "science".
18:32:03 <elliott> fizzie: If you're smart, how about giving me a query for all users with 0 undeleted revisions, and more than 0 deleted revisions, huh?
18:33:34 <elliott> Suddenly the smartFinn smarts NO MORE.
18:34:17 <fizzie> I don't really know the MySQL or the mediawiki DB schema. :/
18:34:25 <elliott> <fizzie> elliott: rev_comment not regexp '^(Undo|Revert|[Ss][Pp][Aa][Mm])' or some-such.
18:34:28 <elliott> THEN WHAT AM THIS???
18:34:41 <fizzie> Well, the rev_comment came from your thing, and the regexp I've seen.
18:35:04 <fizzie> But I did do a Grasp 'cat' program in the hypothetical edge-labeled Grasp, it's at http://zem.fi/~fis/grasp-cat.png
18:35:21 <elliott> mysql> select user_name from user where (select count(*) from revision where rev_user = user_id) = 0 and (select count(*) from archive where ar_user = user_id) > 0;
18:35:24 <elliott> I think it's this or something.
18:35:31 <elliott> But boy is it slow.
18:35:55 <elliott> fizzie: Oh that's nice.
18:35:57 <elliott> You are forgiven.
18:36:53 <ais523> elliott: right, I don't think there's an index that would work for that
18:37:36 * elliott would like a surer check :(
18:38:29 <kmc> i wonder if adding new syntax highlighting to pandoc requires modifying and recompiling highlighting-kate
18:38:51 <kmc> which is a huge package that takes forever to build in cabal's single-threaded world
18:38:56 <elliott> i hear they made that package nicer
18:42:41 <fizzie> elliott: You could eliminate a subselect by grouping archive by user, something like select ar_user from archive group by ar_user having (select count(*) from revision where rev_user = ar_user) = 0 -- that way it'd only consider users found in the 'archive' table.
18:43:27 <oerjan> today's advice: don't be so distracted you try to eat your vitamin pill and a piece of bread at the same time.
18:43:31 <oerjan> (yuck)
18:43:56 <oerjan> (sorry, i don't _have_ a twitter account)
18:44:10 <fizzie> oerjan: How about a facebook?
18:44:14 <oerjan> neither.
18:46:54 <ais523> how many facebooks are there?
18:46:58 -!- PiRSquared17 has joined.
18:47:17 <fizzie> I think the way they speak nowadays is "I have a facebook" "my facebook was hacked" etc.
18:47:40 <ais523> this is like people who think that their computer came with Google as its OS
18:47:50 <ais523> and thus, that they can't change their homepage or the entire system will break
18:47:52 <fizzie> Also they said at one point "my MP3 is red and holds a thousand songs"; they're talking about a portable player.
18:47:55 <oerjan> today's hypothesis: the reason aliens have not contacted us is because they cannot find a way to do it without violating our i.p. laws
18:48:44 <oerjan> (basically all aliens are ais523 clones)
18:49:35 <oerjan> or possibly ais523 _is_ their emissary, but they wiped his mind for the same reason.
18:51:56 <oerjan> well it could be that or the immigration laws.
18:55:00 -!- PiRSquared17 has quit (Remote host closed the connection).
19:06:27 -!- cswords_ has joined.
19:07:57 <elliott> <fizzie> elliott: You could eliminate a subselect by grouping archive by user, something like select ar_user from archive group by ar_user having (select count(*) from revision where rev_user = ar_user) = 0 -- that way it'd only consider users found in the 'archive' table.
19:08:04 <elliott> fizzie: Also there's a cache for the count revision of user.
19:08:09 <elliott> Except it might include deleted edits too.
19:09:09 <elliott> <fizzie> I think the way they speak nowadays is "I have a facebook" "my facebook was hacked" etc.
19:09:09 <elliott> <ais523> this is like people who think that their computer came with Google as its OS
19:09:09 <elliott> <ais523> and thus, that they can't change their homepage or the entire system will break
19:09:30 <elliott> I don't really see how this is unreasonable; plenty of things have been "nounified" in a similar way
19:09:34 <elliott> heck, even "IRC" has
19:10:02 <ais523> elliott: but it's a collective noun
19:10:05 <oerjan> _my_ IRC hasn't
19:10:06 <ais523> you can't say "an IRC"
19:10:07 <oerjan> oh darn.
19:10:20 <ais523> you can say "an IRC server", or "an IRC client", or "an IRC channel", but not "an IRC" in the abstract
19:10:38 <elliott> ais523: ok, "email"
19:10:41 <elliott> "my email is ..."
19:10:45 -!- cswords has quit (Ping timeout: 276 seconds).
19:10:46 <elliott> perfectly reasonable and ubiquitous
19:11:04 <ais523> hmm, I more commonly see it used to mean "email message" than "email address2
19:11:06 <ais523> *"
19:11:37 <elliott> yep, but they're both just like "facebook"
19:14:34 <elliott> fizzie: Also what does group by actually do?
19:15:02 <mRoman> Puh.
19:15:07 <elliott> Ah, it puhs.
19:15:15 <mRoman> I thought translating BF-Loops to Beam would be trivial :)
19:15:31 <mRoman> Turns out it's more tedious than I thought.
19:15:43 <mRoman> ++++[>++++++<-]>
19:15:49 <mRoman> (Brainfuck constant 24)
19:15:57 <elliott> ais523: any ideas for ways to turn that query into something more unambiguously spammer-only?
19:16:08 <mRoman> v v <
19:16:08 <mRoman> p/++++Pnv>'p++++++P`p-Pu'p:
19:16:09 <mRoman> >^ > ^
19:16:10 <elliott> it gets 3289 users
19:16:20 <elliott> which is amazing, we could eliminate the vast majority of spammers with a single query if refined
19:16:20 <mRoman> translated to beam :)
19:16:25 <oerjan> <elliott> (every time oerjan tried to figure out whether another subset of Underload is TC I would insist it can't possibly be, but he proved me wrong every time :))
19:16:52 <ais523> elliott: hmm, I wouldn't be sure that would have no false positives
19:16:57 <ais523> although I doubt there can be many
19:16:58 <oerjan> on the other hand, i agreed with your predictions every time too, i just didn't let that stop me from disproving them :)
19:17:08 <ais523> oerjan: reminds me of the 2,3 thing, I thought it was incomplete
19:17:12 <ais523> until I proved otherwise
19:17:18 <ais523> and that took me by surprise
19:17:25 <elliott> oerjan: indeed :P
19:17:40 <elliott> :^() being sub-TC I probably would have bet money on
19:17:55 <ais523> oerjan: btw, I tried getting oerjanswap to type
19:18:03 <ais523> and I'm a bit confused about whether it does or not
19:18:03 <elliott> <ais523> elliott: hmm, I wouldn't be sure that would have no false positives
19:18:06 <oerjan> i don't recall what oerjanswap is
19:18:08 <elliott> ais523: that's why I want more conditions to refine it :P
19:18:09 <ais523> perhaps I should try in Haskell
19:18:17 <ais523> oerjan: it's the implementation of ~ in terms of the other primitives
19:18:21 <oerjan> oh
19:18:29 <oerjan> heh
19:18:51 <ais523> replacing f with \x.f x is called eta-expansion, right?
19:19:05 <elliott> yes
19:19:20 <ais523> it seems to placate the OCaml type-checker somewhat
19:19:24 <ais523> not sure if that's enough, though
19:19:32 <oerjan> (reminds me of the anecdote of that mathematician who stood up during a conference and asked "Excuse me, but what is a Hilbert space?")
19:19:35 <ais523> I eventually got oerjanswap to type, but the type is obviously far too complex
19:19:56 <ais523> oerjan: you can get a long way understanding the concepts but not the names for them
19:20:17 <fizzie> elliott: It, uh, groups by. If you "group by X, Y, Z", the final results will have one row for each distinct tuple (X, Y, Z) that exists (post-WHERE), and any aggregate expressions like count(*) or sum(W) in the columns-to-select are calculated over the groups. (And then a HAVING clause is pretty much identical to WHERE, except it's done post-GROUP BY, so you can use the said aggregate expressions in the conditions.)
19:20:27 <elliott> fizzie: RELATIONAL THEORY IS HARD.
19:20:30 -!- graue has quit (Ping timeout: 276 seconds).
19:20:36 <oerjan> (SPOLIER: the mathematician was David Hilbert)
19:20:52 <elliott> oerjan: :D really?
19:21:02 <oerjan> elliott: well that's about how i heard it.
19:21:16 <elliott> oh i don't care whether it's true
19:21:19 <elliott> just that someone other than you made it up
19:22:14 <oerjan> yep. i think my advisor told it to me.
19:22:53 <elliott> ais523: I thought of a filtering query
19:23:01 <elliott> ais523: all your spam page deletions have had "spam" in the summary, right?
19:23:12 <ais523> not /all/ of them, I often typo it
19:23:17 <elliott> well, the vast majority
19:23:21 <ais523> yes
19:23:32 <elliott> right, I'll just make sure the deleted revisions are from those
19:23:39 <ais523> oh, legitimate users will sometimes have edited pages which were deleted for spam
19:23:50 <ais523> because some people blanked spam pages, before I told them not to because it was pointless
19:23:57 <elliott> yes, but they won't have undeleted-editcount 0 and deleted-editcount >0
19:24:00 <ais523> you should check for the person who /created/ a page deleted as spam
19:24:04 <ais523> well, /probably/ not
19:24:07 <elliott> sigh
19:24:10 <elliott> i have no idea how to do that :P
19:24:36 <ais523> nor do I
19:24:47 <elliott> oh archive contains page records.
19:24:58 <elliott> so my query _was_ page creators
19:25:12 <elliott> so, it's only finding users that have 0 nondeleted edits, and who have created at least 1 deleted page
19:25:34 <ais523> archive is edits to deleted pages, isn't it?
19:25:39 <ais523> that is, "deleted revisions"
19:25:40 <elliott> The archive table is the place where MediaWiki stores information on deleted pages. The pages may be restored, or undeleted, by a MediaWiki Administrator using the Special:Undelete special page. Beginning in MediaWiki 1.5, the content of the pages remains in the text table; the deletion time is logged in the logging table.
19:25:42 <elliott> no
19:25:50 <ais523> ah, OK
19:26:00 <elliott> OK, I just need to tie it into the deletion reason now
19:26:06 <elliott> to avoid, e.g. people who just worked on one article which then got deleted
19:26:11 <ais523> if you end up deleting my account, I'll get annoyed
19:26:33 <elliott> oh, hmm
19:26:34 <elliott> "When a page is deleted, all its old revisions move from the revision table to the archive table"
19:26:47 <elliott> why does mediawiki gotta make this difficult?
19:28:21 <elliott> ais523: OK, what about this: "All users with 0 undeleted edits and >0 deleted edits to pages deleted with summary 'spam'"
19:28:37 <elliott> the only false positives will be people who registered, blanked spam, and then never did anything else /ever/
19:28:46 <elliott> and I don't think we've had anyone do that
19:28:47 <ais523> theoretically it isn't perfect, but I doubt it'll have false positives in practice
19:28:53 <oerjan> 11:31:07: <elliott> right, but the only thing you need to maintain is whether it halts or not
19:28:56 <oerjan> 11:31:14: <elliott> by definition of TCness
19:29:05 <oerjan> the idea of not including even a single output bit disturbs me.
19:29:13 <elliott> oerjan: er that's the halts bit
19:29:26 <elliott> admittedly, its value is uncomputable.
19:29:35 <fizzie> How about: "All bad users." (SQL can do that, right?)
19:29:37 <ais523> it's only uncomputable if it's a 1
19:29:42 <elliott> ais523: ...0
19:29:42 <ais523> if it's a 0, you can compute it just fine
19:29:46 <elliott> you have it flipped
19:29:49 <ais523> err, right
19:29:50 <elliott> fizzie: totally
19:30:00 <oerjan> which is disturbing. to me, to be TC you should be able to use it to get the full results of an ordinary TM.
19:30:01 <elliott> oerjan: anyway BCT ends with 0 usable bits
19:30:08 <elliott> so, tough :P
19:30:20 <oerjan> elliott: on the BCT page it says to output the deleted bits.
19:30:29 <oerjan> which is what i did for ///
19:30:33 <elliott> well, yes. but that's just a suggestion.
19:31:25 <oerjan> yes, but i assumed it was because that _is_ enough information to extract a result from.
19:33:20 <elliott> ais523: hmm, only 3803 articles deleted with %spam% comment
19:33:32 <elliott> seems like it should be more
19:33:43 <elliott> mysql> select log_title from logging where log_action = 'delete' and (log_namespace = 0 or log_namespace = 2) and log_comment like '%spam%';
19:33:49 <elliott> now to integrate this with the above query...
19:33:55 <oerjan> elliott: you could make sort of a note somewhere on the login page to contact you if you think the account has been blocked in error
19:34:09 <oerjan> like.
19:34:22 <elliott> oerjan: the accounts are probably going to be deleted altogether, as the only people who could see them would be admins anyway
19:34:36 <elliott> fizzie: how to I say "count of all entries in FOO table matching these criteria where a corresponding entry in BAR table exists matching these criteria"
19:34:39 <elliott> *do
19:34:59 <elliott> (there may be multiple such entries in BAR, but I only care about the existence of one)
19:35:07 <elliott> (or forall, if that's more convenient)
19:35:15 <elliott> corresponding = with this field matching that field
19:35:42 <elliott> oerjan: anyway I won't run any query I'm not sure won't block legit users
19:35:56 <elliott> well beyond a reasonable doubt, anyway
19:37:56 <fizzie> elliott: The straight-forward way would be to subquery it with SELECT count(*) FROM FOO WHERE x AND y AND z AND EXISTS (SELECT * FROM BAR WHERE thisfield = thatfield AND p AND q). Alternatively, some sort of a join.
19:38:11 <elliott> fizzie: I thought it would be a GROUP BY.
19:38:14 <elliott> Isn't it a group by?
19:39:07 <fizzie> It's probably not a group by when you don't want a set of unique somethings.
19:39:36 <elliott> I don't understand this "set of unique somethings" technobabble. :(
19:39:45 <elliott> I AM TRYING SO HARD HERE
19:40:32 <fizzie> Like, uh, if you have the table ((john, 123), (john, 456), (john, 789), (mick, 1111), (mick, 2222)) and you want the output ((john, 3), (mick, 2)) where the numbers are the number of john- and mick-rows, that's probably a place for a group by.
19:40:58 <fizzie> Like a SELECT name, count(*) FROM thing GROUP BY name.
19:40:58 <mRoman> indeed.
19:41:29 <fizzie> (And the aggregates like 'count' will then be run over the rows in each group.)
19:41:39 <elliott> (The query here is "count of entries in the revision table where user id = X and <the page in question was deleted as spam>", where the <>s stuff is either "exists log entry where page id = col_of_revision_thing and summary..." or "forall log entries where page id = col_of_revision_thing, we ahve summary...")
19:41:49 <elliott> *have
19:42:42 <elliott> Man, why doesn't MySQL just use propositional logic?
19:43:02 <mRoman> Because MySQL somehow uses relational algebra?
19:43:16 <mRoman> Or at least that would be cool.
19:43:17 <elliott> Does it? Does it really?
19:43:26 <mRoman> elliott: It does and it does not.
19:43:43 <elliott> It NULLs relational algebra.
19:44:13 <fizzie> That should be at least doable (if not optimally so) with a SELECT count(*) FROM revision WHERE rev_user = X AND EXISTS (SELECT * FROM logorwhatever WHERE log_page_id = rev_page_id AND log_summary = ...).
19:44:38 <elliott> fizzie: Would a FORALL be just as easy? (Not really a "big ie", as they say.)
19:45:16 <mRoman> If you change that SELECT * in the EXISTS clause to SELECT 1
19:45:45 <elliott> mysql> select user_name from user where (select count(*) from revision where rev_user = user_id) = 0 and (select count(*) from archive where ar_user = user_id and exists (select * from logging where log_action = 'delete' and (log_namespace = 0 or log_namespace = 2) and log_comment like '%spam%' and log_page = ar_page_id)) > 0;
19:45:49 <elliott> Gullpe.
19:45:59 <fizzie> The fields selected shouldn't matter at all for an EXISTS query.
19:46:17 <elliott> Empty set (15.31 sec)
19:46:20 <mRoman> Yes.
19:46:22 <elliott> fizzie: I have a complaint.
19:46:26 <elliott> It doesn't work.
19:47:44 <elliott> Works without "and exists ..." onwards.
19:48:23 <elliott> How odde,
19:48:25 <elliott> mysql> select user_name from user where (select count(*) from revision where rev_user = user_id) = 0 and (select count(*) from archive where ar_user = user_id and exists (select * from logging where log_action = 'delete' and (log_namespace = 0 or log_namespace = 2) and log_comment like '%spam%' and log_title = ar_title)) > 0;
19:48:27 <elliott> works fine.
19:48:30 <elliott> I guess them page IDs be the screwies.
19:48:56 <fizzie> Possibly; I don't really know how those go.
19:49:06 <elliott> ais523: Guess who has a 2861-long list of basically certain spambots?
19:49:32 <ais523> elliott: you?
19:49:37 <fizzie> elliott: There's the bit in the archive table's description of how "ar_page_id: Reference to page_id. -- Will be NULL for pages deleted prior to 1.11."
19:49:43 <elliott> ais523: Yes, me.
19:49:45 <elliott> fizzie: Ah.
19:49:45 <ais523> 2861 is low enough to quickly check the list by eye
19:49:50 <elliott> ais523: yes, I just scanned it
19:49:57 <elliott> there's patterns and obvious spambot names and the like
19:50:42 <elliott> fizzie: Now, out of curiosity, say I wanted to add the constraint to that archive select that the ar_timestamp was the lowest of all ar_timestamps in the archive table for the same (ar_title,ar_namespace) pair.
19:50:47 <elliott> How difficult/horrific would that be?
19:50:53 <elliott> (This corresponding to the "page creation" concept.)
19:51:09 <elliott> Note to selF:
19:51:10 <elliott> *self
19:51:12 <elliott> mysql> select user_name from user where (select count(*) from revision where rev_user = user_id) = 0 and (select count(*) from archive where ar_user = user_id and exists (select * from logging where log_action = 'delete' and (log_namespace = 0 or log_namespace = 2) and log_comment like '%spam%' and log_title = ar_title and log_namespace = ar_namespace)) > 0;
19:52:53 <elliott> ais523: I think fizzie "ran away", as they say in Denmark.
19:53:00 <fizzie> elliott: It's not too difficult to express as a yet another subquery, obviously -- I mean, it's just "... and ar_timestamp = (select min(ar_timestamp) from archive a2 where a2.ar_title = ar_title and a2.ar_namespace = ar_namespace) ...", except you may need to add a name for the first archive table for disambiguation -- but it's probably utterly slow to run.
19:53:11 <elliott> Also, how scary: that query went from ~35 seconds to ~15 seconds to 0 seconds.
19:53:20 <elliott> I think it's building caches and indexes and whatnot behidnbehind my back. Spooky.
19:55:12 <elliott> mysql> select user_name from user where (select count(*) from revision where rev_user = user_id) = 0 and (select count(*) from archive where ar_user = user_id and ar_timestamp = (select min(ar2.ar_timestamp) from archive a2 where a2.ar_title = ar_title and a2.ar_namespace = ar_namespace) and exists (select * from logging where log_action = 'delete' and (log_namespace = 0 or log_namespace = 2) and log_comment like '%spam%' and log_title = ar_title
19:55:12 <elliott> and log_namespace = ar_namespace)) > 0;
19:55:12 <elliott> ERROR 1054 (42S22): Unknown column 'ar2.ar_timestamp' in 'field list'
19:55:19 <elliott> fizzie: I did a wrong. :(
19:55:50 <fizzie> You wrote "ar2" and not "a2".
19:55:54 <fizzie> In the min().
19:56:02 <fizzie> (Where I actually forgot to have the name at all.)
19:56:30 <fizzie> I'm not entirely sure if it needs one, there.
19:56:34 <elliott> "Opse".
19:56:57 <elliott> Okay, now it go whirr. Whirr whirr whirr.
19:57:03 <elliott> 2861 to what-will-it-be?
19:57:39 <elliott> Now it an empty set!!!
19:57:47 <fizzie> Oh nose.
19:57:54 <elliott> fizzie: "The format of timestamps used in MediaWiki URLs and in some of the MediaWiki database fields is yyyymmddhhmmss. For example, the timestamp for August 9th, 2010 00:30:06 UTC is 20100809003006. The timezone for these timestamps is UTC."
19:58:03 <elliott> This shouldn't cause problems, right?
19:58:58 <fizzie> I'm not entirely sure how "min" is specified to work; that certainly looks like it should sort right.
19:59:26 <elliott> Perhaps it's treating "ar_title" as ar2.ar_title?
19:59:30 <elliott> In the subquery.
19:59:31 <fizzie> Yes, that's very possible.
19:59:45 <fizzie> In which case it'd yield min(ar_timestamp) over the whole archive table for each test.
19:59:56 <elliott> So I need MORE NAMES.
20:00:04 <fizzie> You may need to make the first archive an "archive a1" and then a1.'s there.
20:00:17 <elliott> mysql> select user_name from user where (select count(*) from revision where rev_user = user_id) = 0 and (select count(*) from archive a1 where a1.ar_user = user_id and a1.ar_timestamp = (select min(a2.ar_timestamp) from archive a2 where a2.ar_title = a1.ar_title and a2.ar_namespace = a1.ar_namespace) and exists (select * from logging where log_action = 'delete' and (log_namespace = 0 or log_namespace = 2) and log_comment like '%spam%' and log_ti
20:00:18 <elliott> tle = a1.ar_title and log_namespace = a1.ar_namespace)) > 0;
20:00:23 <elliott> This is the Worst Query Ever.
20:00:42 <elliott> 2860!
20:00:45 <elliott> I wonder which one DIED.
20:00:50 <elliott> fizzie: How do you diff two resultsets?
20:03:02 <fizzie> Gngh. It may be easiest to just stuff those results into two temporary tables, but of course that's not very pretty. I'm sure there's some way of just doing the whole thing as a single statement, too.
20:03:21 <elliott> ais523????? I bet he knows.
20:03:46 <ais523> I'm not very good at SQL
20:03:50 <elliott> fizzie: http://en.wikipedia.org/wiki/Set_operations_(SQL) Perhaps "EXCEPT"?
20:04:15 <fizzie> Yeah, I only remembered the UNION one.
20:04:27 <fizzie> That looks possible.
20:04:38 <fizzie> Assuming MySQL has it.
20:04:55 <elliott> (Ha, he makes the comedy.
20:04:56 <elliott> )
20:05:15 <elliott> mysql> (select user_name from user where (select count(*) from revision where rev_user = user_id) = 0 and (select count(*) from archive where ar_user = user_id and exists (select * from logging where log_action = 'delete' and (log_namespace = 0 or log_namespace = 2) and log_comment like '%spam%' and log_title = ar_title and log_namespace = ar_namespace)) > 0) except (select user_name from user where (select count(*) from revision where rev_user =
20:05:15 <elliott> user_id) = 0 and (select count(*) from archive a1 where a1.ar_user = user_id and a1.ar_timestamp = (select min(a2.ar_timestamp) from archive a2 where a2.ar_title = a1.ar_title and a2.ar_namespace = a1.ar_namespace) and exists (select * from logging where log_action = 'delete' and (log_namespace = 0 or log_namespace = 2) and log_comment like '%spam%' and log_title = a1.ar_title and log_namespace = a1.ar_namespace)) > 0);
20:05:22 <elliott> I am going to go back in time and put my childhood self off coding forever.
20:05:38 <fizzie> Did it actually accept that thing?
20:05:42 <elliott> No.
20:05:46 <elliott> It doesn't know what 'except" means.
20:05:55 <elliott> "Intersection and Set-Difference in MySQL (A workaround for EXCEPT)"
20:05:57 <fizzie> I don't think the syntax calls for ()s around the queries, either; but right.
20:06:00 <elliott> Arse.
20:06:07 <elliott> "To get the set difference, here is a similar approach using a sub query:
20:06:07 <elliott> SELECT DISTINCT *
20:06:07 <elliott> FROM R
20:06:07 <elliott> WHERE NOT EXISTS (SELECT * FROM S WHERE R.a = S.a AND R.b = S.b);
20:06:07 <elliott> "
20:06:07 <elliott> Arse.
20:06:10 <fizzie> There's the LEFT JOIN replacement also mentioned by the wikipedia page.
20:06:21 <elliott> fizzie: So, err, how do you stuff results into temporary tables?
20:07:25 <fizzie> It'd be INSERT INTO tbl SELECT user_name FROM ... except there's probably some notation to make a really temporary per-connection table, instead of a "real" one.
20:08:00 <elliott> I'm crying, you know.
20:08:01 <elliott> Because of SQL.
20:08:16 * elliott just inverts the check that's causing it.
20:08:21 <elliott> By enforcing it to _not_ be the minimum.
20:08:23 <elliott> CLEVER, NO?!
20:08:32 <elliott> Whirrrrrrrrr.
20:08:34 <elliott> Whirrrrr
20:08:36 <elliott> rrrr
20:08:38 <elliott> rrrq
20:09:19 <elliott> What, it returned the 130.
20:09:21 <elliott> I am the confused.
20:09:29 <fizzie> Hmm, that's: curious.
20:09:46 <elliott> I will apply the "not thinking about it" tactic.
20:11:26 -!- sebbu has quit (Read error: Connection reset by peer).
20:11:36 <elliott> ais523: I figure if we get the number of total accounts down to 1,000 or so, it'll be easy to hand-review the remaining ones
20:11:59 -!- sebbu has joined.
20:11:59 -!- sebbu has quit (Changing host).
20:11:59 -!- sebbu has joined.
20:12:12 <fizzie> Okay, here's a generic "return only the user_name's from [query1] that are not returned by [query2]" that might or might not work with MySQL:
20:12:16 <elliott> Oh god.
20:12:24 <fizzie> SELECT q1.user_name FROM (SELECT user_name FROM user WHERE [query1]) AS q1 LEFT JOIN (SELECT user_name FROM user WHERE [query2]) AS q2 ON q1.user_name = q2.user_name WHERE q2.user_name IS NULL
20:12:34 <elliott> Oh sure, leave me to do the pastering.
20:12:41 <fizzie> I've left out most of [query1] and [query2] in interests of brevity.
20:13:21 <elliott> mysql> SELECT q1.user_name FROM (SELECT user_name FROM user WHERE (select count(*) from revision where rev_user = user_id) = 0 and (select count(*) from archive where ar_user = user_id and exists (select * from logging where log_action = 'delete' and (log_namespace = 0 or log_namespace = 2) and log_comment like '%spam%' and log_title = ar_title)) > 0) AS q1 LEFT JOIN (SELECT user_name FROM user WHERE (select count(*) from revision where rev_user
20:13:21 <elliott> = user_id) = 0 and (select count(*) from archive where ar_user = user_id and exists (select * from logging where log_action = 'delete' and (log_namespace = 0 or log_namespace = 2) and log_comment like '%spam%' and log_title = ar_title and log_namespace = ar_namespace)) > 0) AS q2 ON q1.user_name = q2.user_name WHERE q2.user_name IS NULL;
20:13:28 <elliott> Wow, it's actually running.
20:13:57 <fizzie> You might've been able to use a NATURAL LEFT JOIN as opposed to LEFT JOIN ... ON q1.user_name = q2.user_name, actually.
20:14:26 -!- azaq23 has quit (Quit: Leaving.).
20:14:28 <elliott> Empty set (54.86 sec)
20:14:31 <fizzie> Heh.
20:14:34 <elliott> From this I conclude that 0 = 1 = 130.
20:14:54 <elliott> ais523: is it safe to delete users in an automated fashion from a database haunted by a ghost?
20:15:05 -!- azaq23 has joined.
20:15:08 <ais523> elliott: probably not
20:15:09 <fizzie> Where's the min(a2.ar_timestamp) in all of that?
20:15:17 <elliott> fizzie: Oh.
20:15:22 <elliott> That's the same query twice, isn't it?
20:15:27 <ais523> depends on what sort of ghost
20:15:27 <fizzie> It... might be.
20:15:35 <fizzie> It's so dazzling, it's hard to say.
20:15:57 <fizzie> (You want q1 to be the one that returns more rows.)
20:16:07 <elliott> mysql> SELECT q1.user_name FROM (SELECT user_name FROM user WHERE (select count(*) from revision where rev_user = user_id) = 0 and (select count(*) from archive where ar_user = user_id and exists (select * from logging where log_action = 'delete' and (log_namespace = 0 or log_namespace = 2) and log_comment like '%spam%' and log_title = ar_title)) > 0) AS q1 LEFT JOIN (SELECT user_name FROM user WHERE (select count(*) from revision where rev_user
20:16:07 <elliott> = user_id) = 0 and (select count(*) from archive a1 where a1.ar_user = user_id and a1.ar_timestamp = (select min(a2.ar_timestamp) from archive a2 where a2.ar_title = a1.ar_title and a2.ar_namespace = a1.ar_namespace) and exists (select * from logging where log_action = 'delete' and (log_namespace = 0 or log_namespace = 2) and log_comment like '%spam%' and log_title = a1.ar_title and log_namespace = a1.ar_namespace)) > 0) AS q2 ON q1.user_name = q
20:16:08 <elliott> 2.user_name WHERE q2.user_name IS NULL;
20:16:10 <elliott> OKAY HERE WE GO.
20:16:51 <fizzie> SQL: so concise and expressive.
20:17:10 <elliott> +-----------+
20:17:11 <elliott> | user_name |
20:17:11 <elliott> +-----------+
20:17:11 <elliott> | Beary605 |
20:17:11 <elliott> +-----------+
20:17:11 <elliott> 1 row in set (53.64 sec)
20:17:14 <elliott> Finally mathematiques prevails.
20:17:30 <elliott> ais523: wow
20:17:39 <elliott> ais523: that's the one user that registered to solely blank a single spam page
20:17:43 <elliott> we saved them
20:17:50 <ais523> haha, brilliant :)
20:18:52 <elliott> fizzie: Did anyone ever make a database where you just plug in propositional logic for the queries?
20:19:29 -!- pikhq has quit (Ping timeout: 245 seconds).
20:19:40 -!- pikhq has joined.
20:19:50 <oerjan> i vaguely recall Altavista had that
20:20:07 -!- Taneb has joined.
20:20:16 <elliott> what, as in a servery database program thing?
20:20:17 * oerjan slightly wonders why elliott couldn't just use diff somehow
20:20:29 <oerjan> no, as in the search engine.
20:20:31 <fizzie> oerjan: This way was certainly more elegant.
20:20:43 <elliott> diff would have required copying lots of lines into files
20:20:48 <Taneb> Hello!
20:21:05 <oerjan> hello!
20:21:20 <fizzie> Some of the persistence things might be slightly kinda-sorta like that, but not like that at all. (But you don't write SQL or relational algebra in all of them; they have different sorts of ways of getting results. Though mostly I think just starting with sets and filtering them down using predicates.)
20:21:32 <elliott> fizzie: No, I didn't say relational algebra.
20:21:39 <elliott> I want bona-fide set theory. :(
20:23:26 <Phantom_Hoover> Random esolang idea: all control flow is done by altering the metric of the instruction space.
20:23:36 <elliott> Phantom_Hoover: DO YOU KNOW WHAT WE'VE BEEN THROUGH
20:23:40 <elliott> AND ALL YOU CAN TALK ABOUT IS ESOLANGS
20:23:45 * elliott cries
20:23:48 <Phantom_Hoover> Instructions are continuous, and data storage is also done with metric distortions.
20:23:57 <Phantom_Hoover> elliott, a metric distortion? If so: do tell.
20:24:55 <elliott> Phantom_Hoover: SPAM
20:24:57 <elliott> SPAM EVERYWHERE
20:25:00 <elliott> SPAM IN THE KITCHEN
20:25:01 <elliott> SPAM IN THE BED
20:25:03 <elliott> SPAM IN MY HEAD
20:25:25 <Phantom_Hoover> did it get in through a metric distortion
20:25:28 <elliott> yes
20:25:34 <Phantom_Hoover> how
20:26:32 <Taneb> elliott's kitchen and bed and head are all measured in decimetres
20:26:44 <Taneb> If they were in imperial, everything would be better
20:27:04 <Taneb> Of course, they're based on the old decimetre, that is, the rod of metal in Paris
20:27:21 <elliott> fizzie: You know, a nice additional condition would be if it excluded users with talk pages... HINT HINT
20:27:32 <elliott> Also backup to self: select user_name from user where (select count(*) from revision where rev_user = user_id) = 0 and (select count(*) from archive a1 where a1.ar_user = user_id and a1.ar_timestamp != (select min(a2.ar_timestamp) from archive a2 where a2.ar_title = a1.ar_title and a2.ar_namespace = a1.ar_namespace) and exists (select * from logging where log_action = 'delete' and (log_namespace = 0 or log_namespace = 2) and log_comment like '%sp
20:27:32 <elliott> am%' and log_title = a1.ar_title and log_namespace = a1.ar_namespace)) > 0;
20:27:38 <Taneb> Due to the recent weather, that rod has distorted, bringing chaos to the old metric system
20:28:23 <Phantom_Hoover> oh
20:28:24 <Phantom_Hoover> my god
20:28:26 <Phantom_Hoover> if
20:28:50 <Taneb> Previously, elliott's spam guards were just big enough. But as the parisian rod has shrunk, so has his guards, thus letting in the spam
20:29:01 <Phantom_Hoover> i do a little upwards flick from 2/3 of the line right before a 1
20:29:05 <Phantom_Hoover> it looks amazing
20:29:10 <elliott> can we stop talking about my rod
20:29:10 <mRoman> What rod?
20:29:12 -!- zzo38 has joined.
20:29:12 <elliott> Phantom_Hoover: what
20:29:16 <Taneb> The parisian rod
20:29:26 <elliott> is Phantom_Hoover talking about how he writes numbers
20:29:28 <elliott> please somenoe say no
20:29:45 <Phantom_Hoover> yes
20:29:49 -!- Taneb has changed nick to somenoe.
20:29:50 <somenoe> No
20:29:54 <mRoman> Aren't there scientific specification of how long a meter is?
20:29:55 <mRoman> Like
20:30:01 -!- somenoe has changed nick to Taneb.
20:30:05 <Taneb> Not in the old system
20:30:05 <elliott> mRoman: it's the kilogram that isn't "specified"
20:30:09 <elliott> nowadays
20:30:12 <mRoman> Yes.
20:30:19 <Phantom_Hoover> this is almost as world-shattering as when I worked out how to write a )( x without lifting the pen
20:30:25 <elliott> Phantom_Hoover
20:30:27 <elliott> i'm sorry but
20:30:30 <elliott> you're REALLY BORING
20:30:44 <mRoman> without lifting the pen sounds like bending the paper
20:31:00 <Phantom_Hoover> mRoman, the metre is specified in terms of the distance light travels in <time>.
20:31:17 <mRoman> I know.
20:31:50 <Taneb> From 1889 to 1960, it was based on a rod in Pavillon de Bretuil
20:31:53 <mRoman> Those definitions are in the law ;)
20:31:54 <Taneb> Which is near Paris
20:32:21 <fizzie> elliott: If talk page titles equal user names, I suppose that's just an additional "... and not exists (select 1 from pagesorwhatever where title = user_name and namespace = talkytalky)" at the very end of the query, as an additional filter.
20:33:10 <elliott> mysql> select user_name from user where (select count(*) from revision where rev_user = user_id) = 0 and (select count(*) from archive a1 where a1.ar_user = user_id and a1.ar_timestamp != (select min(a2.ar_timestamp) from archive a2 where a2.ar_title = a1.ar_title and a2.ar_namespace = a1.ar_namespace) and exists (select * from logging where log_action = 'delete' and (log_namespace = 0 or log_namespace = 2) and log_comment like '%spam%' and log_t
20:33:10 <elliott> itle = a1.ar_title and log_namespace = a1.ar_namespace)) > 0 and not exists (select * from page where page_namespace = 2 and page_title = user_name);
20:33:15 <elliott> Finally, the worst query.
20:33:32 <oerjan> any users which don't exist will have to deal with this manually.
20:33:50 <elliott> what
20:33:52 <elliott> now its only 130
20:34:05 <elliott> what.... HAPPENED
20:34:07 <elliott> oh maybe
20:34:09 <elliott> page never expires
20:34:20 <elliott> yes indeed.
20:34:21 <elliott> so sad.
20:34:28 <oerjan> elliott: you should get Phantom_Hoover to rewrite your numbers. i hear he's quite amazing at it.
20:34:50 <elliott> oh well sucks for the
20:34:51 <elliott> user page
20:34:52 <fizzie> Is that your != min(...) thing too?
20:34:52 <elliott> spammers
20:34:53 <Phantom_Hoover> also letters
20:35:00 <elliott> fizzie: oh, fuck
20:35:20 <elliott> select user_name from user where (select count(*) from revision where rev_user = user_id) = 0 and (select count(*) from archive a1 where a1.ar_user = user_id and a1.ar_timestamp = (select min(a2.ar_timestamp) from archive a2 where a2.ar_title = a1.ar_title and a2.ar_namespace = a1.ar_namespace) and exists (select * from logging where log_action = 'delete' and (log_namespace = 0 or log_namespace = 2) and log_comment like '%spam%' and log_title = a
20:35:20 <elliott> 1.ar_title and log_namespace = a1.ar_namespace)) > 0;
20:35:21 <elliott> ok this is
20:35:22 <elliott> the OFFICIAL
20:35:56 <elliott> now its 2860
20:36:13 <oerjan> !slashes /x/SPAM /xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
20:36:13 <elliott> ais523: what if we just deleted everyone?
20:36:14 <EgoBot> SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM
20:36:16 <elliott> that would be really simple
20:36:28 <ais523> elliott: err, bad idea :)
20:37:20 <elliott> maybe i should not propose ideas like that when I'm (a) sleep-deprived and (b) have a MySQL console connected to the live database
20:37:45 <elliott> relatedly: good night
20:38:01 <fizzie> Good DROP TABLE night.
20:38:07 <elliott> oops I accidentally deleted the universe
20:38:21 <oerjan> it's ok it was broken anyway
20:38:26 <elliott> I think I'll find some more easy spambot queries to build on top of that one and assemble them into one gigantic query
20:38:30 <olsner> looks weird when you put a verb after accidentally like that
20:38:55 <oerjan> `addquote <elliott> oops I accidentally deleted the universe <olsner> looks weird when you put a verb after accidentally like that
20:38:56 <ion> IO# (\_ -> (undefined, undefined)) Whoops, i accidentally the universe with bottom.
20:38:59 <HackEgo> 811) <elliott> oops I accidentally deleted the universe <olsner> looks weird when you put a verb after accidentally like that
20:39:11 <ion> olsner: Haha
20:39:15 -!- calamari has joined.
20:39:28 <zzo38> You asked for a MediaWiki extension program to use my TeX format file in MediaWiki; I can try to look at the codes for for <math> extension and make a <tex> extension like that? But, is the server UNIX, how do you limit memory/time and how do you have TeX installed?
20:39:29 <kmc> kind error
20:39:45 <ion> undefined#?
20:39:49 <kmc> no such thing
20:39:49 <ion> :-P
20:39:51 <kmc> ;P
20:40:04 <oerjan> @src IO
20:40:04 <lambdabot> Source not found. Just what do you think you're doing Dave?
20:40:10 <oerjan> dammit
20:40:12 <kmc> maybe i should publish that Maybe# implementation i wrote while drunk
20:40:14 <elliott> hi zzo38!
20:40:15 <elliott> GOODNIGHT ZZO38
20:40:17 <elliott> and everyone
20:40:19 <oerjan> i think there's not # on the IO, though
20:40:25 <Taneb> Goodnight, elliott.
20:41:10 <zzo38> kmc: OK please show me.
20:41:17 <oerjan> good night, sweet prince
20:41:20 * oerjan ducks
20:41:42 <kmc> http://hpaste.org/56370
20:41:49 -!- elliott has quit (Read error: Operation timed out).
20:41:56 <zzo38> And I think there should be undefined# which acts like "undef" values in LLVM.
20:42:03 <kmc> oh dear
20:43:07 <zzo38> Because if there is such a thing as undefined# it seems that is what it should do.
20:44:58 <mRoman> wow
21:06:26 <Phantom_Hoover> Anyone remember the discussion about conservative, reversible, universal CAs we had a while back?
21:08:10 <kmc> this code has the drawback that nothing# == just# nothing#
21:08:18 <quintopia> they exist, PH?
21:08:24 <quintopia> do tell
21:08:47 <Phantom_Hoover> Almost certainly, but I don't think you actually need the conservative part for the interesting properties.
21:09:25 <Taneb> What does universal mean in this context?
21:10:54 <Phantom_Hoover> It's equivalent to 'TC', AFAIK.
21:11:37 <Taneb> And conservative?
21:12:30 <Phantom_Hoover> The number of cells in each state is constant.
21:15:15 <oerjan> as usual, TC/universal gets a bit fishy with infinite setup models
21:15:40 <Taneb> I'm not sure if it's possible
21:15:55 <quintopia> well
21:15:59 <Taneb> Unless constant == infinite?
21:16:08 <Taneb> Or a state is smaller than I think
21:16:16 <oerjan> presumably it's supposed to be a local conservation
21:16:40 <quintopia> could such a thing be totalistic?
21:16:43 <oerjan> like with energy in the real world
21:17:12 <quintopia> i dont think any reversible totalistic CAs on the moore neighborhood are very interesting?
21:17:56 <Phantom_Hoover> oerjan, yeah, except I think if you're talking about computing reversibility already imposes a conservation law.
21:18:21 <Phantom_Hoover> And in a CA setting it's as interesting as those imposed by conservatism.
21:18:21 <oerjan> Phantom_Hoover: not number of cells in each state, though
21:19:20 <oerjan> but to formulate it locally you'd want something like "the number of cells in each state in a region cannot change by more than a constant times the size of its border"
21:19:48 <oerjan> to allow things to leave and enter
21:20:46 <quintopia> you could be more strict than that in a CA with an infinitely tiled default pattern
21:21:36 <oerjan> well yes if you allow only a finite region to be different
21:22:14 <oerjan> although what if the default pattern is changing, like for rule 110
21:22:36 <oerjan> (the rule 110 aether has a period 7 evolution)
21:22:45 <quintopia> it doesnt change by much in rule 110
21:23:00 <quintopia> up and down by a few cells
21:23:11 <oerjan> i suppose you can adjust for that shift when counting
21:23:30 <quintopia> you could specify that the average has to stay constant across sufficiently many generations
21:23:54 <oerjan> but that doesn't have to be the case for a general CA. although if it's periodic, you might just look at change over multiples of the time period
21:24:55 <quintopia> im not sure what the goal of conservatism is really
21:25:17 <oerjan> to have a sort of analogy to energy?
21:25:48 <oerjan> which imposes a kind of order
21:26:18 <Jafet> IM'MA FIRIN' MAH ELECTRONZ
21:26:25 * oerjan wonders if there is a class of CAs with an analogy to noether's theorem
21:26:54 <Jafet> A counter machine can be implemented by a conservative automaton
21:27:27 <quintopia> oerjan: couldnt you get the same kind of order by specifying a nearly constant state density? instead of proportional to the surface area?
21:28:04 <oerjan> quintopia: well my idea here is to prevent chaos from spreading too fast
21:28:21 <Phantom_Hoover> <oerjan> to have a sort of analogy to energy?
21:28:21 <Phantom_Hoover> <oerjan> which imposes a kind of order
21:28:31 <Phantom_Hoover> Thing is, this is entailed by reversibility.
21:28:32 <oerjan> hm well you always have the CA lightspeed
21:29:04 <oerjan> Phantom_Hoover: do you get something like a lagrangian? :D
21:29:24 <oerjan> (note: i never took enough physics to understand those properly)
21:29:25 <Phantom_Hoover> Any non-surjective function from inputs to outputs has to discard bits.
21:29:47 <Phantom_Hoover> Although hmm, I'm not sure if that imposes an energy _input_ requirement.
21:31:13 <oerjan> my physics classes got cut short when i discovered my acute aversion to writing lab reports.
21:34:18 <Sgeo> Phantom_Hoover, Taneb kallisti: Just letting you know that the last update was an [S]. If you have already seen an [S], there is not another.
21:34:38 <Sgeo> (Besides the easter egg)
21:34:53 <oerjan> shouldn't it be more like a lent egg
21:34:59 <Phantom_Hoover> oerjan, isn't the Lagrangian, like, energy and then you take the derivative?
21:35:19 <Taneb> Sgeo, thanks, I've seen it
21:35:35 <Phantom_Hoover> how see eastre eg
21:35:59 <oerjan> Phantom_Hoover: well yes, although you have to think of it in the right way with potential vs. kinetic energy
21:36:18 <oerjan> and dependence on position vs. momentum
21:36:24 <Sgeo> Phantom_Hoover, same place as the corresponding [S]
21:36:35 <Sgeo> Or, http://www.mspaintadventures.com/?s=6&p=pony2
21:36:48 <oerjan> and there's the other way which gives the hamiltonian, and i don't have that part clear in mind
21:37:00 * kmc follows the Principle of Least Action
21:37:46 <oerjan> actually strangely it's the _quantum_ formulation which i find easiest to understand, iiuc
21:38:23 <oerjan> because the hamiltonian operator is just in a sense the derivative of the time evolution
21:38:52 -!- adam_ has joined.
21:38:53 <oerjan> (or the time evolution is the exponential of the hamiltonian)
21:38:57 -!- adam_ has changed nick to kallisti.
21:39:00 <kallisti> oh hai gaiz
21:39:06 <oerjan> hai adam
21:39:14 <kallisti> hai oerjan.
21:39:21 <kallisti> are you amazing at configuring wireless?
21:39:30 <kallisti> I'm having issues with both nm-applet and wicd
21:39:40 <oerjan> confuddling, maybe
21:39:57 <Sgeo> kallisti, did you see the [S] update?
21:40:16 <kallisti> no
21:40:22 <kallisti> I actually haven't been paying attention at all to homestuck
21:40:34 <kallisti> I find it more enjoyable to read in bulk
21:41:12 <kallisti> anyone else using xmonad? what do you do to set up wireless?
21:41:28 <kallisti> I'm beginning to think it's either a problem with gnome-keyring-daemon or the DHCP client...
21:41:31 <kallisti> but I have no clue.
21:41:32 <Phantom_Hoover> Meanwhile, Prequel continues to update with DEPRESSING INFREQUENCY
21:41:49 -!- monqy has joined.
21:42:14 <oerjan> Phantom_Hoover: THEY'RE RUNNING OUT OF PAST
21:42:20 <kallisti> monqy: hi. do you use wireless?
21:42:33 <monqy> hi
21:42:34 <monqy> no
21:42:37 <kallisti> I'm trying to set up nm-applet in my shiny new Debian xmonad box.
21:42:38 <monqy> except when I do
21:42:44 <Phantom_Hoover> monqy, don't tell him, he is a wireless paedophile
21:42:49 <monqy> oh no
21:43:12 -!- Phantom_Hoover has left ("Leaving").
21:43:16 -!- Phantom_Hoover has joined.
21:43:23 <kallisti> currently I can only use wired.
21:43:40 <Phantom_Hoover> wireless paedophile snuck up on me but i threw cat at it
21:44:20 <monqy> my parents told me never to talk to wireless paedophiles
21:44:45 <kallisti> my hand configuration of choice now seems to be to smash my thumb on top of the windows key and roll my other fingers across the number keys like a madman.
21:45:12 <kallisti> I wouldn't want to miss anything on irssi.
21:45:21 -!- Taneb has quit (Read error: Connection reset by peer).
21:45:46 <kallisti> so... yeah
21:45:54 <kallisti> something is seriously fucked up.
21:46:00 <monqy> eh?
21:46:10 <kallisti> I don't even know where to start.
21:46:39 <kallisti> at first I didn't have access to network controls, so I had to run my xsession script under ck-launch-session
21:47:03 <kallisti> but whenever I clicked on a wireless network in nm-applet, absolutely nothing happens.
21:47:06 <kallisti> until
21:47:12 <kallisti> I installed dhcpcd-dbus
21:47:15 <kallisti> and then, a prompt appears...
21:47:21 <kallisti> but then when I type in the key
21:47:30 <kallisti> a new, empty, prompt immediately reappears, and nothing else happens
21:47:58 <kallisti> no errors in .xsession-errors, no errors in /var/logs/daemon.log... it just stops at step 2 of 4 or something blah blah normally stuff happening
21:48:01 <kallisti> *normal
21:48:25 <monqy> I'm bad and whenever I do wireless I do everything by hand w/ ifconfig/iwconfig/iwlist/etc
21:48:40 <monqy> oh and dhcpcd yep
21:49:12 <kallisti> whenever I do that it hangs on the dhcp part.
21:49:34 <kallisti> so perhaps I don't have that configured correctly (read: at all)
21:51:11 -!- kallisti has quit (Quit: Lost terminal).
21:51:40 -!- kallisti has joined.
21:51:44 <fizzie> I think Ubuntu's default setup (which is what I use on the Gnome+xmonad laptop) has nm-applet use dhclient instead of dhcpcd. But I haven't tried to to get it working outside of a Gnome session.
21:51:46 <kallisti> oh hi guys.
21:51:57 -!- ais523 has quit (Ping timeout: 276 seconds).
21:53:04 <mRoman> *beam code running*
21:54:04 <kallisti> fizzie: how do I configure nm-applet and tell it what dhclient to use.
21:54:18 <kallisti> er
21:54:19 <kallisti> dhcp client
21:55:28 <mRoman> ah rats
21:55:32 <mRoman> it's buggy :(
21:58:07 <mRoman> I damn hope it's a misplaced decrement
21:58:09 <fizzie> No clue; I mean, I haven't really "configured" nm-applet at all. After all, it's supposed to "just work".
21:58:51 <mRoman> ok no.
21:58:54 <fizzie> "man NetworkManager.conf" claims "dhcp=dhclient" and/or "dhcp=dhcpcd" can be used to select the preferred one.
21:59:23 <fizzie> (Assuming support for both is compiled in.)
22:01:13 <kallisti> [main]
22:01:14 <kallisti> plugins=ifupdown,keyfile
22:01:14 <kallisti> [ifupdown]
22:01:14 <kallisti> managed=false
22:05:41 <kallisti> oh wait
22:05:43 <kallisti> looool
22:05:46 <kallisti> I bet this is a firmware problem.
22:05:53 <kallisti> I probably installed the wrong firmware.
22:08:07 <kallisti> no, correct firmware installed
22:10:00 -!- pikhq_ has joined.
22:10:17 <kallisti> pikhq_: hi dhcp appears to be broken what do?
22:10:28 -!- pikhq has quit (Ping timeout: 272 seconds).
22:10:36 <kallisti> ha.
22:11:04 <pikhq_> kallisti: Murder
22:14:00 <kallisti> whenever I'm prompted to type in the network key by nm-applet it just repeats the prompt and removes the key...
22:14:28 <kallisti> and whenever I use wicd it hangs on "obtaining IP address"
22:14:44 <kallisti> so it could be a dhcp problem? or possibly a gnome-keyring-daemon problem?
22:14:47 <kallisti> ...I don't even know.
22:15:03 <kallisti> I haven't managed to find any useful error messages.
22:15:06 <kallisti> it just kind of silently doesn't work.
22:16:30 <fizzie> It could be any problem, since DHCP is the first thing that gets done. I don't suppose you have a /var/log/wpa_supplicant.* or somesuch?
22:16:51 <kallisti> well, it's a WEP network actually. but I notice there's also no dialog to select encryption like there was in Ubuntu.
22:17:01 <kallisti> lemme check though
22:17:47 <kallisti> no nothing specifically for wpa_supplicant
22:18:45 <fizzie> Mhm, well, I'd suppose it's only used for actual WPA anyway. (But it logs into stdout, and can therefore end up wherever.)
22:18:52 <kallisti> http://hpaste.org/64402
22:19:00 <kallisti> here's /var/log/daemons.log or whatever it's called
22:19:14 <kallisti> shows what network-manager is doing
22:19:51 <mRoman> \o/
22:19:52 <myndzi> |
22:19:52 <myndzi> |\
22:19:55 <mRoman> !celebrate
22:20:01 <mRoman> I did it.
22:21:02 <kallisti> maybe I should give wicd another shot... even though it seems kind of bad.
22:21:09 <kallisti> strangely slow and hangup-ish
22:21:11 <fizzie> You can put in "[logging] level=DEBUG" in NetworkManager.conf, maybe it'll say more, then. (But it sounds as if it's confused.)
22:21:30 <mRoman> http://esolangs.org/wiki/Beam#Compare
22:21:34 <kallisti> and restart network-manager right?
22:21:51 <fizzie> Right.
22:23:06 <mRoman> I can decide which number is smaller :)
22:23:37 <fizzie> ^celebrate
22:23:38 <fungot> \o| |o| |o/ \m/ \m/ |o/ \o/ \o| \m/ \m/ \o| |o| |o/
22:23:39 <myndzi> | | | `\o/´ | | | `\o/´ | | |
22:23:39 <myndzi> /| |\ >\ | /| /| /< | /< /< /^\
22:23:39 <myndzi> /`\ (_|¯´\
22:23:39 <myndzi> (_| |_) |_)
22:23:49 <fizzie> (Different bot.)
22:26:34 <mRoman> * Kool & The Gang - Celebration *
22:27:06 <kallisti> http://hpaste.org/64410 here's the debug log
22:27:30 <mRoman> 1980's hit
22:29:58 <ion> \o/ \☺/
22:30:11 <ion> \o/
22:30:16 <fizzie> It looks as if it's having some trouble asking for/getting the WEP key, but other than that hard to say.
22:30:19 <ion> Ok, myndzi only responds to fungot?
22:30:19 <fungot> ion: the random number gods are laughing at you, too
22:30:31 <fizzie> ion: Your name is too short.
22:30:35 <fizzie> Add more spaces.
22:30:42 <mRoman> ion: No
22:30:46 <ion> Ah, of course. :-P
22:30:47 <mRoman> It responded to my \o/
22:30:48 <myndzi> |
22:30:48 <myndzi> |\
22:31:00 <ion> \o/ \☺/
22:31:00 <myndzi> |
22:31:00 <myndzi> /<
22:31:06 <mRoman> Why don't I have a Kool & The Gang CD
22:31:08 -!- tzxn3 has quit (Read error: Connection reset by peer).
22:31:21 <fizzie> Doesn't do the dude-with-the-face.
22:31:31 <mRoman> \o|
22:31:32 <myndzi> |
22:31:32 <myndzi> |\
22:37:40 <calamari> /o/
22:37:41 <myndzi> ¦
22:37:41 <myndzi> ´¸¨
22:39:54 -!- Vorpal has quit (Ping timeout: 245 seconds).
22:40:12 <oerjan> myndzi supports disabled people
22:47:35 -!- PiRSquared17 has joined.
22:48:16 <PiRSquared17> I missed the party
22:48:42 -!- calamari has quit (Quit: Leaving).
22:48:48 <oerjan> don't worry, they were all communists anyhow
22:53:57 <mRoman> Communism ftw.
23:00:29 <Sgeo> http://www.stationv3.com/d/20120220.html
23:00:31 <Sgeo> >.>
23:01:59 <oerjan> that was the comic they traded, right?
23:02:20 -!- kallisti has quit (Quit: Lost terminal).
23:02:27 <Sgeo> ...
23:19:47 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
23:30:08 -!- augur has quit (Remote host closed the connection).
←2012-02-25 2012-02-26 2012-02-27→ ↑2012 ↑all