←2011-08-12 2011-08-13 2011-08-14→ ↑2011 ↑all
00:00:07 <CakeProphet> I think he's just confusing reals with integers.
00:00:10 <itidus20> there is no real number n which exists whereby real number n+1 does not exist
00:00:19 <elliott> itidus20: same for naturals...
00:00:47 <oerjan> itidus20: true. the number of real numbers is _not_ a real number, it's something else called a transfinite cardinal number
00:01:02 <itidus20> orosu
00:01:08 <elliott> oerjan: you might have left off the "transfinite" part :P
00:01:21 <itidus20> ahh ok cool
00:01:28 <oerjan> well transfinite here means just "beyond the finite ones"
00:01:38 <oerjan> the finite ones are just the natural numbers
00:03:00 <itidus20> ah ok so the thing about real numbers then is that they are supposed to have leading and trailing zeros
00:03:13 <PatashuWarg> really?
00:03:16 <elliott> what
00:03:17 <oerjan> "infinity" tends to lead to different concepts depending on exactly what property of finite numbers you are generalizing. cardinals are when you are generalizing the size of sets.
00:03:18 <PatashuWarg> what about 0.3333333333...
00:03:39 <itidus20> that one has leading zeros :D
00:03:53 <elliott> itidus20: Specifically the number of real numbers is ב‎₁ (usually taken, by axiom, to be equal to א‎₁)
00:03:53 <PatashuWarg> AND trailing zeros you said
00:03:57 <elliott> oerjan: am i helpnig
00:03:57 <PatashuWarg> if you mean or or xor then say so
00:04:03 <itidus20> i know .. you win
00:04:11 <elliott> arguments aren't about winning hth
00:04:31 <itidus20> for some reason.. it rarely occurs that a person says ...333.0
00:04:33 <oerjan> itidus20: leading zeros, not necessarily trailing (only numbers of the form a/10^n where a and n are integers have that
00:04:38 <elliott> itidus20: that's not a real number
00:04:43 <elliott> it is a p-adic number, though
00:04:54 <itidus20> what about ...333.333...
00:04:55 <quintopia> PatashuWarg: let's write it in base 3: 0.10 see the leading and trailing zeroes?
00:05:03 <PatashuWarg> curses!
00:05:05 <elliott> itidus20: that's not a p-adic number.
00:05:09 <itidus20> what is that?
00:05:13 <elliott> http://en.wikipedia.org/wiki/P-adic_number
00:05:20 <elliott> a system not the same as the real numbers
00:05:25 <elliott> left-infinite rather than right-
00:05:48 <itidus20> suppose you have left and right infinite.. you're just up to your knees in shit then? :D
00:06:03 <quintopia> you could do it
00:06:11 <quintopia> just devise your own system
00:06:20 <itidus20> its just never come up?
00:06:40 <quintopia> for bonus points devise a system where no number has more than 2 representations (which is a nice property of the standard real numbers)
00:06:48 <itidus20> oh i mean im sure in some backwards corner of mathematics its already been done dont get me wrong im not that arrogant
00:07:34 <oerjan> <elliott> oerjan: am i helpnig <-- my putty may be broken, but i suspect you hit some trouble with hebrew right-left writing there
00:07:55 <itidus20> PatashuWarg: sorry i have issues
00:08:28 <itidus20> yes 0.333... is a fantastic example of a number which does not have infinite trailing zeros
00:08:39 <itidus20> which i did not think of when i made my statement
00:08:59 <CakeProphet> BD
00:09:05 <elliott> oerjan: i tried to insert overrides
00:09:06 <oerjan> itidus20: i cannot recall any use for numbers which have both leading and trailing ... oh wait, maybe hyperreals count
00:09:13 <elliott> itidus20: backwards corner?
00:09:26 <oerjan> elliott: ah. maybe putty just didn't notice.
00:09:32 <PatashuWarg> both leading and trailing ... sounds like a higher cardinality than reals
00:09:35 <CakeProphet> elliott: he's talking about number theory of course.
00:09:45 <CakeProphet> the most perverse corner of mathematics.
00:10:16 <itidus20> elliott: noone can account for the activities of mathematicians...
00:10:25 <oerjan> elliott: also, i wouldn't really call the continuum hypothesis "usual", i haven't really seen much math assuming anything about it
00:10:42 <elliott> oerjan: fair enough; I was under the impression it was usually taken to be true rather than false
00:10:52 <oerjan> beyond that which investigates it specifically
00:10:52 <PatashuWarg> actually, nvm. it isn't
00:11:06 <elliott> oerjan: the cardinality of the reals is often casually referred to as aleph-one, though, isn't it?
00:11:10 <elliott> which is the point i was trying to make
00:11:10 <oerjan> elliott: well that's what Cantor wanted :P
00:11:25 <itidus20> lets face it guys.. babbage built a computer... noone else had anything like it going on at the time... you never know what rabbit a mathematician is gonna pull out of a hat next
00:12:54 <quintopia> babbage did not build a computer
00:12:57 <quintopia> he designed one
00:12:57 <itidus20> i can't really explain why history seems more exciting when it happened over 100 years ago.. but it does
00:12:58 <oerjan> elliott: there are some popular math books which confuses them, i think
00:13:06 <quintopia> you should go back in time and give him money to build it
00:13:21 <itidus20> ok
00:13:23 <quintopia> (we actually might build an analytical engine soon. someone is looking for funding to do it.)
00:13:36 <itidus20> so he built a fancy calculator, and designed a computer
00:13:37 <PatashuWarg> I thought it was already built?
00:13:40 <PatashuWarg> oh, right
00:14:13 <quintopia> it will easily fill a room. it will be quite expensive
00:14:37 <itidus20> and does it have much power?
00:15:23 <quintopia> well, it's turing-complete!
00:15:34 <elliott> is it? no fixed bitwidth?
00:15:37 <quintopia> so ... it can do anything your computer can, given enough time and a big enough store!
00:16:15 <quintopia> (babbage reckoned it could multiply two twenty digit numbers in under three minutes)
00:19:35 <itidus20> the signifigance being, I imagine, that it could do it all day
00:21:05 <itidus20> aha.. so ...9999=-1.
00:21:32 <oerjan> in the 10-adics
00:22:23 <CakeProphet> quintopia: have you read The Difference Engine.
00:22:45 * itidus20 laughs to myself. oerjan: I think I will just let it go this time.
00:22:57 <oerjan> unlike for real numbers in different bases, the different p-adic number sets (n-adics? 10 isn't prime so...) aren't just different representations of the same set
00:25:11 * CakeProphet laughs with itidus20 at me.
00:25:38 <CakeProphet> s/at/to/
00:25:45 * Gregor laughs at his seemingly-unique ability to use pronouns properly in /me.
00:26:26 <CakeProphet> how third-person of you.
00:26:29 <CakeProphet> ZING!
00:26:48 * itidus20 has probably detected a fault in my thinking patterns.... .... go him
00:27:23 <Gregor> itidus20: Even for what you were attempting, that's the wrong person, "me" is the software.
00:27:36 <elliott> * Gregor laughs at his seemingly-unique ability to use pronouns properly in /me.
00:27:38 <elliott> ais does it too
00:27:46 <elliott> :P
00:27:47 <elliott> also me
00:27:56 <CakeProphet> and I.
00:27:59 <quintopia> CakeProphet: of course
00:28:00 <itidus20> Gregor: When I said "laughs to myself" it was a genuine mistake, not a joke.
00:28:01 <monqy> I just don't use /me
00:28:04 <elliott> <oerjan> unlike for real numbers in different bases, the different p-adic number sets (n-adics? 10 isn't prime so...) aren't just different representations of the same set
00:28:09 <elliott> hm are the ten-adics even valid?
00:28:18 <monqy> a few years ago I used to use /me, and when I did, I used pronouns properly
00:28:19 <itidus20> It may be related to some kind of neurosis
00:28:25 <elliott> I would think the fact that p isn't prime would, you know...
00:28:44 <CakeProphet> itidus20: yes. I often attribute my typos to my cancerous schizophrenia.
00:28:49 * Gregor says, "But this is the only way to speak."
00:28:55 <elliott> Gregor: Shut up Eliezer.
00:30:13 <itidus20> CakeProphet: it was more than a typo
00:30:31 <CakeProphet> actually it would explain a lot of things if I were actually schizophrenic. Or something less in severity.
00:31:00 <CakeProphet> itidus20: I frequently misconjugate words or just type the wrong word. Ask anyone here.
00:31:18 <monqy> sometimes I make typoes.
00:31:45 <CakeProphet> it's not like... a mental problem. Just carelessness or thinking too fast.
00:31:54 <itidus20> I'm not "ok". But sure one can say that noone is perfect.
00:32:31 <itidus20> And indeed, the kinds of troubles I have all seem to relate to interactions with the other humans
00:32:36 <CakeProphet> -____-
00:32:54 <monqy> except for the ones that don't
00:32:58 <CakeProphet> #esoteric-therapy
00:33:18 <itidus20> I would do just as good as the next guy in some post-armageddon where I was the sole-survivor
00:34:00 <CakeProphet> I would build and program zombie slaying robots if I survived long enough to find the parts.
00:34:19 <PatashuWarg> I'm not prepared for a zombie invasion, and that's OK
00:34:40 <CakeProphet> and, most likely, the library of reference material I would need to know how to do everything without the internet. It is a crutch.
00:35:33 <CakeProphet> PatashuWarg: I'm glad you've accepted that.
00:35:42 <CakeProphet> this is what #estoeric-therapy is all about: Acceptance
00:36:22 <CakeProphet> you need to bring your FSA to an accepting state.
00:36:55 <itidus20> I can accept that I don't need to know what an FSA is to get the gist of what you're saying.
00:36:55 <oerjan> <elliott> hm are the ten-adics even valid? <-- as a ring, sure, but only primes extend to a field iirc
00:37:07 <elliott> im feld
00:37:34 <CakeProphet> itidus20: to get my totally awesome joke you need to know about it though.
00:38:04 <itidus20> Finite State Automaton?
00:38:22 <oerjan> elliott: specifically, i think the 10-adics have numbers divisible indefinitely by 2 and indefinitely by 5, and if you multiply those you get 0
00:38:29 <CakeProphet> itidus20 levels up his Google skill.
00:38:34 <CakeProphet> yes.
00:38:36 <itidus20> bah
00:38:38 <elliott> oerjan: thats how felds works,,
00:38:40 <itidus20> i didnt google it :>
00:38:46 <monqy> :o
00:38:53 <CakeProphet> I... google things all the time.
00:39:12 <itidus20> Yes and I google things which I wouldn't tell my own mother
00:39:12 <CakeProphet> I am reading about surreal numbers that I googled as we speak.
00:39:28 <CakeProphet> same. she wouldn't really understand what a p-adic number is.
00:39:39 <itidus20> But in this case I knew that TLA
00:39:51 <itidus20> even though if you asked me to define it we might be in a fix
00:39:54 <CakeProphet> uh, one second while I google that.
00:40:09 <CakeProphet> oh ho, that's a new one to me.
00:40:15 <CakeProphet> how clever.
00:40:16 <itidus20> yeah its pretty cool
00:40:42 <quintopia> it's interesting how TLDs are TLAs in a sense
00:41:30 <oerjan> * Gregor says, "But this is the only way to speak." <-- ah ancient MUD days...
00:41:38 <Gregor> Hah X-D
00:41:56 <Gregor> 'I remember talking to people who put quotes behind all their lines unthinkingly.
00:42:01 <Gregor> 'Even when they weren't on MUDs.
00:42:24 <oerjan> elliott: um no, in fields you can have the product of two nonzero elements be zero
00:42:37 <CakeProphet> itidus20: a fsa is a set of states, an alphabet, and a state-transition function that maps a state-input pair to a new state.
00:42:51 <CakeProphet> oh, there's an initial state and a set of accepting (or final) states.
00:43:52 <CakeProphet> you can visualize it as a bunch of circles connected by arrows. Each circle is given a state (from the set of states), and each arrow is labeled by an input character (from the alphabet)
00:44:05 <itidus20> CakeProphet: I have pondered over it before indirectly.. because my purpose for existence is to ultimately be a game designer
00:44:07 <CakeProphet> you start the initial state, and then you take the input and follow the arrows... basically.
00:44:11 <CakeProphet> *start at
00:44:49 <itidus20> ok so.. can the states be duplicated?
00:45:12 <CakeProphet> do you mean, can you have more than one "circle" with the same state? no.
00:45:18 <CakeProphet> can you revisit states? yes.
00:45:52 <itidus20> cool. and.. i assume multiple arrows can have the same input character
00:46:08 <oerjan> *cannot, dammit
00:46:12 <itidus20> ahh
00:46:25 <oerjan> itidus20: er that wasn't to you
00:46:32 <oerjan> i was correcting myself above :P
00:46:40 <CakeProphet> each state must have an "arrow" for each character in the alphabet.
00:46:49 <CakeProphet> every state-input combination has to go somewhere.
00:46:50 <itidus20> ahh
00:47:01 <CakeProphet> so yes, more than one arrow can share an input character.
00:47:18 <CakeProphet> a lot of simple machines can be modeled as FSA. A vending machine, for example.
00:47:39 <oerjan> itidus20: whether arrows from the same state can have the same input character, depends on whether the FSA is deterministic (it cannot) or nondeterministic (it can)
00:47:56 <itidus20> oh nevermind that comment of mine
00:48:41 <itidus20> so a final state I assume doesn't have any outputs
00:49:54 <oerjan> itidus20: it might. it's only really final if there aren't any more characters then
00:50:16 <CakeProphet> itidus20: it always has a state that it transition to for each input character.
00:50:22 <CakeProphet> +s
00:50:31 <CakeProphet> but sometimes it might circle back on itself.
00:51:10 <CakeProphet> so that once you're at a final state you're stuck there no matter what input you give the automata. but it doesn't have to work like that.
00:52:00 <CakeProphet> oerjan: is the state-transition function still a function in the nondeterministic version?
00:52:45 <itidus20> so.. if there are 4 states.. and 3 characters then i imagine there are 12 transitions.
00:52:52 <oerjan> um not with a single state as result value, anyway
00:53:31 <CakeProphet> oerjan: ah so the result is a set of possible states then?
00:53:35 <oerjan> yeah
00:54:33 <CakeProphet> itidus20: yes.
00:55:09 <CakeProphet> the only purpose of the accepting states is to determine whether or not an input string is part of the "language" it accepts.
00:55:13 <CakeProphet> I'm not sure why I put quotes around that.
00:55:56 <itidus20> and so you could say that (state1)--ABCD-->(state2)--ABCD-->(state3)--ABCD-->(state4)--ABCD-->(connects to state1 which is impossible in this diagram)
00:56:12 <itidus20> oh well of course thats with 4characters instead of 3
00:56:39 <oerjan> that's a pretty simple machine though, it just counts characters
00:56:51 <oerjan> mod 4
00:57:19 <CakeProphet> as far as I can tell it only has one input character as well.
00:57:26 <CakeProphet> unless I'm reading the notation wrong.
00:57:27 <itidus20> i don't think i understand
00:57:40 <itidus20> ok wait ill explain
00:57:57 <CakeProphet> http://en.wikipedia.org/wiki/File:DFAexample.svg
00:58:16 <CakeProphet> here is a FSA diagram
00:58:34 <CakeProphet> the double-circle around S1 means it's an accepting state.
00:58:50 <CakeProphet> the arrowing coming out of nothingness means that S1 is the initial state.
00:58:54 <CakeProphet> *arrow lol
00:58:54 <itidus20> 4 states: state1,state2,state3,state4 ... 4 characters: A, B, C, D... 16 transitions conveniently grouped into 4 identical ones.. state1->state2, state2->state3, state3->state4, state4->state1
00:59:08 <itidus20> that is what i was trying to say
00:59:09 <CakeProphet> ah, right.
00:59:47 <itidus20> ah ok so in your diagram .. the characters are 0 and 1
01:00:36 <CakeProphet> yes.
01:00:40 <CakeProphet> the alphabet is "01"
01:01:25 <itidus20> and finally what does accepting state mean?
01:01:50 <CakeProphet> if an input string ends at an accepting state that means the string is part of the language of the automata.
01:02:02 <CakeProphet> > (`replicateM` "01") =<< [0..]
01:02:03 <lambdabot> ["","0","1","00","01","10","11","000","001","010","011","100","101","110","...
01:02:24 <CakeProphet> that's all of the possible input strings in that alphabet
01:02:31 <CakeProphet> can you figure out which ones are part of the language?
01:02:31 <itidus20> ohhh .. so these FSA's have input strings
01:02:38 <CakeProphet> right, that's the purpose of the alphabet.
01:02:41 <CakeProphet> and the arrows.
01:02:47 <monqy> and the fsas
01:02:59 <CakeProphet> well, sure.
01:03:50 <CakeProphet> itidus20: so which input strings are accepted as a member of the language of that automata?
01:03:54 <CakeProphet> can you think of a pattern for them?
01:04:45 <itidus20> well i should point out i dont understand the notation of "(`replicateM` "01") =<< [0..]" but i do recognize the series
01:04:55 <CakeProphet> that's Haskell, don't worry about that.
01:05:11 <CakeProphet> it's irrelevant to FSA I was just generating all of the possible input strings... or at least the beginning of the series.
01:05:14 <itidus20> it is clearly natural binary numbers
01:05:14 <CakeProphet> *sequence
01:05:20 <CakeProphet> yes.
01:05:30 <itidus20> uh except the empty set which is .. well..
01:05:40 <itidus20> ^empty string
01:05:58 <CakeProphet> okay so which strings end at an accepting state in that diagram?
01:06:06 <itidus20> "" is a number in nirvana
01:06:47 <CakeProphet> ....I've exhausted your attention span haven't I?
01:06:58 <itidus20> no no.. ill keep going
01:07:14 <itidus20> ok lets see...
01:07:23 <itidus20> "1" ends in an accepting state
01:07:30 <CakeProphet> yes, that's one.
01:07:35 <CakeProphet> but can you say something about ALL Of the strings?
01:07:56 -!- cheater__ has joined.
01:07:57 <itidus20> "0" doesn't because it needs a second character presumably to get back to the accepting state
01:08:09 <CakeProphet> a second zero, yes.
01:09:11 <CakeProphet> do you see the pattern?
01:10:21 <itidus20> i can guess by cheating that the set of strings you listed with haskell is the strings in question.. except it's not quite because of "0"
01:10:33 <CakeProphet> no
01:10:39 <CakeProphet> the set of strings I listed is ALL of the possible inputs
01:10:42 <CakeProphet> not the accepted ones.
01:10:45 <itidus20> ahh
01:11:01 <CakeProphet> ....can you just like, look at the diagram and see?
01:11:05 <CakeProphet> before I beat it into you?
01:11:14 * CakeProphet is a sadistic teacher.
01:11:26 <zzo38> Does Haskell know to not add semicolons where I don't want them?
01:11:26 -!- cheater_ has quit (Ping timeout: 250 seconds).
01:11:41 <CakeProphet> zzo38: add them in what?
01:11:44 <itidus20> i would have to go through it following every arrow to understand
01:11:51 <CakeProphet> no just think about it
01:12:02 <itidus20> hmm
01:12:07 <CakeProphet> there are infinite possibilities, so you'd end up doing that forever.
01:12:33 <CakeProphet> okay I will give you a hint
01:12:34 <itidus20> well i would do a few.. it would take a while..
01:12:43 <CakeProphet> obviously the 1s do nothing to the state.
01:12:49 <zzo38> CaheProphet: I mean that it uses its layout rules to determine where to add semicolons, sometimes I might want a line break but it won't automatically add semicolons. If you use { } and explicit semicolons will it know not to add its own semicolons?
01:12:51 <oerjan> zzo38: semicolons are added based on indentation.
01:12:51 <CakeProphet> the 1s are irrelevant to whether or not the input is accepted.
01:13:04 <CakeProphet> zzo38: yes.
01:13:12 <CakeProphet> er... well, maybe?
01:13:24 <CakeProphet> I don't know, actually. I never use the {} syntax.
01:13:39 <oerjan> zzo38: { } turns off implicit semicolons, yes. another way is to simply indent the next line a bit more than the current layout alignment.
01:14:23 <zzo38> It seems somewhat strange that record syntax also uses { } but separates the items with commas instead of semicolons. Why is that?
01:14:46 <itidus20> CakeProphet: well.. as frustrating as it is i have to stop regularly to eat and my diabetes isn't that well controlled..
01:14:47 <CakeProphet> to destroy your arbitrary rules of consistency and laugh at them.
01:14:58 <CakeProphet> itidus20: okay that's fine I will beat some sense into you later.
01:15:10 <itidus20> like ... circa every 2 hours
01:15:17 <itidus20> its a pain
01:15:32 <oerjan> zzo38: well record syntax doesn't have layout. it might be confusing if implicit semicolons got intertwined in them
01:15:37 <CakeProphet> not as painful as me berating you over how obvious the answer to my question is
01:15:39 <itidus20> it can drive a person to distrction to hear it come up again
01:15:49 <itidus20> brb anyway
01:16:21 <zzo38> oerjan: Then why do they use braces? It doesn't make sense to me.
01:16:41 <oerjan> well they had to use some delimiter. maybe it was a bad choice.
01:16:51 <CakeProphet> I don't really see it as an issue.
01:17:00 <CakeProphet> it's completely unambiguous.
01:18:05 <zzo38> I don't know. Maybe it is OK how it is.
01:18:14 <CakeProphet> what else would they use? C [y] is applying a list
01:18:17 <CakeProphet> C (y) is applying y
01:18:29 <PatashuWarg> <> ?
01:18:32 <CakeProphet> C <y> is stupid why would I even consider that.
01:18:35 <PatashuWarg> LOL
01:18:38 <oerjan> it's pretty much agreed that haskell's record system is badly designed, anyhow, although for different reasons :P
01:19:30 <oerjan> <> are operator characters, not delimiters, it would mess up other uses or make the lexical syntax even more complicated
01:19:46 <zzo38> oerjan: Yes I realize < > are operator characters rather than delimiters and can see why that is bad
01:19:47 <CakeProphet> unless Haskell decided to be Perl.
01:20:00 <zzo38> And I can also see why ( ) and [ ] are bad for record syntax
01:20:13 <zzo38> So perhaps there is no other choice than { }
01:20:40 <CakeProphet> it also matches the record declaration syntax.
01:20:40 <PatashuWarg> / / delimited
01:20:48 <CakeProphet> same issue as <>
01:20:49 <zzo38> Maybe if you used semicolons instead of commas, you could make it work just by requiring the { to be prefixed by a word such as "record"
01:20:51 <PatashuWarg> oh yeah
01:20:57 <PatashuWarg> hmm is any character not used for an operator?
01:21:07 <PatashuWarg> I think they all have the potential to be
01:21:25 <CakeProphet> only the bracketing ones. and ~ I think.
01:21:27 <oerjan> zzo38: yes, then it could have layout too based on that keyword, although it would be more verbose
01:21:31 <CakeProphet> no ~ can be used.
01:21:34 <zzo38> The specials include ` { } ( ) [ ] ' " and " and ' have other meanings. ' is like a letter which is neither uppercase nor lowercase
01:21:52 <zzo38> And ' can also be used for character constants, and for names in Template Haskell. And " is used for strings.
01:22:03 <oerjan> > let a ~- b = a-b in 2 ~- 3
01:22:04 <lambdabot> -1
01:22:18 <CakeProphet> : is for constructor operators.
01:22:35 <zzo38> Yes, : is an uppercase operator symbol, and the others are lowercase.
01:22:54 <PatashuWarg> 'uppercase' ?
01:23:12 <zzo38> At least, reading the specifications, it is what it looks like to me; that : is considered uppercase.
01:23:12 <CakeProphet> yes if you want to yell in symbols you do it like this:::::::::::::::::::
01:24:04 <zzo38> It is what seemed to me, at least, that : is an uppercase symbol, _ is a lowercase letter, and ' is a letter which is neither uppercase nor lowercase.
01:24:19 <PatashuWarg> does any other language make distinctions like this?
01:24:30 <elliott> Gregor: So I just ran into a situation where I'd like plash-esque total sandboxing..............
01:24:32 <CakeProphet> not really, except maybe _
01:24:36 <oerjan> PatashuWarg: haskell distinguishes alphanumeric identifiers based on whether they start with upper or lower case. for operator identifiers : happens to have essentially the same meaning as being the only upper case one
01:24:43 <elliott> yes, : is uppercase
01:24:46 <zzo38> Isn't there something in Ruby where capitalized words are treated different somehow?
01:24:47 <Gregor> elliott: So use UMLBox :P
01:24:48 <elliott> sort of :)
01:24:55 <elliott> Gregor: I'm asking for a link, doofus :P
01:25:00 <CakeProphet> zzo38: yes
01:25:05 <Gregor> elliott: http://bitbucket.org/GregorR/umlbox
01:25:31 <CakeProphet> titlecase words are considered classes I believe.
01:25:36 <elliott> bitbucket.imaspecialsnowflake.org
01:25:38 <oerjan> PatashuWarg: ocaml also distinguishes things based on case afair
01:25:43 <elliott> TIME TO REMEMBER HOW TO USE HG
01:25:50 <elliott> Gregor: So hey, what happened to you hosting everything on codu.org :P
01:25:54 <CakeProphet> $ is for globals, @ is instance variables, and I think ALL_CAPS is for global constants?
01:26:13 <elliott> CakeProphet: uppercase = class, module or constant.
01:26:16 <elliott> technically, just constant
01:26:20 <elliott> it's just that classes and modules are constant
01:26:22 <CakeProphet> ah okay.
01:26:22 <elliott> (I may be wrong there)
01:26:33 <elliott> Gregor: Hmm, are standard Debian kernels built with UML?
01:26:36 <oerjan> but it doesn't have upper/lower case for operators, although unlike haskell it decides precedence by the first symbol
01:26:40 <CakeProphet> well you can redefine classes via partial classes.
01:26:44 <monqy> aren't classes/modules in ruby not constant at all
01:26:45 <oerjan> iirc
01:26:52 <CakeProphet> so technically not constant I guess
01:26:55 <monqy> you can do monkey patching on them and stuff
01:27:09 <elliott> monqy: constant doesn't mean cnostant
01:27:13 <monqy> hlep
01:27:14 <Gregor> elliott: Re codu: Occasionally I put things on bitbucket when they're a bit less me-centric.
01:27:20 <elliott> you can mutate the objects just not reassign them
01:27:25 <elliott> Gregor: What a metric :-P
01:27:33 <elliott> <Eduard_Munteanu> SELinux, user limits and maybe cgroups, IIRC.
01:27:35 <monqy> elliott: that is a stupid definition of constant
01:27:38 <elliott> HAHAHAHA I SHALL POWER THROUGH MY COMPETITOR WITH SIMPLICITY
01:27:41 <Gregor> elliott: Re Debian: There's the user-mode-linux package, but it's not sufficient, you need to build a UMLBox-specific kernel.
01:27:43 <zzo38> It would seem in Haskell, that if you use Template Haskell, then when reading a lexeme starting by ' then you have to look ahead to figure out what you mean
01:27:47 <elliott> Gregor: Oh >_>
01:27:54 <elliott> Gregor: Maybe I WILL just use Plash then :P
01:28:13 <Gregor> elliott: ... err ... not HOST kernel.
01:28:19 <Gregor> elliott: GUEST kernel.
01:28:31 <Gregor> elliott: The host box requires nothing special, you don't even need root to get UMLBox running.
01:28:32 <elliott> Gregor: Yeah, but it still involves building a kernel, which is strictly more work than installing Plash :P
01:28:43 <Gregor> elliott: Except installing plash involves traveling back in time :P
01:28:52 <elliott> Hmm, it doesn't work any more?
01:29:24 <itidus20> CakeProphet: ok it appears to only work for numbers which have an even number of zero's
01:29:27 <zzo38> Can you use ptrace to make up all these special kind of permission and override?
01:29:36 <CakeProphet> itidus20: -gasp-
01:29:38 <Gregor> elliott: No Debian later than lenny :(
01:29:38 <CakeProphet> good job
01:29:43 <CakeProphet> now I don't have to beat you.
01:29:52 <Gregor> elliott: When squeeze started getting near release, they made a change that broke plash.
01:29:54 <itidus20> i might not have understood that without your hint though
01:29:54 <CakeProphet> itidus20: are you familiar with regular expressions?
01:30:08 <Gregor> elliott: That's ... pretty much the whole reason I wanted to make UMLBox :P
01:30:26 <elliott> Gregor: What happened to cunionfs being enough anyway, and also how does the proxy work now
01:30:28 <itidus20> yup.. had to use em to block bots on another chat system
01:30:32 <elliott> `translatefrom sv poop
01:30:34 <HackEgo> env: translatefrom: No such file or directory
01:30:41 <elliott> `translatefromto sv en poop
01:30:42 <HackEgo> env: translatefromto: No such file or directory
01:30:47 <CakeProphet> itidus20: okay well you can describe the language accepted by an automata as a regular expression.
01:30:48 <elliott> Gregor: Your soul will be devoured through death and evil
01:30:52 <elliott> But thanks for making stderr work finally
01:30:52 <Gregor> elliott: At present, the proxy simply doesn't work.
01:30:54 <elliott> `ls bin
01:30:55 <HackEgo> ​` \ addquote \ allquotes \ botsnack \ calc \ commands \ creatures \ define \ delquote \ esolang \ etymology \ fuck \ google \ imdb \ json \ k \ karma \ marco \ minifind \ paste \ pastenquotes \ pastequotes \ penis \ ping \ prefixes \ quine \ quote \ quotes \ rec \ roll \ runasperl \ runfor \ rungcc \ say \ sayhi \ strfile
01:31:01 <elliott> Gregor: OK where the hell are my commands.
01:31:04 <CakeProphet> itidus20: do you think you could find the regex for our example?
01:31:11 <Gregor> elliott: Uhh ... that's a good question ...
01:31:25 <elliott> Gregor: THEY MIGHT NOT WORK BUT THEY STILL MATTER
01:31:32 <elliott> Those aren't actually my commands actually
01:31:34 <elliott> `wl this is though
01:31:35 <Gregor> `help
01:31:35 <HackEgo> env: wl: No such file or directory
01:31:36 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
01:32:00 <CakeProphet> itidus20: actually there can be more than one regular expression. they're not unique.
01:32:03 <elliott> `quote software patents
01:32:05 <HackEgo> env: quote: No such file or directory
01:32:07 <Gregor> `ls bin/translate
01:32:08 <HackEgo> bin/translate
01:32:11 <elliott> oerjan: PROBABLY FUCK YOU
01:32:13 <elliott> `run quote software patents
01:32:14 <HackEgo> sh: quote: command not found
01:32:16 <itidus20> to be honest i don't really know regex very well.. i had to kind of copy and paste and look up examples when i have used them
01:32:16 <elliott> `run bin/quote software patents
01:32:17 <HackEgo> sh: bin/quote: Permission denied
01:32:21 <elliott> Gregor: I diagnose a path error, also a permissions error
01:32:48 <CakeProphet> itidus20: okay well the answer is (1*01*0)*1*
01:33:27 <CakeProphet> * is the Kleene star. it means "zero or more repetitions of the previous character"
01:33:49 <itidus20> ahh
01:34:15 <CakeProphet> in fact, this is how regular expressions began, to describe the languages of automata.
01:34:34 <elliott> `translate IS GREGOR A DAMN???
01:34:35 <HackEgo> env: translate: No such file or directory
01:34:43 <elliott> ANSWER, YES
01:35:24 <monqy> is someone trying to teach itidus20 about finite automata, regular languages, regular expressions, etc.
01:35:28 <monqy> is that what's happening
01:35:38 <CakeProphet> itidus20: so in the pattern wrapped in parens, I put 1* between each zero, and make sure there's two zeros... then I put a * around that whole pattern to signify that there can be zero or more repetitions of it.
01:35:43 <Gregor> elliott: Yes yes, I'm fixing the path issue.
01:35:48 <itidus20> monqy: yeah
01:35:48 <CakeProphet> and then another 1* at the end, because it needs to be there.
01:36:08 <monqy> `yes
01:36:10 <HackEgo> y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y
01:36:23 <monqy> this is good
01:36:23 <Gregor> `which translate
01:36:24 <HackEgo> ​/hackenv/bin/translate
01:36:31 <Gregor> `translate Hola
01:36:34 <HackEgo> ​/hackenv/bin/translatefromto: line 13: /hackenv/bin/json: Permission denied
01:36:54 <Lymee> `which yes
01:36:56 <HackEgo> ​/usr/bin/yes
01:37:08 <CakeProphet> itidus20: I put 1* between each zero because 1's can be anywhere in the string and are completely irrelevant.
01:37:08 <Lymee> `run cat /usr/bin/yes | paste
01:37:10 <HackEgo> mkdir: cannot create directory `/paste': Permission denied \ http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.7862 \ /hackenv/bin/paste: line 14: /paste/paste.7862: No such file or directory
01:37:21 <zzo38> Oops you mixed up all of the permissions
01:38:02 <Gregor> Hold on, people, I'm still fixing shit :P
01:38:23 <itidus20> ok so to represent any binary number you could say (0*1*)*
01:38:41 -!- pikhq_ has joined.
01:38:42 <Lymee> Regex?
01:38:46 <elliott> Gregor: http://codu.org/projects/hackbot/fshg/index.cgi/rev/d0b6c6046174 Nice unknown command
01:39:11 <monqy> itidus20: is the empty string a binary number
01:39:16 <Lymee> itidus20, Why not [01]*
01:39:18 <itidus20> or i would prefer it as (0*1*)+
01:39:42 <monqy> itidus20: it can still be the empty string
01:39:47 <itidus20> hmmm
01:39:57 <CakeProphet> itidus20: so when you use a regular expression (excluding advanced features of Perl-based regex languages) you're actually describing a finite state automata that accepts the input strings that you're wanting to match.
01:40:00 <pikhq_> Gregor: Think you could link to UMLBox?
01:40:01 <itidus20> ok so it depends on the [ ]
01:40:13 <monqy> itidus20: ignore Lymee
01:40:26 <itidus20> so [01]+
01:40:33 <Gregor> pikhq_: http://bitbucket.org/GregorR/umlbox
01:40:53 <elliott> `quotes falso
01:40:55 <HackEgo> 480) < falso___> its also open sores
01:40:55 <CakeProphet> itidus20: in Perl, yes. But formal regular expressions don't really use the [] notation as far as I'm aware.
01:40:59 <elliott> COPRO YOU KEEP ADIG THE WRONG QUTOOES
01:41:03 <elliott> `delquote 480
01:41:05 <HackEgo> ​*poof*
01:41:11 <Lymee> `quotes open sores
01:41:12 <HackEgo> No output.
01:41:28 <elliott> `quote software patents
01:41:30 <itidus20> so how else might you say [01]+
01:41:31 <HackEgo> 554) <itidus20> software patents strike again \ 555) < itidus20> software patents strike again < ais523_> that's got to be at least three times, now < ais523_> are they out yet?
01:41:38 <monqy> (0|1)(0|1)*
01:41:38 <elliott> `delquote 555
01:41:40 <HackEgo> ​*poof*
01:41:40 <Lymee> `quotes hug
01:41:41 <CakeProphet> itidus20: also I don't think + is a formal operator either. but a+ is equivalent to aa*
01:41:42 <HackEgo> 314) <nddrylliog> back to legal tender, that expression really makes me daydream. Like, there'd be black-market tender. Out-of-town hug shops where people exchange tenderness you've NEVER SEEN BEFORE. \ 438) [after a long string of Lymia getting lambdabot to spit out huge, meaningless type signatures] <Lymia> I need to learn
01:41:49 <elliott> `delquote 554
01:41:51 <HackEgo> ​*poof*
01:41:56 <monqy> itidus20: < monqy> (0|1)(0|1)*
01:41:58 <itidus20> ahhhh
01:42:00 -!- pikhq has quit (Ping timeout: 264 seconds).
01:42:04 <Lymee> :[
01:42:07 <elliott> `addquote <itidus20> software patents strike again <ais523_> that's got to be at least three times, now <ais523_> are they out yet?
01:42:09 <HackEgo> 583) <itidus20> software patents strike again <ais523_> that's got to be at least three times, now <ais523_> are they out yet?
01:42:29 <monqy> where are the doubles paces
01:42:29 <itidus20> thanks for thre repost monqy
01:42:30 <monqy> i do not
01:42:31 <monqy> see them
01:42:34 <pikhq_> Gregor: Neat.
01:42:54 <monqy> itidus20: i was afraid it got lost in the quote foolery
01:43:04 <CakeProphet> itidus20: the basic operations are concatenation, which is just represented by juxtaposing two expressions (aa). alternation, to describe a set union (a|b), and Kleene star, which I already explained.
01:43:08 <elliott> monqy: ooops
01:43:11 <elliott> `delquote 583
01:43:13 <HackEgo> ​*poof*
01:43:23 <elliott> ten, nine, eight, seven
01:43:25 <elliott> six, five
01:43:25 <elliott> `addquote <itidus20> software patents strike again <ais523_> that's got to be at least three times, now <ais523_> are they out yet?
01:43:26 <HackEgo> 583) <itidus20> software patents strike again <ais523_> that's got to be at least three times, now <ais523_> are they out yet?
01:43:31 <elliott> Gregor: do we still have the stupid hg merge bug
01:43:36 <CakeProphet> itidus20: I believe all of the basic regex operators can be defined in terms of those three.
01:43:45 <CakeProphet> well, regular expression
01:43:51 <CakeProphet> regex implies something more complex.
01:44:00 <Gregor> elliott: It's not a bug, it's just a weird behavior :P
01:44:09 <itidus20> cool
01:44:17 <elliott> Gregor: It's weird, bad behaviour, aka a bug
01:44:33 <Gregor> elliott: By that logic, YOU'RE a bug OHHHH BURN
01:44:52 <Gregor> That's like megaburn coming from somebody named Gregor btw
01:45:01 <monqy> megaburn
01:45:07 <CakeProphet> itidus20: [] is just sugar for |. a? is (a|) a+ is aa*
01:45:32 <PatashuWarg> how about lookarounds? ;)
01:45:38 <CakeProphet> that's regex. :P
01:45:53 <monqy> is there a good symbol for the empty string? I've seen both epsilon and lambda, but neither of those are on this keyboard helpe
01:45:55 <elliott> Gregor: Yes I am an insect please do not mock me
01:46:00 <elliott> monqy: epsillonne
01:46:01 <itidus20> hmm
01:46:04 <elliott> is the bet bsete
01:46:12 <CakeProphet> I've never seen lambda for that.
01:46:14 <CakeProphet> always epsilon
01:46:16 <monqy> I prefer epsiolon, as well
01:46:17 <CakeProphet> or nothingness
01:46:22 <monqy> but I have seen lambda
01:46:24 <monqy> it was weird
01:46:35 <monqy> at least I think I've seen lambda
01:46:35 <elliott> `quote Qu'ran
01:46:37 <HackEgo> 462) < pikhq_> I'm afraid that Qu'ran is probably not that good-tasting. < coppro> pikhq_: edible paper < pikhq_> Still, I'd rather not eat a book of bullshit.
01:46:40 <elliott> `delquote 462
01:46:42 <HackEgo> ​*poof*
01:46:43 <CakeProphet> nothingness is a pretty good representation of the empty string
01:46:47 <itidus20> ok so (a|) means 0 or 1 a's
01:46:51 <elliott> i will eliminate all unholy formatting, also unfunny quotes
01:47:01 <CakeProphet> mathematicians should just leave nothing in place of the empty string, and hopefully everyone else will catch on.
01:47:06 <CakeProphet> itidus20: yes, this is also what a? means
01:47:33 <oerjan> < elliott> oerjan: PROBABLY FUCK YOU <-- wat?
01:47:45 <elliott> oerjan: oops i meant coppro
01:47:45 <elliott> also
01:47:46 <elliott> FIX
01:47:46 <elliott> YOUR
01:47:47 <elliott> QUOTING
01:47:49 <elliott> STYLE
01:47:50 <elliott> HERETIC
01:47:52 <elliott> SHITBAG
01:48:05 <elliott> SPACES IN FRONT OF NAMES IS HERESY DEATH
01:48:08 <elliott> GOD PUNISHES ALL WHO
01:48:35 <monqy> 18:50:05 < elliott> SPACES IN FRONT OF NAMES IS HERESY DEATH
01:48:35 <monqy> hlep
01:49:05 <Lymee> `quote bullshit
01:49:07 <HackEgo> No output.
01:49:08 <elliott> monqy: FIX
01:49:08 <elliott> YOUR
01:49:09 <elliott> SHIT
01:49:12 <Lymee> `quote <
01:49:13 <HackEgo> 1) <Aftran> I used computational linguistics to kill her. \ 2) <Slereah> EgoBot just opened a chat session with me to say "bork bork bork" \ 3) <Quas_NaArt> Hmmm... My fingers and tongue seem to be as quick as ever, but my lips have definitely weakened... <Quas_NaArt> More practice is in order. \ 4) <AnMaster> that's where I
01:49:18 <Lymee> `quote "< "
01:49:20 <HackEgo> No output.
01:49:21 <Lymee> :[
01:49:22 <elliott> `quote <\
01:49:24 <HackEgo> egrep: Trailing backslash
01:49:29 <Lymee> `run quote "< "
01:49:31 <HackEgo> 110) <fax> oklopol geez what are you doing here <oklokok> ...i don't know :< <oklokok> i actually ate until now, although i guess i also did other things... \ 187) <cpressey> < ais523> then running repeatedly until you get the right sequence of random numbers < ais523> and just completely ignoring the input <-- some people
01:49:33 <elliott> Gregor: hey, hackego corrupts input
01:49:36 <elliott> Lymee: It's regex you idiot
01:49:44 <elliott> `quote <[:space:]
01:49:45 <HackEgo> 1) <Aftran> I used computational linguistics to kill her. \ 2) <Slereah> EgoBot just opened a chat session with me to say "bork bork bork" \ 4) <AnMaster> that's where I got it <AnMaster> rocket launch facility gift shop \ 8) <SimonRC> TODO: sex life \ 16) <pikhq> First, invent the direct mind-computer interface. <pikhq> Second,
01:49:50 <Gregor> elliott: HackEgo ... doesn't take input ...
01:49:51 <elliott> `quote <\s
01:49:52 <HackEgo> 2) <Slereah> EgoBot just opened a chat session with me to say "bork bork bork" \ 8) <SimonRC> TODO: sex life \ 66) <Sgeo> What else is there to vim besides editing commands? \ 90) <Sgeo> I'd imagine that it already has, and no one noticed \ 92) <Sgeo|web> Where's the link to the log? <lament> THERE'S NO LOG. YOUR REQUEST IS
01:49:59 <elliott> Gregor: It corrupts the input line by stripping trailing spaces
01:50:05 <elliott> And also, wtf??
01:50:06 <Gregor> Oh
01:50:07 <elliott> `quote \<\s
01:50:09 <HackEgo> 2) <Slereah> EgoBot just opened a chat session with me to say "bork bork bork" \ 3) <Quas_NaArt> Hmmm... My fingers and tongue seem to be as quick as ever, but my lips have definitely weakened... <Quas_NaArt> More practice is in order. \ 4) <AnMaster> that's where I got it <AnMaster> rocket launch facility gift shop \ 5)
01:50:12 <elliott> Help
01:50:15 <elliott> Why doesn't it work ;_;
01:50:20 <elliott> `quote <[:space:]
01:50:22 <HackEgo> 1) <Aftran> I used computational linguistics to kill her. \ 2) <Slereah> EgoBot just opened a chat session with me to say "bork bork bork" \ 4) <AnMaster> that's where I got it <AnMaster> rocket launch facility gift shop \ 8) <SimonRC> TODO: sex life \ 16) <pikhq> First, invent the direct mind-computer interface. <pikhq> Second,
01:50:25 <elliott> `quote <[:space:]+
01:50:27 <HackEgo> 1) <Aftran> I used computational linguistics to kill her. \ 2) <Slereah> EgoBot just opened a chat session with me to say "bork bork bork" \ 4) <AnMaster> that's where I got it <AnMaster> rocket launch facility gift shop \ 8) <SimonRC> TODO: sex life \ 16) <pikhq> First, invent the direct mind-computer interface. <pikhq> Second,
01:50:29 <Lymee> `run quote "< "
01:50:31 <HackEgo> 110) <fax> oklopol geez what are you doing here <oklokok> ...i don't know :< <oklokok> i actually ate until now, although i guess i also did other things... \ 187) <cpressey> < ais523> then running repeatedly until you get the right sequence of random numbers < ais523> and just completely ignoring the input <-- some people
01:50:34 <Lymee> :3
01:50:34 <elliott> Lymee: oh that'll work yes
01:50:39 <elliott> `run pastequotes '< '
01:50:41 <Lymee> I did it a few lines ago...
01:50:42 <HackEgo> mkdir: cannot create directory `/paste': Permission denied \ http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.32240 \ /hackenv/bin/paste: line 14: /paste/paste.32240: No such file or directory
01:50:45 <elliott> Gregor: lol
01:50:49 <elliott> Lymee: without `run
01:51:01 <Lymee> <elliott> `quote <\
01:51:01 <Lymee> <HackEgo> egrep: Trailing backslash
01:51:01 <Lymee> <Lymee> `run quote "< "
01:51:02 <Gregor> elliott: I keep forgetting to fix that ...
01:51:05 <Lymee> nyan
01:51:14 -!- CakeProphet has quit (Ping timeout: 246 seconds).
01:51:31 <Gregor> `run echo pastypaste | paste
01:51:33 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.6258
01:51:34 <elliott> 12:42:28: <fizzie> Maybe it's just a lambdabot thing where it reads one full expression and ignores trailing fluff? Certainly "pi 3 4" is not okay in ghci.
01:51:34 <elliott> YES IT IS YOU PEOPLE IN THE LOG ARE STUPID
01:51:42 <elliott> Lymee: fair enough, stop saying nyan
01:51:49 <elliott> `run pastequotes '< '
01:51:51 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.14435
01:52:20 <Lymee> elliott, nyan nyan
01:52:22 <elliott> how to fix that j-invariant quote...
01:52:31 <elliott> the " [...] " thing
01:53:02 <Lymee> 305) <Deewiant> !bfjoust sm3 < <EgoBot> Score for Deewiant_sm3: 43.4
01:53:03 <Lymee> .....
01:53:04 <Lymee> wat
01:53:09 <elliott> bfjoust
01:53:14 <monqy> bfjoust
01:53:25 <Lymee> !bfjoust suicide <<<
01:53:33 <EgoBot> ​Score for Lymee_suicide: 0.0
01:53:36 <Lymee> !bfjoust suicide <
01:53:38 <EgoBot> ​Score for Lymee_suicide: 0.0
01:53:43 <Lymee> Was there a bug?
01:54:00 <PatashuWarg> that's not a bug
01:54:11 <elliott> I forget why it did so well
01:54:16 <elliott> Maybe the random factors still existed then
01:54:26 <elliott> I'm not sure, really
01:57:02 -!- Nisstyre has joined.
01:57:10 <elliott> castSTUArray :: STUArray s ix a -> ST s (STUArray s ix b)
01:57:12 <elliott> oerjan: yikes
01:57:44 <monqy> is that like doing unsafecoerce on everything in it
01:57:55 -!- CakeProphet has joined.
01:57:55 -!- CakeProphet has quit (Changing host).
01:57:55 -!- CakeProphet has joined.
01:58:03 <elliott> at least it only works on certain types... apparenrtly; I don't see that enforced anywhere
01:58:10 <Lymee> :t map unsafeCoerce
01:58:12 <lambdabot> forall a b. [a] -> [b]
01:58:30 <Lymee> elliott, why isn't "unsafe" in the function name?
01:58:44 -!- Sgeo has joined.
01:58:49 <elliott> Lymee: well that's what _I'm_ wondering
01:59:07 <elliott> you can use it to convert floats and doubles to words and back
01:59:15 -!- Sgeo has quit (Client Quit).
01:59:21 <elliott> and I think this is in an unsafeCoerce manner
01:59:27 <elliott> but it's only for certain element types???
01:59:32 <elliott> so maybe the interface is actually ok
01:59:39 <elliott> (and the implementation ok for ieee cpus)
02:00:32 <Lymee> @t map (flip (,) (unsafeCoerce y) . unsafeCoerce)
02:00:32 <lambdabot> Maybe you meant: tell thank you thanks thx ticker time todo todo-add todo-delete topic-cons topic-init topic-null topic-snoc topic-tail topic-tell type . ? @ ft v
02:00:38 <Lymee> :t map (flip (,) (unsafeCoerce y) . unsafeCoerce)
02:00:39 <lambdabot> forall a a1 a2. [a2] -> [(a, a1)]
02:00:41 <Lymee> </silly>
02:02:05 -!- CakeProphet has quit (Ping timeout: 246 seconds).
02:02:15 <monqy> :t y
02:02:17 <lambdabot> Expr
02:02:41 <Lymee> @pl \x -> (unsafeCoerce x, unsafeCoerce x)
02:02:41 <lambdabot> liftM2 (,) unsafeCoerce unsafeCoerce
02:02:50 <Lymee> :t map (liftM2 (,) unsafeCoerce unsafeCoerce)
02:02:51 <lambdabot> forall a1 a2 a. [a] -> [(a1, a2)]
02:02:57 <Lymee> Wonder what the first one would have done
02:05:07 <Lymee> :t \あ -> あ
02:05:09 <lambdabot> parse error (possibly incorrect indentation)
02:05:51 <Lymee> :t \β -> β
02:05:52 <lambdabot> parse error (possibly incorrect indentation)
02:05:54 <Lymee> ;-;
02:06:10 <oerjan> huh
02:06:21 <oerjan> :t \ø -> ø
02:06:22 <lambdabot> parse error (possibly incorrect indentation)
02:06:28 <PatashuWarg> :t \a -> a
02:06:29 <lambdabot> forall t. t -> t
02:06:33 <monqy> :t \ (ø) -> (ø)
02:06:34 <lambdabot> parse error (possibly incorrect indentation)
02:06:35 <PatashuWarg> why u no like unicode
02:06:50 <monqy> lambdabot..........
02:06:55 <oerjan> !haskell (\ø -> ø) "test"
02:07:13 <oerjan> what not EgoBot either
02:07:37 <Lymee> !haskell putStrLn $ (\あ -> あ) "test"
02:08:00 <oerjan> !haskell "ø"
02:08:03 <EgoBot> ​"\195\184"
02:08:04 <Lymee> !haskell putStrLn $ (\a -> a) "test"
02:08:06 <EgoBot> test
02:08:12 <oerjan> > "ø"
02:08:13 <lambdabot> "\248"
02:08:14 -!- CakeProphet has joined.
02:08:26 -!- CakeProphet has quit (Changing host).
02:08:26 -!- CakeProphet has joined.
02:09:11 <oerjan> something isn't set up quite right
02:09:26 <elliott> <PatashuWarg> why u no like unicode
02:09:26 <oerjan> > text "ø"
02:09:28 <lambdabot> mueval-core: <stdout>: hPutChar: invalid argument (Invalid or incomplete mu...
02:09:28 <elliott> i will end your life
02:09:34 <oerjan> sheesh
02:09:56 <oerjan> > show $ text "ø"
02:09:57 <lambdabot> "\248"
02:10:24 <oerjan> Y U NO LIKE MEMES
02:10:31 <elliott> oerjan: [FATAL STAB]
02:10:31 <elliott> DIE
02:10:31 <elliott> DIE
02:10:32 <elliott> DIE
02:10:32 <elliott> DEID
02:10:33 <elliott> EDIEFSJOGIFOJG
02:10:35 <elliott> \'\;L[;]'
02:10:35 <elliott> \
02:10:44 <elliott> i just picked my laptop up and slammed it down really hard because of you
02:11:07 <oerjan> if that's literally true i suggest you seek help.
02:11:29 <Lymee> > \バカなlambdabot -> undefined
02:11:30 <lambdabot> Overlapping instances for GHC.Show.Show (t -> a)
02:11:31 <lambdabot> arising from a use of `...
02:11:32 <oerjan> wait, now i sound like my father.
02:11:38 <oerjan> scratch that.
02:11:40 <PatashuWarg> elliott I have a video for you
02:11:51 <Lymee> > \バカな -> undefined
02:11:53 <lambdabot> Overlapping instances for GHC.Show.Show (t -> a)
02:11:53 <lambdabot> arising from a use of `...
02:12:00 <Lymee> > \バカな -> バカな
02:12:00 <PatashuWarg> http://www.youtube.com/watch?v=DIn4L7hUmUI
02:12:01 <lambdabot> Overlapping instances for GHC.Show.Show (t -> t)
02:12:02 <lambdabot> arising from a use of `...
02:12:04 <Lymee> he?
02:12:14 <Lymee> > \ああ -> ああ
02:12:15 <lambdabot> Overlapping instances for GHC.Show.Show (t -> t)
02:12:16 <lambdabot> arising from a use of `...
02:12:18 <Lymee> > \あ -> あ
02:12:19 <lambdabot> Overlapping instances for GHC.Show.Show (t -> t)
02:12:20 <lambdabot> arising from a use of `...
02:12:22 <Lymee> ...wat
02:12:31 <Lymee> :t \あ -> あ
02:12:32 <oerjan> Lymee: it cannot print a function
02:12:33 <lambdabot> parse error (possibly incorrect indentation)
02:12:33 <elliott> you havent applied ti to an argument
02:12:40 <Lymee> Um.
02:12:45 <Lymee> Why does > parse it correctly but no :t
02:12:46 <Lymee> not*
02:12:55 <elliott> because different setup
02:13:00 <oerjan> it tries, then fails horribly because someone imported two different ways of doing it
02:13:09 <elliott> oerjan: (showing a function not :t)
02:13:11 <elliott> (vs >)
02:13:13 <elliott> (ujust)
02:13:16 <elliott> (carlyfiing)
02:13:26 <quintopia> can anyone explain this line from df: /dev/sdb1 5905972 5837136 0 100% /usr
02:13:29 <quintopia> i'm pretty okay at math, and when i add 5837136 and zero, i don't get 5905972
02:13:50 <oerjan> quintopia: it's where the gnomes hide
02:13:58 <elliott> quintopia: reserved blocks for root
02:13:59 <elliott> probably
02:14:35 <elliott> quintopia: you may want to look at `man tune2fs`.
02:14:39 <elliott> or buy a new disk
02:14:41 <oerjan> > (\ø -> ø+ø) 2
02:14:42 <lambdabot> 4
02:14:49 <elliott> oerjan: ø_ø
02:15:15 <oerjan> > (\ø_ø -> ø_ø^ø_ø) 4
02:15:16 <lambdabot> 256
02:16:00 <oerjan> @list type
02:16:00 <lambdabot> type provides: type kind
02:16:20 <oerjan> @list run
02:16:20 <lambdabot> eval provides: run let undefine
02:16:24 <oerjan> different plugins
02:16:31 <Lymee> @undefine
02:16:44 <oerjan> oh no, you destroyed everything!
02:16:55 <Lymee> @let map f a -> undefined
02:16:56 <lambdabot> TemplateHaskell is not enabled
02:17:05 <Lymee> s/->/=/
02:17:09 <Lymee> Wouldn't have worked anyways
02:17:22 <oerjan> @let map f a = undefined
02:17:23 <lambdabot> Defined.
02:17:30 <oerjan> > map 1 2
02:17:31 <lambdabot> Ambiguous occurrence `map'
02:17:31 <lambdabot> It could refer to either `L.map', defined at <l...
02:17:35 <oerjan> > L.map 1 2
02:17:36 <lambdabot> *Exception: Prelude.undefined
02:17:51 <elliott> oerjan: rude to the people in hash-haskell
02:17:51 <elliott> :P
02:17:53 <elliott> omg wait
02:17:55 <elliott> I have the perfect prank
02:18:07 <shachaf> "hash"-haskell?
02:18:12 <oerjan> elliott: you cannot escape the ambiguous message
02:18:16 <elliott> shachaf: Shut up my number keys are broken.
02:18:18 <shachaf> oerjan: Sure you can.
02:18:24 <Lymee> @define undefined = error "ur a poopy face"
02:18:24 <elliott> oerjan: hmmmmmmmmmmmmmm
02:18:30 <elliott> shachaf: How?
02:18:36 <shachaf> Well, OK, you can't.
02:18:38 <oerjan> shachaf: elliott has a long-standing keyboard problem
02:18:56 <shachaf> > mаp 1 2
02:18:58 <Lymee> Could we define a malicious typeclass?
02:18:58 <lambdabot> *Exception: Evil
02:19:08 <Lymee> shachaf, how was that done? =p
02:19:15 <shachaf> You can't @let type classes or data types in lambdabot, sadly. :-(
02:19:18 <oerjan> of course when he keeps slamming the laptop down hard, it's no wonder.
02:19:32 * shachaf never thought of pronouncing it as "hash". Weird.
02:19:45 <elliott> what do you say
02:19:51 <monqy> octothorpe-haskell
02:20:02 <elliott> @let Data.List.map f a = text "I'm tired of evaluating Haskell code for you."
02:20:02 <lambdabot> Parse error in pattern: Data.List.map
02:20:04 <elliott> :(
02:20:05 <elliott> cries
02:20:08 <elliott> (softly)
02:20:12 <shachaf> Er, actually, now that I think of it, I say "sulamit haskell".
02:20:21 <monqy> soflty slams laptop on ground, stomps
02:20:22 <oerjan> shachaf: wat
02:20:39 <shachaf> I guess "hash" kind of makes sense. Though it has too many meanings.
02:20:51 <Lymee> @let a (+) b = a
02:20:52 <lambdabot> <local>:2:10:
02:20:53 <lambdabot> Ambiguous occurrence `a'
02:20:53 <lambdabot> It could refer to either `L...
02:21:02 <Lymee> @let a + b = a
02:21:04 <lambdabot> Defined.
02:21:06 <elliott> shachaf will take his secrets to the grave.
02:21:08 <Lymee> > 1 + 1
02:21:10 <lambdabot> Ambiguous occurrence `+'
02:21:10 <lambdabot> It could refer to either `L.+', defined at <local...
02:21:13 <elliott> shachaf: I say octothorpe when I'm not being informal
02:21:18 <shachaf> elliott: Which secrets?
02:21:27 <Lymee> > map (\x -> x) [1,2,3,4]
02:21:29 <lambdabot> [1,2,3,4]
02:21:31 <Lymee> > map 1 [1,2,3,4]
02:21:32 <lambdabot> [1,1,1,1]
02:21:36 <Lymee> > map 1 3
02:21:38 <lambdabot> No instance for (GHC.Num.Num [a])
02:21:38 <lambdabot> arising from the literal `3' at <inter...
02:21:39 <elliott> shachaf: How to do a ?let like that
02:21:39 <shachaf> > mаp (\x -> x) -> [1,2,3,4]
02:21:40 <lambdabot> <no location info>: parse error on input `->'
02:21:47 <shachaf> elliott: Like what?
02:21:51 <shachaf> > mаp (\x -> x) [1,2,3,4]
02:21:53 <lambdabot> *Exception: Evil
02:21:54 <elliott> shachaf: Bypassing the ambiguity
02:22:00 <Lymee> @let map a b = error $ "Evil"
02:22:02 <lambdabot> Defined.
02:22:03 <Lymee> > map 1 3
02:22:04 <lambdabot> Ambiguous occurrence `map'
02:22:04 <lambdabot> It could refer to either `L.map', defined at <l...
02:22:05 <elliott> <shachaf> Well, OK, you can't.
02:22:05 <elliott> oh
02:22:17 <shachaf> elliott: Like, whoa, man, you're, like, the same elliott as the one in #haskell.
02:22:20 <Lymee> <shachaf> > mаp 1 2
02:22:20 <Lymee> <lambdabot> *Exception: Evil
02:22:22 <Lymee> How did you do that?
02:22:23 <Lymee> =p
02:22:24 <shachaf> Same number of 't's.
02:22:26 <elliott> shachaf: Whoaaaaaaaaaaa.
02:22:31 <elliott> shachaf: I'm not that elliottt guy though.
02:22:32 <shachaf> Lymee: By typing it in.
02:22:34 <elliott> Also, I'm not conal.
02:22:42 <Lymee> How did you get it to do the *Exception: Evil?
02:22:43 <Lymee> =p
02:22:45 <shachaf> Maybe you're conal elliottt?
02:22:45 <elliott> I'm also not elliottcable, at least until he actually gives me money for this nick like he said he would.
02:23:02 <elliott> I don't think he liked my offer of five hundred dollars.
02:23:03 * pikhq_ is tempted to use umlbox as a sandbox for packaging
02:23:06 <Lymee> @define module Data.List; map a b = error $ "Evil"
02:23:09 <shachaf> elliott: Oh, he came to #haskell once and saw elliottt and was very happy.
02:23:12 <Lymee> @let module Data.List; map a b = error $ "Evil"
02:23:13 <lambdabot> Parse error: ;
02:23:14 <elliott> pikhq_: Seems overkill
02:23:17 <elliott> shachaf: Who, elliottcable?
02:23:19 <Lymee> @let module Data.List
02:23:20 <lambdabot> Parse error: EOF
02:23:23 <shachaf> elliott: I think so.
02:23:25 <elliott> I think he has "a thing" about people using His Name.
02:23:49 <Lymee> @let module Data.List where map a b = error $ "Evil"
02:23:49 <lambdabot> Invalid declaration
02:23:55 <oerjan> > mаp (\x -> x) [1,2,3,4]
02:23:56 <lambdabot> Not in scope: `m
02:24:07 <shachaf> > (еlliott, elliott)
02:24:08 <oerjan> > mаp (\x -> x) [1,2,3,4]
02:24:08 <pikhq_> elliott: I've previously been spawning chroots.
02:24:09 <lambdabot> Not in scope: `m
02:24:09 <lambdabot> (True,False)
02:24:12 <Lymee> @let module Data.List (map) where map a b = error $ "Evil"
02:24:13 <lambdabot> Invalid declaration
02:24:15 <oerjan> :P
02:24:33 <Lymee> @let module Data.List (map) where; map a b = error $ "Evil"
02:24:34 <lambdabot> Invalid declaration
02:24:47 <oerjan> shachaf: i think i've got a hunch there :P
02:25:00 <Lymee> oerjan, whatdidyoudo
02:25:01 <shachaf> oerjan spoils everything.
02:25:13 <elliott> pikhq_: You're writing a package manager?
02:25:17 <elliott> It sucks mine is SO MUCH BETTER.
02:25:19 <oerjan> Lymee: i just cut and pasted shachaf's line. i think it has invisible chars
02:25:24 <monqy> elliott has a package manager too?
02:25:33 <elliott> monqy: No but I do now.
02:25:35 <shachaf> oerjan: NOpe.
02:25:35 <pikhq_> elliott: I've been tinkering off and on for about a month now.
02:25:45 <oerjan> or possibly chars that look normal but aren't
02:25:53 <elliott> aha, cyrillic a, perfect
02:25:56 <oerjan> > "m"
02:25:56 <lambdabot> "m"
02:26:00 <elliott> ?undefine
02:26:07 <Lymee> @let a / b = a * b
02:26:08 <lambdabot> Defined.
02:26:09 <elliott> ?let mаp f x = text "I'm tired of evaluating Haskell code for you."
02:26:10 <Lymee> > a / b
02:26:10 <lambdabot> Defined.
02:26:11 <lambdabot> Ambiguous occurrence `/'
02:26:11 <lambdabot> It could refer to either `L./', defined at <local...
02:26:16 <elliott> > mаp succ [0,9]
02:26:17 <lambdabot> Ambiguous type variable `a' in the constraint:
02:26:17 <lambdabot> `GHC.Enum.Enum a'
02:26:17 <lambdabot> ar...
02:26:22 <elliott> > mаp id [0..]
02:26:24 <lambdabot> I'm tired of evaluating Haskell code for you.
02:26:29 <pikhq_> I, personally, demand that the packaging be exceptionally declarative.
02:26:33 <Lymee> @undefine map
02:26:39 <elliott> pikhq_: do you hvae issues with Nix?
02:26:44 <elliott> Lymee: OK wait stop
02:26:45 <elliott> I need to prank
02:26:46 <elliott> hash haskell
02:26:47 <elliott> with this
02:26:49 <elliott> somehow
02:26:49 <pikhq_> Insufficiently declarative.
02:26:56 <elliott> pikhq_: Umm, Nix is purely functional
02:27:00 <shachaf> Lymee: You really abuse it, don't you. @define, @undefine, @undefine foo, and so on all reset the entire L.hs file.
02:27:14 <elliott> shachaf: Not that there's much other choice
02:27:15 <Lymee> >map id [0..]
02:27:18 <Lymee> > map id [0..]
02:27:19 <lambdabot> [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,...
02:27:21 <pikhq_> elliott: It also has boilerplate up the wazoo! I disapprove of boilerplate.
02:27:23 <Lymee> > mаp id [0..]
02:27:25 <lambdabot> Not in scope: `m
02:27:33 <Lymee> I'm not sure what the invisible character involved is, but...
02:27:35 <Lymee> >:3
02:27:41 <monqy> :t (а)
02:27:42 <lambdabot> parse error (possibly incorrect indentation)
02:27:42 <shachaf> There is no invisible character!
02:27:43 <monqy> oh right
02:27:51 <monqy> :'(
02:28:05 <monqy> > (а)
02:28:06 <lambdabot> Not in scope: `
02:28:09 <monqy> nooo
02:28:10 <elliott> pikhq_: Howso
02:28:14 <pikhq_> GNU make: name=make;version=3.82;gnu_src
02:28:14 <elliott> pikhq_: It defaults to a configure-make-make install build
02:28:19 <pikhq_> There. Complete package!
02:28:24 <Lymee> Long UTF-8 sequences?
02:28:26 <elliott> OK, so trivial syntactical complaints
02:28:28 <pikhq_> ... Sans dependencies. :(
02:28:46 <elliott> Man, your package might be whole BYTES smaller than Nix's!!!!!
02:29:02 <elliott> pikhq_: You could automate dependency-handling. Maybe.
02:29:28 <elliott> Obviously autoconf packages reveal all their _unmet_ dependencies, and if you start it in a clean-ish chroot with just libc and the like, you can determine the _installed_ dependencies with ldd or similar.
02:29:48 <elliott> They also tend to reveal their minimum required versions if they're autoconf
02:29:54 <PatashuWarg> when are we going to get packages that download their own dependencies?
02:30:57 <elliott> PatashuWarg: @
02:31:17 <oerjan> > "а"
02:31:18 <lambdabot> "\1072"
02:31:42 <oerjan> > "> mаp id [0..]"
02:31:43 <lambdabot> "> m\1072p id [0..]"
02:32:29 <CakeProphet> !perl print "test" =~ /(a|)/
02:32:41 <CakeProphet> !perl print "" =~ /(a|)/
02:32:46 <elliott> Is annotatable a word? Or is it annotate.
02:32:58 <CakeProphet> !perl print "a" =~ /(a|)/
02:32:58 <EgoBot> a
02:33:08 <CakeProphet> elliott: it's a word.
02:33:22 <CakeProphet> you put -able after pretty much any verb.
02:33:39 <elliott> Erm
02:33:41 <elliott> Or is it annotable
02:33:43 <elliott> Is what i meant to say
02:33:43 <Lymee> @let mаp x y = Data.List.map (/x -> if x != 0 than x else undefined) y
02:33:44 <lambdabot> Parse error: ->
02:33:49 <CakeProphet> http://www.thefreedictionary.com/annotatable if you need more reassurance
02:33:49 <elliott> oerjan: ANNOTATABLE OR ANNOTABLE
02:34:00 <elliott> CakeProphet: thefreedictionary.com is not what I would call "assuarnce"
02:34:04 <pikhq_> Kay, fine, Linux: http://sprunge.us/BfDV
02:34:07 <CakeProphet> well you're not annoting
02:34:07 <elliott> Considering it's also a redirection, and the word doesn't appear anywhere else on the page
02:34:12 <CakeProphet> you're annotating. :P
02:34:20 <elliott> pikhq_: Hey you should be a lot happier that I told you how to automate dependencies.
02:34:25 <Lymee> @let mаp f l = Data.List.map (/x -> if (x != 0) than (f x) else undefined) l
02:34:26 <lambdabot> Parse error: ->
02:34:31 <Lymee> @let mаp f l = Data.List.map (\x -> if (x != 0) than (f x) else undefined) l
02:34:32 <lambdabot> Parse error: else
02:34:33 <elliott> pikhq_: Also Linux has a ton of build-time dependencies you omitted.
02:34:48 <pikhq_> Yes, yes, I know.
02:34:52 <Lymee> @let mаp f l = Data.List.map (\x -> if (x != 0) than (f x); else undefined) l
02:34:53 <lambdabot> Parse error: ;
02:34:54 <CakeProphet> elliott: right because it's a word derived from annotate via -able
02:34:56 <Lymee> :(
02:35:05 <CakeProphet> elliott: it's just like... a rule.. of English, you can always use.
02:35:05 <oerjan> you cannot a me, i'm not able
02:35:09 <pikhq_> The full list of dependencies is, BTW, busybox, binutils, gcc, make.
02:35:31 <elliott> pikhq_: Linux depends on a set of basic commands, not busybox
02:35:43 <elliott> And I suspect your make is actually gmake
02:35:46 <oerjan> Lymee: speling
02:35:56 <Lymee> @let mаp f l = Data.List.map (\x -> if (x != 0) then (f x) else undefined) l
02:35:57 <lambdabot> <local>:2:0:
02:35:57 <lambdabot> Multiple declarations of `L.m<stderr>: hPutChar: invalid a...
02:36:05 <Lymee> @undefine map
02:36:08 <pikhq_> Well, yes, what other make would I use? The only other one for Linux systems is, frankly, ridiculous.
02:36:15 <Lymee> @undefine mаp
02:36:41 <pikhq_> Heirloom make depends on a friggin' C++ compiler.
02:36:49 <oerjan> Lymee: @undefine takes no arguments
02:37:00 <Lymee> Oh.
02:37:01 <Lymee> @undefine
02:37:07 <pikhq_> And why the hell would I use BSD make?
02:37:07 <elliott> pikhq_: pmake, bmake, makepp (mostly backwards-compatible with GNU make, so almost certainly supports the portable subset of make), probably OMake
02:37:17 <elliott> pikhq_: It doesn't matter "why", what matters is that your package name is inaccurate
02:37:28 <elliott> Linux does depend on a GNU make though, so the dependency is reasonable
02:37:32 <elliott> But the busybox one definitely isn't
02:37:33 -!- NihilistDandy has quit (Remote host closed the connection).
02:37:46 <Lymee> @let mаp f l = Data.List.map (\x -> if ((len $ take 100 l)==100) then (f x) else undefined) l
02:37:47 <lambdabot> <local>:1:10: Not in scope: `Data.List.map'
02:37:47 <lambdabot>
02:37:47 <lambdabot> <local>:1:36: Not in scope: `...
02:37:50 <Lymee> :[
02:38:01 <pikhq_> I disbelieve in GNU coreutils.
02:38:08 <oerjan> presumably nobody has figured out how to keep track of each @let definition _and_ check if the result is still coherent if you delete one
02:38:10 <CakeProphet> elliott: your dependency on reasonable dependencies is unreasonable.
02:38:26 <elliott> pikhq_: so busybox is the only option then, OK
02:38:37 <pikhq_> At present, at least.
02:38:39 <elliott> pikhq_: your personal choices in software do not change the fact that those are not Linux's dependencies
02:38:42 <CakeProphet> oerjan: I bet I could do it in Perl. :D
02:38:50 <oerjan> > Data.List.map
02:38:51 <lambdabot> Not in scope: `Data.List.map'
02:38:57 <oerjan> > Prelude.map
02:38:58 <lambdabot> Overlapping instances for GHC.Show.Show ((a -> b) -> [a] -> [b])
02:38:58 <lambdabot> arising...
02:39:04 <CakeProphet> oerjan: probably not very efficiently though.
02:39:07 <oerjan> Lymee: ^
02:39:12 -!- augur has quit (Read error: Connection reset by peer).
02:39:18 <pikhq_> elliott: I also lied a bit about Linux's dependencies: you have to hack out its dependencies on GNU sed and Perl.
02:39:42 <CakeProphet> basically it would be a recursive delete. delete the definition and then call the delete operation on any definitions that contain the name of the original.
02:39:47 <Lymee> @let mаp f l = Preludemap (\x -> if boom then (f x) else undefined) l where boom = (len $ take 100 l)==100
02:39:48 <lambdabot> <local>:1:10: Not in scope: data constructor `Preludemap'
02:39:48 <lambdabot>
02:39:48 <lambdabot> <local>:1:79: N...
02:39:50 <CakeProphet> repeat until the recursion terminates.
02:39:53 <Lymee> @let mаp f l = Prelude.map (\x -> if boom then (f x) else undefined) l where boom = (len $ take 100 l)==100
02:39:54 <lambdabot> <local>:1:80: Not in scope: `len'
02:39:54 <elliott> pikhq_: Also, you're using shell scripts as your build scripts there it looks like, so enjoy your being much less declarative and functional than Nix I guess? :-P
02:40:00 <Lymee> @let mаp f l = Prelude.map (\x -> if boom then (f x) else undefined) l where boom = (length $ take 100 l)==100
02:40:01 <lambdabot> Defined.
02:40:07 <Lymee> > map id [1..]
02:40:08 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28...
02:40:12 <Lymee> > mаp id [1..]
02:40:14 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28...
02:40:24 <Lymee> > mаp id [1..]
02:40:25 <Gregor> So apparently slirp is a security nightmare :P
02:40:27 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28...
02:40:27 <Lymee> :[
02:40:36 <elliott> Gregor: slirp? Isn't that -- yes it is.
02:40:39 <CakeProphet> Lymee: what are you doing...
02:40:46 <elliott> I've used that
02:40:50 <elliott> I forget what for
02:40:50 <Gregor> It provides a "configuration interface" via telnet which, amongst other things, allows you to run arbitrary commands >_>
02:40:51 <Lymee> @let mаp f l = Prelude.map (\x -> if boom then (f x) else (error "Too many items, sorry.")) l where boom = (len $ take 100 l)>50
02:40:52 <lambdabot> <local>:2:103: Not in scope: `len'
02:40:56 <Lymee> @let mаp f l = Prelude.map (\x -> if boom then (f x) else (error "Too many items, sorry.")) l where boom = (length $ take 100 l)>50
02:40:56 <elliott> Gregor: :D
02:40:57 <lambdabot> <local>:1:0:
02:40:57 <lambdabot> Warning: Pattern match(es) are overlapped
02:40:57 <lambdabot> In...
02:41:07 <elliott> Gregor: Dude, seriously, can't you just write a UML driver?
02:41:08 <pikhq_> elliott: Would you be happier if I just tried to use Nix?
02:41:09 <Lymee> >@undefine
02:41:11 <Lymee> @undefine
02:41:12 <elliott> Surely those have access to the host system
02:41:13 <Lymee> @let mаp f l = Prelude.map (\x -> if boom then (f x) else (error "Too many items, sorry.")) l where boom = (length $ take 100 l)>50
02:41:15 <lambdabot> Defined.
02:41:19 <Lymee> > map id [1..]
02:41:20 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28...
02:41:23 <Lymee> > mаp id [1..]
02:41:25 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28...
02:41:28 <Lymee> :<
02:41:40 <Lymee> @undefine
02:41:41 <Lymee> @let mаp f l = Prelude.map (\x -> if boom then (f x) else (error "Too many items, sorry.")) l where boom = (length $ take 100 l)<50
02:41:42 <lambdabot> Defined.
02:41:44 <Lymee> > map id [1..]
02:41:46 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28...
02:41:46 <CakeProphet> you can't use where for that.
02:41:46 <Lymee> > mаp id [1..]
02:41:48 <lambdabot> [*Exception: Too many items, sorry.
02:41:54 <elliott> pikhq_: That'd probably put you out of a distro, considering that Nixpkgs is a source of thousands of packages for Nix that work on Linux, OS X, FreeBSD, OpenBSD, and Cygwin
02:41:55 <Gregor> elliott: Well, I was going to get networking and X11 in one go, but it looks like the only networking interface that doesn't require root is slirp ...
02:42:11 <elliott> pikhq_: But if you're gonna state declarativeness as a main goal, then you'd better be better than Nix :-P
02:42:19 <CakeProphet> Lymee: congratulations you did something horrible.
02:42:32 <Lymee> にゃぁ
02:42:53 <elliott> Gregor: You'll make your life so much easier if you just write some sort of generic child<->host driver :P
02:42:56 <elliott> And do everything over that
02:43:17 <pikhq_> NixOS does not use musl, and I could not in good conscience make a distro using glibc.
02:43:17 <Gregor> elliott: It would have to be magically generic to support both arbitrary networking and UNIX domain sockets ...
02:43:23 <Gregor> Like, impossible-generic.
02:43:32 <CakeProphet> name said driver Chauffeur
02:43:35 -!- augur has joined.
02:43:36 <CakeProphet> for many lulz.
02:43:37 <elliott> Gregor: You don't
02:43:51 <elliott> Gregor: Just run the HTTP proxy server _inside the guest_
02:43:56 <elliott> Gregor: And make it send requests over that generic mechanism
02:44:17 <Gregor> elliott: Oh, I see your trick.
02:44:29 <CakeProphet> also it's very important that it's called chauffeur
02:44:31 <Gregor> elliott: But anyway, 'til this point I haven't touched the kernel.
02:44:43 <elliott> Gregor: Yeah, but your life is going to get exponentially harder the more you try to do :P
02:44:53 <elliott> You're using slirp, man :P
02:45:06 <Gregor> slirp is pretty nifty, when security isn't a concern ...
02:45:23 <elliott> It was last updated about five hundred years ago, and its man page is unbearable :P
02:45:31 <elliott> (OK, so Debian have made changes)
02:45:35 <elliott> --Kelly "STrRedWolf" Price
02:45:35 <elliott> Slirp Maintainer
02:45:38 <elliott> OH MAN SO PROFESSIONAL
02:45:48 <CakeProphet> Dude chauffeurs get paid a lot of money.
02:45:52 <CakeProphet> to just like... drive people places.
02:45:59 <elliott> <pikhq_> NixOS does not use musl, and I could not in good conscience make a distro using glibc.
02:46:12 <elliott> pikhq_: you could probably build your own NixOS using musl
02:46:16 <elliott> if you make a musl package
02:46:19 <Lymee> @let 1 = 2
02:46:20 <lambdabot> Defined.
02:46:21 * oerjan suddenly gets an urge to rename Taneb's latest language to Istanbul
02:46:23 <Lymee> > 1 + 1
02:46:25 <lambdabot> 2
02:46:26 <Lymee> :(
02:46:36 <CakeProphet> Lymee is banned from using let.
02:46:37 <Lymee> > 1
02:46:38 <lambdabot> 1
02:46:40 <elliott> It depends rather strongly on upstart though because the packages in Nixpkgs do (or you could just write your own script for every package like you'd have to anyway)
02:46:41 <Lymee> :[
02:46:42 <CakeProphet> @undefined
02:46:45 <CakeProphet> @undefine
02:47:03 <quintopia> tell me this isn't hilarious: http://images2.wikia.nocookie.net/__cb20080606170116/inciclopedia/images/2/20/DDR_DDR.jpg
02:47:27 <pikhq_> elliott: I'd also want to use runsv instead of upstart...
02:47:30 <elliott> quintopia: it isn't
02:47:30 <oerjan> Lymee: 1 isn't an identifier, the 1 in 1 = 2 is interpreted as a pattern match
02:47:33 <elliott> pikhq_: So write your own scripts
02:47:37 <pikhq_> Yup.
02:47:37 <quintopia> elliott: thanks
02:47:45 <elliott> pikhq_: At least you have something to do then :P
02:47:53 <Lymee> > (1) = 2
02:47:55 <lambdabot> <no location info>: parse error on input `='
02:47:57 <elliott> FWIW, I'm not the biggest fan of Nix's package description language, but ... I like it more than yours :P
02:48:10 <CakeProphet> Lymee: using parentheses does not change this fact.
02:48:14 <Lymee> :(
02:48:39 <pikhq_> elliott: I could probably think of a better one.
02:48:55 <elliott> pikhq_: Yep; then you get to implement it
02:49:07 <elliott> Actually Nix is implemented in C++ which sucks, if I wrote one it'd be in Haskell
02:49:20 <oerjan> Lymee: there is no way to redefine 1 like that
02:49:24 <pikhq_> Oh, then Nix would be unusable with a musl system, anyways.
02:49:35 <elliott> pikhq_: Well that's a temporary problem... a big one, though :P
02:49:37 <elliott> You can't even use WebKit
02:49:45 <elliott> > let 1 = 2 in "shut up Lymia"
02:49:45 <lambdabot> "shut up Lymia"
02:49:56 <pikhq_> Yeah, it's not like there's never going to *be* C++ support.
02:50:01 <pikhq_> It's just a problem right now.
02:50:08 <Lymee> > let 2 = 1 in "nou"
02:50:10 <lambdabot> "nou"
02:50:21 <elliott> pikhq_: Maybe I'll write a purely-functional service system in Haskell :P
02:50:36 <elliott> That sounds really neat I wonder how I'd do that???
02:50:48 <Lymee> > text "<CTCP>ACTION hugs elliott<CTCP>"
02:50:49 <pikhq_> Also, I gave up on trying to get GHC to build on a musl system. It's probably *doable*, but GHC is a royal PITA to build.
02:50:49 <lambdabot> <no location info>:
02:50:50 <elliott> I'm not sure I trust GHC so much that I'd run it as process one though
02:50:50 <lambdabot> lexical error in string/character literal at chara...
02:50:51 <elliott> Oh wait
02:50:56 <elliott> Most people use fucking C as their process one
02:50:58 <Lymee> > text "\0001ACTION hugs elliott\0001"
02:50:59 <elliott> HAHA TEN TIMES MORE TRUSTABLE GUYS
02:50:59 <lambdabot> ACTION hugs elliott
02:51:02 <Lymee> :(
02:51:06 <elliott> pikhq_: Well then your OS is useless :)
02:51:23 <elliott> (I have been spending my life trying to be a more perfect Haskell zealot lately)
02:51:23 <pikhq_> elliott: Actually, I gave up on trying to get GHC to build *at all*, too, so. :P
02:51:30 <elliott> GHC is easy to build nowadays, dude
02:51:33 <elliott> It's just autoconf + circular
02:51:51 <pikhq_> Thank you for naming its problems!
02:52:03 <elliott> Har har har, but come on, autoconf packages are not hard to build
02:52:20 <pikhq_> 'Cept when they are.
02:52:24 <pikhq_> Then they're unbearable.
02:52:24 <elliott> They're really not
02:52:35 <pikhq_> I sentence you to GCC.
02:52:42 <elliott> Unfair
02:52:45 <elliott> Here's how to build GHC
02:52:47 <elliott> - Get binary of previous build
02:52:52 <elliott> - make install into temporary directory
02:52:56 <elliott> - ./configure --with-ghc=...
02:52:57 <elliott> - make
02:52:59 <elliott> - make install
02:53:12 <elliott> This has worked for me multiple times recently
02:54:00 <elliott> Hmm, dammit, where's this generic structure transformation covered
02:54:10 <elliott> Hey oerjan
02:54:16 <monqy> !haskell {-# LANGUAGE RebindableSyntax #-} import System.IO; fromInteger = (+1); main = print 5
02:54:20 <EgoBot> ​/tmp/input.23021.hs:1:13: unsupported extension: RebindableSyntax
02:54:23 <monqy> :(
02:54:27 <oerjan> wat
02:54:33 <monqy> !haskell {-# LANGUAGE NoImplicitPrelude #-} import System.IO; fromInteger = (+1); main = print 5
02:54:57 <elliott> oerjan:
02:54:59 <oerjan> monqy: your fromInteger definition infloops :P
02:55:03 <elliott> data LC = Lam String LC
02:55:04 <elliott> | App LC LC
02:55:04 <elliott> | Var String
02:55:04 <elliott> data Ann LC a = AnnLam (a, Ann String a) (a, Ann LC a)
02:55:04 <elliott> | AnnApp (a, Ann LC a) (a, Ann LC a)
02:55:04 <elliott> | AnnVar (a, Ann String a)
02:55:12 <elliott> oerjan: I want to turn any type into its Ann type, as shown above
02:55:18 <elliott> THERE MUST BE SOME KIDN OF TYPECLASS FOR THIS :(
02:55:25 <monqy> oerjan: it doesn't work at all because I forgot (+) isn't even in scope :(
02:55:27 <elliott> Maybe it's SYB
02:55:34 <Lymee> !haskell {-# LANGUAGE NoImplicitPrelude #-} import System.IO; fromInteger = join (+); main = print 5
02:55:35 <elliott> monqy: it would be
02:55:41 <elliott> (+1) is an integer though
02:55:46 <elliott> try swapping the + sign
02:56:04 <Lymee> !haskell {-# LANGUAGE NoImplicitPrelude #-} import System.IO; import Prelude as P; fromInteger = P.join (P.+); main = print 5
02:56:05 <monqy> 19:56:42 <EgoBot> /tmp/input.23091.hs:1:68: Not in scope: `+'
02:56:05 <monqy> 19:56:42 <EgoBot>
02:56:07 <monqy> ????
02:56:45 <Lymee> !haskell {-# LANGUAGE NoImplicitPrelude #-} import System.IO; fromInteger = Prelude.join (Prelude.+); main = print 5
02:56:59 <oerjan> !haskell {-# LANGUAGE NoImplicitPrelude #-} import Prelude hiding (fromInteger); fromInteger = succ; main = print 5
02:57:04 <EgoBot> 6
02:57:12 * oerjan cackles evilly
02:57:28 <elliott> monqy: well not with rebindablesyntax, but with _noimplicitprelude_, yes
02:57:33 <Lymee> !haskell {-# LANGUAGE NoImplicitPrelude #-} import Prelude hiding (fromInteger); fromInteger = succ; main = print (5 + 5)
02:57:38 <EgoBot> 12
02:57:43 <Lymee> Ooohhhhh~
02:57:44 <Lymee> >:D
02:58:04 <Lymee> !haskell {-# LANGUAGE NoImplicitPrelude #-} import Prelude hiding (fromInteger); fromInteger = join (*); main = print 5
02:58:25 <Lymee> !haskell {-# LANGUAGE NoImplicitPrelude #-} import Prelude hiding (fromInteger); fromInteger = (\x -> x*x); main = print 5
02:58:29 <EgoBot> 25
02:58:33 <monqy> elliott: how does it work with old ghcs like EgoBot's that don't have rebindablesyntax (and instead have noimplicitprelude doing the rebindablesyntax stuff)?
02:58:49 <elliott> monqy: import Prelude
02:59:22 <monqy> but you'd have to do that with rebindablesyntax too wouldn't you
02:59:27 <monqy> since it implies noimplicitprelude???
02:59:33 <elliott> total used free shared buffers cached
02:59:33 <elliott> Mem: 3699 1762 1936 0 34 441
02:59:33 <elliott> -/+ buffers/cache: 1286 2412
02:59:33 <monqy> im confused
02:59:36 <elliott> I should use more memory
02:59:40 <elliott> monqy: does it?
02:59:42 <elliott> ok i guess
02:59:51 <monqy> -XRebindableSyntax implies -XNoImplicitPrelude.
02:59:56 <monqy> (from http://www.haskell.org/ghc/docs/7.0.2/html/users_guide/syntax-extns.html#rebindable-syntax )
03:00:28 <monqy> somehow I bookmarked 7.0.2 instead of latest
03:00:47 <monqy> fixed bookmark
03:03:06 <Lymee> @let {-# LANGUAGE NoImplicitPrelude #-}
03:03:08 <lambdabot> Defined.
03:03:10 <Lymee> ...
03:03:12 <Lymee> > map
03:03:13 <lambdabot> Overlapping instances for GHC.Show.Show ((a -> b) -> [a] -> [b])
03:03:13 <lambdabot> arising...
03:03:37 <Lymee> > id 1
03:03:39 <lambdabot> 1
03:03:40 <Lymee> :(
03:03:50 <monqy> :(
03:03:55 <CakeProphet> http://www.lewrockwell.com/orig2/baskerville1.html
03:03:57 <elliott> there's no way that comment appears at the top
03:04:34 <Sgeo_> http://www.reddit.com/r/bestof/comments/jgpr8/hi/
03:05:34 <elliott> wrong channel
03:06:38 <oerjan> <elliott> wrong channel <-- wait that wasn't a comment to <Lymee> @let {-# LANGUAGE NoImplicitPrelude #-} ?
03:06:50 <elliott> no
03:06:51 <elliott> to Sgeo_
03:06:55 <elliott> oh
03:06:58 <elliott> <Sgeo_> http://www.reddit.com/r/bestof/comments/jgpr8/hi/
03:06:58 <elliott> <elliott> wrong channel
03:06:59 <elliott> not
03:07:02 <elliott> <elliott> there's no way that comment appears at the top
03:07:02 <elliott> <elliott> wrong channel
03:07:04 <elliott> it was to lymee yes
03:07:16 <oerjan> GOOD, GOOD
03:07:52 <itidus20> CakeProphet: is there any magic method to convert a DFA to a regular expression or is it raw problem solving?
03:08:37 <elliott> It is completely impossible. just ask oerjan for the proof.
03:09:04 <monqy> itidus20: magic method? it's a simple algorithm
03:09:12 <elliott> YOURE RUINING ING IT
03:09:37 <itidus20> just like you spoiled xmas for little timmy
03:09:47 <monqy> what
03:10:16 <itidus20> a joke based on the idea of ruining things
03:10:21 <monqy> ok
03:11:06 <itidus20> little timmy being named to sound like a poor little sickly kid
03:11:15 <monqy> ok
03:11:23 <elliott> looking ghostly
03:11:33 <monqy> i laughed too much at that
03:11:50 <elliott> now or when it happened
03:11:57 <itidus20> lol
03:12:00 <monqy> i was still laughing when I typed that
03:12:07 <elliott> oh my god IAmInLoveWithJesus still posts
03:12:11 <monqy> and now, yes
03:12:22 <elliott> oh wait, just posted last month after not posting for two years, lol
03:12:25 <monqy> the original looking ghostly was great too though
03:12:28 <oerjan> <elliott> wrong channel <-- well it was funny anyhow
03:12:42 <elliott> oerjan: no, Sgeo_ isnot allowed fun
03:12:53 <monqy> who is iaminlovewithjesus
03:13:03 <elliott> monqy: my hero
03:15:22 <itidus20> So this is a DFA I made to consolidate my lesson. http://oi53.tinypic.com/wmmgrq.jpg
03:15:30 <elliott> blah
03:15:32 <elliott> good state
03:15:42 <itidus20> its like a toilet
03:15:57 <elliott> i like how you defined one-letter abbreviations and then never used them
03:17:01 <itidus20> i am surprised at how complex the resulting language is
03:17:29 <elliott> how come that mario can be hit twice before he dies
03:17:38 <elliott> the small mario that is
03:17:45 <elliott> or um
03:17:46 <elliott> he dies
03:17:53 <elliott> but then why can he be hit by an enemy or fall down a hole or mushroom
03:18:01 <monqy> he cant
03:18:03 <elliott> shouldn't dead mario just feed back into itself or w/e
03:18:05 <monqy> if that happens it wont be accepted
03:18:10 <elliott> monqy: yes it will
03:18:12 <elliott> monqy: it will go to blah
03:18:16 <elliott> see diagram
03:18:17 <monqy> and blah is not accepting state
03:18:20 <elliott> oh
03:18:25 <itidus20> hehehe...
03:18:26 <elliott> i just thought the extra circles were
03:18:27 <elliott> like
03:18:28 <elliott> mistakes
03:18:38 <monqy> beautiful mistakes
03:19:09 <itidus20> i dont actually know the rules of mario well enough to extend it to the fire flower
03:19:22 <itidus20> because its hard to recreate those effects
03:20:10 <itidus20> technically theres a small mario with fire mario clothes that can be obtained by clever glitch exploitation
03:20:23 <Gregor> VDE hmm ...
03:20:34 <elliott> Gregor: What
03:20:43 <elliott> http://vde.sourceforge.net/????????////////
03:20:52 <elliott> Looks like it maybe
03:21:09 <monqy> is that a hat or a 2
03:21:14 <elliott> what
03:21:20 <monqy> http://vde.sourceforge.net/v2logo.png
03:21:24 <monqy> oh it's a 2
03:21:36 <elliott> oh
03:22:10 <Gregor> Uhh, yeah :P
03:22:23 <elliott> Gregor: It looks like a router thing rather than anything you could diectly communicate with maybe???
03:26:04 <Gregor> elliott: It's a virtual networking infrastructure.
03:26:10 <Gregor> elliott: Also, ?!??!!!!!???????!??!??!
03:29:19 <elliott> Gregor: ???????????????????????????????????????????????????????????///// i cant type xeclmvation marks
03:29:47 <monqy> here have mine!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
03:29:55 <elliott> STOP BRAGING
03:30:08 <itidus20> why not try an interrobang
03:30:59 -!- augur has quit (Ping timeout: 250 seconds).
03:31:32 <quintopia>
03:31:56 <itidus20> i dont have unicode turned on but ill take your word for it !!!!!!!!!!!!!!!!1
03:32:29 <elliott> oh no, i need the generics stuff
03:34:29 <itidus20> ‼‼‼‼‼‼‼‼‼‼‼‼‼‼‼‼‼‼‼‼‼‼‼‼‼‼‼‼‼
03:38:25 <itidus20> ‼‽!?¿?!‼‽!?¿?!‼‽!?¿?!
03:39:08 <quintopia> ¡
03:44:15 <PatashuWarg> ‼ is the NOT NOT function
03:44:18 <PatashuWarg> Very useful to have
03:45:49 <elliott> You jest, but it's quite common in languages with no proper boolean type
03:45:52 <elliott> e.g. C
03:46:03 <elliott> (If you think C99 has one, tell me what value (bool)9 has)
03:46:14 <PatashuWarg> so you've seen it used?
03:46:30 <pikhq_> !! is the boolean cast operator.
03:46:34 <elliott> PatashuWarg: You haven't?
03:46:38 <elliott> It's common in C code.
03:46:41 <quintopia> it sets a positive number to 1 in most Cs right?
03:46:48 <elliott> quintopia: Nnnnnnnnnnnnnnnnnnnnnnnnnno.
03:46:55 <elliott> quintopia: It's equivalent to ==[one]
03:46:59 <elliott> Where [one] is the digit one
03:47:03 <zzo38> Yes I have used !! in a few C codes sometimes
03:47:08 <elliott> Also (x ? [one] : 0)
03:47:24 <zzo38> It changes everything to 1 except 0 and null pointer, which remains 0
03:47:26 <elliott> I'm worried as to what state of affairs caused you to believe it could do something like check for positivity
03:47:33 <elliott> zzo38: Oh right, it's not equivalent to ==[one]
03:47:35 <elliott> Not even remotely
03:47:39 <elliott> It'd be [exclamation mark]= 0
03:47:54 <elliott> (for both values and pointers)
03:48:06 <quintopia> elliott: i was thinking it was a check from nonzeroness
03:48:34 <quintopia> *for
03:49:21 <elliott> It is
03:49:34 <elliott> Except it's used where something is basically "like a boolean"
03:49:35 <quintopia> but i didn't know for sure if !0=1 was an explicit standard
03:49:44 <elliott> For instance, if a search routines either NULL or a pointer to the found thing
03:49:52 <elliott> Then you can cast it to a zero-or-one boolean with !!
03:50:19 <quintopia> i don't frequently need my trues to be exactly 1
03:50:23 <zzo38> I think it is a standard C code that anything resulting in boolean would be 1 for true and 0 for false
03:50:28 <quintopia> i'd put the routine in the if statement directly
03:51:04 <zzo38> I also usually don't need !! since I also don't need the numbers 0 and 1 but in a few cases I find it useful to do so
03:52:30 <elliott> quintopia: If you believe booleans can only be used directly in an if statement, you have a very poor conception of booleans indeed
03:52:52 <elliott> If you have a named boolean type -- which you should, even if it'll have more values than you want in C -- then assigning anything but zero or one to it is punishable by death.
03:53:07 <elliott> Because lord knows that (x == TRUE) should be a different test to x.
03:53:26 <quintopia> ORAIT
03:53:33 <quintopia> IT MAKES HUEG DIFFERENCE IN C CODE
03:53:39 <elliott> What\
03:53:46 <quintopia> when are you going to fix your keyboard?
03:53:53 <elliott> Soon
03:55:12 <zzo38> I fixed the spiders in MegaZeux by assuming true is 1 and false is 0.
03:55:16 <zzo38> int web=(element_type==ELEMENT_THINWEB)+(element_type==ELEMENT_THICKWEB)*2;
03:55:49 <zzo38> But at first needs element_type which is int element_type=(d_flag&(A_ELEMENT*7))>>19;
03:56:29 <zzo38> And it now works far better than the old one, which not only didn't work, but was not as versatile as my new one
04:04:27 -!- elliott has quit (Ping timeout: 250 seconds).
05:06:37 -!- GreaseMonkey has quit (Quit: The Other Game).
05:40:49 <zzo38> That's my good friend. He often plays the fool. But I myself wouldn't touch a ten-foot Pole with a guitar!
05:44:29 <oerjan> ye olde wild escaped punchline
05:44:35 <oerjan> *wilde
05:48:42 <oerjan> looking for its joke
05:50:11 -!- elliott has joined.
05:50:36 <elliott> hi
05:50:59 <oerjan> hello
05:52:15 <elliott> pikhq_: is your package manager perfect yet
05:54:36 <pikhq_> No.
05:56:00 <elliott> oh
06:00:09 <zzo38> What things does your package manager do? What ideas do you have?
06:06:34 <elliott> `addquote <itidus20> like i could ask how many "petals" are there on each of the "flowers" on this coffee mug i just made a drink with <itidus20> but that would be NP hard I think
06:06:36 <HackEgo> 583) <itidus20> like i could ask how many "petals" are there on each of the "flowers" on this coffee mug i just made a drink with <itidus20> but that would be NP hard I think
06:07:32 <elliott> 05:18:14: <itidus20> hummm.. Garfield [who designed Magic] studied under Herbert Wilf and earned a Ph.D. in combinatorial mathematics from Penn in 1993.
06:07:32 <elliott> but what does he think of mondays
06:07:51 <oerjan> >_>
06:08:01 <elliott> `addquote <itidus20> combinatronics seems to be the mathematics chasing buddha's tail <itidus20> yeah.. he was a smart monkey that buddha
06:08:02 <HackEgo> 584) <itidus20> combinatronics seems to be the mathematics chasing buddha's tail <itidus20> yeah.. he was a smart monkey that buddha
06:10:12 <elliott> 05:50:06: <itidus20> you know..
06:10:12 <elliott> 05:50:08: <itidus20> that..
06:10:12 <elliott> 05:50:24: <itidus20> patents are like an altar made of wood
06:10:12 <elliott> 05:50:37: <itidus20> onto which the rich can store their gold
06:10:12 <elliott> 05:50:37: <itidus20> onto which the rich can store their gold
06:10:12 <elliott> dee;p
06:10:34 <oerjan> http://www.einaudi.cornell.edu/curriculum/monkey/journey/
06:12:23 <fizzie> Based on a the last few lines -- can't be bothered to read further back -- got tempted to topicize something like "the channel of magic an monkeys", but that would again confuse the-other-sort-of-esoteric visitors.
06:12:47 <elliott> confuse is good
06:16:09 <oerjan> confusius say
06:18:22 <elliott> http://www.reddit.com/r/fifthworldproblems/
06:18:24 <elliott> help what is this
06:21:27 <oerjan> something must have escaped from the scp foundation, i think
06:26:11 <PatashuWarg> rofl
06:26:25 <PatashuWarg> reddit...
06:28:22 <oerjan> PatashuWarg: anyway, since when did you become a werewolf?
06:28:33 <PatashuWarg> oh
06:28:37 <PatashuWarg> I don't know why I'm using that name on here
06:31:14 <elliott> 06:53:30: <NihilistDandy> I used to be in three channels on Freenode. Now I'm on 16. Thanks, #haskell and #esoteric
06:31:19 <elliott> #esoteric usually results in a _decrease_
06:31:22 -!- cheater has joined.
06:31:42 <elliott> 06:57:06: <monqy> what's -spinoff is it any good
06:31:46 <elliott> monqy: fizzie is on -minecraft.
06:31:53 <elliott> Which is mostly about things that aren't Minecraft.
06:32:32 <monqy> oh
06:32:53 <oerjan> so about as on topic as #esoteric itself?
06:33:08 <elliott> monqy: right now it's about half dwarf fortress, half vaguely off-topic things that we feel needs a smaller audience than here I guess???
06:33:25 -!- cheater__ has quit (Ping timeout: 250 seconds).
06:33:29 <elliott> it is a: nice channel
06:33:44 <monqy> too bad I still haven't bothered myself into getting into dwarf fortress
06:34:03 <elliott> monqy: it's as entertaining to read about as play
06:34:22 <monqy> well reading it is pretty entertaining
06:34:41 <elliott> yep
06:36:04 -!- cheater_ has joined.
06:37:19 -!- cheater has quit (Ping timeout: 250 seconds).
06:38:10 <elliott> Gregor: What happened to matrixofsolidity???
06:38:45 -!- oerjan has set topic: Don't enjoy unlocking the matrix of unobtainide, please. | wget -s 42 redpill | man mouth |.
06:38:48 <oerjan> http://codu.org/logs/_esoteric/
06:38:54 <oerjan> wat
06:39:06 <elliott> lol
06:39:09 <zzo38> TOPIC #esoteric :Don't enjoy unlocking the matrix of unobtainide, please. | wget -s 42 redpill | man mouth | http://codu.org/logs/_esoteric/
06:39:11 <oerjan> bloody irssi
06:39:14 -!- zzo38 has set topic: Don't enjoy unlocking the matrix of unobtainide, please. | wget -s 42 redpill | man mouth | http://codu.org/logs/_esoteric/.
06:39:15 <oerjan> thanks
06:39:52 <zzo38> Why did you post the URL in a message not the topic message?
06:40:04 <oerjan> irssi's cut and paste failed
06:40:12 <monqy> why did you cut and paste the topic
06:40:14 <elliott> cut? you removed the topic from the window?
06:40:15 <monqy> in irssi
06:40:29 <elliott> ZFunge is a largely Befunge 98 compatible Z-machine application created by Martin Bays. It is multithreaded and three dimensional, and supercedes ZBefunge. Provided you like fungular confusion!
06:40:33 <monqy> if you do /topic <tab> it will put the topic where the tab was
06:40:34 <elliott> Deewiant: So how does it do on Mycology
06:40:37 <monqy> and then you can just edit it there
06:40:49 <oerjan> monqy: ooh
06:40:49 <elliott> monqy: irssi "workarounds for having a bad output mechanism" irssi
06:41:10 <oerjan> monqy: cut and paste worked last time...
06:41:21 <monqy> i don't trust cut and paste
06:41:36 <oerjan> well i don't either, now :(
06:41:39 <monqy> :(
06:41:53 <elliott> 11:36:11: <ais523> hmm, does anyone here know of ATS (a language that isn't meant to be eso, but may as well be)?
06:41:53 <elliott> 11:36:15: <ais523> here's some code: http://www.ats-lang.org/EXAMPLE/MISC/quicksort_list_dats.html
06:41:53 <elliott> 11:38:25: <ais523> the homepage is effectively saying "look how great our language is, it only took us ten years to write quicksort"
06:42:11 <elliott> ?tell ais523 I know enough about ATS to have opinions on it.
06:42:11 <lambdabot> Consider it noted.
06:42:27 <elliott> ?tell ais523 "it's basically, you write both an imperativish and a functionallish program, in such a way that you prove they do the same thing" -- this isn't really true, but whatever.
06:42:27 <lambdabot> Consider it noted.
06:42:29 <elliott> ADVANCED LOGREADING
06:42:32 <elliott> TEMPORALLY DISPLACED
06:42:40 <zzo38> To me the only paste problem occurs in IRC if I paste a linebreak accidentally.
06:43:02 <elliott> 11:40:27: <Phantom_Hoover> Yeah, it's... preternaturally ugly.
06:43:02 <elliott> It's... mostly the bad syntax highlighting.
06:44:37 <elliott> "The AS/400 (the ultimate CISC) might qualify as an unintentionally esoteric computer architecture. It has transcendental math, iconv, malloc/realloc/free, (almost) sprintf, mark-and-sweep garbage collection, compression, and encryption, as single assembly instructions. It has 128-bit segmented pointers (which are bit patterns but not integers), EBCDIC characters, no (visible) registers, hardware malloc() instead of a stack for function arguments
06:44:37 <elliott> /local variables, and trap representations. It's what inspired the majority of weird things in the C standard like the undefined behavior about pointer arithmetic ("one past the end of the last array") and casting (data pointers, function pointers, and integers can't be cast to one another on the AS/400). It's one of the few architectures that needs va_end() because va_lists are implemented using malloc and must be freed. On the AS/400, the lette
06:44:37 <elliott> rs 'A' to 'Z' (and 'a' to 'z') are not at contiguous code points. There's a single level store (no distinction between RAM and disk) and files are segments too. Pointers can be copied with memcpy (which, like most of <string.h>, is also an assembly instruction), but the simpler cpybytes instruction doesn't copy pointers because pointers have special metadata (not part of the pointer) that marks them as valid. Compared to most assembly languages/C
06:44:42 <elliott> PU architectures, the AS/400 is definitely esoteric. Ian 02:19, 13 August 2011 (UTC)"
06:44:44 <elliott> :DDDDDDDDDDDddddddddd
06:44:49 <zzo38> My IRC client might have a few features that no other IRC client has; do you know if it is?
06:45:59 <oerjan> zzo38: irssi breaks output across lines, and is _supposed_ to join lines together if you paste to the channel, but too often fails
06:46:01 <PatashuWarg> Wow, EBCDIC characters
06:46:39 <oerjan> so cutting from the irssi window to paste back into it is fickle
06:47:09 <elliott> 13:53:33: <Gregor> elliott: You're not here.
06:47:09 <elliott> 13:53:38: <Gregor> <-- genius
06:47:10 <elliott> 14:00:14: <Gregor> ais523: As punishment for you're being here, I'm telling you this anecdote: Yesterday I accidentally uninstalled dash, coreutils, grep, sed, tar, dpkg and apt. Then, I fixed my system.
06:47:14 <elliott> Gregor: Explain. Immediately.
06:47:47 <elliott> Oh, yer explaining :P
06:48:17 <zzo38> This is seems very strange kind of computer if all of this stuff of AS/400 is doing in hardware including some C stuff that no other computer has, it would do some strange things with C that other computers don't do, I guess
06:48:51 <zzo38> Is AS/400 computer architecture compatible with LLVM though?
06:49:00 <elliott> let me use my omniscience to find out :)
06:52:23 <zzo38> Since I wrote my IRC client by myself, I don't know the comparison between feature of other IRC client. Do you know?
06:54:30 <zzo38> What I do know is that this program, copy/paste is a feature of the terminal emulator rather than a feature of the IRC client program itself.
06:54:34 <pikhq_> elliott: Wow. It's an actual C machine.
06:55:14 <zzo38> pikhq_: Yes it seems like that to me.
06:55:15 <elliott> not that you'd need C with assembly like that
06:55:54 <zzo38> elliott: No, you still need C; one purpose of even having C is that you can compile in many computers.
06:55:58 <pikhq_> Yeah, the assembly language appears to be about on par with C in expressiveness.
06:57:05 <pikhq_> elliott: IBM *still sells this*.
06:57:43 <elliott> too CISC; didn't buy
06:57:49 <elliott> ...also too expensive
06:58:07 <zzo38> If it has no registers, does that mean the "register" command in C is meaningless on this computer?
06:58:22 <pikhq_> zzo38: It generally is. :)
06:58:45 <elliott> wow, the VAX had instructions for evaluating polynomials
07:00:03 <elliott> "AS/400 "Future Systems" (128-bit...in 1988!) (check out its instruction set: Materialize User Profile? Free Activation Group-Based Heap Space Storage? Call Program with Variable Length Argument List?)"
07:00:13 <elliott> call program with variable length argument list: the best assembly instruction
07:00:24 <elliott> "SHARC (hardware COME FROM!!!)" :DDDDDDDDDddddddddd
07:03:56 <zzo38> Reading the linked documentation, I can see the commands
07:05:58 -!- oerjan has quit (Quit: Good night).
07:13:35 <zzo38> It even has instruction for computing date duration.
07:15:09 <PatashuWarg> SHARC?
07:15:17 <elliott> PatashuWarg: Shark.
07:15:48 <elliott> should i sleep
07:19:02 <elliott> you're lall terrihlble
07:19:24 <zzo38> It has a lot of different kinds of copying
07:21:12 <PatashuWarg> how can you copy in different ways?
07:22:40 <zzo38> It has both binary and decimal modes, and it has zoned decimal and packed decimal
07:23:12 <PatashuWarg> wow
07:23:19 <PatashuWarg> high level assembly
07:23:26 <elliott> should i seep
07:26:55 <zzo38> I suppose in the case of C programs that do things contrary to AS/400, you could make an emulator if necessary.
07:29:40 <elliott> hel;lp should i felspeeep
07:29:47 <elliott> shurosjhudl i slep
07:31:16 <elliott> shojdfosduljfd i hsoisleeep
07:31:17 <elliott> help
07:31:35 <Taneb> I've been sleepin
07:31:40 <Taneb> g since around 11
07:31:59 <elliott> that is because
07:32:01 <elliott> you do things
07:32:03 <elliott> the reasonable way
07:32:07 <elliott> ((bad way))
07:32:53 <elliott> sjoshuxocjls i seleepj
07:33:18 <elliott> hepl......
07:34:16 <elliott> HEPL............
07:34:34 <elliott> HEPLY.....
07:34:46 <elliott> not hepling :(
07:35:58 <elliott> Taneb gets a little card saying "not heplful two thousand and eleven 9remembered forever)", also so does everyone else in here, enjoy your cards i am going to cry (i amnot actually going to cry)
07:36:02 <elliott> (also the cards are not real)
07:36:06 <elliott> (they are fake imaginary cars)
07:36:17 <Taneb> Don't fall asleep.
07:36:24 <Taneb> Sleep is when the nightmares cometh
07:36:48 <elliott> NOT HEPLFUL
07:37:13 <elliott> all i have to do is put the laptop screen down but that sounds like work??? yeah
07:37:29 <elliott> looking ghostly
07:38:44 <zzo38> Built-in date/time instructions. It has user profiles at the hardware level (although some fields of the user profiles are for operating system use). It has a complicated way of converting numbers into display form. The MVLICOPT command uses Unicode even though some other commands use EBCDIC.
07:38:45 <elliott> monqy: i choose to blame yuo
07:39:16 <monqy> who watht
07:39:21 <elliott> monqy: SHOUDLJDL I SLEP
07:39:34 <monqy> i am not a slepe doctore.....
07:39:43 -!- PatashuFluttersh has joined.
07:39:48 <elliott> YOU ARE NOW [punches in slow motion] [film pauses before punch hits]
07:39:50 <elliott> [film rewinds]
07:39:55 <elliott> [punch rewinds so far it goes through my head]
07:39:56 <elliott> hepl
07:40:00 <monqy> hlep
07:40:08 <elliott> HELPK,L
07:40:20 <elliott> IM FIST IN HEAD AND DONT KNOW TO SLEEP??????
07:40:43 <elliott> ok i specifically crafted that last line to get addquoted someone do it
07:40:47 <monqy> step 1 fist out of hed step 32 learn how to spelepe sltep 3 selp
07:40:51 <elliott> or ill have to
07:41:11 <elliott> monqy: are you syinging
07:41:14 <elliott> thta
07:41:20 <elliott> in yuor pofesional slepe doctore opinoyins
07:41:26 <elliott> im shouoldk slep?
07:41:47 <Taneb> He just wants your money
07:41:53 -!- PatashuWarg has quit (Ping timeout: 252 seconds).
07:41:53 <Taneb> He gets more money if you sleep
07:42:11 <elliott> CFONCFONLINCTING OPINIONS AND IM NOW MORE EVEN LOOKING GHOSTLY
07:42:15 <elliott> I MIGHT BECOME GHOST
07:42:21 <elliott> `addquote <elliott> IM FIST IN HEAD AND DONT KNOW TO SLEEP??????
07:42:23 <monqy> i was only giving instructions on how to sleep.l....
07:42:26 <HackEgo> 585) <elliott> IM FIST IN HEAD AND DONT KNOW TO SLEEP??????
07:42:29 <monqy> NOT ADVICE ON WHETHER YOU SHOULD
07:42:32 <elliott> `addquote <elliott> I MIGHT BECOME GHOST
07:42:33 <HackEgo> 586) <elliott> I MIGHT BECOME GHOST
07:42:35 <elliott> monqy: I NEED A SLEPE DOCTORE
07:42:41 <monqy> wjhy did you add thoise.....
07:42:45 <elliott> BECUAJUISE IM SO FUNNY
07:42:54 <elliott> I WILL ADD EVERY LINE I SAY AFTER ONE AFTER THIS ONE IF YOU DO NOT GIVE ME PROFESIONAL ADIVCE
07:43:02 <elliott> (THEN CONITINUE TO RE-ADD FOREVER)
07:47:19 <zzo38> AS/400 even has command to copy the high 4 bits of one byte to the low 4 bits of another byte.
07:51:31 <zzo38> And you are not allowed to branch to NOOP instructions.
07:54:43 -!- elliott has quit (Ping timeout: 252 seconds).
07:57:29 <PatashuFluttersh> why not?
07:58:10 <Taneb> Breakfast time!
07:58:15 -!- Taneb has quit (Quit: He's a big quitter he is.).
08:05:51 -!- cheater__ has joined.
08:08:45 -!- cheater_ has quit (Ping timeout: 240 seconds).
08:09:54 -!- Taneb has joined.
08:12:29 <Taneb> What does anyone think of Constantinople?
08:17:23 <zzo38> OK, I have read it.
08:17:49 <zzo38> I think I understand it.
08:18:07 <Taneb> I haven't written it very well
08:18:25 <zzo38> Yes, I can see it is not written very well.
08:22:41 <Taneb> Ignore that it isn't well written, what do you think of the language
08:23:09 <zzo38> It is OK, I guess.
08:23:25 <Taneb> That's good enough for me!
08:23:27 <Taneb> Thanks!
08:24:27 <Taneb> Can you try to neaten the article up, if you're not too busy?
08:28:10 <zzo38> Not today; now I will sleep.
08:28:13 -!- zzo38 has quit (Remote host closed the connection).
08:30:18 <Taneb> going now
08:32:49 -!- BeholdMyGlory has joined.
08:35:08 -!- Taneb has quit (Ping timeout: 260 seconds).
08:50:33 -!- pitufoide has quit.
10:20:24 -!- Phantom_Hoover has joined.
10:23:00 <Phantom_Hoover> "The greatest warriors are the ones who fight for peace."
10:23:00 <Phantom_Hoover> -- Holly Near
10:23:00 <lambdabot> Phantom_Hoover: You have 7 new messages. '/msg lambdabot @messages' to read them.
10:23:09 <Phantom_Hoover> Glanced at this, thought it said "fight in space".
10:26:24 <itidus20> Java is... kind of cool..
10:26:44 * itidus20 looks around coyly whistling even though he lacks whistling ability.
10:51:34 -!- monqy has quit (Quit: Lost terminal).
10:59:56 -!- FireFly has joined.
11:00:58 <Phantom_Hoover> itidus20, um...
11:06:20 <itidus20> But it is like a girlfriend who is too attractive. It has flaws which we want to overlook in our limerence?
11:06:36 <itidus20> s/?/.
11:07:47 <Phantom_Hoover> Yes. We all want to overlook Java's flaws in our limerence.
11:08:44 <Phantom_Hoover> Oh wait that's actually a word.
11:09:48 <itidus20> yup
11:12:21 <itidus20> I downloaded this thing JFLAP after chatting about DFAs before and I couldn't help but blush at the elegance of the executable jar files
11:35:41 <Phantom_Hoover> Yes... elegance...
11:38:51 <itidus20> It's free. It's portable. It has a comprehensive API. You can execute an archive!
11:39:23 <itidus20> Don't get me wrong I don't have a java sdk
11:58:09 <itidus20> nah im deluded
12:05:32 <CakeProphet> >_>
12:05:44 <CakeProphet> you know what's pretty elegant? C#
12:27:22 -!- Taneb has joined.
12:28:41 <Taneb> Hello!
12:29:20 <CakeProphet> heyo
12:33:02 <Taneb> How's life?
12:38:52 <CakeProphet> going.
12:39:27 <CakeProphet> I got a freelance gig so after I do all of my morning routine stuff I'm going to spending today researching anything I can about what I'm supposed to do, so that I kind of know what I'm talking about later when I talk to them.
12:41:35 <CakeProphet> mmmm waffles
12:41:38 <CakeProphet> so good.
12:42:47 <Taneb> Yay!
12:42:53 -!- PatashuFluttersh has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .).
12:47:18 <Phantom_Hoover> CakeProphet, gig as in comedy?
12:49:11 <CakeProphet> yes...
12:49:17 <CakeProphet> comedy musical
12:49:45 <Phantom_Hoover> CakeProphet: The Musical
12:49:54 <Phantom_Hoover> The companion to Sgeo: The Movie.
12:50:30 <Taneb> I'd pay good money to see CakeProphet on ice.
12:50:46 <Phantom_Hoover> `pastequotes CakeProphet
12:50:48 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.3098
12:50:59 <CakeProphet> I'm pretty sure CakeProphet: The Musical would be of the horror tradgedy genre
12:51:29 <Phantom_Hoover> 423) <GregorR> How to make a tasty deep-fried treat: 1) Buy ingredients: Large vat of boiling oil, dry ice and a small Filipino boy. 2) Place Filipino boy in dry ice until frozen solid. 3) Shatter now-frozen Filipino boy into boiling oil. 4) Wait fifteen minutes, drain and enjoy! <CakeProphet> I have the weirdest boner right now.
12:51:38 <Phantom_Hoover> Honestly, Gregor.
12:51:44 <Phantom_Hoover> Dry ice is a pretty terrible choice for that.
12:52:10 <Taneb> Liquid helium?
12:52:14 <Phantom_Hoover> Liquid nitrogen is a better choice in pretty much every aspect.
12:52:42 <Phantom_Hoover> Liquid helium is... overkill.
12:52:57 <Taneb> No such thing as overkill.
12:53:03 <Taneb> Merely underkill.
12:53:11 <Phantom_Hoover> Dry ice is a poor conductor.
12:54:46 <Phantom_Hoover> You can actually hold it in your hands for a few seconds without any pain at all.
12:55:23 <Gregor> If you hold it in your hands for long enough, they'll never feel pain again.
12:56:07 -!- sebbu2 has joined.
12:56:07 -!- sebbu2 has quit (Changing host).
12:56:07 -!- sebbu2 has joined.
12:56:29 -!- sebbu has quit (Ping timeout: 260 seconds).
12:56:48 -!- sebbu2 has changed nick to sebbu.
12:59:07 <Taneb> I think I've just proved Constantinople Turing-Complete
12:59:29 <Phantom_Hoover> The city?
12:59:59 <Taneb> No, that's a load of Istanbul
13:00:16 <Taneb> Oddly, it's a place I've been to
13:00:33 <Taneb> The esolang
13:00:36 <CakeProphet> where in Europe do you think one could get laid the most?
13:00:40 <CakeProphet> and not get a disease.
13:01:09 <CakeProphet> well the second part is optional I guess.
13:01:30 <Taneb> How much are you willing to spend?
13:01:37 <CakeProphet> irrelevant.
13:01:42 <Taneb> Amsterdam
13:01:54 <CakeProphet> I am planning my future round-the-world flight plan.
13:02:01 <CakeProphet> you know, when I'm rich and stuff.
13:02:13 <Taneb> I was going to go around the world by train
13:02:19 <CakeProphet> how does that work.
13:02:23 <CakeProphet> do they have sea trains?
13:02:31 <Taneb> That's where my plan failed
13:02:45 <CakeProphet> the failure in this plan is probably the rich part.
13:02:52 <Taneb> I can get to Vladivostok
13:03:05 <Phantom_Hoover> From the profits from your comedy musical?
13:03:25 <CakeProphet> still if I ever end up making 50k (which is very possible with a CS degree) then I could fly to a third world country and get a round-the-world ticket for like... 7k or so
13:03:31 <Taneb> Then I'll hitch with a freight tanker
13:03:35 <CakeProphet> instead of like 20k in the US, or whatever it is.
13:03:58 <CakeProphet> the price varies based on your starting country, which is kind of stupid but whatever it's economics.
13:04:04 <Taneb> TO LOS ANGELES
13:04:22 <Taneb> ...Do they have trains in Los Angeles?
13:04:26 <CakeProphet> probably.
13:04:43 <CakeProphet> there are definitely trains in Atlanta. or there were.
13:04:56 <CakeProphet> Atlanta was like, the train hub of the south.
13:05:01 <CakeProphet> now it's the air travel hub.
13:05:14 <CakeProphet> largest airport in the world I believe.
13:05:47 <Taneb> In some ways
13:05:48 <CakeProphet> busiest airport, actually.
13:05:54 <CakeProphet> based on total number of passengers.
13:06:01 <CakeProphet> per year./
13:06:06 <Taneb> Hong Kong is freight
13:06:12 <Taneb> Heathrow is international passengers
13:06:24 <Taneb> Frankfurt is international destinations
13:06:29 <CakeProphet> I'm glad we know what Wikipedia is, otherwise we would be lost here.
13:06:51 <Taneb> Yup
13:07:07 <Taneb> I went to Colorado once.
13:07:14 <Taneb> When I was little
13:07:21 <CakeProphet> did you end up in Atlanta?
13:07:30 <Taneb> No, I ended up in Melbourne
13:07:56 <Phantom_Hoover> Taneb, what's the largest in terms of size?
13:08:34 <Taneb> I don't know
13:09:12 <Taneb> I know Charles de Gaulle has the fastes moving walkways
13:11:51 <CakeProphet> http://www.flightmapping.com/news/coventry-airport/biggest-busiest-airports.asp
13:12:13 <CakeProphet> according to this King Fahd Interational Airport in Damman, Saudi Arabia
13:13:23 <CakeProphet> hmmm, I'd probably want to go to Tokyo I think.
13:13:54 <Taneb> The shortest distance between two capital cities is Rome to the Vatican City
13:14:03 <Taneb> One is literally inside the other
13:16:02 <CakeProphet> I'd think the Twin Cities area would be close
13:16:24 <CakeProphet> if you exclude capitals from other countries/religious-state-things
13:16:34 <CakeProphet> *citystate
13:16:54 <Taneb> They aren't capitals
13:17:15 <Taneb> After them, it's Brazzaville and Kinshasa
13:59:46 <Gregor> I HAS KITTY
14:04:16 <Phantom_Hoover> Gregor, YAAAAY
14:04:18 <Phantom_Hoover> WHAT IS IT CALLED
14:07:10 <Gregor> TIA
14:10:36 <Phantom_Hoover> AWWWWWWWWWWWWWWW
14:11:03 <Phantom_Hoover> IS IT SO CUTE
14:11:55 <Gregor> SHE IS A FATTY
14:17:05 <CakeProphet> HEY GUYS I AM JAMAICAN
14:17:09 <CakeProphet> mon
14:21:59 <Gregor> WHOOOOOOOOAH
14:29:09 <quintopia> ....this channel suddenly got trippy as soon as a kitty got near it
14:29:19 <quintopia> thankfully i am immune to their deleterious effects
14:29:29 <CakeProphet> this is a low grade of trippy.
14:30:04 <quintopia> (although i am highly reactive to the presence of puppies)
14:41:50 <Vorpal> <Gregor> I HAS KITTY <-- bloody allergen-spreading wakeup-inducing-at-6-in-the-morning balls of fur and claws you mean?
14:42:48 <Gregor> More like 8-in-the-morning.
14:42:55 <Gregor> And they're warm and fuzzy too.
14:56:30 <Gregor> `echo hi
14:56:31 <HackEgo> hi
15:05:33 -!- augur_ has joined.
15:10:49 -!- ais523 has joined.
15:13:26 <Phantom_Hoover> <Vorpal> <Gregor> I HAS KITTY <-- bloody allergen-spreading wakeup-inducing-at-6-in-the-morning balls of fur and claws you mean?
15:13:40 <Phantom_Hoover> Why did you have to say that elliott's going to complain about it for like 2 hours
15:14:10 <Vorpal> Phantom_Hoover, don't worry. I will be away eating soon. Besides it was you who highlighted him about it
15:14:26 <Vorpal> Phantom_Hoover, anyway my description was accurate.
15:29:42 <tswett> Vorpal *didn't* say that elliot's going to complain about it for like 2 hours.
15:39:00 -!- copumpkin has joined.
15:44:21 -!- jix has quit (Ping timeout: 276 seconds).
15:44:25 -!- jix has joined.
15:56:08 * Sgeo_ learns about DEFCON game
16:33:36 <ais523> anyone here know if there's a git command to determine if a file is currently versioned or not?
16:33:37 <lambdabot> ais523: You have 2 new messages. '/msg lambdabot @messages' to read them.
16:33:43 <ais523> @messages
16:33:44 <lambdabot> elliott said 9h 51m 32s ago: I know enough about ATS to have opinions on it.
16:33:44 <lambdabot> elliott said 9h 51m 16s ago: "it's basically, you write both an imperativish and a functionallish program, in such a way that you prove they do the same thing" -- this isn't really true, but
16:33:44 <lambdabot> whatever.
16:33:58 <ais523> as in, I have a git repo, and some files, and I want to know if the files are part of the repo or generated
16:34:11 <ais523> I suppose I could edit one and git add -p, but there must be a neater way
16:39:20 <pikhq_> git ls-tree HEAD?
16:40:03 <cheater__> ais: git status <FILE>
16:41:07 <cheater__> ais523: it's $VCS status in any $VCS i know
16:44:22 <ais523> cheater__: thanks
16:44:35 <itidus20> hmm
16:44:36 <ais523> except, that's wrong
16:44:38 <ais523> I just tried it
16:45:02 <ais523> same result for a versioned and nonversioned file
16:45:48 <itidus20> it occurs to me that if the string of reposts of an initial post was a problem, a bot could be created which kicks anyone who says more than a fixed limit of usernames from the chatters list in the room
16:45:58 <itidus20> i know it wouldn't really solve the actual problem though
16:46:07 <itidus20> nor is there such a problem really
16:46:22 <itidus20> just the idea of such a thing amuses me
16:46:25 <cheater__> ais: sorry it doesn't take a file as the parameter
16:46:40 <cheater__> here's the kind of output you get if there's an unversioned file in the repo somewhere (aaa in this case):
16:46:41 <cheater__> $ git status
16:46:41 <cheater__> # On branch master
16:46:41 <cheater__> # Untracked files:
16:46:42 <cheater__> # (use "git add <file>..." to include in what will be committed)
16:46:44 <cheater__> #
16:46:46 <cheater__> #aaa
16:47:03 <cheater__> if you get no output then your files are all versioned
16:47:26 <cheater__> it also scans subdirs
16:47:44 <cheater__> all the paths are relative to $PWD
16:47:58 <ais523> cheater__: that's not what I wanted at all
16:48:04 <ais523> as the file's almost certainly either versioned or ignored
16:48:18 <ais523> as it's in an unedited repo after building
16:48:24 <ais523> the question is, was it there before I built?
16:49:30 <cheater__> so you cloned/checked out the repository, you have made "./build.sh" or something, and you want to know what files that added?
16:49:42 <ais523> I have a specific file there
16:49:49 <ais523> and want to know if it's generated or part of the source
16:50:08 <cheater__> the source would have been in the repository during a new checkout, right?
16:51:17 <ais523> yes
16:51:24 <ais523> and generated files won't have been
16:51:41 <Taneb> s/Constantinople/Istanbul/
16:52:43 <cheater__> ais523, but you think if you did "git add <file>" then it wouldn't show up in git status?
16:53:12 <ais523> cheater__: the generated files don't show up, because they're in git's ignore file
16:53:12 <cheater__> sorry, wrong tense
16:53:18 <ais523> which is what you'd expect for generated files
16:53:19 <cheater__> ais523, but you think if you had done "git add <file>" then it wouldn't show up in git status?
16:53:28 <cheater__> mhm
16:54:05 <cheater__> wouldn't git log show something
16:54:09 <cheater__> got log <file>
16:54:15 <cheater__> *git*
16:54:45 <ais523> I think pikhq_ had the right answer all along
16:55:06 <cheater__> yeah i think his answer applies
16:55:12 <ais523> although it seems not to distinguish between directories
16:56:36 <cheater__> possibly no.
17:05:22 -!- Taneb has quit (Quit: It's-a pizza tonight!).
17:21:19 -!- Taneb has joined.
17:49:23 <Gregor> There, now UMLBox can use Debian's user-mode-linux package for its kernel, instead of supplying its own :)
17:56:12 <Sgeo_> Suzumiya Haruhi novels <3
18:20:37 -!- elliott has joined.
18:24:46 <elliott> `addquote <Phantom_Hoover> I gave her the Noblesse Oblige rooms. <Phantom_Hoover> She was happy with them even when they were behind 2 locked doors and a floodgate and full of water.
18:24:46 <lambdabot> elliott: You have 12 new messages. '/msg lambdabot @messages' to read them.
18:24:47 <HackEgo> 587) <Phantom_Hoover> I gave her the Noblesse Oblige rooms. <Phantom_Hoover> She was happy with them even when they were behind 2 locked doors and a floodgate and full of water.
18:25:01 <ais523> heh, 12
18:25:05 <Phantom_Hoover> That's... not very funny at all.
18:25:14 <ais523> it's pretty typical of DF
18:25:19 <ais523> and typical DF is funny by default
18:25:36 <ais523> so, is that you arranging an accident for an unhelpful mayor?
18:26:00 <Phantom_Hoover> No, that was after the accident when I was waiting for the rooms to drain.
18:26:06 <ais523> ah
18:26:12 <ais523> she wasn't in the rooms, presumably
18:26:13 <elliott> our fortress is very well-organised
18:26:17 <Phantom_Hoover> And I needed rooms for the new baroness, so I gave her the flooded ones.
18:26:33 <elliott> do elves even go to war in DF does anyone know
18:26:40 <elliott> ours seem to be happy to have their caravans repeatedly never come back
18:26:42 <Taneb> Occasionally
18:26:43 <ais523> they do if you annoy them too badly
18:26:47 <elliott> and then to trade in rooms splattered with elf blood
18:26:48 <elliott> so
18:26:48 <Phantom_Hoover> elliott, most of the dorfs are ecstatic despite the fact that only about a quarter of them have beds.
18:26:49 <elliott> ???
18:26:49 <Taneb> Give them wood, then kill them
18:26:55 <elliott> Phantom_Hoover: I know it's so bizarre.
18:27:00 <ais523> but that's mostly by cutting down trees, rather than merely kidnapping caracans
18:27:02 <ais523> *caravans
18:27:04 <elliott> Phantom_Hoover: My laziness: ecstatic-creating????
18:27:11 <elliott> ais523: kidnapping? more like seizing and massacring
18:27:14 <elliott> also, that's hilarious
18:27:20 <elliott> YOU CAN CUT DOWN OUR BROTHERS BUT YOU MUST NOT CUT THE TREES
18:27:53 <Phantom_Hoover> elliott, I also made the best solution to cave adaptation
18:28:03 <ais523> elliott: I bet it's how they punish elven criminals
18:28:13 <ais523> send them to the dwarf fortress, along with some bribes to continue not cutting down trees
18:28:20 <elliott> Phantom_Hoover: What
18:28:25 <elliott> ais523: haha
18:28:36 <elliott> ais523: why do they send valuables along? well, ok, valuable for elves
18:28:38 <ais523> and have the dwarves deal with their unwanted people and keep the trees intact and think they're outwitting the elves all the time
18:28:48 <ais523> elliott: because how many dwarves leave the forests alone?
18:29:02 <elliott> heh
18:29:41 <Phantom_Hoover> elliott, I build a 7-z-level or so tower.
18:29:45 <Phantom_Hoover> *built
18:29:52 <Phantom_Hoover> And then I put a table and chair at the top.
18:30:03 <Phantom_Hoover> And made it a dining room/meeting hall.
18:30:08 <elliott> wat
18:30:24 <Phantom_Hoover> It's now packed with about 3 dorfs per tile, but they're all perfectly happy with going outside.
18:30:42 <elliott> `addquote <Phantom_Hoover> On further reflection, I think I did manage to miss winter and spring altogether. <Phantom_Hoover> This does explain the goblin siege I had in autumn.
18:30:44 <HackEgo> 588) <Phantom_Hoover> On further reflection, I think I did manage to miss winter and spring altogether. <Phantom_Hoover> This does explain the goblin siege I had in autumn.
18:31:07 <elliott> ok this log is too funny
18:31:18 <elliott> `addquote <Phantom_Hoover> A possessed soapmaker: the most ridiculous thing? <Phantom_Hoover> OH YES YOU JUST HAD TO CLAIM THE WORKSHOP I SET ASIDE FOR STRAND EXTRACTION YOU BASTARD <Phantom_Hoover> I SWEAR IF ANY OF THAT ADAMANTINE GOES MISSING YOU'RE GETTING SOME HIGH-QUALITY ROOMS
18:31:19 <HackEgo> 589) <Phantom_Hoover> A possessed soapmaker: the most ridiculous thing? <Phantom_Hoover> OH YES YOU JUST HAD TO CLAIM THE WORKSHOP I SET ASIDE FOR STRAND EXTRACTION YOU BASTARD <Phantom_Hoover> I SWEAR IF ANY OF THAT ADAMANTINE GOES MISSING YOU'RE GETTING SOME HIGH-QUALITY ROOMS
18:31:23 <elliott> I'LL STOP NOW
18:31:34 <Phantom_Hoover> `pastequotes Phantom_Hoover
18:31:37 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.3480
18:31:46 <elliott> wow, that's a lot
18:31:58 <elliott> 562) <Phantom_Hoover> Taneb's been hit by melancholy. <Phantom_Hoover> He didn't have any friends, fortunatel.y
18:31:58 <elliott> 563) <Phantom_Hoover> Oh god. <Phantom_Hoover> I've become a metallurgy hipster.
18:31:59 <elliott> that's...
18:31:59 <Phantom_Hoover> SIX DF QUOTES
18:32:01 <Phantom_Hoover> SIX
18:32:03 <elliott> not the right ordering
18:32:10 <Phantom_Hoover> elliott, I altered it.
18:32:13 <elliott> iguess the original quote had some formatting problem
18:32:15 <elliott> Phantom_Hoover: Howso
18:32:27 <Phantom_Hoover> It used to have "iridium is too mainstream", which ruins the joke a bit.
18:32:50 <ais523> let's put it in the topic instead
18:32:56 <elliott> 151) * Phantom_Hoover wonders where the size of the compiled Linux kernel comes from. <cpressey> To comply with the GFDL, there's a copy of Wikipedia in there.
18:32:56 <elliott> 155) <CakeProphet> how does a "DNA computer" work. <CakeProphet> von neumann machines? <Phantom_Hoover> CakeProphet, that's boring in the context of DNA. <Phantom_Hoover> It's just stealing the universe's work and passing it off as our own.
18:32:56 <elliott> TODO: Fix spacing
18:33:03 -!- ais523 has set topic: iridium is too mainstream | http://codu.org/logs/_esoteric/.
18:33:08 <elliott> `pastequotes fungot
18:33:09 <fungot> elliott: what, the last one. wait no, that just made you disappear" and stuff
18:33:10 <ais523> see, that's almost an ontopic topic
18:33:11 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.13417
18:33:16 <elliott> ais523: fsvo almost
18:33:25 <elliott> 206) <fungot> Vorpal: you can't plant spiders, duh!
18:33:25 <fungot> elliott: that happens, right. maybe it would be best not to be near it when this happens every young troll stands in his bedroom.
18:33:25 <elliott> :D
18:33:36 <ais523> it'd work better if there's a really obscure non-eso lang called iridium
18:33:41 <Phantom_Hoover> ^style
18:33:41 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher homestuck* ic irc jargon lovecraft nethack pa speeches ss wp youtube
18:34:16 <Phantom_Hoover> I... think we need to create a new quotes file.
18:34:17 <elliott> http://esolangs.org/wiki/C_plus_plus
18:34:19 <ais523> maybe there is
18:34:20 <elliott> ais523: copyvio from WP, offtopic
18:34:31 <ais523> how recent? it's not in my RSS feed yet
18:34:37 <elliott> (diff) (hist) . . N C plus plus‎; 10:25 . . (+1,834) . . 58.175.14.145 (Talk) (Created page)
18:34:40 <elliott> before you deleted those spam user pages
18:34:41 <elliott> at least
18:34:45 <elliott> five hours before, in fact
18:34:49 <ais523> but earlier today
18:34:53 <ais523> must have been a feedreader hiccup
18:35:11 <ais523> I'll delete as copyvio, that's normally the most uncontroversial opinion
18:35:22 <ais523> I did that on Wikipedia, once, when someone copied [[kitten huffing]] over
18:35:29 <elliott> we need a copyvio user warning template at some point
18:35:36 <ais523> and while the admins were busy arguing, I blanked it and put {{copyvio}} on it
18:35:37 <elliott> at least two occurrences recently :P
18:35:42 <ais523> (this is before I was an admin)
18:35:48 <elliott> ais523: haha, people were arguing to keep [[kitten huffing]]?
18:35:59 <Gregor> elliott: BTW I made UMLBox work with stock UML kernels (e.g. the one in the Debian package user-mode-linux)
18:36:02 <ais523> well, it's more that half of the people were going "I don't get it, is this an inside joke?"
18:36:07 <elliott> Gregor: Woooooooooooooo link me again
18:36:18 <ais523> and weren't sure whether they were allowed to delete it /in case/ it was some sort of sacred inside joke that nobody was allowed to delete
18:36:18 <Gregor> elliott: https://bitbucket.org/GregorR/umlbox
18:36:28 <ais523> it had [[Category:Inside jokes]] on it too, but most of them missed it
18:36:29 <Phantom_Hoover> BtW, tswett, your dorf was voted out of office before his mandate could expire and I killed him out of spite.
18:36:29 <elliott> ais523: hahaha
18:36:46 <Gregor> elliott: Use `make nokernel` to build it (it still tries to build the kernel with `make all`)
18:37:01 <elliott> ais523: /me considers rewriting [[stroopwafel]] to be hideously POV to see if anyone dares revert
18:37:09 <ais523> hmm, /is/ that page the most famous on Uncyclopedia? or is there one even more famous?
18:37:10 <ais523> elliott: don't
18:37:11 <elliott> Gregor: Wait, it had something to automatically configure and build the kernel?
18:37:17 <elliott> Gregor: Why didn't you say so :-P
18:37:25 <Gregor> ...
18:37:26 <Gregor> >_<
18:37:27 <elliott> ais523: Please stop telling me to not do things that are obviously a bad idea :P
18:37:38 <ais523> elliott: I'd be out of character if I didn't!
18:37:43 <elliott> ais523: <ais523> hmm, /is/ that page the most famous on Uncyclopedia? or is there one even more famous?
18:37:46 <elliott> AAAAAAAAAAAAAAAAA is pretty famous
18:37:49 <elliott> or however many As it is
18:37:53 <ais523> oh right, I somehow forgot that one
18:38:02 <ais523> you're right, it's probably even more famous
18:38:02 <elliott> Gregor: Not that it isn't a change for the better :P
18:38:43 <elliott> Gregor: The UMLBox startup involves a full Linux bootup, more or less, right?
18:38:48 <elliott> Just checking it isn't practical to do for every command
18:39:02 <ais523> hey, Uncyclopedia has Monobook as its default skin
18:39:03 <Gregor> elliott: Well, not particularly "full", no. It doesn't include a real init. It's quite quick actually.
18:39:10 <ais523> I wonder if they managed to argue Wikia into a vague amount of sense?
18:39:35 <Gregor> elliott: Well, "quite quick" as in "it takes about a second at most" :P
18:39:57 <elliott> Gregor: Does HackEgo do it for every command?
18:40:04 <elliott> ais523: they argue with Wikia a lot, I think
18:40:06 <Gregor> elliott: Yup
18:40:17 <elliott> Gregor: That explains why it's so fucking slow ;)
18:40:27 <Gregor> `echo You're mean *sob*
18:40:28 <HackEgo> You're mean *sob*
18:40:55 <elliott> Gregor: I take it running a command-running server thing from inside would defeat all the limits and the like
18:41:05 <ais523> Gregor: does it include... fakeinit?
18:41:21 <elliott> Oh god, what if Gregor just wrote fifty percent of ais523's program.
18:41:24 <elliott> WHAT IF.
18:41:32 <ais523> fakeinit is a very small part of my program
18:41:38 <Gregor> elliott: Well, no, it wouldn't defeat the limits, but all the programs run within would share the limits, if you understand my meaning.
18:41:45 <Gregor> ais523: It has its own pseudoinit.
18:41:57 <Gregor> ais523: (Which just mounts the requested parts of the host filesystem and runs)
18:42:04 <ais523> I need to tell fakeinit to change its own name to init and commandline to /sbin/init
18:42:07 <ais523> just in case someone thinks to check
18:42:14 <elliott> Gregor: Well, right. I just mean that it'd make "kill this command if it takes more than five seconds" a pain.
18:42:17 <pikhq_> I'm not sure it's possible to get out-of-the-box Linux booting in under a second.
18:42:23 <elliott> Because you'd be under the effects of the in-system limits
18:42:27 <elliott> pikhq_: UML is hardly ootb
18:42:43 <pikhq_> elliott: It got pushed upstream.
18:42:56 <ais523> I think it's in my copy of the kernel sources
18:43:00 <ais523> which I got via package manager
18:43:01 <Gregor> It's perfectly possible to get UML from zero to running init in well under a second.
18:43:03 <pikhq_> elliott: You now just do make ARCH=um
18:43:36 <Gregor> It's been in mainstream for quite a while now, in fact.
18:43:52 <pikhq_> Wasn't it 2.6.1x or some such?
18:44:01 <Gregor> Sounds about right.
18:44:08 <elliott> Sure
18:44:12 <elliott> But it's not exactly a ````stock kernel"
18:44:39 <ais523> hmm, I'd forgotten how good Uncyclopedia's page on NetHack is
18:44:44 <elliott> Gregor: So imma try and see if I can either make UMLBox start up fast or else run the processes from outside
18:44:47 <elliott> Erm, from inside
18:44:47 <ais523> it's not quite paced perfectly, but the idea's pretty neat
18:44:49 <pikhq_> Well, in the sense that it gets to omit the *cheaper* startup costs entirely, and make some of the expensive startup costs somewhat less expensive.
18:44:57 <elliott> Gregor: (Latter would have the additional benefit of NO FUCKING HG MERGE PROBLEMS)
18:44:59 <Gregor> elliott: Y'all have fun now, y'hear.
18:45:07 <elliott> Gregor: Imma y'all.
18:45:24 <Gregor> elliott: No hg merge problems = either everything is serialized, or no hg revert convenience :P
18:45:41 <pikhq_> (device scanning is pretty cheap when you have hardly any hardware. :))
18:47:58 <ais523> we demand sg!
18:48:06 <Gregor> So do I :P
18:49:25 <ais523> elliott: I had a git vs. nongit flamewar with someone recently, and it gave me a VCS epiphany
18:49:43 -!- elliott has quit (Ping timeout: 246 seconds).
18:49:45 <ais523> because I think I discovered the simplest thing that can't reasonably be done with git, and can be done with darcs but it's really annoying
18:50:02 <pikhq_> Oh?
18:50:17 <Gregor> VCS epiphany: git is terrible :P
18:50:29 <ais523> maintaining a fork of a project while still pulling a subset of upstream changes
18:50:37 <pikhq_> Gregor: git is quite a brilliant VCS with quite a terrible UI.
18:50:54 <ais523> pikhq_: it isn't quite a brilliant VCS
18:50:55 <Gregor> pikhq_: Well, yes.
18:50:58 <ais523> its view of the world is fundamentally broken
18:51:03 <ais523> it just doesn't track enough metadata
18:51:40 <pikhq_> Okay, true, there's some obvious deficiencies...
18:51:58 <pikhq_> (Linus, it makes sense to have an empty directory. Allow trees to be empty objects.)
18:52:59 <ais523> I was talking to a git fan
18:53:12 <ais523> and they were acting like my desire to fork a project and still pull some upstream changes was completely insane
18:53:20 <ais523> because git didn't understand the operation
18:55:00 <ais523> now, darcs can represent the operation
18:55:06 <pikhq_> Hmm. I... Think that's an actual problem caused by git's model of "a commit just points to the entire data at that point in time, and its ancestors", with diffs as nothing more than an operation.
18:55:06 <ais523> but you have to include/exclude every patch by hand every time
18:55:26 <ais523> pikhq_: yes, that's what I mean by "the simplest thing that can't reasonably be done by git"
18:55:43 <Deewiant> I would think that git cherry-pick can do that somehow
18:56:00 <pikhq_> The only real way to handle it in git is, in essence, to manually apply the patch yourself and give it most of the same metadata as the original commit.
18:56:01 <ais523> that's what required me to add the "reasonably" qualifier
18:56:10 <ais523> the thing is, that git gets more and more confused the more you cherry-pick, especially out of order
18:56:25 <ais523> because the versions you're comparing to get more and more not-existing-in-the-original-source
18:56:28 <Deewiant> I've never used cherry-pick so beats me
18:56:28 <pikhq_> But this gives you a completely different commit which happens to have some similarity to another one.
18:56:51 <Gregor> Same in hg, btw.
18:56:53 <itidus20> ais523: it sounds like when you use a game engine of one genre to do something from another genre
18:57:06 <ais523> itidus20: oh no, flashback
18:57:08 <ais523> *flashbacks
18:57:17 <ais523> I never did finish making that platformer in Enigma
18:57:19 <itidus20> the advantages of not coding it from the ground up diminish as you get further from the intended genre
18:57:21 <ais523> I should, it'd be great
18:57:50 <pikhq_> Deewiant: cherry-pick automates fetching the diff from a commit, applying it to your current branch head, and then committing.
18:57:50 <itidus20> im saying this as secondhand .. not so much first hand
18:57:54 <ais523> (Enigma is two games; one is solving Enigma puzzles, the other is working out how to represent things as Enigma puzzles, preferably with the minimal amount of lua and player-hidden information possible)
19:01:16 <itidus20> so generalizing the ethic of reciprocity... perhaps we are inclined to do to others that which we percieve is in our own fate to have done to us
19:01:28 <itidus20> i know thats out of left field.. best ignore it
19:01:33 <itidus20> im getting way off the git topic
19:01:57 <Gregor> The topic should be UMLBox! :P
19:10:32 -!- zzo38 has joined.
19:11:24 <CakeProphet> hi how does clipboard workin Linux.
19:11:37 <pikhq_> Strangely.
19:11:56 <ais523> CakeProphet: the actual clipboard is normally controlled by control-c control-x control-v just like in Windows, although some programs have different bindings
19:12:05 <ais523> there's also a selection buffer, which fills when you drag your mouse over something
19:12:09 <ais523> and you can paste it by middle-clicking
19:12:19 <ais523> it's very good for quick pastes, but don't expect something you put on it to last
19:12:23 <CakeProphet> how do programs access the clipboard?
19:12:49 <ais523> via X
19:13:03 <ais523> there are actually something like nine clipboards, but only two are ever used
19:13:09 <ais523> one of them is called PRIMARY, but I forget which
19:13:13 <ais523> and I forget the names of the others
19:13:32 <Taneb> SECONDARY, TERTIARY?
19:13:50 <ais523> I doubt they're all named like that, but presumably some of them are
19:14:02 <zzo38> As far as I know, X has PRIMARY (the selection buffer when dragging the mouse over something), SECONDARY (unused), and CLIPBOARD (the one accessed by CTRL+X, CTRL+C, and CTRL+V in many programs)
19:14:18 <ais523> (I discovered all this when trying to develop a method to copy-paste from Emacs running on a SunOS system accessed via Exceed, to Windows, that was fun)
19:14:26 <ais523> zzo38: that sounds about right
19:19:28 <CakeProphet> right but like, where are those
19:20:16 <pikhq_> In the X server.
19:20:29 <pikhq_> i.e. the giant pile of needless nonsense.
19:24:16 <zzo38> Yes, there is also Wayland, which fixes some things.
19:24:21 -!- nooga has joined.
19:24:39 <nooga> I've got an undeniable proof that Notch's a real retard
19:24:52 <nooga> Notch on C++: "Recently, I've done some work in C++. It's a powerful language and fun, but the retarded compilation system makes me cry a bit."
19:25:06 <ais523> actually, it's ambiguous
19:25:13 <Phantom_Hoover> Why, what's wrong with C++'s compilation system?
19:25:21 <ais523> C++'s design makes it very hard to write efficient compilers for
19:25:27 <nooga> it is both ambiguous and unambiguous
19:25:36 <Phantom_Hoover> I suppose he could be talking about delayed compilation?
19:25:41 <pikhq_> Phantom_Hoover: Two words: header files.
19:25:41 <ais523> a C++ compiler is generally significantly slower than a comparable compiler for another language
19:25:45 <ais523> compare gcc to g++, for instance
19:26:05 <Phantom_Hoover> pikhq_, two words which barely help explain anything?
19:26:35 <ais523> Phantom_Hoover: basically, whenever you change an implementation detail of a class in C++
19:26:41 <ais523> everything that references that class needs to be recompiled
19:26:53 <ais523> because it needs to use different memory offsets to access things like the vtables and fields
19:27:01 <ais523> even if this is something that should be hidden by encapsulation
19:27:34 <ais523> the result is that incremental compilation of C++ is really nasty to do, and doesn't even help much
19:27:38 <pikhq_> Phantom_Hoover: In C++, you have only translation units that get linked. You don't, say, import functions from some other module, you simply link a bunch of .o's together.
19:28:09 <pikhq_> With their only actual *relationship* being in *manually maintained* files that can be viewed as declaring an interface.
19:28:18 <ais523> pikhq_: if the ABI was more resistant to changes in implementation details, there wouldn't be so much of an issue
19:28:25 <Phantom_Hoover> pikhq_, exactly the same as C?
19:28:27 <ais523> *the ABI were
19:28:33 <pikhq_> Phantom_Hoover: Yes. It's a problem in C as well.
19:28:45 <ais523> Phantom_Hoover: in C, it's not as bad because you can have a reasonably stable ABI between .o files
19:29:12 <pikhq_> This thing makes it a royal pain to do a build system.
19:29:15 <Phantom_Hoover> pikhq_, ais said C was faster.
19:29:27 <pikhq_> Phantom_Hoover: C++ just makes the problem much more obvious.
19:29:37 <zzo38> However the file "wayland.xml" mentions many things which I do not want, but a different version can be made without these things and with some differences, possibly by having a different window manager and stuff
19:29:45 <Phantom_Hoover> ais523, you mean how calling a function is basically the same if it keeps its type?
19:29:59 <zzo38> It seems to have MIME types, and I don't need that
19:30:06 <ais523> Phantom_Hoover: yes
19:30:16 <ais523> the problem exists in both C and C++, but it's much easier to work around in C
19:30:51 <Phantom_Hoover> ais523, because C++ does awful, awful things to the ABI for method calls?
19:31:06 <pikhq_> That's an understatement. :)
19:33:00 <Phantom_Hoover> How many 'awful's should there be?
19:33:09 <ais523> somewhere between five and six
19:34:37 <CakeProphet> pikhq_: right but like... right now
19:34:41 <CakeProphet> how do I access the clipboard.
19:34:51 <CakeProphet> "in the X server" doesn't tell me how to get to it.
19:35:02 <CakeProphet> because I don't know anything about X. :P
19:35:18 <ais523> CakeProphet: you can communicate with X directly, but you'd be mad to
19:35:23 <ais523> so you use a library which abstracts away the details
19:38:45 <Phantom_Hoover> ais523, you can?
19:38:46 <Phantom_Hoover> How?
19:39:04 <ais523> Phantom_Hoover: something like GTK or Qt almost certainly has an API for accessing the clipboard
19:39:12 <ais523> and that's what people normally use to interact with X
19:39:18 <ais523> perhaps even SDL does, although I'm not sure on that one
19:39:18 <Phantom_Hoover> No, I mean communicate with X directly.
19:39:31 <ais523> open a particular socket, do read() and write() to it
19:39:35 <ais523> in a particular format
19:40:09 <ais523> you need to prove you're allowed to write to that X display by sending a particular string first, which is stored in a file with permissions set so only the user in "charge" of the display can read it
19:40:28 <ais523> the idea's that you can copy the file to your accounts on other systems to pop up windows on your own desktop remotely
19:41:33 <Sgeo_> Bleh
19:41:59 <Sgeo_> Starting to wonder if I should have gotten a Kindle
19:42:08 <CakeProphet> answer: no
19:42:23 <Sgeo_> Reasoning?
19:42:45 <CakeProphet> Not worth the money.
19:44:00 <Sgeo_> Not sure that what I did get is necessarily better in just those terms
19:44:17 <CakeProphet> oh yeah Kindle is probably the best e-reader thingy.
19:44:32 <CakeProphet> I considered getting one but I don't really read enough to warrant the purchase.
19:44:36 <CakeProphet> maybe that would change though if I got one.
19:47:25 -!- Nisstyre has quit (Ping timeout: 264 seconds).
19:52:29 -!- elliott has joined.
19:52:31 <zzo38> I suggest you don't need it. I don't need it either
19:52:33 <elliott> Internet outage...
19:52:35 <elliott> <Gregor> elliott: No hg merge problems = either everything is serialized, or no hg revert convenience :P
19:52:37 <elliott> <elliott> Gregor: Or
19:52:39 <elliott> <elliott> Gregor: You just hg commit whenever no commands are running
19:52:41 <elliott> I mean sure, if someone does something legitimate and someone else fucks it up simultaneously, you have to run the legitimate command again, but...
19:52:44 <elliott> Now to logread
19:53:03 <elliott> 18:50:37: <pikhq_> Gregor: git is quite a brilliant VCS with quite a terrible UI.
19:53:03 <elliott> 18:50:54: <ais523> pikhq_: it isn't quite a brilliant VCS
19:53:04 <elliott> ais523++
19:53:09 <elliott> hey guys SCAPEGOAT HAVE I MENTIONED SCAPEGOAT
19:53:17 <elliott> 18:50:17: <Gregor> VCS epiphany: git is terrible :P
19:53:22 <elliott> Gregor: git is pretty much exactly as terrible as hg :P
19:53:27 <elliott> They're basically identical
19:53:34 <Gregor> Except that git's UI is a joke.
19:53:44 <ais523> elliott: later I explain when I realised what exactly was wrong with git
19:54:00 <ais523> before, I'd known there was something very wrong with it but couldn't quite put my finger on it
19:54:02 <elliott> Gregor: Well, common operations are nice enough, and it's nice to have the advanced branch filtration stuff because git is deficient enough to need it. But yeah, hg's is slightly nicer.
19:54:14 <elliott> git has more infrastructure and popularity, though, so it wins out for me.
19:54:38 <elliott> ais523: btw, are you implying that you'd only want to pull _parts_ of a commit from upstream?
19:54:46 <ais523> elliott: not of a commit
19:54:49 <elliott> because that's wrong in any DVCS; commits should be as small as possible
19:54:51 <elliott> ais523: ah, ok
19:54:51 <ais523> only some commits from a series
19:55:15 <ais523> if I want to pull half a commit, it's because the person committing it didn't break it up enough
19:55:18 <elliott> 18:57:50: <pikhq_> Deewiant: cherry-pick automates fetching the diff from a commit, applying it to your current branch head, and then committing.
19:55:18 <elliott> gross super bad
19:55:23 <ais523> and that's most easily done by pulling then half reverting
19:55:26 <elliott> ais523: indeed (I do that a lot, but that's a personal deficiency)
19:55:38 <ais523> (darcs actually has a UI for a half revert, so presumably they're aware that people often mess that up)
19:55:42 <elliott> at least it's for mcmap, which has a proud tradition of terrible UI practices
19:55:46 <elliott> erm, s/UI/development/
19:55:56 <elliott> if it builds, commit it... if you're too lazy to try and build it, commit it anyway
19:56:03 <elliott> then push it :P
19:56:19 <elliott> `addquote <ais523> (Enigma is two games; one is solving Enigma puzzles, the other is working out how to represent things as Enigma puzzles, preferably with the minimal amount of lua and player-hidden information possible)
19:56:21 <HackEgo> 590) <ais523> (Enigma is two games; one is solving Enigma puzzles, the other is working out how to represent things as Enigma puzzles, preferably with the minimal amount of lua and player-hidden information possible)
19:56:37 <ais523> the second is arguably even more fun
19:56:44 <elliott> 19:24:39: <nooga> I've got an undeniable proof that Notch's a real retard
19:56:57 <ais523> my favourite of my Enigma levels is still Boulder Crossing, which they didn't accept
19:57:00 <elliott> Notch is an idiot, but your grudge against him and all things Minecraft is really weird and really annoying
19:57:15 <elliott> Do you have walls covered with anti-Minecraft propaganda written in 9 pt font in crayons
19:57:17 <ais523> it's very nearly pure wiring, no Lua there at all
19:57:25 <elliott> ais523: I haven't played that one, I don't think
19:57:26 <ais523> although I needed to make a trigger control the existence of a grate
19:57:39 <ais523> elliott: indeed, it isn't "public" as in the repo, because it wasn't accepted
19:57:43 <ais523> but it's on mag-heut, let me dig up the link
19:57:49 <elliott> 19:24:52: <nooga> Notch on C++: "Recently, I've done some work in C++. It's a powerful language and fun, but the retarded compilation system makes me cry a bit."
19:57:49 <elliott> C++ /is/ a powerful language, it /is/ fun (note: this does not mean it's a good language), and its compilation system /is/ terrible
19:57:54 <elliott> that's one of the least stupid things Notch has ever said
19:58:08 <elliott> ais523: I probably won't play it now, but perhaps later
19:58:19 <pikhq_> "Fun" in the sense that Brainfuck is fun, presumably.
19:58:33 <elliott> no, fun in the sense of C++ sudoku
19:58:37 <elliott> which is still the best programming game, ever
19:58:48 <ais523> http://www.mag-heut.net/blackball/levels/submits/ais32_2.zip
19:58:52 <Gregor> Is that where you use C++ template metaprogramming to solve sudoku?
19:59:09 <elliott> Gregor: It's where you use C++ template metaprogramming to solve anything.
19:59:18 <elliott> Gregor: Or, more generally, accomplish any task that's trivial in a functional language in C++.
19:59:41 <Gregor> elliott: So, didja get UMLBox running?
19:59:47 <elliott> Gregor: For instance: create a class maybe<T> which perfectly represents the Haskell Maybe type or OCaml's option. You can't just use a pointer. Why not? Because you can't have a pointer to references.
19:59:57 <elliott> So you have to rely on the standard casting to char-pointer and back.
20:00:09 <elliott> Gregor: I got disconnected right as I was talking about it >_>
20:00:17 <elliott> But
20:00:18 <elliott> <elliott> <Gregor> elliott: No hg merge problems = either everything is serialized, or no hg revert convenience :P
20:00:18 <elliott> <elliott> <elliott> Gregor: Or
20:00:18 <elliott> <elliott> <elliott> Gregor: You just hg commit whenever no commands are running
20:00:18 <elliott> <elliott> I mean sure, if someone does something legitimate and someone else fucks it up simultaneously, you have to run the legitimate command again, but...
20:01:38 <elliott> Gregor: I think sg is the nicest solution for the HackEgoWhatevers :P
20:02:14 <elliott> OK, I'mma try and build umlbox.
20:02:26 <Gregor> elliott: None of that is about U--- yeah
20:02:27 <ais523> well, even sg can't resolve an actual conflict without help
20:02:43 <elliott> ais523: no, but for HackEgo, the merging mechanism is obvious
20:02:52 <Gregor> <CakeProphet> oh yeah Kindle is probably the best e-reader thingy. // (lol accidental logreading) I assume of course that in your confused state, you have replaced the word "worst" by "best"
20:03:15 <elliott> ais523: just run the two patches in time order, and if the second one fails, just give up and let there be two heads
20:03:25 <elliott> which, admittedly, is not an easy situation to resolve from inside the bot
20:03:34 <elliott> Gregor: Better than the Nook
20:03:41 <elliott> Also the iPad :-P
20:03:56 <elliott> Gregor: Are there any relevant advantages to having it build a kernel over using the Debian package?
20:03:57 <ais523> what's wrong with the Nook? I have very little information on it, so I can't praise or bash it
20:04:00 <elliott> I mean, apart from the kernel being newer.
20:04:02 <ais523> and don't even know which to do
20:04:09 <Gregor> elliott: The kernel it builds has less gunk (so is faster)
20:04:15 <Gregor> The Nook is assuredly better than the Kindle.
20:04:18 <elliott> ais523: pointless normal touchscreen display below the screen, so you have a nice glaring surface below your actual book
20:04:25 <elliott> that's the main problem
20:04:25 <Gregor> elliott: That's olde nook.
20:04:30 <elliott> Gregor: oh, it changed?
20:04:42 <Gregor> elliott: The new Nook (NOT the Nook touch) has a clever touchscreen, no backlight anywhere.
20:04:44 <Gregor> Erm
20:04:47 <Gregor> NOT the Nook color.
20:04:49 <elliott> Gregor: well, I also resent it for trying to appear all "open sharing", while in reality having a completely insane one-share system
20:04:50 <Gregor> YES the Nook touch :P
20:04:53 <elliott> whereas the Kindle doesn't even try to pretend
20:05:00 <Gregor> Fair enough :P
20:05:06 <Gregor> But at least the Nook supports ePub ...
20:05:11 <ais523> is it rootable?
20:05:11 <elliott> yeah, that's good
20:05:19 <elliott> I kind of want a Kindle just so I can use the browser to IRC
20:05:25 <Gregor> ais523: Yes. Both are AFAIK, but Nook runs Android so that's nice ...
20:05:26 <elliott> I mean, what other e-reader comes with free threegee internet?
20:06:14 <Gregor> Anyway, the best is (was) the IREX DR800. Which is why the company went out of business.
20:06:54 <elliott> <elliott> Gregor: Are there any relevant advantages to having it build a kernel over using the Debian package?
20:07:04 <elliott> Ctrl+V: BEST KEY
20:07:07 <Gregor> <Gregor> elliott: The kernel it builds has less gunk (so is faster)
20:07:16 <Gregor> Gotta agree with that assessment of keys.
20:07:31 <elliott> Oh, I missed that :P
20:07:37 -!- oerjan has joined.
20:07:43 <elliott> strip init
20:07:44 <elliott> echo init | cpio -H newc -o | gzip -9c > umlbox-initrd.gz
20:07:44 <elliott> 1332 blocks
20:07:44 <elliott> cp -f umlbox-config linux-3.0.1/.config
20:07:45 <elliott> cp: cannot create regular file `linux-3.0.1/.config': No such file or directory
20:07:53 <elliott> Gregor: Your Makefile is missing a certain dependency :P
20:08:09 <Gregor> elliott: Shall I go back to the part where I said you need to `make nokernel` to build without the kernel?
20:08:16 <Gregor> I don't want to logread that far to copypasta.
20:08:18 <elliott> Gregor: I want to build the kernel :-P
20:08:34 <elliott> But you did miss the dependency on linux-3.0.1/Makefile ;-P
20:08:36 <Gregor> Oh; well you need to fetch and extract the kernel yourself, it just configures and builds it :P
20:08:43 <elliott> SO USER-UNFRIENDLY
20:08:52 <Gregor> Like your FACE.
20:11:23 <elliott> How is Linux even seventy megabytes compressed these days.
20:11:29 <elliott> How can my internet connection even download that in minutes.
20:11:33 <elliott> What is this life, what is this future.
20:11:55 <Taneb> The Future sure isn't what it's cracked up to be
20:13:29 <elliott> Gregor: How minimal a kernel does it build? cba to look at your config :P
20:13:57 <elliott> I'VE MADE A FIVE HUNDRED KILOBYTE (COMPRESSED) KERNEL BEFORE THAT EVEN BOOTED IN QEMU, I DON'T SEE HOW IT COULD POSSIBLY LIVE UP TO MY INCREDIBLY EXACTING STANDARDS
20:14:39 <Gregor> elliott: Not that small.
20:14:40 -!- monqy has joined.
20:14:42 <Gregor> It's about 3MB
20:14:52 <Gregor> It has no support for modules, swap or networking.
20:15:05 <Gregor> That's uncompressed though ...
20:15:12 <elliott> No point compressing it really
20:15:18 <Gregor> Ohwait, it's at about 1.8M now apparently.
20:15:31 <elliott> $ ./umlbox ls
20:15:31 <elliott> /bin/sh could not be executed
20:15:31 <elliott> I might have to actually fill out a chroot of some kind huh
20:15:49 <Gregor> You want ./umlbox -B ls
20:16:00 <elliott> Ah :P
20:16:07 <Gregor> -B is the base directories (I'm considering making that the default and its inversion the option)
20:16:12 <elliott> Yay, it works :P
20:16:17 <elliott> Gregor: So I take it this is running on my irl system
20:16:25 <elliott> Hmm, without /home mind you
20:16:43 <ais523> hmm, I suspect UMLbox is actually entirely unlike the Secret Project
20:16:46 <Gregor> The base directories do not include /home.
20:16:57 <ais523> does it do anything to help out reproducibility at all?
20:17:00 <elliott> Gregor: Right
20:17:04 <Gregor> ais523: Not even a little bit.
20:17:11 <Gregor> elliott: You can use umlbox -B -f . ls
20:17:14 <ais523> yep, indeed
20:17:22 <elliott> $ ./umlbox -B -f sls .
20:17:22 <elliott> Terminated
20:17:26 <elliott> Nice error behaviour :P
20:17:38 <Gregor> . is .. quite the command ...
20:17:47 <elliott> Oh, duh
20:17:53 <elliott> lol, and "-B ." works
20:17:56 <elliott> Just does nothing
20:18:00 <ais523> SIGTERM is quite a rare signal to get, actually
20:18:03 <Gregor> But yes, its error output tends to be magnificent.
20:18:06 <ais523> you pretty much have to set it off deliberately
20:18:06 <elliott> Gregor: Oh, -f sls is what breaks it
20:18:21 <elliott> ./umlbox-linux results in FUN
20:18:45 <ais523> the sort of fun which involves a lot of angry dwarves?
20:18:47 <Gregor> elliott: Oh, I see what's happening, trying to mount a non-existing directory = craziness.
20:18:56 <elliott> Gregor: I really like how -v fucks up my terminal and I have to "stty sane" afterwards :P
20:19:03 <elliott> ais523: Precisely.
20:19:15 <Gregor> elliott: That's UML's fault, Idonno how to fix it >_>
20:19:19 <ais523> hmm, is stty sane more or less severe than reset?
20:19:26 <ais523> Gregor: a few ioctls should do it
20:19:26 <elliott> Gregor: Store terminal state at startup, restore it at quit?
20:19:41 <elliott> It's just a syscall or two
20:19:44 <Gregor> elliott: So much work for the mostly-lame -v option :P
20:20:06 <elliott> chdir("/host");
20:20:07 <elliott> chroot("/host");
20:20:09 <elliott> Is there actually a host/host?
20:20:13 <elliott> Oh, wait
20:20:17 <elliott> That's an absolute path :P
20:20:25 <elliott> SF(tmpi, setgid, -1, (childGID));
20:20:25 <elliott> SF(tmpi, setuid, -1, (childUID));
20:20:25 <elliott> This is set to a constant nowadays, right?
20:20:44 <Gregor> No, it's set to the caller's IDs.
20:21:13 <elliott> Ah
20:21:29 * elliott recalls ubda as a UML thing...
20:21:59 <Gregor> ubda is where I put the configuration junk that the host communicates into the guest 8-D
20:22:08 <Gregor> Making your hard disk be a text file ... the best?
20:22:38 <elliott> I find your host-client communications really wanting :P
20:22:50 <elliott> Where is the ubda file on the host, though...
20:22:57 <elliott> Oh, something in ~/.uml?
20:23:17 <Gregor> /tmp/<pid>.conf
20:23:40 <elliott> So you have to configure it after it starts up but before your process gets executed?
20:23:44 <elliott> Hardcore
20:23:59 <Gregor> umlbox writes the configuration file based on the command line arguments.
20:24:02 <elliott> Oh :P
20:24:05 <elliott> I thought it was a user-exposed hing
20:24:06 <elliott> thing
20:24:12 <Gregor> It is not :P
20:24:17 <elliott> Those aren't very safe /tmp filenames >_>
20:24:28 <elliott> Sensitive coder problems
20:24:57 <Gregor> elliott: If the attacker already has your user account, you're pretty boned.
20:26:48 <elliott> Probably :P
20:27:12 <elliott> I was raised on a diet known as "ALWAYS FUCKING USE MKSTEMP OR YOU WILL IDE"
20:27:14 <elliott> DIE
20:28:36 <ais523> elliott: I typically use tempdir instead
20:28:42 <ais523> which is an alternative way to make secure tempfiles
20:28:48 <ais523> and one that's a little easier to mentally prove secure
20:29:01 <elliott> Temporary files: Still the stupidest thing????
20:29:10 <elliott> I mean, system-made
20:29:15 <ais523> the way Secret Project creates temporary files is really ridiculous
20:29:26 <ais523> it creates a new mount namespace, then mounts a tmpfs there
20:29:28 <ais523> and creates the files on that
20:29:31 <elliott> haha
20:29:48 <ais523> the files' filenames aren't expressible from outside the secret project
20:29:54 <ais523> except sometimes via /proc hackery
20:31:20 <elliott> ais523: I bet the secret project would be easy IN @
20:31:34 <ais523> hmm
20:31:39 <elliott> that @ is capitalised, btw
20:31:41 <Gregor> I HAS KITTY
20:31:55 <ais523> it'd be easy if it had sufficient permissions
20:31:56 <elliott> and I don't know whether I mean doing the same thing as the secret project for @, or keeping it as Linux, but doing that on top of @
20:32:07 <ais523> it might need quite high permissions, though
20:32:07 <elliott> Gregor: KITTYYYYYYYYYYYYY
20:32:13 <elliott> Phantom_Hoover: GET MOUSE
20:32:15 <elliott> UNITE WITH GREGOR KITTY
20:32:17 <elliott> FRIENDSHIP FOREVER
20:32:18 <ais523> (although, Secret Project requires root, oh does it really require root)
20:32:31 <ais523> (but it drops permissions as quickly as it can; before becoming init, in fact)
20:32:36 <Taneb> sudo secret project
20:32:42 <elliott> ais523: why would it need high permissions? remember that you can basically run anything you have access to in an arbitrary environment
20:32:44 <Gregor> elliott: Well, she's sleeping right next to me.
20:32:46 <ais523> oh, random fact: if you've ever been root, and drop your permissions, you then can't read your own procfiles
20:32:50 <Taneb> Oh, I was an idiot for think that would be funny
20:32:51 <elliott> so you can emulate an entire system as an unprivileged user
20:32:57 <elliott> s/user/piece of code/
20:33:01 <ais523> elliott: but the issue is that you have to emulate the entire system
20:33:03 <Gregor> ais523: You could use Linux's crazy set-capabilities bits to only get the strictly-required caps!
20:33:12 <ais523> whereas secret project passes syscalls mostly unchanged, if it can
20:33:19 <ais523> Gregor: I actually thought of that
20:33:28 <elliott> ais523: Well, the secret project could give anything it runs the exact permissions it has
20:33:29 <ais523> but I want to drop permissions totally
20:33:34 <elliott> ais523: So you could easily pass on anything that you can do
20:33:41 <ais523> partly to stop what's inside breaking out
20:33:53 <ais523> because I'm not quite crazy enough to mount over /
20:34:01 <Gregor> ais523: I meant the set-capability bits on the file, as an alternative to setuid-root.
20:34:15 <ais523> oh, it's currently not SUID, but designed to be run via sudo
20:34:19 <Gregor> Oh
20:34:19 <elliott> ais523: So I don't see how the secret project would require any more permissions than what it's running
20:34:22 <elliott> in @
20:34:30 <ais523> it has to drop permissions to a known UID anyway
20:34:34 <ais523> because Linux doesn't yet have UID namespaces
20:35:32 <ais523> and I'm not sure if people are planning to implement them
20:35:51 <ais523> (you can namespace /etc/passwd easily enough, but that's not really the same)
20:36:11 <Gregor> Good ol kill(2)
20:36:31 -!- PatashuWarg has joined.
20:36:44 <elliott> ais523: so yeah, I really don't see how the secret project would need any elevated permissions on @ over what it's running
20:36:47 <ais523> Gregor: gah, don't say that, do you have any idea how nondeterministic sending signals is
20:37:00 <elliott> the reason you need them in Linux is that you can't control how your children access the system if you're not really privileged
20:37:04 <ais523> it took me hours to get that working
20:37:15 <ais523> and I'm still not sure if it's fully working
20:37:17 <elliott> but in @, you pass all your children the whole system _anyway_ (or well, the bits you have access to)
20:37:21 <elliott> so you can easily transform it arbitrarily
20:37:28 <Gregor> ais523: umlbox makes signal isolation easy! :P
20:37:36 <elliott> ais523: also, have you considered just writing a Linux syscall emulator?
20:37:44 <ais523> elliott: yes, it seems like a lot /more/ work
20:37:49 <ais523> I'm just emulating the syscalls that need emulation
20:37:53 <elliott> ais523: like, getting a really simple xeightsix emulator
20:37:53 <ais523> which is a relatively small fraction
20:38:00 <elliott> and then implementing the syscalls you need in a really deterministic way
20:38:09 <elliott> Gregor got JSMIPS running bash in days :P
20:38:11 <ais523> I need /all/ the syscalls!
20:38:13 <Taneb> That would be like everything WINE isn't
20:38:23 <ais523> even personality(2), apparently
20:38:37 <elliott> monqy: guess what just got a major new release.........
20:38:39 <ais523> I have to intercept requests to prevent them turning ASLR back on
20:38:58 <monqy> elliott: hi
20:39:02 <elliott> oh no now it depends on arrows..........
20:39:07 <ais523> well, OK, I gave up on the one that goes into virtual x86 mode
20:39:08 <monqy> is it g pipe
20:39:21 <elliott> monqy: fclabels, it is now at one point oh, and it has been like totally redone???
20:39:23 <monqy> oh
20:39:23 <elliott> http://hackage.haskell.org/package/fclabels-1.0
20:39:32 <ais523> and ptrace is obviously a complete nonstarter
20:39:39 <elliott> "Arrows allow for effectful lenses, for example, lenses that might fail or use state."
20:39:40 <elliott> huh,,
20:39:44 <elliott> iw onder what KMETT Things of this
20:39:44 <ais523> unless I reimplement it in terms of, umm, ptrace
20:39:47 <ais523> and that'd be really confusing
20:39:53 <elliott> "Dear Op: I was playing with this today and noticed the performance was about 20 times slower than the built-in method of changing fields."
20:39:54 <elliott> :DDD
20:40:33 <ais523> you could intercept ptrace requests, then vary your own so that to the ptraced processes, it looked like they were ptracing other processes and those processes were responding appropriately
20:40:46 <Gregor> Does fclabels stand for "Fuck labels!"?
20:40:51 <elliott> Gregor: first-class labels
20:40:58 <elliott> Gregor: it is pruely functional goto (no not really)
20:41:06 <ais523> (incidentally, this sort of thing is why you cannot run secret project in a debugger; for bonus points, it makes valgrind crash with an internal error and a suggestion you send a bug report, even though AFAIK valgrind doesn't even use ptrace)
20:41:23 <elliott> ais523: why doesnt bochs work agin...
20:41:29 <elliott> it is pretty detriministic........
20:41:33 <monqy> so how bad is the new fclabels....
20:41:39 <ais523> elliott: inside valgrind?
20:41:45 <ais523> I don't see why it wouldn't work inside secret project
20:41:51 <elliott> ais523: no i just mean
20:41:55 <elliott> why is bochs not suitable for secret project
20:41:58 <elliott> monim dont know.... qy
20:42:02 <ais523> oh, I muddled it with boehm
20:42:09 <ais523> I've never heard of bochs
20:42:13 <elliott> ais523: what, yes you have
20:42:18 <elliott> Gregor: tell ais523 he's heard of bochs, because he has
20:42:21 <ais523> well, in that case I forgot
20:42:36 <elliott> ais523: it's like qemu but.................. even more pure/deterministic/portable/slow
20:42:43 <elliott> it's used for debugging OSes, usually
20:42:46 <elliott> in the osdev community
20:42:47 <ais523> speed is actually important
20:42:49 <elliott> debugging and testing
20:42:56 <elliott> ais523: well it's fast enough to run like old windowses
20:42:58 <ais523> it doesn't need to run fullspeed (although sometimes it runs faster)
20:43:02 <Gregor> bochs is the x86 emulator for people who seriously are emulating an x86, and not just trying to make x86 shit run.
20:43:10 <ais523> but fast enough that applications inside it are reasonable
20:43:12 <elliott> I mean you couldn't boot any Ubuntu on it
20:43:21 <elliott> but you could easily run a command-line Linux or maybe simple Xorg linux???
20:43:34 <ais523> could it run pulseaudio?
20:43:44 <ais523> at a reasonable speed?
20:43:51 <elliott> ais523: I think it emulates, like, a SoundBlaster, but probably, but why are you using pulseaudio
20:43:52 <ais523> admittedly, secret project can't do pulseaudio yet
20:43:59 <ais523> because other things have dependencies on it
20:44:03 <elliott> you should try bochs though it might really help you out
20:44:09 <elliott> I mean, I don't know what your problems with qemu were
20:44:13 <elliott> but bochs is a lot more... predictable? than that
20:44:14 <elliott> and stricter
20:44:30 <ais523> telling you my problems with qemu would give too much away
20:44:35 <elliott> fair enough
20:44:37 <ais523> but I will say, they were unrelated to emulation accuracy
20:44:42 <elliott> but try bochs; it's in Debian and everything
20:44:46 <elliott> and widely-used
20:45:01 <elliott> ais523: oh, you'll want to copy its default configuration file and modify it, probabl
20:45:01 <elliott> y
20:45:03 <elliott> it's quite a pain, but
20:45:13 <ais523> copying it to save on having to redownload it?
20:45:15 <elliott> ais523: were they related to determinism?
20:45:21 <elliott> ais523: no, to modify it
20:45:29 <elliott> it's in /usr/share somewhere
20:45:34 <ais523> I don't think either yes or no would be a non-misleading answer
20:45:42 <ais523> so I just won't answer you
20:45:53 <elliott> heh
20:46:00 <ais523> in fact, I'm not entirely sure, offhand, which is technically correct
20:46:02 <elliott> monqy: the new fclabels expor names are uglier :(
20:46:17 <monqy> yep :(
20:46:47 <elliott> gets, puts, modify <-- conssisistent
20:47:33 <elliott> http://hackage.haskell.org/package/data-accessor-0.0.1 maybe i will just use this forever (it is before henning got his hands on it)
20:48:18 <Gregor> Bochs is a HUGE pain to configure.
20:48:28 <Gregor> But it can run AT&T Unix System V, so it's totally worth it.
20:48:36 <elliott> X-D
20:49:10 <zzo38> Is "cat" in UNIX similar to "return" in Haskell? Some document says there is similarity and also that "|" in UNIX is similar to ">>=" in Haskell
20:49:53 <elliott> zzo38: okmij.org, by any chance?
20:50:05 <ais523> hmm, arguably UNIX echo is more like Haskell return
20:50:06 -!- sllide has joined.
20:51:07 <zzo38> Yes that is the domain name as it turns out
20:51:32 <elliott> zzo38: yep, that's Oleg's popular piece on it
20:51:45 <ais523> elliott: /the/ Oleg?
20:51:51 <elliott> ais523: yes, /the/ Oleg
20:51:55 <ais523> well, /the/ relevant Oleg?
20:51:58 <ais523> hmm, fair enough
20:52:03 <ais523> that's a weird analogy to be using
20:52:03 <elliott> ais523: The Kiselyov one
20:52:06 <elliott> not the Subleq one
20:52:14 <ais523> although I'm not surprised he uses weird analogies
20:52:22 <ais523> given what his code is like
20:52:28 <elliott> ais523: eh?
20:52:33 <elliott> ais523: I think you're thinking of the Subleq Oleg
20:52:47 <elliott> ais523: I'm talking about the Haskell-celebrity one
20:52:50 <ais523> yes, so am I
20:52:59 <elliott> his code is perfectly readable :P
20:53:01 <ais523> I thought his code was famous for being very efficient and unlike what anyone else writes
20:53:06 <elliott> ais523: but anyway, it's not "an analogy", http://okmij.org/ftp/Computation/monadic-shell.html
20:53:10 <ais523> not unreadable, just /weird/
20:53:20 <elliott> ais523: Well, he's mostly famous for applying the type system to everything
20:53:34 <elliott> his Haskell style isn't the "standard" style, I suppose, but it doesn't really feel foreign
20:53:48 <ais523> bleh, I don't think is-equivalent-to can be typed with compose
20:53:52 <ais523> or at least, I can't guess the binding
20:53:56 <elliott> anyway, it's more of a correspondence than an analogy
20:53:58 <elliott> ais523: eh?
20:54:00 <ais523> I may end up having to write Agda
20:54:10 <elliott> ais523: what language are you talking about
20:54:11 <elliott> oh
20:54:14 <elliott> compose key
20:54:22 <ais523> oh, I see
20:54:26 <elliott> ais523: you don't need to use the compose key for Agda
20:54:29 <ais523> "typed with compose" almost has a computer-science meaning
20:54:34 <monqy> oh so the subleq oleg and the real oleg are different people? this glads me.
20:54:39 <elliott> ais523: agda-mode automatically turns on a modified TeX input method
20:54:43 <ais523> but it's not one that makes a lot of sense
20:54:51 <elliott> well, I thought you meant point-free style
20:54:55 <ais523> elliott: hmm, what if I need to type random bits of Agda when Emacs isn't open
20:54:58 <elliott> but yeah, no compose needed for agda
20:55:02 <ais523> say, into IRC
20:55:13 <elliott> ais523: you suffer, or just type it in emacs then copy it over
20:55:20 <ais523> also, I don't really like texish input methods
20:55:32 <elliott> ais523: Agda has so many special characters that there isn't much choice
20:55:38 <ais523> I've used them before now when writing unicode-heavy stuff
20:55:40 <ais523> but they annoy me
20:55:44 -!- BeholdMyGlory has quit (Remote host closed the connection).
20:55:49 <ais523> I actually find LaTeX a little frustrating to type for the same reason
20:55:52 <elliott> besides, coding Agda without using agda-mode or a (non-existent) equivalent is... not nice for humans
20:56:03 <elliott> (it's half language mode, half interactive proof-ish system)
20:56:20 <elliott> (you can put your cursor over a "hole" ("expression I haven't written yet") and ask it what type it needs to be, etc.)
20:56:33 <ais523> this is why I thought efficiently compiling Agda was a weird thing for my coworker to study
20:56:43 <ais523> it's not as if Agda programs are mostly designed to be run
20:56:49 <ais523> you just write them to verify they compile
20:56:52 <ais523> then you go do something else
20:56:57 <elliott> ais523: umm, writing a fast Agda compiler, or writing an Agda compiler that produces fast code?
20:57:03 <Deewiant> ais523: You modify ~/.XCompose
20:57:15 <elliott> ais523: there is actually a surge of Agda programs you actually want to run; there's even a webframework
20:57:29 <elliott> ais523: but they're all very, very slow
20:57:35 <ais523> elliott: Agda compiler that produces fast code
20:57:37 <elliott> ais523: you end up writing the performance-critical code in Haskell and FFIing to it from Agda, usually
20:57:42 <elliott> (cue laugh track)
20:57:48 <elliott> Deewiant: thanks for your exciting mycology messages btw :P
20:58:36 <Deewiant> Thanks for either pointing me to a new interpreter or reminding me about one I'd forgotten about
20:58:45 <Deewiant> I saw it earlier but I thought it was the same as zfunge
20:59:34 <ais523> elliott: they wrote a parser for expressions along the lines of + - * / numbers and parens
20:59:41 <elliott> Deewiant: You should totally rewrite slowdown so it doesn't depend on, like, fingerprints and shit... or wait, I actually got it running, didn't I
20:59:49 <ais523> with five operands, the resulting program only took a day or so to run
20:59:52 <ais523> they gave up waiting with six
20:59:56 <elliott> Deewiant: It is the same as zfunge, just not the same as zbefunge
20:59:58 <ais523> apparently they were happy with the reuslts, though
21:00:06 <elliott> Deewiant: How did you get a hold of zfunge? The link on http://flourish.org/zbefunge/ is broken
21:00:11 <ais523> (that is, the parser was written in Agda, and this is with the optimising compiler)
21:00:15 <Deewiant> elliott: Wayback machine
21:01:04 <Deewiant> elliott: And no, that calls itself zedfunge, that's a different thing from zfunge
21:02:07 <elliott> where nextInsPos' ip
21:02:08 <elliott> | fs !@@ (ip ^. ray) == space = [...]
21:02:08 <elliott> | not (isStringMode ip) && fs !@@ ray ip == semicolon =
21:02:10 <elliott> oh dear
21:02:46 <Deewiant> Also, random numbers are available only in FIXP, can't really do much about that
21:03:16 <Deewiant> If you want to write a ?-using random generator with the full 2^32 range, go ahead
21:04:32 <Taneb> Is it possible for software to be proprietry and open source?
21:05:11 <Taneb> Like, you can look at the inner workings of this software if you've paid for it, but don't distribute it. At all. And don't tell anyone.
21:05:17 <ais523> that's not open source
21:05:25 <ais523> it's known as "shared source"; Microsoft have some products like that
21:05:30 <Taneb> Oooh
21:05:34 <ais523> and UNIX was like that for years
21:05:38 <elliott> don't... don't do that, Taneb :P
21:05:43 <ais523> before it escaped into almost the public domain
21:06:04 <ais523> well, parts of it, anyway
21:06:16 <ais523> with both BSD and OpenSolaris, there isn't a lot left
21:06:26 <ais523> (although SCO managed to confuse everyone as to whether OpenSolaris was legal or not)
21:09:45 <oerjan> Taneb: your new language is _clearly_ misnamed. and you even admit to knowing why. hth.
21:10:09 <Taneb> If you can think of a better name, please tell me
21:10:21 <oerjan> Istanbul, of course.
21:10:31 <Taneb> It's so obvious
21:16:40 <elliott> copumpkin: Is this the Haskell confession booth?
21:16:45 <copumpkin> ?
21:16:53 <itidus20> this is the haskell showbag booth
21:16:55 <itidus20> step right up
21:17:16 <elliott> copumpkin: I've Haskell-sinned, y'see.
21:17:25 <elliott> Or, well, am planning to. I can get preemptive forgiveness, right?
21:17:26 <itidus20> sir you look awfully lucky if i have ever seen a lucky looking man it is you
21:17:38 <copumpkin> elliott: sure, go ahead
21:18:38 <elliott> copumpkin: I'm about to create a package that just imports a package, renames a few functions and changes the type signatures of a few, and re-exports the lot. It will introduce an additional dependency for no justifiable non-aesthetic gain and is completely self-centred.
21:18:40 <elliott> BUT I'M DOING IT ANYWAY
21:18:52 <copumpkin> lol
21:18:53 <copumpkin> go ahead
21:19:06 <elliott> But I _feel_ _bad_.
21:19:11 <elliott> So bad.
21:19:43 <itidus20> why does my heart-- feeel so bad
21:19:48 <itidus20> why does my soul
21:20:34 <oerjan> itidus20: too much pasta. hth.
21:21:08 <elliott> Anyway it's edwardk's fault for making the StateT modify and put functions in data-lens return the modified value.
21:21:11 <elliott> ALL. HIS. FAULT.
21:22:02 <itidus20> best cure for a psychotic break is a glass of your brothers alcohol.. although maybe that wasnt what happened.. who knows.. who cares
21:23:47 <itidus20> my subconcious seems to know its place for now
21:23:57 * oerjan is unclear whether itidus20 is breaking down or quoting lyrics
21:24:05 <itidus20> lol..
21:24:11 <itidus20> no i seem to be ok
21:24:42 <monqy> elliott: i still don't see what's so bad about that you can just discard them right???
21:24:53 <monqy> elliott: or is this all just about going against your convention
21:25:33 <elliott> monqy: yeah but I have to put "ignore" everywhere so that I can still return -> Shiro () in my actions that have NO USEFUL RETURN VALUE
21:25:35 <elliott> and
21:25:37 <elliott> if I just do
21:25:41 <elliott> "foo [percent]= blah"
21:25:42 <elliott> in a do block
21:25:43 <elliott> it warns me
21:25:46 <elliott> because OMG UR THROWING IT AWAY
21:25:48 <elliott> and tells me to do
21:25:51 <elliott> "_ <- foo [percent]= blah"
21:25:53 <itidus20> someone once told me that there are a surprising number of chemical paths to creating alcohol
21:25:54 <elliott> and i am like FUCK OYU........
21:26:12 <ais523> itidus20: it's a pretty simple chemical
21:26:36 <monqy> that reminds me I've been playing with a really stupid alternative to do notation I made up and I don't know if it's worth using or just incredibly stupid
21:26:52 <elliott> monqy: tlel us.....
21:27:47 <zzo38> monqy: What is it?
21:27:48 <Sgeo_> Dangit, someone needs to remind me to refund that person
21:27:52 <monqy> basically there are two columns, one with sequencing operators and the like, and one with everything else, and that's about it
21:27:54 <oerjan> CH3CH2OH
21:28:10 <elliott> monqy: showe use
21:28:18 <monqy> will contrive example
21:29:44 <monqy> one problem with contriving example is im so bad at it
21:29:46 <monqy> hlep
21:30:37 <monqy> I try writing something to show off how to do something but there's a better way and it makes me feel bad
21:30:46 <elliott> monqy: a simple, gussing game???
21:30:50 <elliott> or...
21:30:52 <elliott> i dontnete know..
21:30:57 <elliott> some list monad code to do pythagoran triples
21:34:49 <oerjan> > do x <- [1..]; y <- [1..x `div` 2]; let ss = x*x-y*y; z = round . sqrt $ fromIntegral ss; guard (z*z == ss); return (x,y,z)
21:34:50 <lambdabot> <no location info>: parse error on input `;'
21:34:58 <oerjan> erm
21:35:11 <oerjan> > do x <- [1..]; y <- [1..x `div` 2]; let {ss = x*x-y*y; z = round . sqrt $ fromIntegral ss}; guard (z*z == ss); return (x,y,z)
21:35:13 <lambdabot> [(13,5,12),(17,8,15),(25,7,24),(26,10,24),(34,16,30),(37,12,35),(39,15,36),...
21:35:19 -!- ais523 has quit (Remote host closed the connection).
21:35:20 <elliott> monqy: hepl
21:35:44 <oerjan> hum i feel something missing
21:35:47 <monqy> im so bad
21:35:56 <oerjan> oh right
21:36:03 <elliott> monqy: hvae you writen exmaple yet
21:36:17 <monqy> no ;_; ;-;
21:36:22 <elliott> monqy: try,,,
21:36:57 <oerjan> > do x <- [1..]; y <- [1..x-1]; let {ss = x*x-y*y; z = round . sqrt $ fromIntegral ss}; guard (ss < y*y); guard (z*z == ss); return (x,y,z)
21:36:58 <lambdabot> [(5,4,3),(10,8,6),(13,12,5),(15,12,9),(17,15,8),(20,16,12),(25,20,15),(25,2...
21:37:33 <elliott> oerjan: i don't think you need sqrt...
21:37:37 <elliott> iirc there's a very easy wayto do it
21:37:49 <elliott> List comprehensions
21:37:49 <elliott> An interesting thing to note is how similar list comprehensions and the list monad are. For example, the classic function to find Pythagorean triples:
21:37:50 <elliott> pythags = [ (x, y, z) | z <- [1..], x <- [1..z], y <- [x..z], x^2 + y^2 == z^2 ]
21:37:53 <elliott> This can be directly translated to the list monad:
21:37:53 <elliott> import Control.Monad (guard)
21:37:53 <elliott> pythags = do
21:37:55 <elliott> z <- [1..]
21:37:57 <elliott> x <- [1..z]
21:37:59 <elliott> y <- [x..z]
21:38:01 <elliott> guard (x^2 + y^2 == z^2)
21:38:03 <elliott> return (x, y, z)
21:38:15 <oerjan> elliott: i'm trying not to iterate across all z's duh
21:38:19 <elliott> oh
21:40:04 <oerjan> i guess they haven't put monad comprehensions in lambdabot yet...
21:40:27 <elliott> im a nomod camprenson
21:40:43 <oerjan> > [x | x <- Just "test"]
21:40:44 <lambdabot> Couldn't match expected type `[t]'
21:40:44 <lambdabot> against inferred type `Data.Mayb...
21:40:58 <elliott> monqy: fuck it, im delaying the lens conversion
21:41:00 <elliott> too much work
21:41:05 <monqy> :(
21:41:46 <elliott> ?src IO fail
21:41:46 <lambdabot> fail s = failIO s
21:41:49 <elliott> ?src failIO
21:41:50 <lambdabot> failIO s = ioError (userError s)
21:41:55 <elliott> ?src userError
21:41:55 <lambdabot> Source not found. Maybe you made a typo?
21:41:59 <elliott> >_<
21:42:00 <oerjan> elliott simply cannot focus on his lens work
21:42:09 <elliott> hey oerjan how would I catch _just_ pattern matching errors
21:42:12 <elliott> in... actually in StateT
21:42:18 <elliott> but
21:42:22 <elliott> only monadic pattern match errors
21:42:24 <elliott> i.e. do notation
21:42:32 <elliott> ?src StateT fail
21:42:33 <lambdabot> Source not found. Are you on drugs?
21:42:36 <olsner> harr harr, *focus* on *lens* work
21:42:36 <elliott> he;p
21:42:42 <elliott> olsner: huk huk
21:43:06 <oerjan> elliott: put it above something without IO?
21:43:19 <elliott> oerjan: I need IO at the bottom
21:43:30 <elliott> oerjan: if I put MaybeT at the front all hell breaks loose, I really need it directly in StateT IO
21:43:35 <elliott> to avoid a mess of typeclass slowdown
21:44:40 -!- Taneb has quit (Read error: Connection reset by peer).
21:45:47 <oerjan> what about a newtype with its own fail definition?
21:46:10 <elliott> oerjan: nope. (well, yes. but: no, it's not an option)
21:46:18 <elliott> I just need to know what the exception looks like :P
21:46:19 * elliott tests it
21:48:01 <monqy> is there any sort of lambda-case or lambda-if in (ghc) haskell
21:48:02 <elliott> Prelude Control.Exception Control.Monad.Trans Control.Monad.State.Strict> Control.Exception.catch (do Just 9 <- return Nothing; print "hi" :: IO ()) (\(SomeException e) -> print e)
21:48:02 <elliott> user error (Pattern match failure in do expression at <interactive>:1:29-34)
21:48:04 <elliott> ok well that's a start
21:48:05 <elliott> monqy: no
21:48:17 <monqy> :(
21:49:39 <oerjan> monqy: it's proposed, but...
21:49:39 <Deewiant> elliott: Is there any recommended way of doing configurationy stuff with tup
21:50:22 <CakeProphet> Deewiant: YAML
21:50:30 <CakeProphet> (no I don't know what you're talking about)
21:50:52 <Deewiant> Yes, that was rather obvious
21:51:14 <elliott> Deewiant: tup.config support is built in, so yes.
21:51:18 <elliott> Deewiant: Or do you mean autoconf
21:51:29 <Deewiant> elliott: I mean something more convenient than editing a file
21:51:34 <elliott> Deewiant: Kconfig
21:51:41 <elliott> Deewiant: The format is deliberately identical (gittup uses this extensively)
21:51:54 <Deewiant> How does one use Kconfig if one is not Linux
21:52:09 <elliott> The same way BusyBox, buildroot, ..., do
21:52:17 <elliott> Deewiant: If you want autoconf-style "find the compiler and shit", you can actually use autoconf fairly trivially, FWIW
21:52:36 <pikhq_> Yeah, autoconf is surprisingly general.
21:52:38 <Deewiant> autoconf isn't Windows-friendly
21:52:43 <elliott> True, it isn't
21:52:47 <Deewiant> I wonder if Kconfig is
21:52:49 <elliott> Windows users are used to pain though ;-)
21:52:53 <pikhq_> Deewiant: Less so.
21:53:01 <pikhq_> Also, Windows isn't development-friendly.
21:53:05 <elliott> Deewiant: You may want to look at the http://gittup.org/ repositories for a large-scale Kconfig/tup usage
21:53:42 <elliott> Deewiant: A portable graphical Kconfig thing would be nice, as would something nicer than autoconf for automated compiler-finding, but... until then, Windows users can edit tup.config, I suppose
21:54:04 <elliott> pikhq_: Are you sure, like, the Qt Kconfig interface isn't portable?
21:57:01 <Deewiant> The tup kconfig doesn't even build the Qt interface :-P
21:57:15 <elliott> Deewiant: You don't need the modified kconfig
21:57:18 <elliott> That's just a gittup thing
21:57:41 <elliott> Deewiant: There's no special tup Kconfig integration, it's just that Kconfig "happens to" output in the exact tup.config format
21:57:54 <Phantom_Hoover> oerjan's dwarf died ;_;
21:58:11 <Deewiant> I know that
21:58:17 <elliott> Right
21:58:26 <Deewiant> I just don't know anything about Kconfig other than that it's used by Linux
21:58:52 <Deewiant> This is the first time I've run into it as a separate project :-P
21:58:54 <oerjan> oh noes
21:59:02 <elliott> Deewiant: You've never ever used BusyBox?
21:59:05 <Deewiant> Nope
21:59:29 <elliott> Other things use it too, I just can't recall what :P
21:59:37 <elliott> Deewiant: Anyway, the syntax is pretty nice
21:59:47 <elliott> OGDL-esque
21:59:48 <Deewiant> Well, maybe I've used it unknowingly but I haven't configured it or anything
21:59:50 <fizzie> Buildroot does too, IIRC.
21:59:57 <elliott> fizzie: I mentioned that, but that's almost the same thing as busybox
22:00:14 <elliott> config 64BIT
22:00:14 <elliott> bool "64-bit kernel" if ARCH = "x86"
22:00:14 <elliott> default ARCH = "x86_64"
22:00:14 <elliott> ---help---
22:00:14 <elliott> Say yes to build a 64-bit kernel - formerly known as x86_64
22:00:14 <elliott> Say no to build a 32-bit kernel - formerly known as i386
22:00:18 <elliott> config ARCH_DEFCONFIG
22:00:18 <elliott> string
22:00:20 <elliott> default "arch/x86/configs/i386_defconfig" if X86_32
22:00:24 <elliott> default "arch/x86/configs/x86_64_defconfig" if X86_64
22:00:26 <elliott> config GENERIC_CLOCKEVENTS_BROADCAST
22:00:28 <elliott> def_bool y
22:00:30 <elliott> depends on X86_64 || (X86_32 && X86_LOCAL_APIC)
22:00:32 <elliott> That's basically the Kconfig format :-P
22:00:47 <olsner> "In fact, all you can really do with gittup.org is recompile things really fast and play nethack." :D
22:01:13 <oerjan> and you're all out of things to recompile, i take
22:01:25 <elliott> oerjan: "Go ahead -- try to change the ls on your system to print out extra messages for no reason!2 You can't do it!! Unless of course you're running gittup.org. But if you're running gittup.org, why aren't you playing nethack or needlessly recompiling things just for fun? In fact, how are you reading this webpage?? It doesn't even come with a web browser."
22:02:14 <elliott> Deewiant: But yeah, things that would be nice: a portable Kconfig or at leas something similar, plus something that takes a Kconfig file and some autoconf-esque declarations and tries to figure out values for them
22:02:15 <Deewiant> Is there a way of using Kconfig without importing more lines of code than there are in my project into my project
22:02:36 <elliott> Deewiant: If you want everyone else to have to find those same lines to compile them, sure
22:02:46 <Deewiant> So, no :-P
22:02:50 <Gregor> Deewiant: If Kconfig is longer than your project, you don't need that much configurability.
22:03:36 <elliott> Gregor: There is no real way to get lesser configurability that isn't text editing here, and Deewiant doesn't like text editors because he's a Windows user
22:03:41 <elliott> In fact, he doesn't even like words
22:03:54 <Deewiant> What's "that much configurability" :-P
22:04:00 <Deewiant> I just think that convenience is nice
22:04:26 <elliott> Deewiant: Ask pikhq_ for his tup+autoconf thing
22:04:29 <Deewiant> And I very rarely build stuff on Windows these days but I still think it's worth supporting
22:04:36 <elliott> I modified it to automatically do "tup init" and a few other things, but oh well :-P
22:04:43 <elliott> Deewiant: It was, well, the best autoconf on Windows could get
22:04:47 <elliott> Because it ran in under a second on Linux, rather than multiple seconds
22:04:57 <Deewiant> heh
22:05:04 <elliott> And it outputted in the correct format and all
22:05:11 <elliott> That's the most convenient way currently, IMO
22:07:30 <elliott> http://pulseaudio.org/ticket/672
22:08:26 <elliott> maybeShiro m = m `catchShiro` \(e::IOException) -> if isUserError e then reflect else io $ throwIO e
22:08:28 <elliott> oerjan: Rename my function, yo
22:08:47 <elliott> It used to make sense because it translated MaybeT Shiro into Shiro, but now it just handles certain types of exceptions and reflects on them :P
22:13:39 -!- augur_ has changed nick to augur.
22:15:24 <Deewiant> elliott: tup again: is there a generally used way of turning tup.config into, say, a .h, so that the project knows its configuration
22:16:19 <elliott> Deewiant: You want to read the entire thread "Support for -DFOO=@FOO"
22:16:21 <elliott> It's only two days old
22:16:33 <elliott> Basically, gittup does this by patching gcc, but there's an obvious way to do it without
22:16:48 <elliott> Deewiant: You probably don't want to turn it into an .h because that makes the dependencies less fine-grained
22:16:54 <elliott> Er, I think ;-)
22:17:03 <Deewiant> Howso
22:17:19 <pikhq_> Deewiant: There's been discussion on that, the best way I know of doing it currently on autoconf/tup is having autoconf generate a config.h in the mundane way.
22:17:24 <Deewiant> tup-users is down, hoody hoo
22:17:32 <Deewiant> Oh, F5 fixed it, fine
22:17:58 <elliott> pikhq_: Well, it's easy enough to
22:18:00 <pikhq_> Though there's certainly better ways of handling it, just nothing that's already written for you.
22:18:03 <elliott> : tup.config |> sed |> config.h
22:18:03 <oerjan> elliott: horriblyBrittleFunctionWhichWillBreakIfGHCEverChangesItsPatternMatchErrorStringsShiro
22:18:10 <elliott> oerjan: um, no it won't?
22:18:16 <elliott> oerjan: I gave the entire implementation there
22:18:25 <elliott> as long as do notation pattern matches "fail" on failure, which they will
22:19:01 <oerjan> oh i guess there won't be userErrors unless you make them
22:19:24 <pikhq_> elliott: Or : foreach *.c.in |> tup varsed %f %o |> %B.c
22:19:24 <oerjan> *other userErrors
22:19:24 <pikhq_> :P
22:19:42 <elliott> pikhq_: or that, yes
22:19:46 <Deewiant> Ah right, tup varsed, I forgot about that
22:19:46 <elliott> :P
22:20:17 <elliott> Yeah, you can have a config.h.in pretty easily with that
22:20:21 <elliott> Albeit redundantly
22:20:30 <elliott> You could also generate config.h.in from config.tup and then varsed it :-D
22:21:08 <Deewiant> Even if it's somewhat redundant it's better than splitting the configuration into two places
22:21:34 <pikhq_> If tup varsed were more unixy, and you didn't care about not-unix, !cc = |> tup varsed <%f | gcc -c -o %o - |> %B.o
22:22:20 <elliott> Now to BRB and thus deprive Deewiant of my wisdom temporarily
22:22:21 <Deewiant> Am I a bad person for using $(CC) instead of !-macros
22:23:44 <itidus20> you are not a bad person sir
22:24:06 <oerjan> indeed, he barely scratches 54 microhitlers
22:24:35 <oerjan> or wait is that nano
22:24:42 <itidus20> pico
22:24:52 <oerjan> let's not overdo it
22:25:22 <oerjan> if one microhitler is killing a few dozen people...
22:25:36 <itidus20> yeah even my left shoe registers on the picohitler level
22:25:40 <pikhq_> Deewiant: You want ! macros.
22:25:57 <Deewiant> Why
22:26:11 <pikhq_> Unless you like typing !cc = |> ^ CC %f^ @(CC) $(LOCAL_CFLAGS) $(%f_CFLAGS) @(CFLAGS) $(%f_CPPFLAGS) $(LOCAL_CPPFLAGS) @(CPPFLAGS) -c %f |> %B.o
22:26:22 <itidus20> http://photoshoplooter.tumblr.com
22:26:29 <pikhq_> Or !ld = |> ^ LD %o^ @(CC) $(LOCAL_CFLAGS) $(%f_CFLAGS) @(CFLAGS) $(%f_LDFLAGS) $(LOCAL_LDFLAGS) @(LDFLAGS) %f $(LOCAL_LIBS) $(%f_LIBS) @(LIBS) -o %o |>
22:26:34 <pikhq_> Over and over and over again.
22:26:35 <Deewiant> I just type $(CC) $(CFLAGS) -c %f -o %f
22:26:38 <itidus20> some of these are not completely terrible
22:26:41 <Deewiant> And I'm fine with that
22:27:13 <pikhq_> Congrats, you're going to be breaking some entirely reasonable expectations.
22:27:21 <Deewiant> Which are?
22:28:04 <oerjan> elliott: selfAwareShiro
22:28:06 <pikhq_> CPPFLAGS works. You can have per-file CFLAGS and per-directory in addition to global CFLAGS. You don't have giant piles of boilerplate.
22:28:30 <oerjan> (it reflects upon its actions)
22:29:11 <oerjan> especially the bad ones
22:29:41 <Deewiant> I fail to see the "giant piles of boilerplate" thus far
22:29:50 <Deewiant> But hmm, tup reads environment variables for that stuff?
22:29:58 <pikhq_> No, but autoconf does.
22:30:04 <Deewiant> I don't have autoconf.
22:30:08 <Deewiant> And I won't.
22:30:34 <pikhq_> Welp, you get to redo its functionality.
22:30:40 <Deewiant> Why.
22:31:19 <pikhq_> Though, not much needs to be done for anything well-behaved.
22:32:50 <Gregor> pikhq_: umlbox is so much better than tup
22:33:41 <pikhq_> Gregor: umlbox does something *entirely different* from tup.
22:33:45 <pikhq_> But umlbox is pretty neat.
22:35:57 <Gregor> pikhq_: Dude, oranges are so much better than apples.
22:36:41 <olsner> oh, UML stands for usermode linux, not UML
22:37:10 <pikhq_> Yes, it's the acronym expansion that doesn't summon much vomit.
22:37:12 <Gregor> olsner: The good UML, not the lame UML.
22:38:04 <oerjan> > 1/1.7
22:38:05 <lambdabot> 0.5882352941176471
22:38:30 <olsner> though, if there was a way to apply UML for this problem the result might actually be interesting
22:39:29 <oerjan> uniform modeling linux
22:41:30 <Gregor> Oh god now
22:41:32 <Gregor> Erm
22:41:38 <Gregor> Oh god no (odd typo)
22:46:44 <elliott> <Deewiant> Am I a bad person for using $(CC) instead of !-macros
22:46:52 <elliott> Yes
22:46:57 <elliott> <Deewiant> I just type $(CC) $(CFLAGS) -c %f -o %f
22:47:04 <elliott> You really, really want to use the ^^ syntax to give it a prettier output
22:47:08 <elliott> That's basically idiomatic
22:47:09 <Deewiant> No, I don't
22:47:10 <elliott> erm
22:47:11 <elliott> That's basically unidiomatic
22:47:12 <elliott> What you're doing
22:47:20 <elliott> Deewiant: Yes, you do
22:47:27 <elliott> It prints the real command on any error
22:47:35 <Deewiant> Oh, okay
22:47:38 <Deewiant> Then I do
22:48:08 <elliott> Deewiant: And basically, you want to use rules because that's how the conceptual model works; don't think of them as macros. For instance, if you have C files in another directory, you don'tw ant to copy-paste all that crap
22:48:17 <elliott> You just want to list the files needing compiled, with the cc rule
22:48:26 <elliott> And then either an ld rule if it's a binary or a different one if it's a library, etc.
22:48:45 <Deewiant> Yeah but right now I only have one directory
22:48:49 <Deewiant> YAGNI etc.
22:49:04 <elliott> Deewiant: It's like writing a C program without any functions because you only call them once
22:49:19 <elliott> It's like, what, fifty bytes added in total to convert it to using rules? :P
22:49:35 <Deewiant> It's a bunch of cognitive overhead to look at the rule syntax etc
22:50:00 <elliott> Deewiant: That's a typical "I don't know the language so I'll use it unidiomatically" argument :-P
22:50:20 <elliott> ": foreach a.c b.c c.c |> !cc |>" is not hard to understand by any stretch
22:50:28 <elliott> And the rule-defining syntax is ... basically identical to the syntax you're using now?
22:50:39 <Sgeo_> elliott, Phantom_Hoover, husup
22:50:43 <Sgeo_> date
22:50:48 -!- nooga has quit (Ping timeout: 240 seconds).
22:52:39 <Deewiant> elliott: If "cc -c" is CC, what's "cc -shared"
22:52:57 <elliott> Deewiant: A different action to compiling a C file
22:53:10 <elliott> Or, wait, no
22:53:11 <Deewiant> elliott: I mean, what to call it in ^^ :-P
22:53:14 <elliott> I forgot what -shared does :-P
22:53:21 <pikhq_> elliott: Output a .so
22:53:23 <elliott> Deewiant: I'd call it LD
22:53:23 <Deewiant> It makes a .so out of *.o
22:53:36 <elliott> The .so extension should make it obvious
22:53:49 <elliott> Since it's ^ LD [percent]o^ for linker things by convention
22:56:25 <Deewiant> elliott: It was 218 bytes added
22:57:08 <elliott> Deewiant: Oh no, it's zero point zero one percent of a floppy disk
22:58:15 <itidus20> that shit adds up. have you ever dropped a math problem in the toilet and got an answer back? yeah... it adds up
22:58:16 <Deewiant> It's fifteen percent of an IP packet!
22:58:31 <Deewiant> Or an MTU or whatever the correct term is
22:59:06 <elliott> `addquote <itidus20> that shit adds up. have you ever dropped a math problem in the toilet and got an answer back? yeah... it adds up
22:59:08 <HackEgo> 591) <itidus20> that shit adds up. have you ever dropped a math problem in the toilet and got an answer back? yeah... it adds up
22:59:39 -!- SimonRC has quit (Ping timeout: 260 seconds).
23:00:07 <elliott> BAD: U says atan(2348.2368) isn't 89.9756
23:00:11 <elliott> Deewiant: Precision requirements a little exacting there
23:00:34 <Deewiant> It's the correct result, better give it
23:00:48 <Lymee> > atan(2348.2368)
23:00:50 <lambdabot> 1.5703704753903236
23:00:52 <elliott> Deewiant: Do you want a precise result for sqrt two as well?
23:01:14 -!- SimonRC has joined.
23:01:21 <Lymee> > atan(2348.2368)*(180/pi)
23:01:22 <lambdabot> 89.97560051181826
23:01:33 <elliott> Oh, so that's what's wrong :-)
23:01:38 <Deewiant> elliott: I allow arbitrary rounding I think
23:01:48 <elliott> Deewiant: Fair enough
23:02:01 <Deewiant> At least for some reason some of them allow "0.1234 or 0.1235"
23:02:02 <itidus20> you won't get a rational answer for the sqrt of a prime
23:02:22 <itidus20> oh delete that remark
23:02:25 <itidus20> what i mean to say is
23:02:43 <itidus20> you will get either a rational or irrational answer for the sqrt of a prime
23:03:45 <oerjan> itidus20: do you wish to delete your last remark and undelete your first one? ;P
23:04:10 <oerjan> as it, whether you knew it or not, was entirely correct
23:04:59 <itidus20> cool
23:07:15 <elliott> degree :: (Double -> Double) -> (Double -> Double)
23:07:15 <elliott> degree f = (/pi) . (*180) . f
23:07:22 <elliott> I wonder if (times (hundredeighty/pi)) would be better
23:08:56 <oerjan> i suppose neither method is guaranteed to give the best answer for every float
23:09:35 <elliott> Dammit Deewiant, Mycology sucks and FIXP sucks and YOU suck
23:09:42 <elliott> I also blame you for FIXP, completely unreasonably
23:09:43 <elliott> HOW DOES IT FEEL
23:09:59 <Deewiant> I don't see why you're finding FIXP so difficult :-P
23:10:23 <elliott> Deewiant: I've worked on it for about ten minutes
23:10:26 <elliott> SO DIFFICULT
23:10:44 <elliott> BAD: b6A isn't 2
23:10:45 <CakeProphet> elliott is a noob.
23:10:47 <elliott> Deewiant: Oh what, it's bitwise?
23:11:01 <Deewiant> I remember nowt
23:11:36 <elliott> I should really capalise shiro
23:11:38 <elliott> ...
23:11:39 <elliott> cabalise
23:12:19 <elliott> GOOD: b6A is 2
23:12:19 <elliott> Hooray
23:13:02 <elliott> Deewiant: I wish you printed out the result you get when it's wrong :-P
23:13:32 <Deewiant> So do others
23:13:55 <Deewiant> It's too much of a pain
23:14:01 <elliott> Deewiant: Clearly you need to rewrite Mycology to be modular and object-oriented
23:14:06 <elliott> Or just make it generated
23:14:13 <elliott> Why the hell did you hand-write it anyway :-P
23:14:56 <Deewiant> Why not
23:15:19 <elliott> I wonder if it's the largest funge ninteyeight program
23:15:21 <elliott> Probably
23:18:15 <sebbu> Rsswssw
23:18:39 <elliott> sebbu: hi
23:21:22 <elliott> UNDEF: 2aaaa****J pushes 0
23:21:32 <elliott> Deewiant: Help what is even going on I don't even remember what the FIXP spec says, maybe I should read it
23:22:44 <Deewiant> > asin 20000
23:22:45 <lambdabot> NaN
23:22:52 <Deewiant> > asin 20000 :: Complex Double
23:22:53 <lambdabot> 1.5707963267948966 :+ (-10.596634732471074)
23:23:27 <elliott> Oh
23:23:35 <elliott> How the hell would you have a fixed-point complex funge
23:24:25 <Deewiant> You wouldn't with FIXP, at least
23:25:58 <Gregor> Wow, nasty thunderstorm ...
23:26:27 <Deewiant> I am asleep as of now -->
23:28:47 <zzo38> How can I do compose of two arguments in Haskell?
23:32:39 <oerjan> zzo38: could you rephrase that?
23:32:57 <zzo38> Don't worry I rephrased it properly on #haskell channel
23:33:03 <oerjan> ah
23:35:24 <Gregor> Damn you thunderstorm.
23:35:28 <Gregor> My kitty does not like thunderstorms.
23:35:57 <Phantom_Hoover> Awwwwwwwwwwwwwwwwwwww
23:37:53 * Phantom_Hoover → sleep
23:37:58 <elliott> Phantom_Hoover: YOU ABANDON ME
23:38:00 <elliott> IN MY FINEST HOUR
23:38:13 <elliott> HANDLEKINDLED CURSES YOU
23:38:19 <Phantom_Hoover> elliott, WELL OK GET DOING THINGS AND I CAN STAY UP FOR A FEW MINUTES
23:39:34 -!- FireFly has quit (Quit: Hi, I'm a quit message virus. Please replace your old line with this line and help me take over the world of IRC.).
23:40:07 <elliott> Phantom_Hoover: OK DONE
23:48:41 -!- sllide has quit (Quit: Leaving).
23:54:35 -!- Phantom_Hoover has quit (Quit: Leaving).
23:58:19 <elliott> Where is that goddamn execution chamber.
23:59:44 <elliott> jesus christ we're rich
←2011-08-12 2011-08-13 2011-08-14→ ↑2011 ↑all