00:07:31 -!- cheater_ has joined.
00:12:08 -!- oerjan has joined.
00:19:40 -!- augur has joined.
00:19:55 -!- cheater_ has quit (Ping timeout: 255 seconds).
00:22:19 -!- Patashu has joined.
00:23:38 -!- elliott_ has quit (Remote host closed the connection).
00:24:26 -!- elliott has joined.
00:26:19 -!- Phantom__Hoover has quit (Quit: Leaving).
00:32:41 <oerjan> elliott has been possessed by a demon, sadly.
00:34:11 <oerjan> and now two new cardinal sins will be unleashed upon the world
00:34:32 <oerjan> and some pestilence, but that's hardly new
00:34:58 <elliott> no that was the list of sins
00:36:06 <oerjan> it is a great boon that demons can't count, at least
00:36:28 <newsham> maybe its nine in a different base
00:37:51 <oerjan> maybe elliott has finally met his match
00:39:58 <oerjan> <Gregor> http://codu.org/tmp/futuretie.jpg <-- there are people who wear ties to conform. and then there is Gregor.
00:40:55 <oerjan> i assume for the same reason he wears hats
00:41:08 <oerjan> maybe it's a side effect of hyposmia
00:41:14 <newsham> but brings me no closer to the truth
00:42:07 <oerjan> what is pretty clear is that whatever he is doing, it's not conforming
00:42:27 <newsham> unless his peers are in the circus
00:42:46 <newsham> isnt she dead? eww.. thats gross
00:42:47 <elliott> 14:06:28: <ais523> elliott_: how's scapegoat getting on?
00:42:48 <elliott> 14:06:38: <ais523> I just got into a darcs vs. svn flamewar in my boss's office
00:42:56 <elliott> I explained it to a friend recently, so maybe I'll even work on it
00:43:03 <elliott> 14:07:20: <ais523> and need a version control system that is unambiguously superior to all others in order to justify advocating it
00:43:04 <elliott> It doesn't have to exist to advocate it
00:43:09 <oerjan> i can at least say, who the fuck is casey anthony
00:43:24 <newsham> can we not talk about stupid diversionary non-news news stories?
00:43:35 <newsham> there are lots of other retarded places to talk to retarded people on that subject
00:43:49 <oerjan> oh it's a woman, i was confused the previous talk about casey and andy
00:44:05 <oerjan> i was going to call up augur for expertise
00:44:09 <elliott> oerjan: Caylee Marie Anthony (August 9, 2005 – c. June 16, 2008)[1] was a child from Orlando, Florida, whose disappearance in June 2008 attracted national media attention. Caylee's skeletal remains were discovered December 11, 2008, six months after she was reported missing by her grandmother, Cindy Anthony.[2] Her mother, Casey Anthony, decided not to report her daughter missing, and was indicted on charges of felony murder, though she continu
00:44:09 <elliott> ed to maintain her innocence throughout her trial. Casey Anthony was found not guilty of murder, aggravated child abuse, and aggravated manslaughter, but guilty of providing false information to a law enforcement officer.
00:44:56 -!- newsham has left.
00:45:51 <elliott> <newsham> can we not talk about stupid diversionary non-news news stories?
00:45:51 <elliott> <newsham> there are lots of other retarded places to talk to retarded people on that subject
00:46:03 <elliott> not that there's been any _discussion_ :D
00:46:05 <BeedaWeeda> im gonna get a blow job from casey anthony
00:47:46 <elliott> oerjan: hes not only stupid and stupid in a boring way but a troll and a troll in a boring way :(
00:49:57 <Gregor> oerjan: I wear ties to AVOID conforming :P
00:50:09 <Gregor> If I was in business, I probably wouldn't wear ties :P
00:50:49 <oerjan> if you were in business you might or might not get a choice, afaik
00:50:54 <elliott> <oerjan> <Gregor> http://codu.org/tmp/futuretie.jpg <-- there are people who wear ties to conform. and then there is Gregor.
00:51:00 <elliott> well this is definitely the ugliest thing i've ever seen
00:51:09 <elliott> oh, I should have worded that as "nice tie, though" :(
00:52:22 <Gregor> I am making a pretty goofy face, and my jetlag tiredness makes me look like I have a black eye :P
00:53:05 <oerjan> BeedaWeeda: 95% of the people in this channel are nerds and don't like to mess up our nice geeky channel with woman talk. and the rest are gay.
00:53:17 -!- augur has quit (Remote host closed the connection).
00:54:02 <oerjan> well and then there's oklopol, but he's on vacation.
00:54:09 <elliott> I like oerjan's definition of woman talk :P
00:54:32 <oerjan> elliott: english compounds are ambiguous
00:55:01 <elliott> oerjan: I didn't mean that :P
01:18:10 <Gregor> http://codu.org/tmp/doubletie2.jpg Doubleties are seriously the greatest.
01:18:57 <oerjan> niceties and doubleties
01:20:01 <Gregor> elliott: One tie at a time :P
01:20:11 <Gregor> If I had a long skinnytie, tripletie would be easy.
01:23:37 -!- BeedaWeeda has quit (Changing host).
01:23:37 -!- BeedaWeeda has joined.
01:28:18 <elliott> BeedaWeeda: it is too late.... the fbi have seen your ip....
01:29:39 -!- augur has joined.
01:30:51 -!- augur has quit (Client Quit).
01:31:02 -!- augur has joined.
01:34:34 <Gregor> http://codu.org/tmp/doubletie2.jpg augur, behold my amazing invention!
01:36:58 -!- Sgeo has joined.
01:38:04 <augur> Gregor: it looks like something youd wear
01:38:31 <elliott> Gregor: its less ugly than the other one F-
01:38:42 <Gregor> elliott: I'm experimenting with "knots" :P
01:39:52 <elliott> Gregor: can you get a tie that's a transparent plastic thing filled with multicoloured glow in the dark liquid
01:40:11 <Gregor> Umm ... I doubt that you can :P
01:41:35 <elliott> that would fucking rock i would wear that all day holy shit
01:41:53 <Gregor> It would be quite a trick to tie :P
01:42:02 <Gregor> If it's thick enough to not break when you try to tie it, it's too thick to tie.
01:42:16 <elliott> Gregor: The bit you actually tie would get thinner.
01:42:22 <elliott> (And maybe be made of a bit nicer material :P)
01:42:43 <elliott> Gregor: You'd need some way to keep all the liquid flowing to make it the most cool though >_>
01:42:51 <Gregor> The bit you actually tie varies depending on the height, build, knot and preferences of the wearer.
01:42:58 <elliott> Yeah yeah yeah, HAND-TAILORED
01:43:29 <elliott> Gregor: IT WILL BE SO COOL DO YOU EVEN HAVE ANY IDEA.
01:45:50 <oerjan> what about some kind of paper-thin lcd screen surface
01:46:31 <Gregor> Which also does not break when tied :P
01:46:33 <oerjan> ...i guess we should just wait for the nanofabrics
01:46:55 <elliott> Gregor: um there are thin bendable transparent oled displays at least
01:47:08 <elliott> they might even not look like shit in the few years that have passed since I started knowing this
01:47:10 <Gregor> Bendable, or holyfuckmegabendable?
01:47:28 <elliott> Gregor: Bendable as in "fold it in half with a little bulge at the end and then back over itself" :P
01:47:33 <elliott> JUST NEEDS A BIT OF TORTURE
01:47:51 <elliott> oh my god if you had a tie hooked up to a camera on the back of your shirt
01:48:02 <oerjan> the actual pulling at the knot part might get ugly, there
01:48:25 <elliott> whatif you had a whole shirt like that
01:48:46 <Gregor> Elizacat: A whole shirt like that, but wore a tie :P
01:48:47 <oerjan> the half invisible man
01:48:54 <Gregor> elliott: Who is Elizacat? :P
01:49:02 <elliott> Gregor: Somebody who came in here to ping Vorpal.
01:50:00 <elliott> <elliott> whatif you had a whole shirt like that
01:50:02 <elliott> i think this is actually feasible
01:50:15 <elliott> i mean shirts don't need to bend THAT much really
01:50:36 <elliott> also if you made all the non-screen parts out of shiny mirror... yes.... i want this shirt...........
01:51:16 <Elizacat> Gregor, I'm a friend of Vorpal
01:51:24 <elliott> Elizacat: u r squatting on my nick letter plz rename urself
01:52:09 <Elizacat> I'm judge, jury, and executioner
01:52:23 <elliott> im stab you behind back while u talk ha ha.... now ur dead for eva
01:52:49 <elliott> what do cats have that is fatally stabbable
01:52:58 <elliott> specifically, automated therapist program cats
01:53:22 <Gregor> I think we've lost track of the topic here.
01:53:27 <Gregor> Which is how awesome doubleties are.
01:56:47 <elliott> you know, a mirror shirt would be almost as cool as that idea
01:56:51 <elliott> and about a thousand times easier
01:57:11 <elliott> google image search results for "shirt made out of mirror" not promising
01:57:33 <monqy> mirror shirt mirror pants mirror hat
01:58:39 <elliott> i need to become a ~~rockstar~~ just so i can wear this omg
01:58:44 <elliott> maybe a rockstar programmer would do
02:00:05 <elliott> i cant have mirror everything monqy
02:00:11 <elliott> does there exist mirror skin paint
02:06:14 -!- Lymee has joined.
02:06:14 -!- Lymee has quit (Changing host).
02:06:14 -!- Lymee has joined.
02:10:02 -!- pumpkin has joined.
02:10:11 -!- pumpkin has quit (Changing host).
02:10:11 -!- pumpkin has joined.
02:13:28 -!- copumpkin has quit (Ping timeout: 276 seconds).
02:20:15 -!- zzo38 has joined.
02:23:22 <zzo38> Do you know if ais523 has answered the second pokemon card puzzle game?
02:27:37 <elliott> / Don't rename the system principal!
02:27:37 <elliott> / The JS engine (NewCompartment) relies on this name.
02:27:37 <elliott> #define SYSTEM_PRINCIPAL_SPEC "[System Principal]"
02:27:37 <elliott> --caps/src/nsSystemPrincipal.cpp
02:27:42 <elliott> compartment->systemGCChunks = principals && !strcmp(principals->codebase, "[System Principal]");
02:31:06 <elliott> maybe you're not allowed to include header files from different components
02:33:40 <elliott> "My source is common sense"
02:33:45 * elliott adds to list of phrases never to say
02:36:22 -!- Nisstyre has quit (Quit: Leaving).
02:38:27 -!- Nisstyre has joined.
02:38:45 <CakeProphet> elliott: man that is the most common sense I've ever seen in code.
02:39:52 <elliott> i kill people then hide their bodies then never talk about it ever that is my art
02:40:05 <oerjan> all artists are more valuable dead, that's common sense
02:40:10 <elliott> my next target......... BeedaWeeda
02:40:19 <elliott> i am working... for the fbi...
02:40:45 <elliott> 03:29:47: * oerjan suddenly has a realization: mime types cannot possibly handle sound data.
02:40:45 <elliott> the idea is just plain unsound
02:41:05 <oerjan> wait why did i say that
02:41:14 <elliott> i have _no_ idea whatsoever
02:41:21 <oerjan> also, murdering BeedaWeeda _will_ get you banned. just saying.
02:41:27 <elliott> 03:15:57: <SevenInchBread> eh... scope makes sense in Python... to me anyways... but that's because I've been using it... a lot.
02:41:27 <elliott> 03:16:09: <bsmntbombdood> i don't understand scope in python
02:41:27 <elliott> 03:16:40: <SevenInchBread> everything is local unless stated otherwise.
02:41:27 <elliott> 03:16:47: <bsmntbombdood> mm hmmm
02:41:27 <elliott> 03:17:16: <SevenInchBread> and a closure is just an encapsulation of the globals() at the time of definition.
02:41:30 <elliott> 03:17:55: <SevenInchBread> so... any idea of what's causing self to be undefined? I'm thinking it might be something with the way you have it set up... can I see the source?
02:41:35 <elliott> 03:19:10: <bsmntbombdood> bsmntbombdood.mooo.com/chroot_ircbot.py
02:41:37 <elliott> 03:20:38: <bsmntbombdood> argh
02:41:39 <elliott> 03:20:45: <SevenInchBread> I think it would be cool if python.exe could take URLs as pathnames.
02:41:41 <elliott> 03:21:02: <SevenInchBread> so it would interpret a program off of a URL.
02:41:43 <elliott> 03:21:41: <bsmntbombdood> this needs a script to start i
02:41:45 <elliott> 03:21:42: <bsmntbombdood> t
02:41:47 <elliott> 03:27:34: <bsmntbombdood> there, mime types are better
02:41:49 <elliott> 03:29:47: * oerjan suddenly has a realization: mime types cannot possibly handle sound data.
02:41:53 <elliott> a bigger paste than i realised
02:41:55 <elliott> <oerjan> also, murdering BeedaWeeda _will_ get you banned. just saying.
02:42:15 <oerjan> i'm surprised it got through. well, if it all did.
02:42:57 <oerjan> no, it's just the attitude i don't like.
02:43:27 <elliott> lol at classifying murder as "attitude"
02:43:34 <elliott> DON'T TAKE THAT MURDERING TONE WITH ME MISTER
02:43:39 <oerjan> #reallybadattitude at that
02:45:02 <oerjan> also, i still wish i knew what i meant by that mime type comment
02:48:33 <elliott> oerjan: oh did you know all along...
02:48:57 <oerjan> i simply didn't consider that i could possibly have meant to make a pun. the idea!
02:52:38 <elliott> monqy: soon...zepto...blood...
02:54:07 <oerjan> bah reddit link crashed my browser
02:56:55 <oerjan> > let ncheck b pos n [] = []; ncheck b pos n (d:ds) = let n' = n*b+d in (if n` mod pos == 0 then id else (pos:)) $ ncheck b (pos+1) n' ds in ncheck 6 1 0 [5, 4..]
02:56:56 <lambdabot> <no location info>: parse error on input `pos'
02:57:13 <oerjan> > let ncheck b pos n [] = []; ncheck b pos n (d:ds) = let n' = n*b+d in (if n' `mod` pos == 0 then id else (pos:)) $ ncheck b (pos+1) n' ds in ncheck 6 1 0 [5, 4..]
02:57:14 <lambdabot> [7,9,11,13,16,17,18,19,21,22,23,26,27,29,31,32,33,34,35,36,37,38,39,41,43,4...
02:57:31 <oerjan> > let ncheck b pos n [] = []; ncheck b pos n (d:ds) = let n' = n*b+d in (if n' `mod` pos == 0 then id else (pos:)) $ ncheck b (pos+1) n' ds in ncheck 6 1 0 [5, 4.. 0]
02:57:58 <oerjan> > let ncheck b pos n [] = []; ncheck b pos n (d:ds) = let n' = n*b+d in (if n' `mod` pos == 0 then id else (pos:)) $ ncheck b (pos+1) n' ds in let b = 6 in ncheck b 1 0 [b, b-1 .. 0]
02:58:05 <oerjan> i'm just checking a special case
02:58:16 <oerjan> > let ncheck b pos n [] = []; ncheck b pos n (d:ds) = let n' = n*b+d in (if n' `mod` pos == 0 then id else (pos:)) $ ncheck b (pos+1) n' ds in let b = 6 in ncheck b 1 0 [b-1, b-2 .. 0]
02:58:20 <elliott> i want something i can actually run on thirty-four :D
02:58:29 <oerjan> > let ncheck b pos n [] = []; ncheck b pos n (d:ds) = let n' = n*b+d in (if n' `mod` pos == 0 then id else (pos:)) $ ncheck b (pos+1) n' ds in let b = 34 in ncheck b 1 0 [b-1, b-2 .. 0]
02:58:30 <lambdabot> [5,7,13,15,19,21,23,25,26,29,31]
02:58:53 <oerjan> > let ncheck b pos n [] = []; ncheck b pos n (d:ds) = let n' = n*b+d in (if n' `mod` pos == 0 then id else (pos:)) $ ncheck b (pos+1) n' ds in let b = 4 in ncheck b 1 0 [b-1, b-2 .. 0]
02:59:00 <oerjan> > let ncheck b pos n [] = []; ncheck b pos n (d:ds) = let n' = n*b+d in (if n' `mod` pos == 0 then id else (pos:)) $ ncheck b (pos+1) n' ds in let b = 8 in ncheck b 1 0 [b-1, b-2 .. 0]
02:59:06 <oerjan> > let ncheck b pos n [] = []; ncheck b pos n (d:ds) = let n' = n*b+d in (if n' `mod` pos == 0 then id else (pos:)) $ ncheck b (pos+1) n' ds in let b = 14 in ncheck b 1 0 [b-1, b-2 .. 0]
02:59:18 <oerjan> > let ncheck b pos n [] = []; ncheck b pos n (d:ds) = let n' = n*b+d in (if n' `mod` pos == 0 then id else (pos:)) $ ncheck b (pos+1) n' ds in let b = 28 in ncheck b 1 0 [b-1, b-2 .. 0]
02:59:45 <oerjan> nah i just realized that base 4 and 6 have solutions of the form (b-1)(b-2)...0
03:00:01 <oerjan> > let ncheck b pos n [] = []; ncheck b pos n (d:ds) = let n' = n*b+d in (if n' `mod` pos == 0 then id else (pos:)) $ ncheck b (pos+1) n' ds in let b = 62 in ncheck b 1 0 [b-1, b-2 .. 0]
03:00:02 <lambdabot> [7,9,11,13,16,17,19,21,22,23,25,26,27,29,32,33,34,35,37,38,39,41,43,44,45,4...
03:00:35 <oerjan> > let ncheck b pos n [] = []; ncheck b pos n (d:ds) = let n' = n*b+d in (if n' `mod` pos == 0 then id else (pos:)) $ ncheck b (pos+1) n' ds in let b = 16*31 in ncheck b 1 0 [b-1, b-2 .. 0]
03:00:36 <lambdabot> [7,17,21,23,29,34,35,37,41,43,46,47,49,51,53,58,59,61,63,64,67,68,69,71,73,...
03:01:05 <oerjan> elliott: i just wanted to see if it worked for either perfect numbers or twice mersenne primes
03:01:18 <elliott> oerjan: its ok theres a world of laughter in a bone
03:02:29 <oerjan> oh only one tab actually crashed
03:02:59 <monqy> sometimes i forget IE is a thing
03:03:52 <elliott> monqy: you live a peaceful life
03:04:27 <monqy> a few times a long time ago i tried to do cross-browser web stuff and IE was just the worst thing it made my life hell
03:04:30 <oerjan> elliott: oh and i did have one idea for improving nsearch. as i wrote it it actually recomputes a lot of gcd's. it might be an idea to put the gcd's for a base in an array instead.
03:04:30 <monqy> this is why i dont do web stuff
03:05:01 <lambdabot> ["a","b","c","aa","ab","ac","ba","bb","bc","ca","cb","cc","aaa","aab","aac"...
03:05:03 <CakeProphet> the fact that it is that easy to test every possible combination of an alphabet makes me want to write some password crackers in Haskell...
03:05:04 <elliott> my arm is sticky how did that happen... wait i spilled water on it maybe im imagining the water is sticky
03:05:23 <lambdabot> Couldn't match expected type `t -> [b]' against inferred type `[a]'
03:05:25 <oerjan> also _maybe_ one could split the list of digits by the resulting gcd, but that would mean more complicated deletion.
03:05:26 <lambdabot> "abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcab...
03:05:28 <CakeProphet> elliott: maybe you are on acid, or schizophrenic.
03:05:33 <elliott> > [1..] >>= replicate ['a'..'c']
03:05:34 <lambdabot> Couldn't match expected type `GHC.Types.Int'
03:06:29 <lambdabot> ["aaa","aab","aac","aba","abb","abc","aca","acb","acc","baa","bab","bac","b...
03:06:54 <monqy> > permutations ['a' .. 'c']
03:06:55 <lambdabot> ["abc","bac","cba","bca","cab","acb"]
03:07:15 <elliott> > permutations (repeat ['a'..'c'])
03:07:16 <lambdabot> [["abc","abc","abc","abc","abc","abc","abc","abc","abc","abc","abc","abc","...
03:07:20 <elliott> > permutations (cycle ['a'..'c'])
03:07:21 <lambdabot> ["abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabca...
03:07:36 <CakeProphet> I think the function you're looking for...
03:07:44 <elliott> > map (take 3) . permutations (cycle ['a'..'c'])
03:07:45 <lambdabot> Couldn't match expected type `[a]'
03:07:45 <lambdabot> against inferred type `GHC.Types...
03:07:49 <elliott> > map (take 3)( permutations (cycle ['a'..'c']))
03:07:50 <lambdabot> ["abc","bac","cba","bca","cab","acb","acb","cab","cba","abc","bac","bca","a...
03:07:57 <monqy> [1..] >>- flip replicateM ['a' .. 'c']
03:08:02 <monqy> > [1..] >>- flip replicateM ['a' .. 'c']
03:08:04 <lambdabot> ["a","aa","b","aaa","c","ab","aaaa","ac","aab","ba","aaaaa","bb","aac","bc"...
03:08:16 <elliott> there has to be an equivalent >:(
03:08:26 <lambdabot> replicateM n x = sequence (replicate n x)
03:08:48 <oerjan> elliott: what is it you _want_ :P
03:09:56 <lambdabot> sequence (x:xs) = do v <- x; vs <- sequence xs; return (v:vs)
03:09:56 <lambdabot> -- OR: sequence = foldr (liftM2 (:)) (return [])
03:10:23 <elliott> <oerjan> elliott: what is it you _want_ :P
03:10:28 <elliott> what CakeProphet did, but shorter and prettier
03:10:28 <monqy> oh right I was thinking of sequence
03:10:46 <lambdabot> Couldn't match expected type `m a'
03:10:46 <lambdabot> against inferred type `GHC.Types...
03:10:53 <CakeProphet> yeah because that code is so ugly, with its flip and stuff.
03:11:00 <elliott> CakeProphet: yes it is. you're a terrible person.
03:11:08 <lambdabot> Couldn't match expected type `a -> m b'
03:11:09 <oerjan> > (`replicateM`['a'..'c'])=<<[1..]
03:11:10 <lambdabot> ["a","b","c","aa","ab","ac","ba","bb","bc","ca","cb","cc","aaa","aab","aac"...
03:11:13 <lambdabot> forall a (m :: * -> *) b c. (Monad m) => (a -> m b) -> (b -> m c) -> a -> m c
03:11:16 <elliott> oerjan: NO NOT LIKE THAT DAMMIT
03:11:36 <CakeProphet> oerjan: elliott doesn't like bind and replicateM apparently. These are out of the question.
03:11:41 <CakeProphet> he needs two functions with different names.
03:12:09 <monqy> wait I think that's exactly what I wanted
03:12:09 <elliott> CakeProphet: IT NEED SOMETHING SHORTER AND MORE ELEGANTK[PDFGOFIJGOPRGJRIOTJGORG
03:12:20 <elliott> YESS NOT IN SCOPE ERRORS ARE THE BEST
03:12:22 <CakeProphet> it's already pretty elegant... so, good luck.
03:12:32 <monqy> what I was trying to spell
03:12:35 <elliott> CakeProphet: no its ugly and youre terrible
03:12:38 <monqy> (i didn';t misspell duplicate)
03:13:17 <lambdabot> src <id>. Display the implementation of a standard function
03:13:20 <elliott> isnt duplicate the comonad thing
03:13:27 <lambdabot> sequence (x:xs) = do v <- x; vs <- sequence xs; return (v:vs)
03:13:28 <lambdabot> -- OR: sequence = foldr (liftM2 (:)) (return [])
03:13:32 <elliott> > Control.Comonad.duplicate
03:13:33 <lambdabot> Not in scope: `Control.Comonad.duplicate'
03:13:47 <monqy> Data.Functor.Extend.duplicate
03:13:48 <elliott> monqy: the [] implementation is tails
03:14:09 <elliott> > map permutations . reverse (tails "abcd")
03:14:10 <lambdabot> Couldn't match expected type `[a]'
03:14:10 <lambdabot> against inferred type `GHC.Types...
03:14:16 <elliott> > let f = map permutations . reverse . tails in f "abcd"
03:14:17 <lambdabot> [[""],["d"],["cd","dc"],["bcd","cbd","dcb","cdb","dbc","bdc"],["abcd","bacd...
03:14:30 <elliott> > let f = concat . map permutations . tail . reverse . tails in f "abcd"
03:14:31 <lambdabot> ["d","cd","dc","bcd","cbd","dcb","cdb","dbc","bdc","abcd","bacd","cbad","bc...
03:14:40 <CakeProphet> wow I think you're on the right track. This is becoming so elegant.
03:14:42 <elliott> > let f = concat . map permutations . tail . reverse . inits in f "abcd"
03:14:44 <lambdabot> ["abc","bac","cba","bca","cab","acb","ab","ba","a",""]
03:14:48 <elliott> > let f = concat . map permutations . tail . inits in f "abcd"
03:14:50 <lambdabot> ["a","ab","ba","abc","bac","cba","bca","cab","acb","abcd","bacd","cbad","bc...
03:15:04 <elliott> > let f = concatMap permutations . tail . inits in f "abcd"
03:15:06 <oerjan> > [1..]>>=\n->sequence$[1..n]>>['a'..'c']
03:15:06 <lambdabot> ["a","ab","ba","abc","bac","cba","bca","cab","acb","abcd","bacd","cbad","bc...
03:15:06 <lambdabot> <no location info>: parse error on input `->'
03:15:14 <elliott> > let f = tail . inits >=> permutations in f "abcd"
03:15:15 <lambdabot> ["a","ab","ba","abc","bac","cba","bca","cab","acb","abcd","bacd","cbad","bc...
03:15:21 <oerjan> > [1..]>>= \n->sequence$[1..n]>>['a'..'c']
03:15:22 <lambdabot> Couldn't match expected type `m a'
03:15:22 <lambdabot> against inferred type `GHC.Types...
03:15:23 <lambdabot> inits (x:xs) = [[]] ++ map (x:) (inits xs)
03:15:31 <elliott> > (tail . inits >=> permutations) "abcd"
03:15:32 <lambdabot> ["a","ab","ba","abc","bac","cba","bca","cab","acb","abcd","bacd","cbad","bc...
03:15:32 <elliott> CakeProphet: looks good to me
03:15:35 <monqy> > iterate (take 1) ['a' ..] >>= permutations
03:15:36 <lambdabot> ["abcdefghijklmnopqrstuvwxyz{|}~\DEL\128\129\130\131\132\133\134\135\136\13...
03:15:49 <monqy> > iterate (take 1) ['a' .. 'z'] >>= permutations
03:15:50 <lambdabot> ["abcdefghijklmnopqrstuvwxyz","bacdefghijklmnopqrstuvwxyz","cbadefghijklmno...
03:15:53 <elliott> CakeProphet: In fact, omitting the empty string is really arbitrary
03:15:54 <elliott> > (inits >=> permutations) "abcd"
03:15:55 <lambdabot> ["","a","ab","ba","abc","bac","cba","bca","cab","acb","abcd","bacd","cbad",...
03:16:21 <CakeProphet> elliott: no the empty string is there, you just have to get to the end of the list.
03:16:28 <elliott> CakeProphet: how inelegant.
03:16:29 <elliott> > (inits >=> permutations) "01"
03:16:43 <lambdabot> forall a (m :: * -> *) b c. (Monad m) => (a -> m b) -> (b -> m c) -> a -> m c
03:16:46 <elliott> > [1..] >>= flip replicateM "01"
03:16:48 <lambdabot> ["0","1","00","01","10","11","000","001","010","011","100","101","110","111...
03:16:49 <monqy> >=> is like composition but for cool dudes
03:17:11 <lambdabot> ["","a","ab","abc","abcd","abcda","abcdab","abcdabc","abcdabcd","abcdabcda"...
03:17:18 <elliott> > (inits . cycle >=> permutations) "01"
03:17:19 <lambdabot> ["","0","01","10","010","100","010","100","001","001","0101","1001","0101",...
03:18:09 <CakeProphet> I would say that is equally elegant to using replicateM and bind...
03:18:37 <oerjan> elliott: i have a hunch you are never actually producing the string "b"
03:18:50 <lambdabot> ["","0","01","010","0101","01010","010101","0101010","01010101","010101010"...
03:18:59 <lambdabot> "01010101010101010101010101010101010101010101010101010101010101010101010101...
03:19:05 <elliott> > (map cycle . inits) "01"
03:19:07 <lambdabot> ["*Exception: Prelude.cycle: empty list
03:19:11 <elliott> > (map cycle . tail . inits) "01"
03:19:13 <lambdabot> ["0000000000000000000000000000000000000000000000000000000000000000000000000...
03:19:29 <lambdabot> ["","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r"...
03:20:31 <elliott> im going to rip your soul from its seams
03:20:44 <elliott> concatMap (`replicateM` ['a'..'z']) [0..]
03:20:53 <elliott> concatMap (\n -> replicateM n ['a'..'z']) [0..]
03:20:55 <lambdabot> replicateM n x = sequence (replicate n x)
03:21:04 <elliott> concatMap (\n -> sequence (replicate n ['a'..'z'])) [0..]
03:21:16 <elliott> > concatMap (\n -> sequence (replicate n ['a'..'z'])) [0..]
03:21:17 <lambdabot> ["","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r"...
03:21:26 <elliott> > (concat . concat . map (\n -> replicate n ['a'..'z'])) [0..]
03:21:28 <lambdabot> "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuv...
03:21:40 <lambdabot> ["ad","ae","af","bd","be","bf","cd","ce","cf"]
03:21:49 <lambdabot> Overlapping instances for GHC.Show.Show
03:22:00 <elliott> > foldr zip fuck this shit ["abc","def"]
03:22:01 <lambdabot> Not in scope: `fuck'Not in scope: `this'Not in scope: `shit'
03:22:14 <oerjan> > transpose ["abc","def"]
03:22:17 <CakeProphet> eyah working backwards is probably not the best way.
03:23:48 <CakeProphet> > return . length . (`replicateM` "abc") =<< [0..]
03:24:03 <CakeProphet> > (return . length . (`replicateM` "abc")) =<< [0..]
03:24:25 <CakeProphet> > (return . length . (`replicateM` "abc")) =<< [0..5]
03:25:28 <CakeProphet> > (length . (`replicateM` "abc")) <$> [0..]
03:27:50 -!- augur has quit (Read error: Connection reset by peer).
03:28:09 -!- augur has joined.
03:29:32 <CakeProphet> I'm thinking it should be possible to use combinators to define rhythmic patterns with multiple instruments.
03:31:33 <monqy> > ['a'..] >>= permutations . enumFromTo 'a'
03:31:35 <lambdabot> ["a","ab","ba","abc","bac","cba","bca","cab","acb","abcd","bacd","cbad","bc...
03:32:08 <monqy> agh that only gets the permutations not combinations :(
03:32:44 <CakeProphet> yeah, to get the combinations you'll probably have to use some other function
03:33:51 <CakeProphet> also it's not exactly the same because it adds a character on each length change
03:33:58 <CakeProphet> this is probably intentional or something?
03:35:13 <CakeProphet> > dropWhile ((<30).length) $ ['a' ..] >>= permutations . enumFromTo 'a'
03:35:26 <CakeProphet> > dropWhile ((<26).length) $ ['a' ..] >>= permutations . enumFromTo 'a'
03:35:56 <elliott> monqy: the ante-zepto reader is kind of ugly :(
03:36:00 <CakeProphet> damn you O(n) length calculation for linked lists.
03:36:10 <elliott> CakeProphet: length fails on infinite lists, if that matters
03:36:22 <elliott> > dropWhile ((<26).length) $ (['a' ..] >>= permutations . enumFromTo 'a')
03:36:52 <lambdabot> forall a. (a -> Bool) -> [a] -> [a]
03:37:41 <CakeProphet> yeah it's just taking too long because of the thousands of length computations.
03:38:11 <CakeProphet> well, maybe hundreds since it's permutations? I don't feel like doing the math... :P
03:38:46 <oerjan> > (['a' ..] >>= permutations . enumFromTo 'a')
03:38:48 <lambdabot> ["a","ab","ba","abc","bac","cba","bca","cab","acb","abcd","bacd","cbad","bc...
03:39:48 <oerjan> > map(length &&& head) . group . map length $ (['a' ..] >>= permutations . enumFromTo 'a')
03:40:00 <oerjan> > take 5 $ map(length &&& head) . group . map length $ (['a' ..] >>= permutations . enumFromTo 'a')
03:40:02 <lambdabot> [(1,1),(2,2),(6,3),(24,4),(120,5)]
03:40:18 <oerjan> CakeProphet: grows like factorial
03:41:11 <lambdabot> Occurs check: cannot construct the infinite type: a = b -> a
03:41:12 -!- azaq23 has quit (Ping timeout: 240 seconds).
03:41:21 <lambdabot> [1,3,9,27,81,243,729,2187,6561,19683,59049,177147,531441,1594323,4782969,14...
03:41:47 <oerjan> CakeProphet: that's why the first one timed out :P
03:42:11 <CakeProphet> I wanted to see further into the list, when it started using non-alphabetic characters.
03:42:34 <CakeProphet> ...for no particular reason at all. you could easily just change the starting point of the alphabet, but that's not as fun.
03:42:39 <oerjan> in fact i vaguely recall lambdabot calculates even more before actually cutting it off. or used to.
03:43:18 <oerjan> > iterate (\x -> if x > 80 then let y = y in y else x+1) 1
03:43:35 <oerjan> > iterate (\x -> if x > 200 then let y = y in y else x+1) 1
03:43:44 <oerjan> > iterate (\x -> if x > 500 then let y = y in y else x+1) 1
03:43:45 <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...
03:43:53 <oerjan> > iterate (\x -> if x > 300 then let y = y in y else x+1) 1
03:43:54 <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...
03:44:00 <oerjan> > iterate (\x -> if x > 250 then let y = y in y else x+1) 1
03:44:09 <oerjan> > iterate (\x -> if x > 275 then let y = y in y else x+1) 1
03:44:22 <oerjan> > iterate (\x -> if x > 225 then let y = y in y else x+1) 1
03:44:33 <oerjan> > iterate (\x -> if x > 215 then let y = y in y else x+1) 1
03:44:45 <oerjan> CakeProphet: um that let is an infinite loop
03:44:58 <oerjan> > iterate (\x -> if x > 2108 then let y = y in y else x+1) 1
03:44:59 <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...
03:45:03 <oerjan> > iterate (\x -> if x > 208 then let y = y in y else x+1) 1
03:45:14 <CakeProphet> too much Perl. :P let y = y in y looked like a nop.
03:45:31 <oerjan> er wait what, i'm binary searching in the wrong direction
03:45:47 <oerjan> > iterate (\x -> if x > 288 then let y = y in y else x+1) 1
03:45:48 <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...
03:45:53 <oerjan> > iterate (\x -> if x > 280 then let y = y in y else x+1) 1
03:46:01 <oerjan> > iterate (\x -> if x > 284 then let y = y in y else x+1) 1
03:46:02 <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...
03:46:06 <oerjan> > iterate (\x -> if x > 282 then let y = y in y else x+1) 1
03:46:07 <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...
03:46:13 <oerjan> > iterate (\x -> if x > 281 then let y = y in y else x+1) 1
03:46:28 <oerjan> > length $ show [1..281]
03:46:33 <oerjan> > length $ show [1..280]
03:46:42 <CakeProphet> @pl iterate (\x -> if x > 281 then let y = y in y else x+1) 1
03:46:42 <lambdabot> iterate (ap (flip if' (fix id) . (> 281)) (1 +)) 1
03:47:16 <oerjan> CakeProphet: so it calculates a bit more than the first 1000 characters, even if the resulting string will be cut off afterwards
03:47:46 <oerjan> > length $ show [1..282]
03:48:13 <elliott> the value of let y = y in y is <<loop>>
03:48:19 <elliott> (ghc pun, the best kind of pun)
03:48:29 <oerjan> well lambdabot doesn't use blackholing
03:50:55 <oerjan> > drop 1000 . take 1013 . show . iterate (*3) $ 1
03:51:13 <oerjan> > drop 960 . take 1013 . show . iterate (*3) $ 1
03:51:14 <lambdabot> "3201,127173474825648610542883299603,38152042447694583"
03:53:13 <oerjan> CakeProphet: so that's about how far it was trying to calculate your (length . (`replicateM` "abc")) <$> [0..] thing :P
03:56:59 <monqy> > (sequence . (flip replicate <*> length) <=< inits) ['a' ..]
03:57:00 <lambdabot> ["","a","aa","ab","ba","bb","aaa","aab","aac","aba","abb","abc","aca","acb"...
03:59:15 <CakeProphet> > nub . (>>= subsequences) . permutations $ "abc"
03:59:17 <lambdabot> ["","a","b","ab","c","ac","bc","abc","ba","bac","cb","ca","cba","bca","cab"...
03:59:25 <oerjan> monqy: i see no "b" there
03:59:36 <CakeProphet> oerjan: the character set grows with length.
04:00:52 <monqy> > nub . (>>- subsequences) . permutations $ "abc"
04:00:53 <lambdabot> ["","a","b","ab","c","ac","bc","ba","abc","cb","bac","ca","cba","bca","cab"...
04:01:23 <oerjan> it's from Control.Monad.Logic
04:01:46 <Lymee> > permutations $ [1..]
04:01: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,2...
04:01:47 <monqy> fair (>>=) for doing nondeterminism stuff, but really you want to use Logic or LogicT not []
04:01:48 <oerjan> it's like >>= but interleaves the results from different values in the first part
04:02:15 <Lymee> > map (take 5) $ permutations $ [1..]
04:02:16 <lambdabot> [[1,2,3,4,5],[2,1,3,4,5],[3,2,1,4,5],[2,3,1,4,5],[3,1,2,4,5],[1,3,2,4,5],[4...
04:02:25 <CakeProphet> > nub . (>>= subsequences) . permutations $ ['a'..'z']
04:02:27 <lambdabot> ["","a","b","ab","c","ac","bc","abc","d","ad","bd","abd","cd","acd","bcd","...
04:02:29 <oerjan> > [1..] >>- flip replicateM [1..]
04:02:31 <lambdabot> [[1],[1,1],[2],[1,1,1],[3],[1,2],[4],[1,1,1,1],[5],[1,3],[6],[1,1,2],[7],[1...
04:03:00 <CakeProphet> that's... strange. I don't really get the ordering.
04:03:01 <oerjan> CakeProphet: look at that example. if i used >>= it would never get beyond the length 1 lists
04:03:30 <monqy> "hello" >>- repeat
04:03:34 <monqy> > "hello" >>- repeat
04:03:35 <lambdabot> "hehlhehlhehlhehohehlhehlhehlhehohehlhehlhehlhehohehlhehlhehlhehohehlhehlhe...
04:03:37 <monqy> > "hello" >>= repeat
04:03:37 <lambdabot> "hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh...
04:03:39 <CakeProphet> so that would be useful for things like getting the set of all strings matched by a regular expression.
04:03:40 -!- pikhq has joined.
04:03:47 -!- pikhq_ has quit (Ping timeout: 252 seconds).
04:03:54 <oerjan> CakeProphet: it is rather simplistic. the first value is used every second time, the second value every fourth time, etc.
04:04:05 <oerjan> CakeProphet: yeah probably
04:04:33 <monqy> I should try using/understanding the actual Logic/LogicT sometime
04:05:04 <monqy> (I have the paper but it's on my reading pile)
04:06:02 <oerjan> > return "a" <|> return "b" :: Logic String
04:06:22 <oerjan> :t return "a" <|> return "b" :: Logic String
04:06:38 <lambdabot> forall a r. Logic a -> (a -> r -> r) -> r -> r
04:06:45 <CakeProphet> yes I'll have to read about Logic as well.
04:07:54 <CakeProphet> elliott: I win at finding an alternative to my own already very elegant code. OH YEAAAH.
04:08:07 <oerjan> > (return "a" <|> return "b" :: Logic String) ((.).(:)) ""
04:08:08 <lambdabot> Couldn't match expected type `t1 -> t2 -> t'
04:08:13 <oerjan> > runLogic (return "a" <|> return "b" :: Logic String) ((.).(:)) ""
04:08:14 <lambdabot> Couldn't match expected type `[GHC.Base.String]'
04:08:16 <CakeProphet> but it implements a degree of common sense that the other lacks.
04:08:23 <oerjan> > runLogic (return "a" <|> return "b" :: Logic String) ((:)) ""
04:08:24 <lambdabot> Couldn't match expected type `[GHC.Types.Char]'
04:08:41 <oerjan> > runLogic (return "a" <|> return "b" :: Logic String) ((:)) []
04:09:27 <oerjan> CakeProphet: on the plus side, it was obvious from the type of runLogic :P
04:10:21 <CakeProphet> looks like <|> constructs a fold over the function supplied by runLogic
04:10:37 <monqy> > runLogic (return "a" `interleave` return "b" `interleave` return "c" :: Logic String) ((:)) []
04:10:54 <monqy> (<|>) is from Alternative
04:10:58 <lambdabot> forall (f :: * -> *) a. (Alternative f) => f a -> f a -> f a
04:13:01 <oerjan> CakeProphet: um <|> is backtracking choice, i guess. and then instead of concatenating the choices directly, the r -> r trick gives you an optimization similar to using ShowS instead of (++). i guess.
04:15:38 <oerjan> > foldl' interleave "" $ map return "scramble"
04:15:53 <oerjan> > foldr interleave "" $ map return "scramble"
04:16:53 <oerjan> Lymee: no IO in lambdabot
04:16:56 <Lymee> > execute-your-damn-io
04:16:57 <lambdabot> Not in scope: `execute'Not in scope: `your'Not in scope: `damn'Not in scope...
04:17:19 <Lymee> Guess sandboxing is /really/ easy in Haskell.
04:18:06 <oerjan> Lymee: that's the idea. although they are also excluding some type extensions which can be used for loopholes, iirc
04:19:02 <Lymee> How low level of stuff you can you do with pure Haskell?
04:19:06 <oerjan> anything which can be used to implement unsafeCoerce, i assume
04:21:04 <Lymee> How hard would it be to implement a kernel if you added a few low level CPU-specific assembly routines as IO actions?
04:21:12 -!- derrik has joined.
04:22:08 <elliott> you need garbage collected memory management, at least
04:22:19 <elliott> it's very hard to write haskell code that doesn't cons :D
04:22:35 <elliott> Lymee: basically you need an RTS.
04:22:48 <elliott> GHC's depends on libc, but not _that_ much of it
04:23:06 <Lymee> So you'd need to implement some low level functions that Haskell depends on.
04:23:27 <elliott> as I said: you need an RTS.
04:23:31 <elliott> that is more than just a few functions.
04:23:56 <elliott> GHC's is 50,000 lines, a quick google tells me
04:24:10 <elliott> although you hardly need the byte-code interpreter, or profiling
04:24:22 <elliott> and the memory manager is likely to be rather suboptimal for an OS...
04:24:42 <Lymee> Maybe a Haskell userspace might be a less horrible idea.
04:24:49 <elliott> there are multiple Haskell kernels.
04:24:59 <elliott> it's just not as easy as you seem to want :)
04:25:02 -!- azaq23 has joined.
04:25:49 <elliott> hOp, House, that updated fork of House that I forget the name of, and that other project I forget the name of
04:34:38 <oerjan> haskell kernels do horrible things to your memory. also, amortization.
04:36:41 <elliott> oerjan: is this a pun or an opinion :D
04:37:17 <oerjan> also i just thought i'd write down that word while i remembered it.
04:41:23 <lambdabot> Text.Html base :: String -> HtmlAttr
04:41:23 <lambdabot> Text.XHtml.Frameset base :: String -> HtmlAttr
04:41:26 <lambdabot> forall a. (Integral a) => a -> (Int -> Char) -> a -> String -> String
04:42:00 <elliott> hmm what's the third argument
04:42:23 <oerjan> > showIntAtBase 2 intToDigit 255 ""
04:44:07 -!- augur has quit (Read error: Connection reset by peer).
04:44:18 -!- augur has joined.
04:44:31 -!- IanWizard has joined.
04:45:00 <zzo38> I made a program in TeX for overlaying every page of output with a grid. I also made a program in TeX for overlaying specific pages with pictures from plain PBM files.
04:45:15 <IanWizard> The #brainfuck topic said to come here.
04:47:50 <elliott> oerjan: i feel our current topic may give some UNWARRANTED FIRST IMPRESSIONS to newbies :D
04:48:32 <oerjan> you misspelled ENTIRELY ACCURATE
04:48:53 <IanWizard> I've been googling, but can't find anything... I've never used BF before, would it be possible to read from a file and do math based on what's in the file, with BF?
04:49:11 <IanWizard> basically, does it support reading in a file in any way?
04:49:19 <oerjan> IanWizard: only standard input
04:49:25 <pikhq> IanWizard: No, it only supports (in UNIX terms) stdin and stdout.
04:49:38 <oerjan> which may come from a file though
04:49:49 <zzo38> You could redirect stdin from a file
04:50:14 <elliott> IanWizard: CLEARLY YOU NEED PSOX
04:50:29 <oerjan> elliott: hey i was pondering whether to mention PSOX
04:50:42 <fizzie> I was *trying* to mention PSOX, but had forgotten the name.
04:51:12 * Sgeo still has PSOX on ping, apparently
04:51:17 <elliott> psox psox psox psox psox psox psox psox psox psox psox
04:51:50 <oerjan> IanWizard: PSOX is a wrapping layer which can be used to give BF (and possibly other esolangs) extra capabilities
04:52:01 <zzo38> What does "PSOX on ping" mean?
04:52:20 <Sgeo> zzo38, I have my client set up to hilight if it sees PSOX just the same as if it saw my nick
04:52:20 <oerjan> zzo38: that his client pings him when it's mentioned
04:52:49 <elliott> oerjan: it's also very dead
04:52:56 <elliott> i don't think we need to _recommend_ it to anyone ;D
04:53:21 <Sgeo> It's only dead because people other than me had 0 interest, so I lost interest
04:57:04 -!- CakeProphet has quit (Ping timeout: 264 seconds).
04:58:38 -!- augur has quit (Read error: Connection reset by peer).
04:58:47 -!- augur has joined.
05:01:42 -!- augur has quit (Read error: Connection reset by peer).
05:01:59 -!- augur has joined.
05:03:27 <zzo38> Now you can include picture in your document while still remaining device independent, not using any specials or nonstandard fonts or anything like that. The quality is not perfect but it should be good enough for some purposes. However, you have to decide the placement manually.
05:04:51 -!- augur has quit (Read error: Connection reset by peer).
05:05:12 -!- augur has joined.
05:06:00 <zzo38> One command might be useful in TeX, is the command \hidecs takes a control sequence of two or more letters and damages its entry in the hash table.
05:11:13 -!- augur has quit (Read error: Connection reset by peer).
05:11:25 -!- augur has joined.
05:13:53 -!- IanWizard has quit (Quit: Leaving).
05:19:10 <oerjan> @hoogle Alternative a => [a x] -> a [x]
05:19:11 <lambdabot> Control.Applicative many :: Alternative f => f a -> f [a]
05:19:11 <lambdabot> Control.Applicative some :: Alternative f => f a -> f [a]
05:19:11 <lambdabot> Prelude sequence :: Monad m => [m a] -> m [a]
05:19:54 <oerjan> > many . map pure $ "abc" :: String
05:19:55 <lambdabot> Couldn't match expected type `GHC.Types.Char'
05:20:02 <oerjan> :t many . map pure $ "abc"
05:20:03 <lambdabot> forall (f :: * -> *). (Applicative f) => [[f Char]]
05:20:38 <oerjan> @hoogle Alternative a => [a x] -> a x
05:20:39 <lambdabot> Data.Foldable asum :: (Foldable t, Alternative f) => t (f a) -> f a
05:20:39 <lambdabot> Control.Monad msum :: MonadPlus m => [m a] -> m a
05:20:39 <lambdabot> Control.Applicative (<|>) :: Alternative f => f a -> f a -> f a
05:23:05 <coppro> I do not get haskell's existential qualifiers
05:23:40 <coppro> Like, I understand how they are used
05:24:02 <elliott> what don't you understand?
05:24:08 -!- zzo38 has left.
05:24:12 <elliott> it may help to know that typeclasses can't always be resolved statically
05:24:15 <elliott> and there's typeclass dictionaries for this purpose
05:24:22 <elliott> (a lot of people think all typeclass resolution is done at compile-time, which is just not true)
05:24:42 <elliott> so e.g. data Foo = Foo (forall a. (Num a) => a) will store the Num dictionary in there
05:24:45 <elliott> or I forget the syntax, but yeah
05:25:37 <coppro> but I do not understand you get from the universal qualifier to using it for existential purposes
05:26:15 <coppro> like, (forall a. Num a => a) is something that is all Nums
05:26:36 <oerjan> data Foo = forall a. Num a => Foo a
05:27:20 <coppro> oerjan: So is Foo a mean that "a" is a Num or that "a" is all Nums?
05:27:26 <elliott> <coppro> like, (forall a. Num a => a) is something that is all Nums
05:27:37 <elliott> that's not a good type to use
05:27:53 <elliott> coppro: it means that a is a Num
05:27:58 <elliott> but note that the type of (Foo x) is Foo
05:28:00 <oerjan> coppro: it means that for all a s.t. Num a, Foo a is a value of type Foo a
05:28:26 -!- derrik has quit (Quit: left).
05:28:35 <elliott> elliott@katia:~$ cat >foo.hs
05:28:35 <elliott> data Foo = forall a. Num a => Foo a
05:28:35 <elliott> elliott@katia:~$ ghci -XExistentialQuantification foo.hs
05:29:26 <oerjan> coppro: it is essentially defining an existential _type_ by writing down the _universal_ type of its constructor
05:30:21 <elliott> oerjan: what, that is the last thing i'd expected to have worked as an explanation...
05:30:27 <elliott> clearly i misunderstood the nature of coppro's misunderstanding :D
05:30:34 <oerjan> coppro: although that is much clearer with the GADT syntax
05:30:42 <elliott> Foo :: (Num a) => a -> Foo
05:30:48 <elliott> implicit "forall a." after that :: ofc
05:30:54 <elliott> that's why i showed the constructor type
05:32:57 <coppro> yeah I really like GADT
05:43:42 -!- oklopol has joined.
05:43:56 <oerjan> NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
05:44:09 * oerjan prepares the gremling catcher
05:44:10 <elliott> finally a straight non-nerd in the channel!!!!!!!!!!
05:44:18 <elliott> OUR LONG TEMPORARY NATIONAL OERJAN-INDUCED NIGHTMARE IS OVER
05:44:58 <oklopol> elliott: would you have been available this week out of q
05:45:35 <elliott> oh is that good, im gonna go drop everything then and get on a plane somewhere to do something totally non-required
05:45:58 <elliott> thats the ESO channel stupid
05:46:18 <oerjan> european space organization
05:46:23 <oklopol> it's also the nickname of #esoteric
05:47:05 <monqy> my nickname for #esoteric is esoteric
05:47:21 <oklopol> well your nickname is wrong then
05:47:22 <elliott> that couldn't possibly cause any confusion whatsoever
05:47:25 <oerjan> monqy: oh? what is it?
05:47:48 <oerjan> yes, you said that, but what _is_ it
05:50:10 <oklopol> i still don't really get "<elliott> oh is that good, im gonna go drop everything then and get on a plane somewhere to do something totally non-required"
05:50:20 <elliott> oklopol> elliott: would you have been available this week out of q
05:50:24 <elliott> wanted to do something really availableish
05:50:32 <elliott> "look at me all doing these things because they sound like fun"
05:50:38 <elliott> "coulda been all with oklopol but i hate him haha"
05:51:13 <oklopol> yeah well it's not like i actually wanted to meet you you piece of nigger
05:52:41 <oklopol> they wouldn't let a black guy in my room in paris because he was black
05:53:10 <oerjan> why have neither xkcd nor girl genius updated yet :(
05:53:34 <elliott> oerjan outs himself as an xkcd reader
05:53:43 <elliott> no oerjan............ no stop..................
05:53:46 <oerjan> it's not precisely a secret
05:53:59 <elliott> (should be deprived of)oxy(gen )moron
05:53:59 <monqy> girlzngames hasnt updated for a month :(
05:54:20 <oerjan> oklopol: ARE YOU INSULTING THE GREAT AGATHA HETERODYNE?
05:54:48 <elliott> monqy: is that bad, i looked at it but im too tired to really interpret
05:55:06 * elliott checks. unfortunately, ctrl-alt-del updated today.
05:55:09 <monqy> i will find a good one
05:55:12 <oklopol> oerjan: no i was being sexist because i had a good bigot spree going on
05:55:36 <elliott> monqy: its on the bad webcomics wiki along with every other webcomic in existence
05:55:40 <monqy> http://www.girlzngames.com/comics/2010-12-22-Christmas-Gamer-Greetings.jpg classic
05:56:30 <monqy> http://www.girlzngames.com/comics/2011-01-05-Feel-the-Love.jpg
05:56:42 <elliott> monqy: have you ever read Minimum Security, it's this anarcho-primitivist comic, and it's just so amazing
05:56:47 <elliott> it stars a bunch of animals
05:56:53 <elliott> fuck up nuclear power plants
05:57:17 <elliott> http://stephaniemcmillan.org/
05:57:25 <elliott> oh maybe its the comic category
05:57:39 <elliott> Minimum Security has gone through several phases. From 1998-2004, it was a weekly editorial cartoon, commenting on the most egregious outrages of the day. In 2005, I started using regular characters. The cartoon got picked up by United Media’s comics.com, where it evolved into a more humorous, gag-a-day comic strip with some sequential stories.
05:57:43 <elliott> oh my god shut up just give me a link
05:57:55 <elliott> monqy: but yeah it's lit. the scariest comic
05:58:01 <elliott> Victoria: A guinea pig with a vision, she’s the brains of the Resistance and its Minister of Agit-Prop. She’s all about plan, strategy, tactics, ideology and method. Possessing logic, clarity and a magnificent ego, she fancies herself the furry, potato-shaped mastermind of the revolution.
05:58:10 <elliott> Bananabelle: Kranti’s best friend since preschool, Bananabelle is a lovely, cheerful person with a good heart, but her loyalties are divided. A sustainable economy, or swanky shoes? She’d like both. She’ll help out at a community garden or attend a protest, but she’s not sure about all this revolution business – a little love and being a good example ought to be sufficient.
05:58:16 <elliott> Chip: The cultured son of a major corporate bigwig, he has everything except the one thing he really craves: Kranti’s love. He’d settle for her lukewarm indifference, but he doesn’t even get that. When he calls her on his diamond-studded, solid gold cell phone, she never answers — alas, alas. Bananabelle, however, thinks he’s the hottest thing since this season’s Manolo Blahniks.
05:58:23 <elliott> Bunnista: He’s an action-oriented rabbit, furious about the shrinking wilderness, the vivisection that took his eye, and pretty much everything else as well. Impatient with the fine points of political philosophy, all he wants is to destroy human civilization. His favorite method is blowing up infrastructure.
05:58:33 <elliott> THE VIVISECTION THAT TOOK HIS EYE
05:58:44 <monqy> and pretty much everything else as well
05:58:50 <elliott> monqy: pretty sure that Bunnista is a protagonist btw
05:58:59 <elliott> "Impatient with the fine points of political philosophy, all he wants is to destroy human civilization. His favorite method is blowing up infrastructure." <-- good guy
06:00:13 <monqy> is he actually supposed to be a good guy or does minimum security not have real life morals
06:00:33 <monqy> either way/regardless
06:01:09 <elliott> monqy: anarcho-primitivist remember
06:01:28 -!- azaq23 has quit (Quit: Leaving.).
06:01:51 <monqy> i meant like how fairy tales have moral lessons is minimal security supposed to be how it's good to be angry and blow up infrastructure
06:02:13 * oklopol likes many of the new xkcd's
06:02:19 <elliott> i thnk its just about how all civilisation is bad and anybody who doesnt want to blow it up is bad
06:02:36 <elliott> told through really disturbing ~jokes~ with anthropomorphic animals doing terrible (= good) things
06:03:29 <oklopol> who cares about moral lessons when there's explosions and violence involved
06:03:56 <oklopol> philosophy crap < explosions and violence < sex
06:07:53 <elliott> http://en.wikipedia.org/wiki/File:Minimumsecurity.jpg oh wow
06:13:26 <oklopol> i think i won't do anything today or tomorrow or the day after that or the day after that or the day after that
06:15:27 -!- augur has quit (Read error: Connection reset by peer).
06:15:38 -!- augur has joined.
06:15:46 <oklopol> for instance i learned that if i want to get a hot barely legal girlfriend all i have to do is to stop working, use drugs for the next 10 years and get some brain damage
06:16:44 <oklopol> seemed to have worked for this one dude at least, he had a rather disfigured face as well
06:17:28 <oerjan> ?unmtl RWST a b (RWST b a (RWST a b ST)) a
06:17:28 <lambdabot> err: `RWST a b (RWST b a (RWST a b ST)) a' is not applied to enough arguments.
06:17:35 <elliott> oerjan: where's IO's Monad instance :(
06:17:53 <lambdabot> Source not found. I feel much better now.
06:18:09 <lambdabot> Source not found. I've seen penguins that can type better than that.
06:18:24 <oklopol> penguins don't have fingers
06:18:54 <pikhq> Penguins *do* have phalanges, however.
06:19:46 <oerjan> elliott: http://www.haskell.org/ghc/docs/latest/html/libraries/base-4.3.1.0/src/GHC-Base.html#Monad
06:20:23 <pikhq> oklopol: Non-vertebrates.
06:20:40 <pikhq> And a very small handful of vertebrates.
06:21:38 <oklopol> if i say non-vertebrates don't count, am i being phylist or what?
06:21:58 <monqy> the instance defines (>>) in terms of (>>=), and exactly the same of as the default instance, but there's thenIO, which looks like it does the (>>) stuff
06:22:05 <pikhq> oklopol: There's much more non-vertebrates than vertebrates, even if we only consider the animal clade.
06:22:09 <oklopol> oh vertebrates is a subphylum
06:22:42 <oklopol> pikhq: there's also more primes than non-vertebrates, but you can't really have a conversation with most of them
06:23:08 <oklopol> at least not a very *product*ive one
06:23:18 <pikhq> Also, fuck Linnaean taxonomy.
06:23:49 <oklopol> that's a very taxonomist thing to say
06:23:58 <pikhq> Clades are the only form of super-species grouping that make any sense at all.
06:24:04 <oklopol> all taxonomists are created equal you know
06:26:43 * pikhq dislikes classification that is devoid of meaning
06:26:47 <lambdabot> err: `RWST a b ST a' is not applied to enough arguments, giving `/\A. a -> ST -> a (A, ST, b)'
06:26:51 * pikhq likes even *less* classification with negative meaning.
06:27:29 <lambdabot> err: `RWST a b m a' is not applied to enough arguments, giving `/\A. a -> m -> a (A, m, b)'
06:27:40 <oklopol> how well does having a tree work for species classification? i mean usually you get the problem that you have to choose the order of branchings, say when you want to separate blue animals from red and animals with big dicks from ones with small dicks; does the fact that you will often be kind of following when the species actually temporally branched solve this
06:28:30 <pikhq> oklopol: Tolerably, but you do get very confusing edge cases.
06:28:30 <elliott> oerjan: hm implementing IOT is hard
06:28:35 <elliott> (things to say to scare oerjan)
06:28:39 <pikhq> Ring species despise you. ;)
06:28:54 <oerjan> ?unmtl RWST a b c (RWST b c a (RWST c a b ST)) a
06:28:54 <lambdabot> a -> c -> b -> a -> c -> b -> ST (a, c, b, a, c, b, a)
06:29:28 <pikhq> Though, that problem is pretty inherent in any model which assumes that there are strict boundaries delimiting "species".
06:29:36 <pikhq> When there really aren't.
06:30:27 <Sgeo> With the common definition of "Can they breed together?", how do you distinuish between different asexual species?
06:30:45 <oklopol> can they breed together is problematic because of aforementioned rings
06:31:26 <oklopol> that it's not a transitive relation
06:31:35 <oerjan> *elliott: STMT. fnord.
06:31:43 <elliott> oerjan: i've written STT, mind you
06:31:50 <elliott> oh maybe i should just reuse it?
06:31:56 <pikhq> Sgeo: The mere notion of what a "species" *is* is one of the big questions in biology, TBH.
06:31:59 <elliott> wait, it only actually handles STRefs
06:32:07 <elliott> newtype STT s m a = STT (STTState s -> m (a, STTState s))
06:32:31 <oerjan> elliott: ghc _does_ make IO almost equivalent to ST RealWorld...
06:32:48 <oerjan> (only a couple newtype wrappings away)
06:33:15 <elliott> oerjan: yeah, but mine is a pure-apart-from-unsafeCoerce-for-heterogeneous-maps STRef-only ST
06:33:17 <pikhq> Sgeo: But, generally, one simply picks a definition that makes sense in the context you're dealing in.
06:33:22 <elliott> so it's not really applicable here
06:34:11 <pikhq> Sgeo: With asexual species, one would most generally resort to "things with a preponderance of similar traits." or some such.
06:35:18 <oklopol> we could have aRb if creature a can breed with creature b, then define species as equivalence classes of S, another equivalence relation such that aSb iff aRb and (for all c, aRc iff bRc).
06:35:19 <pikhq> With relatively clear boundaries for reproduction, one uses the "Can they breed together?" bit...
06:35:32 <oklopol> then asexual thingies would of course be species themselves
06:35:56 <pikhq> With ring species, well, *wince*
06:36:07 <oklopol> pikhq: well mine takes that into account
06:36:24 <oklopol> but of course if there's a very continuous ring, then you will get everyone in a different species
06:36:39 <pikhq> oklopol: Fortunately, that's not what happens.
06:36:47 * oerjan wonders if there are sphere species
06:37:02 <pikhq> Instead, you get individual groups which can interbreed with the neighboring groups.
06:37:14 <oerjan> they'd have to live both in the arctic, antarctic and the tropics, for one thing...
06:37:21 <oklopol> if you have "species" A, B and C such that aRb and bRc for all x \in X, but never aRc, then my definition makes A, B and C different species
06:37:23 <pikhq> If it weren't for that biologists would give up now. :P
06:37:39 <pikhq> oklopol: That is a neat definition.
06:37:48 <oklopol> pikhq: standard trick in math really
06:38:00 <pikhq> oklopol: Though only works with species that are capable of breeding. :)
06:38:23 <pikhq> Fortunately, dealing with asexual entities is less *confusing*.
06:38:53 <pikhq> Because you get groups with clear, distinct traits rather than a continuum of interbreeding groups.
06:39:07 <pikhq> (though gene transfer hates you)
06:39:16 <quintopia> oklopol: define R better. do you mean "mate and produce viable offspring?"
06:39:38 <oklopol> quintopia: choose your favorite
06:39:50 <pikhq> quintopia: Presumably "mate and produce viable offspring with no external influence".
06:40:08 <quintopia> so coyotes and red wolves are the same species?
06:40:25 <oklopol> i would say produce a creature x which is in the same species as a and b w.r.t. the current population
06:40:30 <pikhq> There's some species which can be *coaxed* into producing offspring, but will generally refuse otherwise.
06:40:59 <oklopol> yeah that should work, it just occasionally further subdivides species
06:41:34 <pikhq> quintopia: How readily do the two interbreed?
06:41:55 <quintopia> pikhq: red wolves are almost gone due to interbreeding in the wild
06:42:14 <pikhq> They are most certainly the same species, then.
06:42:48 <pikhq> Just like the dog and the (gray) wolf are same species.
06:42:58 <pikhq> (and that is utterly uncontroversial)
06:43:02 <oklopol> by what i've understood the usual definition is, i'd say they are the same species, isn't that kind of the point of having races
06:43:35 <oklopol> are they called races............
06:43:51 <quintopia> because "lupus" and "familiaris" are just two ways to spell the same word
06:44:13 <pikhq> quintopia: Actually, the classification for domestic dog is "Canis lupus familiaris".
06:44:49 <oklopol> so... "" and "familiaris" are just two ways to spell the same word?
06:44:49 <elliott> oerjan: IOT m a -> IO (m a) should be safe-ish, right?
06:45:13 <oklopol> wolf is like lupus lupus is it
06:45:24 <pikhq> oklopol: No, C. lupus.
06:45:43 <pikhq> quintopia: Generally, arbitrarily based on what taxonomists feel is "enough" distinction between two given populations.
06:45:48 <oklopol> okay so then my joke was valid
06:46:01 <quintopia> ah i see. it is also known as canis familiaris equally often. thus my confusion
06:46:25 <pikhq> Yeah, that's fairly old taxonomy.
06:46:30 <oklopol> sometimes it's also called dog
06:46:46 <pikhq> oklopol: Insufficiently specific.
06:46:58 <pikhq> There's rather a lot of things called "dog".
06:47:04 <quintopia> oklopol: do you mean golden retriever or dingo?
06:47:09 <quintopia> they are different subspecies after all
06:47:44 <oerjan> oklopol: it's never lupus
06:47:52 <oklopol> i mean the set of creatures that can mate with my dog and produce offspring which are not wolves.
06:48:25 <pikhq> Ah, see, the problem is there's many species *called* "dog", even though they can't interbreed with yours.
06:49:13 <oklopol> what are called dogs without being able to interpreed with mien?
06:49:41 <pikhq> Lycaon pictus, Speothos venaticus, Cuon alpinus, Nyctereutes procyonoides, Atelocynus microtis, and species in genus Cynomys are all commonly called dogs.
06:50:04 <oklopol> please tell me that was from memory
06:50:24 <quintopia> your dog can't breed with a prairie dog
06:50:40 <pikhq> Also, all but Cynomys are in the clade Canidae.
06:51:14 <quintopia> Cynomys is prairie dog, in case you missed that oklopol
06:51:24 * oklopol realizes his definition separates boys and girls into different species, and in fact then everyone is their own species
06:52:07 <oklopol> just give every creature an ip
06:52:36 <pikhq> Huh. The tanuki is an invasive species in Europe. TIL.
06:52:39 <oklopol> quintopia: i most certainly missed that
06:52:41 <quintopia> how many thousands of years of animals can we track with ipv6 addresses
06:53:26 <oklopol> i'm gonna go to the uni for just a LITTLE bit, then back to my holiday ->
06:53:26 <quintopia> keep in mind that the dead ones have to keep their addresses, because they are distinct from the living ones genetically
06:53:42 -!- monqy has quit (Quit: hello).
06:54:04 -!- augur has quit (Read error: Connection reset by peer).
06:54:18 -!- augur has joined.
06:56:14 -!- augur has quit (Read error: Connection reset by peer).
06:56:14 <elliott> ok runIOT is very difficult
06:56:20 <quintopia> I once knew a hunter who went out for big game, and managed to kill a puma, a mountain lion, a cougar, a catamount, and a panther, all with a single bullet.
06:56:30 -!- augur has joined.
06:57:01 <quintopia> (yes i use oxford commas, biotches)
06:57:23 <oklopol> i don't know about genetic differences, but dead guys are at least always their own species: lemma 1: if you fuck a dead guy, he won't get pregnant, proof omitted; thus trivially if a is dead, aRb is false for all b, and thus a and b cannot belong to the same species
06:58:34 <oklopol> you can find the full proof in my thesis
06:58:40 <quintopia> moreover, dead guys will never try to mate with one another
06:59:00 <lambdabot> Data.List permutations :: [a] -> [[a]]
06:59:01 <quintopia> hence the clause about no external influence takes care of them
06:59:14 <oklopol> quintopia: if a dead guy is its own species, but doesn
06:59:27 <oklopol> quintopia: if a dead guy is its own species, but doesn't want to mate itself, does that make it a different subspecies from itself?
06:59:50 <quintopia> it is not an equivalence relation then
06:59:57 <quintopia> so it is not a proper equivalence class
07:00:27 <Sgeo> Huh, a Gmail add caught my eye
07:00:36 <quintopia> however, certain female lizards, reproducing by parthenogenesis, do satisfy the relation reflexively
07:00:41 <oklopol> not reflexive? umm i masturbate all the time!
07:00:45 <Sgeo> "I'm hiding in your inbox - www.*******.com - please don't tell anyone I'm here. Know any good jokes?"
07:01:05 <quintopia> it is an equivalence class that mammals don't satisfy
07:01:10 <oklopol> quintopia: the relation R is not an equivalence relation, no, S is.
07:01:37 <quintopia> but R cannot be applied meaningfully to birds and mammals
07:02:01 <oklopol> oh because everyone is their own species?
07:02:13 <quintopia> at least not as an equivalence relation
07:03:03 <oklopol> but yeah probably buys and girls should be formalized since this will only work for boygirlious creatures anyway
07:03:24 <oklopol> or at least just mateous creatures but all the cool mateates are boygirlious anyway.
07:03:41 <quintopia> especially the ones that do penis jousting
07:03:55 <oklopol> umm, worms are basically dicks
07:04:27 -!- BeedaWeeda has quit (Quit: The internet is full, go away.).
07:04:43 <Sgeo> What's the status of IPv4?
07:05:02 -!- BeedaWeeda has joined.
07:05:03 <quintopia> ask ARIN or something. we don't care anymore
07:05:12 -!- BeedaWeeda has quit (Changing host).
07:05:13 -!- BeedaWeeda has joined.
07:05:48 -!- BeedaWeeda has quit (Client Quit).
07:06:38 -!- BeedaWeeda has joined.
07:06:39 -!- BeedaWeeda has quit (Changing host).
07:06:39 -!- BeedaWeeda has joined.
07:07:48 <lambdabot> forall a (m :: * -> *) b. (MonadCont m) => ((a -> m b) -> m a) -> m a
07:08:02 <lambdabot> Source not found. Do you think like you type?
07:08:03 <lambdabot> class (Monad m) => MonadCont m where
07:08:03 <lambdabot> callCC :: ((a -> m b) -> m a) -> m a
07:09:03 <pikhq> Sgeo: RIPE depletion quite in August 2012.
07:09:10 <pikhq> Sgeo: APNIC depletion a while back.
07:09:53 <pikhq> Sgeo: ARIN depletion anywhere from early 2012 to 2014, depending on who you listen to.
07:10:10 <pikhq> And AFRINIC could probably last until the heat death of the universe.
07:10:15 <Sgeo> Why doesn't the RIPE estimate vary more?
07:10:20 <elliott> oh wait, IO (m a) is really dangerous, it should be m (IO a)
07:10:52 <pikhq> Sgeo: There is variance, but it's just not that controversial that it'll happen sometime mid-2012.
07:11:04 <pikhq> So I just named the estimate that I like most.
07:11:41 <pikhq> The CEO of ARIN is saying depletion will happen by Jan. 2012, but statistical estimates all put it much later.
07:11:58 <pikhq> I wonder if there's somethin he knows that we don't.
07:12:29 <elliott> oh wait, m (IO a) is just as unsafe
07:13:40 -!- cheater_ has joined.
07:16:08 -!- BeedaWeeda has quit (Quit: The internet is full, go away.).
07:17:49 <elliott> runIOT :: (Monad m) => (forall b. m b -> (b,r)) -> IOT m a -> IO (a,r)
07:17:52 <elliott> oerjan: it might even be safe
07:19:29 <elliott> ((RW new_s, a), r) -> (# new_s, (a, r) #)
07:22:25 <cheater_> does anyone know if the original colossal cave adventure has been ported to C/linux ?
07:23:59 <pikhq> cheater_: It should be in your distro's bsdgames packages, as "adventure".
07:24:23 <pikhq> It's a port to C from the original FORTRAN.
07:24:31 <cheater_> it's not even the 1994 "original" one
07:24:52 <elliott> the original fortran sources are available, a conversion should not be difficult.
07:25:15 <cheater_> for example "get all" does not work
07:25:15 <cheater_> but that's just one minor difference out of very very many
07:25:23 <pikhq> You could probably build it directly, actually.
07:25:45 <cheater_> http://jerz.setonhill.edu/if/canon/Adventure.htm
07:26:25 <elliott> that is indeed a blog post.
07:26:37 <pikhq> Ah, it seems to be a port of Don Woods' expansion on the original.
07:26:56 <pikhq> Because Crowther's original had gone missing.
07:27:19 <pikhq> Wasn't at the time.
07:27:36 <cheater_> Crowther, Will. "Adventure." Original FORTRAN source code. 1975-76. http://jerz.setonhill.edu/if/crowther/ (recovered from a backup of Don Woods's student account at Stanford.) Edited to compile under g77 (Matthew Russoto, 2007). Windows Executable (David Kinder, 2007).
07:29:59 <pikhq> The original depends on 36-bit words.
07:41:45 <elliott> god dammit Lymee now i'm wondering how much of the ghc rts depends on libc
07:43:02 <elliott> unfortunately ghc doesn't really have a bit-precise data type mechanism
07:43:09 <elliott> you can use Ptrs and copy structures into them
07:43:19 <elliott> and it means the lower-level stuff will be really painful
08:04:33 -!- augur has quit (Read error: Connection reset by peer).
08:04:40 -!- augur has joined.
08:10:22 <lambdabot> forall c a. (a -> c) -> a -> (a, c)
08:10:28 <lambdabot> forall a b. (RealFrac a, Integral b) => a -> b
08:10:34 <elliott> Deewiant: That's preferable to ap (,)? :P
08:10:52 <Deewiant> It's what I'd've thought of first
08:14:43 <elliott> tracking an n and doing (start + n delta) is preferable to repeatedly adding delta when using floating point, right?
08:15:25 <Deewiant> I guess so, it's two sources of imprecision instead of n
08:19:26 <elliott> *Main> last (seconds 1 id)
08:19:27 <elliott> *Main> last (sampleSecond id 0 44000)
08:24:33 -!- falso___ has changed nick to fALSO.
08:27:54 <pikhq> elliott: Well, probably not *much* of the RTS depends on libc, considering that it runs on Xen.
08:31:01 <Vorpal> how does the RTS allocate memory? malloc? mmap?
08:31:44 <elliott> sample :: SignalC a -> Time -> Float -> Float -> SignalD a
08:31:44 <elliott> sample f start dt ns = sample' 0 f start dt (ns/dt)
08:31:44 <elliott> where sample' !n f start dt nsamp
08:31:44 <elliott> | otherwise = ap (,) f (start + n*dt) : sample' (n+1) f start dt nsamp
08:34:09 <elliott> oh wait not good, that's bad for some reason
08:36:33 <elliott> a list is probably the worst possible choice for a SignalD mind you
08:36:56 <Vorpal> elliott, and how does the gc allocate it
08:37:03 <elliott> Vorpal: how does malloc allocate things
08:37:05 <elliott> how does mmap allocate things
08:37:14 <elliott> garbage collector means "allocator and collector"
08:37:14 <Vorpal> elliott, well, malloc uses sbrk or mmap usually
08:37:28 <Vorpal> elliott, yes but the gc must request the memory from the OS somehow :P
08:37:42 <Vorpal> elliott, or things would segfault
08:37:47 <elliott> http://hackage.haskell.org/trac/ghc/wiki/Commentary/Rts/Storage
08:38:20 <Vorpal> aha, block allocation layer
08:38:21 <pikhq> Vorpal: A GC generally implements its own allocator.
08:38:27 <pikhq> Vorpal: So, it allocates via malloc and mmap.
08:38:37 <elliott> Vorpal: its obviously not as simple as regular allocation
08:38:41 <elliott> Vorpal: because everything is in a thunk
08:39:00 <fizzie> "At the bottom, talking to the OS, is the megablock allocator (rts/sm/MBlock.c, includes/rts/storage/MBlock.h). It is responsible for delivering megablocks, correctly aligned, to the upper layers."
08:39:09 <fizzie> That's probably the place to peek if curious enough.
08:39:17 <fizzie> Also "megablock" sounds fabulous.
08:39:30 <pikhq> fizzie: And is almost certainly nothing that interesting.
08:39:49 <elliott> fizzie: it will surely most likely be in platform code
08:40:10 <pikhq> elliott: There's a drop-in replacement, though.
08:40:38 <elliott> / A wrapper around mmap(), to abstract away from OS differences in
08:41:55 <pikhq> Well, rather, a handful of replacements; there's different functions for "Get me a page" and "Get me a page that mirrors a file".
08:42:17 <pikhq> Anyways, point is the *functionality* is part of the API, making it nothing too painful to work with.
08:45:17 <pikhq> Anyways. Mere *allocation* is essentially a solved problem; a specific implementation is going to be about as interesting as a specific implementation of quicksort.
08:45:43 <pikhq> It's deallocation that's hard.
08:48:42 <oerjan> yeah ghc doesn't even try deallocating >:)
08:49:18 <pikhq> Good thing I got my unbound spool of tape in the mail today.
08:49:47 -!- augur has quit (Read error: Connection reset by peer).
08:49:55 -!- augur has joined.
08:54:23 <pikhq> coppro: What, I was ordering parts for my Turing machine, and that came in today.
08:55:48 <Vorpal> pikhq, given the size of it, I guess the postage must have been prohibitive?
08:56:35 <elliott> you see, it gets thinner as it goes along
08:56:51 <elliott> so the first cell takes up half the envelope
08:57:00 <elliott> but the rest tapers to an (infinite) point
08:57:07 <elliott> (it gets smaller in every dimension)
08:57:21 <pikhq> The reader is a truly impressive piece of work.
08:57:23 <fizzie> Paper tape, the storage method of kings: http://zem.fi/g2/d/17070-4/p1100859.jpg
08:57:25 <elliott> so they just ship it rolled up
08:57:47 <Vorpal> fizzie, where did you take that photo?
08:58:04 <elliott> pikhq: yeah it uses magnets and light to read instead of doing it directly
08:58:08 <elliott> that way it doesn't have to get smaller as it moves
08:58:18 <fizzie> Vorpal: It's the UK National Museum of Computing's rebuild of Colossus, the Lorenz-cipher-breaker thing.
08:58:24 -!- oerjan has quit (Quit: leaving).
08:58:26 <elliott> basically it shoots the right coloured beam of light to just reflect the specific cell it wants
08:58:31 <elliott> which magnetises the tape cell
08:58:36 <elliott> then it pulls up with the magnet
08:58:49 <elliott> and the reaction causes the value to be put on to the platter
08:58:58 <pikhq> elliott: I've not tried it for cells that would be below a Planck distance in wavelength.
08:59:09 <pikhq> The quite-probably ionizing radiation kinda scares me.
08:59:47 <elliott> pikhq: yes well, you _are_ meant to operate it in a vacuum in a container the size of a galaxy.
09:00:19 <pikhq> I'm kinda cheating. I've got a TARDIS on backorder.
09:00:23 <elliott> pikhq: in fact, since it means the platter can move less (i.e. not at all), normal operation operates exclusively on the atom at the very tip of the tape
09:00:25 <Vorpal> the feats of modern technology are truly marvelous
09:01:23 <elliott> oh, the writing mechanism is really cool; it has two lasers, one really hot, one really cold, and it mixes them both at the current tape cell to cause it to undergo a chemical reaction which transforms it into the right value.
09:01:48 <Vorpal> elliott, what is the MTBF?
09:02:07 <elliott> Vorpal: why would it fail?
09:02:08 -!- augur has quit (Read error: Connection reset by peer).
09:02:19 <Vorpal> elliott, well, the reader and writer may
09:02:22 -!- augur has joined.
09:02:39 <elliott> Vorpal: it uses the infinite sequence of bits as an entropic power source
09:02:46 <elliott> so there's little worry about that
09:03:01 <elliott> it's not doing anything strenuous, just firing a few lasers at a single atom and turning an electromagnet on and off
09:03:06 <pikhq> Good thing, too. It requires more power the further you get in the tape.
09:03:40 <elliott> have to generate light of ever more ridiculous wavelengths to shine to read
09:03:52 <coppro> this conversation is awesome
09:04:25 <Vorpal> pikhq, only relevant for the start of the tape I guess
09:04:29 <elliott> Vorpal: Like I said, it uses the last atom exclusively in normal usage.
09:04:36 <elliott> So no spatial seeking is necessary.
09:04:39 <elliott> coppro: it's just making me want one
09:05:00 <elliott> Vorpal: Interestingly, just cutting off the tape before this last atom results in a catastrophic system meltdown.
09:05:08 <Vorpal> I need one of those infinite sequence power supplies in my laptop...
09:05:30 <elliott> Vorpal: PHYSICS HAS YET TO EXPLAIN.
09:05:35 <pikhq> elliott: Just need to take a trip to the frictionless pulley store.
09:06:20 <elliott> Vorpal: Interestingly, you can exploit the random appearance of tachyons during the tape-reading process to serve as a halting oracle.
09:06:43 <elliott> It's not very practical, though; if the computation goes on forever, then an infinite number of tachyons hit your sensor all at once.
09:06:53 <elliott> The results are quite spectacular but usually fatal.
09:06:56 <Vorpal> elliott, hm, even if seek time is non-existent, how long does it take to read a single symbol?
09:07:16 <elliott> BUT WHAT'S A FEW GALAXIES BETWEEN FRIENDS WHO WANT TO DECIDE THE GOLDBACH CONJECTURE????
09:07:48 <elliott> Vorpal: As long as it takes for light to make it there and back. Technically, turning an electromagnet on and off should be included in time, but in practice, the machine operates so quickly that the electromagnet is never off.
09:08:12 <elliott> So, since the head is mere millimetres above the tape: practically no time at all.
09:08:45 <Patashu> Infinitely small tape cells should wear out infinitely fast
09:08:48 <Vorpal> elliott, something similar would apply for writing of course
09:09:17 <elliott> Patashu: There's nothing to wear out.
09:09:30 <Patashu> But you said it had chemical reactions
09:09:35 <Patashu> So inevitably atoms will escape
09:09:51 <elliott> Patashu: Yes, this is why it uses a self-repairing mechanism.
09:09:57 <oklopol> in evitably your mom will escape my chemical reactions
09:10:12 <elliott> Patashu: The atom gets destroyed roughly every other clock cycle, but it is duplicated by a simple mechanism and put back into place constantly.
09:10:25 <elliott> Since it's just a single atom, this is a simple process, compared to scanning every single tape cell, which would take literally forever.
09:10:32 <Vorpal> elliott, a bit like those self-repairing mc structures? using pistons and so on?
09:10:42 <Patashu> turing machines compared to pistons in minecraft
09:10:42 <Vorpal> (infinitely small ones of course)
09:10:53 <elliott> Vorpal: Precisely, if one block of cobblestone could be used to access infinite bits.
09:10:54 <Patashu> you know, minecraft represents an infinitely large space
09:10:57 <Patashu> let's set up a piston driven turing machine
09:11:06 <Patashu> it just doesn't implement it
09:11:10 <Patashu> because of floating point inaccuracies
09:11:25 <elliott> Patashu: Things start breaking way before the actual coordinates hit floating point limits.
09:11:37 <elliott> IIRC, it's only like a few solid months of walking to the place where repeated addition and the like fuck everything up.
09:11:40 <Vorpal> elliott, implementation limits
09:11:46 <oklopol> your mom's floating point starts breaking before the actual coordinates hit repeated addition implementation limits
09:11:57 <Patashu> name one thing that breaks down not because of floating point inaccuracies
09:12:06 <Vorpal> Patashu, heard of the "far lands"?
09:12:09 <elliott> Patashu: The whole game is floating point, so I don't know what you mean.
09:12:13 <elliott> <Vorpal> elliott, implementation limits
09:12:21 <elliott> Yeah, but they're reachable ones.
09:12:22 <Vorpal> Patashu, http://www.minecraftwiki.net/wiki/Far_Lands
09:12:36 <elliott> Notch used to say that the bugs were way too far out to ever be relevant.
09:12:38 <Patashu> if minecraft's floats and doubles were swapped for e.g. bigdecimal
09:12:53 <elliott> Patashu: that would be a terrible idea
09:12:57 <elliott> as far as performance goes
09:13:33 <Patashu> when are we getting 128 bit floating point units?
09:13:35 <elliott> Patashu: Elliottcraft just uses a fixed-point sixty-four-bit integer with four bits of ... decimal.
09:13:54 <Vorpal> elliott, s/uses/will use/
09:14:16 <elliott> 1,073,741.82 kilometres in every direction ain't bad.
09:14:20 <Patashu> wouldn't that have awful rounding off errors if you were heading in any non-orthogonal direction
09:14:35 <elliott> Patashu: The player position is stored with more precision in memory
09:14:48 <elliott> Everything is just rounded upon serialisation
09:15:24 <elliott> Hmm, I suppose I could use full sixty-four bit coordinates and then use an additional sixteen bits or so for fractional stuff
09:15:42 <elliott> Since most things don't have such precise positions
09:15:49 <elliott> <elliott> 1,073,741.82 kilometres in every direction ain't bad.
09:15:53 <elliott> This was both positive and negative, BTW
09:16:04 <elliott> Err, wait, did I fuck it up
09:16:30 <elliott> 1.1529215 × 10 to the power of 15 kilometres
09:16:39 <elliott> (That's for sixty-bit + four-bit)
09:17:10 <oklopol> 1.1529215 * (10 to the power of 15 kilometres)
09:19:35 <elliott> Patashu: I'm not sure what you mean, anyway
09:20:12 <elliott> <Patashu> wouldn't that have awful rounding off errors if you were heading in any non-orthogonal direction
09:20:31 <Patashu> imagine I'm an object and I want to move a short distance at a 30 degree angle
09:20:37 <Patashu> how do you represent that without rounding errors?
09:20:44 <Patashu> rounding errors even worse than would be in floating points, btw
09:21:23 <elliott> Patashu: that only affects save/load
09:21:37 <elliott> I'm storing things with higher precision in memory, but nobody will notice the clamping on save/load :P
09:21:56 <Patashu> so when you save and reload, the co-ordinate system is moved to your new location as the origin
09:22:02 <Patashu> and once again you can walk XXX months before you'll see the far lands
09:22:26 <elliott> That would require, like, rewriting every single chunk file, I think.
09:23:23 <Patashu> Chunks could be referenced relatively
09:23:44 <Patashu> As in when you save you say 'ok this chunk is the new origin chunk and it's numbered N in X and M in Y, so I'll look near N and M for the next chunks'
09:23:48 <elliott> Wait, that's actually literally equivalent to using some form of bigfloat, it just pushes the problem to the chunk storage layer.
09:24:25 <Patashu> Hmm, yeah I suppose it is in a way
09:24:49 <elliott> I mean, it makes the in-memory storage fixed, but it still requires resolving it all on load
09:25:00 <elliott> And you couldn't walk from really far out to origin without running into FARRRR LANDS.
09:25:04 <elliott> Without saving and loading, I mean
09:25:12 <elliott> Patashu: Anyway, there'd be no far lands with fixed point
09:25:17 <elliott> Since precision is retained throughout the whole range
09:25:19 <Patashu> Yeah, it would just end abruptly
09:25:25 <elliott> Patashu: No, it would wrap around :)
09:25:26 <Patashu> How will you advertise an infinitely large world
09:25:45 <elliott> Patashu: I've half-jokingly considered putting stupid shit as the borders of the world.
09:25:54 <elliott> Like the ice mountains said to surround the flat earth.
09:26:23 <elliott> Patashu: Anyway, I can advertise way-more-infinite-than-Minecraft worlds, especially since I have a plan for arbitrary y coordinates too :P
09:27:27 <Patashu> write blocks until you reach the topmost one, then indicate you're done and move to the next x,z co-ordinate? generate higher y level chunks when your tower sticks up higher than 128 blocks?
09:28:01 <elliott> I'm not sure what that's supposed to mean; there might not be a topmost block -- or well, sure there will be, but there won't be a bottom most block.
09:28:05 <Vorpal> Patashu, or your mines go down more than 128?
09:28:10 <elliott> Just imagine a hashtable of (x/n,y/n,z/n) -> chunk
09:28:13 <elliott> Where / is integer division
09:28:27 <elliott> I can clump a bunch of chunks together in a single file and then rely on the filesystem for the rest
09:28:29 <Vorpal> elliott, why a hashtable, why not an octtree?
09:28:33 <Patashu> ah, bottommost, good point
09:28:58 <elliott> Do octtrees even work for infinite spaces
09:29:00 <Vorpal> http://en.wikipedia.org/wiki/Octree
09:29:18 <Patashu> It doesn't look like it would
09:29:24 <Vorpal> elliott, a binary tree would work for an infinite range, you would just have to rebalance it
09:29:31 <Vorpal> of course that is one axis
09:29:51 <elliott> Or I could just do what I already plan :P
09:30:08 <Vorpal> elliott, the issue with hash table is that worst case performance is horrible :P
09:30:24 <Patashu> use a good hash algorithm then
09:30:30 <elliott> Vorpal: It's not a hash table
09:30:39 <elliott> Because it's your filesystem :P
09:30:42 <elliott> Yes, that was an explanatory tool.
09:30:45 <Vorpal> elliott, well B-tree is fine
09:31:03 <elliott> I'm literally just going to store world/x-y-z files :P
09:31:09 <elliott> That contain like sixteen by sixteen chunks each.
09:31:17 <elliott> Eight by eight by eight, say.
09:31:40 <elliott> Wait, that makes chunk files at least 128 megabytes :P
09:31:40 <Patashu> so, is your world generation algorithm going to extend infinitely far downwards?
09:31:46 <Patashu> will it just keep generating denser and denser compressed rock?
09:31:55 <Vorpal> elliott, you could do sparse files
09:32:14 <elliott> OK, how about four by four by four, then it's like thirty two megabytes, even if I have two bytes per block.
09:32:18 <Vorpal> elliott, add a header at the start to indicate which chunks are valid, then use fseek() to make the file sparse
09:32:20 <elliott> How big are mcregion's files anyway?
09:32:36 <elliott> Patashu: I have plans for various underworld type things with large lava-like caverns.
09:32:44 <elliott> If I have a Nether, it'll be at a certain block layer :P
09:32:48 <Vorpal> elliott, iirc they have 1024 chunks each or such
09:32:53 <Patashu> lava is cool. but would the generation be homogenous after a certain point?
09:32:56 <elliott> Vorpal: Yeah, but like approximate kilobyte/megabyte sizes
09:33:20 <elliott> Patashu: No reason biomes can't be vertical too.
09:33:37 <Vorpal> elliott, largest one I have is 6 MB
09:33:44 <Vorpal> elliott, iirc each chunk is gzip compressed
09:33:47 <Vorpal> or something like that
09:34:13 <elliott> Yeah, I'll probably gzip them before storage; storing them packed in memory isn't feasible, and RLE is a waste of time when I could just steal an algorithm
09:35:21 * elliott reads people taking Infinite Solutions seriously.
09:35:23 <Vorpal> elliott, wait a second, how would this work on @?
09:35:41 <elliott> Vorpal: How would what work
09:35:50 <Vorpal> elliott, would the OS do transparent gzip when writing out to disk after a hint?
09:35:57 <elliott> Serialisation is obviously overridable
09:36:12 <Vorpal> elliott, it didn't sound like that before
09:36:27 <elliott> Tricky though, in that you have to make sure it bijects properly
09:36:38 <Vorpal> elliott, well the gzip case is simple
09:36:40 <elliott> But there can obviously be a "gzip compression" function from serialisers to serialisers
09:37:13 <Vorpal> elliott, anyway it doesn't have to serialise to exactly the same does it? gzip decompression is speced, but decompression is not iirc
09:37:30 <Vorpal> meaning you can do various efficient ways to compress it
09:37:39 <Vorpal> speed/time tradeoffs etc
09:37:42 <elliott> I mean that you can't serialise all strings as "x"
09:37:49 <elliott> i.e., your serialisation has to include all aspects of the object
09:37:55 <elliott> (Apart from things not exposed publicly)
09:38:10 <Vorpal> elliott, metadata and such?
09:38:21 <elliott> It's not acceptable to hit the reset button and have everything break because an object doesn't serialise and restore properly
09:38:27 <cheater_> and our objects always reset upon serialization
09:38:49 <Vorpal> elliott, speaking of which I had level.dat corrupted on a local bukkit test server when I had a power failure
09:39:00 <Vorpal> elliott, seed changed and several chunks re-generated
09:39:22 <elliott> Vorpal: But I thought the example of losing power for orthogonal persistence was contrived?!!!?!?!?!!
09:39:27 <elliott> HOW COULD TROLLS MISLEAD ME SO
09:39:32 <Vorpal> elliott, I meant for mc :P
09:39:35 <Vorpal> elliott, not for your system
09:39:48 <elliott> Vorpal: I meant that tripping over your power cord is a common way used to explain the benefits of orthogonal persistence
09:40:04 <elliott> "EVERYONE USES UPS LOL AND ALSO, UPS IS PERFECT ALWAYS" is a common response.
09:40:10 <Vorpal> elliott, well in this case it was "fuck the electricity company"
09:40:24 <Vorpal> 3200 houses affected or something like that
09:40:30 <Vorpal> large part of this town anyway
09:40:45 <Vorpal> elliott, I wish I could afford an UPS
09:41:12 <elliott> Meh, they make noise and are bulky
09:41:23 <Vorpal> elliott, bulky is not an issue for me, noisy however is
09:41:34 <Vorpal> elliott, yeaaaah like where to connect MIDI? :P
09:41:37 <elliott> It's just a buzzing, I gather
09:41:41 <Vorpal> (midi over usb = fail)
09:42:04 <elliott> I'm sure you can get laptops with MIDI ports, anyway :P
09:42:07 <Vorpal> elliott, because of the latency. Especially since the latency isn't stable
09:42:19 <elliott> An Intel marketroid just took my laptop
09:42:47 <oklopol> okokokokokokokokokokokokokokokokoko
09:42:50 <Vorpal> elliott, I'm not sure that one has any hard latency requirements in the spec :P
09:43:27 <Vorpal> elliott, also usb isn't isolated, MIDI requires opto-isolators to be used at each end of the cable
09:43:30 <elliott> It's basically PCIe: The External Port, innit
09:43:34 <Vorpal> elliott, this decouples the circuits
09:44:13 <Vorpal> elliott, with midi cable I no ground "buzz", but with USB I get it. To the same electrical piano that is.
09:44:40 <elliott> LEARN TO WORK WITH THE BUZZ
09:44:51 <elliott> The first solution to any technical problem in music production is obviously to exploit it for all it's worth.
09:45:10 <Vorpal> elliott, yeah but it doesn't work for everything.
09:45:18 <elliott> Just make symphonies of buzz
09:46:42 <Vorpal> elliott, ground buzz doesn't sound like a SID chipset at all :P
09:46:56 <elliott> Afraid you might INNOVATE????
09:47:10 <oklopol> metal was born because guitar amps sucked
09:47:37 <elliott> <Vorpal> AND THAT'S WHY I MUST NOT YIELD TO SAID TEMPTATION
09:47:51 <elliott> i have this guitar amp that is so shitty, you have no idea.
09:47:55 <Vorpal> I don't like metal really
09:47:56 <elliott> it would almost fit in my pocket
09:48:02 <elliott> it's powered by a couple of batteries
09:48:07 <elliott> and it makes everything sound so terrible
09:48:08 <Vorpal> elliott, does it go to 10 or 11?
09:48:10 <elliott> i cannot believe it even exists
09:48:20 <oklopol> my amp so big it would destroy everything
09:48:40 <elliott> oklopol: I have a less crappy amplifier (although I'm not exactly sure why), I just have that monstrosity too :P
09:48:51 <elliott> Oh right, that theremin. GOTTA HAVE GOOD AMPS FOR THEREMIN
09:48:55 <oklopol> don't you use one for right
09:48:56 <Vorpal> elliott, what brand/model is it?
09:49:08 <elliott> I don't think it even HAS a brand.
09:49:14 <elliott> Does "made in China" count? Because it probably has a sticker on it saying that.
09:49:15 <oklopol> can you put like huge distortion on the theremin and make it sound just horrible
09:49:26 <elliott> oklopol: overdriven theremin is quite a thing
09:50:09 <Vorpal> elliott, suggestion: aplay /dev/sda
09:50:20 <Vorpal> elliott, NTFS sometimes sound quite good
09:50:31 <elliott> oh /dev/sda starts off really nice here
09:50:40 <elliott> crunchy sounds then a rapidly repeating beep
09:50:50 <elliott> ok you can't just stop the beep DEVELOP that shit man
09:51:09 <elliott> Vorpal: does aplay have seeking
09:51:10 <Vorpal> elliott, is it GPT or MBR?
09:51:17 <Vorpal> elliott, not that I'm aware of
09:51:23 <Vorpal> elliott, possibly it can start at an offset
09:51:28 <Vorpal> elliott, try listen to the partitions too
09:51:52 <elliott> huh, partition four sounds the same at the start
09:52:11 <elliott> was gonna play my swap for some fun
09:52:19 <elliott> Vorpal: sudo aplay /dev/mem <-- SAFEST THING POSSIBLE
09:52:50 <elliott> Aww, /dev/input/mice is not very fun sounding at all
09:52:58 <Vorpal> hm, my /dev/sda is a bit of whitish noise, then a second of quietness, then a rapid regular ticking that goes on for quite a while
09:53:11 <elliott> Didn't you send me a partition ogg once
09:53:19 <elliott> Oh /dev/core starts out good
09:53:22 <Vorpal> elliott, I don't have that file anyway
09:53:22 <elliott> But then just more lameo silence
09:53:37 <Vorpal> elliott, I don't even have the original NTFS partition it came from
09:53:41 <elliott> /dev/random is amusingly silent
09:54:17 <elliott> Oh /dev/sda2 is a nice thing
09:54:19 <Vorpal> elliott, actually /dev/sda sounds about the same as /dev/sda1 for me. So I guess it was the mostly empty /boot I listened too there... the clicking is probably the ext* superblock backups
09:54:31 <elliott> This has actual substance, I guess HFS+ is very musical
09:54:38 <elliott> Textural than toneful though
09:54:43 <Vorpal> whoa /dev/sda2 (root iirc) sounds nice
09:55:10 <Vorpal> elliott, no, it is only vagually like it, for a bit
09:55:38 <elliott> Dammit, I want to turn swap on just to experience that
09:55:45 <Deewiant> Compare BSD binaries to GNU, statically linked if possible
09:55:49 <Vorpal> elliott, well used swap (before switch to new computer) too
09:55:54 <elliott> Can I ask for an ogg of swap, or are you afraid I'll somehow reverse psychoacoustic compression and get your passwords ;)
09:55:56 <Vorpal> elliott, whoa there is some metal here
09:56:07 <Vorpal> elliott, I'll think about it
09:56:08 <elliott> I take it "metal" is your word for "noise"
09:56:19 <Vorpal> elliott, no, some of it sounds like overdriven guitar
09:56:22 -!- Phantom_Hoover has joined.
09:56:23 <Vorpal> there is quite a bit of noise too
09:56:29 <elliott> Oh, I actually like /bin/ls
09:56:39 <elliott> I mean, as far as atonal binary noise goes
09:56:54 <elliott> Assertion 'pa_atomic_load(&(s)->_ref) >= 1' failed at pulse/stream.c:1848, function pa_stream_disconnect(). Aborting.
09:56:54 <elliott> Aborted by signal Aborted...
09:56:54 <elliott> Assertion 'pa_atomic_load(&(s)->_ref) >= 1' failed at pulse/stream.c:1848, function pa_stream_disconnect(). Aborting.
09:56:54 <elliott> Aborted by signal Aborted...
09:56:58 <elliott> There were like five thousand of those errors
09:56:59 <Vorpal> elliott, /dev/sdb3 is similar, but different
09:57:31 <elliott> Playing raw data '/usr/bin/emacs' : Unsigned 8 bit, Rate 8000 Hz, Mono
09:57:39 <Patashu> are you guys going to make an album of this stuff
09:57:55 <Patashu> send the proceeds to charity
09:58:01 <Vorpal> I hit ext4 on my lvm listening
09:58:02 <elliott> Send the proceeds to GNU :P
09:58:06 <Vorpal> actual lvm is very quiet
09:58:20 <elliott> Machine code sounds disappointingly random
09:58:25 <elliott> Some nice flourishes of beeps here though
09:58:38 <elliott> It keeps interrupting the fuzz for some bleep soloing, I guess it's binary data
09:58:45 <Vorpal> elliott, empty ext2 has a more rapid pulse than empty ext4 btw
09:59:28 <Vorpal> elliott, my /usr/bin/emacs sounds quite nice for some bits
09:59:31 <elliott> vim sounds nicer than emacs
09:59:44 <elliott> I know a guy who'd listen to a box set of this
09:59:54 <Vorpal> wha... /usr/bin/soffice was short
10:00:18 <Patashu> how is binary data being interpreted as sound?
10:00:23 <Patashu> even wav has a header I think
10:00:29 <Vorpal> Patashu, Playing raw data '/usr/bin/soffice' : Unsigned 8 bit, Rate 8000 Hz, Mono
10:00:31 <elliott> Patashu: eight kilohertz, mono, unsigned
10:00:44 <Vorpal> you can change it with parameters to aplay
10:00:45 <elliott> -rwxr-xr-x 1 root root 6.4K 2011-01-29 06:11 /usr/lib/openoffice/program/soffice
10:00:48 <elliott> oh FFS, where's the real openoffice
10:01:04 <elliott> -rwxr-xr-x 1 root root 63 2011-01-29 05:39 /usr/lib/openoffice/program/swriter
10:01:06 <Patashu> so you could play the same file a large number of ways
10:01:15 <Vorpal> elliott, there is /usr/lib/libreoffice/program/oosplash.bin at least
10:01:37 <Vorpal> elliott, I think it is dlopened() by a wrapper basically
10:01:40 <elliott> Ah, it's /usr/lib/openoffice/program/soffice.bin
10:01:45 <elliott> libsofficeapp.so => /usr/lib/openoffice/program/../basis-link/program/libsofficeapp.so (0x00007f3712e5f000)
10:01:47 <Vorpal> no it isn't, that is way to short
10:01:50 <elliott> -rw-r--r-- 1 root root 503K 2011-01-29 06:59 /usr/lib/openoffice/program/../basis-link/program/libsofficeapp.so
10:01:54 <elliott> Where are you hiding the bloat
10:02:17 <Vorpal> elliott, why don't you have libreoffice?
10:02:25 <elliott> -rw-r--r-- 1 root root 13M 2011-01-29 06:59 libswlx.so
10:02:34 <elliott> Vorpal: You realise it's literally identical to go.oo
10:02:50 <Deewiant> find /usr/lib/openoffice -type f -exec du -h {} + | sort -g
10:02:53 <elliott> How surprising, OpenOffice sounds like shit
10:03:07 <Vorpal> elliott, hm /dev/input/mice is silent?
10:03:12 <Vorpal> even when moving the mouse I mean
10:03:24 <elliott> Yeah, I think you can't generate big enough values anywhere near quickly enough
10:03:28 <fizzie> /usr/lib/libreoffice/basis3.3/program/libswlx.so here is 12 megs.
10:03:31 <elliott> Just like /dev/random is silent but /dev/urandom isn't
10:03:35 <elliott> fizzie: Already found, see above
10:03:37 <fizzie> Ah, you found that too, yes.
10:03:59 <elliott> Vorpal: /usr/bin/ghostscript sure is short
10:04:26 <Vorpal> elliott, eh, you mean /usr/bin/gs ?
10:04:33 <Vorpal> I have no /usr/bin/ghostscript
10:04:42 <elliott> /usr/local/lib/ghc-7.0.4/ghc is the soundtrack to a life of purity.
10:04:46 <Vorpal> gs (1) - Ghostscript (PostScript and PDF language interpreter and previewer)
10:04:48 <elliott> The Haskell monks blast it all day at full volume.
10:04:57 <fizzie> -rw-r--r-- 1 root root 10346152 2011-04-01 16:35 /usr/lib/libgs.so.9.01
10:05:02 <fizzie> That's more of Ghostscript.
10:05:07 <elliott> lrwxrwxrwx 1 root root 2 2011-05-09 12:57 /usr/bin/ghostscript -> gs
10:05:09 <fizzie> Are you expecting it to be spooky?
10:05:40 <elliott> /bin/busybox sure is... busy.
10:05:42 <Vorpal> elliott, gs is NOT short
10:05:50 <elliott> -rwxr-xr-x 1 root root 6.2K 2010-09-22 01:50 /usr/bin/gs
10:06:35 -!- jcp|other has quit (Read error: Operation timed out).
10:06:39 <Vorpal> elliott, it is just noise on my system
10:06:43 -!- jcp has quit (Ping timeout: 240 seconds).
10:07:14 <elliott> Vorpal: It has nice breaks
10:10:01 <elliott> FLACs sound predictably random.
10:10:09 <Deewiant> Compare these: /usr/lib/perl5/core_perl/CORE/libperl.so /usr/lib/libruby.so.1.9.1 /usr/lib/libpython2.7.so.1.0 /usr/lib/libpython3.2mu.so.1.0
10:11:23 <Deewiant> If the music gets worse, that's probably not a good sign
10:11:40 -!- cheater_ has quit (Ping timeout: 255 seconds).
10:11:40 <elliott> Hmm, Python sounds like what talking to Guido must be like.
10:11:57 -!- jcp has joined.
10:12:29 <Deewiant> Well, assuming that Python should be cleaner than Perl etc
10:13:31 <elliott> Wow, I played this eight khz mono unsigned eight-bit raw file and it sounded exactly like the original
10:14:52 <elliott> nsearch.optim sounds The Best.
10:17:57 -!- javawizard has joined.
10:18:22 <elliott> debian-testing-i386-netinst.iso sounds boring
10:19:40 <elliott> OK are you going to do anything with that beat.
10:21:31 <Vorpal> elliott, nsearch.optim ?
10:21:52 <elliott> oerjan's nsearch, parallelised
10:21:56 <elliott> Vorpal: definitely listen to a debian ISO
10:22:01 <elliott> it is subtle but brilliant.
10:22:03 <Vorpal> elliott, don't have a copy around
10:22:16 <Vorpal> elliott, anyway, what is oerjan's nsearch?
10:22:25 <elliott> Searching for... something.
10:22:44 <Vorpal> elliott, searching for what? files? prime numbers?
10:22:50 <elliott> Deewiant: What's it sound like
10:23:07 <elliott> I don't have any big his here
10:23:29 <elliott> Don't really wanna pause Debian though
10:23:31 -!- cheater_ has joined.
10:24:50 <elliott> Shiro/Interpreter.hi is a brief but amazing work of art.
10:25:14 <Vorpal> elliott, how does it sound if rot13 is applied on it
10:25:40 <Vorpal> elliott, I mean, does it make any noticeable difference
10:26:12 <elliott> Depends how many characters are alphabetical :P
10:26:22 <Vorpal> elliott, well for Shiro/Interpreter.hi I meant
10:26:43 <elliott> dxsrNCNCXiNpjsFEoaoskNmdEPZykBhRioLyCLWLYwQpnSeUiuJTWfBygIkCpfcIoKZzvCRaMfeHKlgIRNLjlztLQyRGiprdpKwYTWbnbCQgvAnMXaoAXEvtmzHhnUJvrqAnsjBuDaYLCPHDfVfWDxprSaEIOAFeyzwGlRhlqqHIotJCbpKyELVnvsSHMzYduNmpvOwHZZPJwQlULtlRxESOsHTPhUVYYLzPWdfaXQZKbYwNGGINZzaJYUHFMZSEumJOrNwraMuUFbZhCYcjqocBdKeqRtfoHgNYphbRaTFpirbjkIkKylTBefQcmupblnokQhRptZqDAnrRRxXsRruZRtbuxrCrqvrHjwxPtdqJwwXzxJVZFPyzytrjHPelsccooPACOCBWovETJbjzfVqyLCldNhpvMHarRusUTDplfIArtbABCDEFGHIJKLMNOP
10:26:43 <elliott> QRSATBUCVDWEXFYGZHIJKLMNaObPcQdReSfTgUhViWjXkYlZmnopqrsatbucvdwexfygzijknopqrstuvwxyzKUpxuSzzuPUqaUUxeLjmzcvCxXAcYFhlVBTGVdRoSTJcdDsXROtlHZZLxcbvhBgMTqoqScncaCKkhxavyHTPFnxLlaPIqLcymAblXJXXBWdwQDUGlaJgzvUaXiHhBaUDeVlTZtncSUWoFZWZRuEOzZzUNBEveWZVrZeKXpJXNeCBdtzCCAcQDLDnGeAnHduAKJwbcKuOMlrRcqTEUhdLNyMTjkGgUIGrXSXECsYeSTYXspOYMetLlJlWJEVxhlaxddpdxsdVwZhtMShUainrejvGfmfWtIoYTLwoUkGoqgpsquOtGhbuczXNRBcPzJwrzwybLIzEuFXzdfgSnZoAnfnBpdSClByfDoZPhEvfaFhbD
10:26:43 <elliott> GKddBytHVISJOutHKbLyGRLKtMNsYJDgNcsCXxOnTwiPzQQjjpvvSRPRvYSRgIsTDCUZRVsfYueWXYYXkSXOZCBWbWoQkCBXYYXCWimwMVaabbElectPENdYZxeWVUsfVoRQqgKGyhPAzBGisDULjJUkgYlAulDggPnPmqcnKpoIDWpyFAphFqDESrezsIatBvUxsuUnvbKelwlAkCxfCLNHyPzghCUSMVwHnraEaYcEVeHcrJDRwuDyVGaPkpNwwfzYXQdqTgvsUIRplkTiZZmpcABCBDEFqozMDkKGHwTWkoEtneREpdHsMyIRauJuLCghIGFONsLAhnhgbMskKrDOxFKumxrLSyQymMqdgOZCvawUNOMEoQPQRSKTiMdUbyxwvutsrqpnmlkjihgfecZWVTOLHEBzoUIdRnSACDFGJKMNPymainShiroInterpr
10:26:48 <elliott> eterShiroFingerprintShiroFingerprintsShiroFungeSpaceShiroIPShiroMonadShiroTypesShiroUtilsShiroValueMaybeTbasebytestringcontainersfilepathghcprimintegergmpmtloldlocaleprocessrandomtimetransformersunixControlMonadInstancesGHCBaseGHCFloatGHCNumDataByteStringDataByteStringCharDataTimeCalendarGregorianDataTimeFormatParseDataTimeLocalTimeLocalTimeControlMonadTransErrorControlExceptionControlMonadDataBitsDataCharDataFunctorDataMaybeGHCClassesGHCEnumGHCE
10:26:53 <elliott> rrGHCIOExceptionGHCIOHandleGHCIOHandleFDGHCIOHandleTextGHCListGHCRealGHCShowPreludeSystemEnvironmentSystemExitSystemIODataMapSystemFilePathSystemFilePathPosixGHCOrderingGHCIntegerTypemergeByteStringrectangleToByteStringtextifycatchShirocurrentIPgoh
10:26:57 <elliott> A brief selection of the alphabetical strings in that file
10:27:03 <elliott> Big block of "InscoreInscoreInscoreInscore..." at one point.
10:37:20 <Vorpal> elliott, is that before or after rot13?
10:37:49 <elliott> After; GHC stores everything ROT encoded.
10:38:09 <Vorpal> elliott, but come on, "dxsrNCNCXiNpjsFEoaoskNmdEPZykBhRioLyCLWLYwQpnS" doesn't look terribly sensible even if cut up
10:38:27 <elliott> That will be from machine code or whatever :P
10:38:34 <Vorpal> elliott, oh right, a .hi is binary
10:39:14 <Vorpal> elliott, GPT or MBR, which one do you recommend?
10:45:47 <elliott> Vorpal: is this actual advice you're asking for
10:46:04 <Vorpal> elliott, possibly I will apply it yes
10:46:32 <fizzie> I would fake-suggest GPT, on the pretend-reason that it makes your disk more secure. (Since it then won't work in not-modern-enough systems.)
10:46:38 <elliott> Vorpal: MBR; it is supported by far more tools.
10:46:46 -!- cheater_ has quit (Ping timeout: 255 seconds).
10:46:48 <elliott> Vorpal: "As of 2010, most current OSs support GPT, although some (including Mac OS X and Windows) only support booting to GPT partitions on systems with EFI firmware."
10:46:55 <Vorpal> elliott, that precludes UEFI boot though
10:46:56 <elliott> So unless you want to use your EFI capability too...
10:47:11 <Vorpal> elliott, I do have EFI on the computer in question
10:47:15 <elliott> EFI is worse than the BIOS
10:47:21 <elliott> You don't need another OS before your OS
10:47:32 <Vorpal> elliott, what about openfirmware then?
10:47:39 <elliott> That's not an OS, that's a Forth
10:47:46 <elliott> Which is a perfectly cromulent low-level interface :P
10:47:59 <elliott> Compare Commodores booting into BASIC
10:48:26 <elliott> Vorpal: You should try coreboot
10:49:19 <Vorpal> elliott, well I'm not risking bricking the system
10:49:55 <fizzie> I think I had a coreboot-supported MB here somewhere.
10:50:10 <elliott> Vorpal: Not system, motherboard
10:50:17 <elliott> Cheapest part of any system, apart from like, the mouse
10:50:18 <Vorpal> elliott, nor the mobo :P
10:50:31 <Vorpal> elliott, anyway the sata cable is cheaper
10:50:51 <Vorpal> elliott, anyway coreboot doesn't support the mobo in question so...
10:51:05 <elliott> Hmm, I ought to start assembling my rig sometime
10:51:07 <fizzie> Then you just *make* it support it.
10:51:18 <elliott> WITH MORE RAM THAN VORPAL'S
10:51:32 <elliott> If I cannot get the best processor with infinite RAM completely passively cooled I will have failed miserably.
10:51:40 <Vorpal> elliott, sure, I'm happy with the amount I have. I don't need more. But I could fit in more if I needed.
10:51:40 <elliott> I will be forced to commit suicide.
10:51:51 <elliott> Vorpal: I WILL HAVE TO EXCEED YOUR MOBO'S CAPACITY THEN
10:52:01 <elliott> BTW, which CPU did you go with?
10:52:04 <Vorpal> elliott, that is 32 GB
10:52:23 <elliott> I should just get enough RAM that I can run absolutely everything from a RAM disk.
10:52:42 <Vorpal> elliott, I don't remember the model code off-hand.
10:59:33 -!- cheater_ has joined.
11:07:24 -!- elliott has left ("Leaving").
11:07:28 -!- elliott has joined.
11:39:32 -!- elliott has quit (Remote host closed the connection).
11:40:00 -!- elliott has joined.
11:40:14 <lambdabot> Phantom_Hoover: You have 4 new messages. '/msg lambdabot @messages' to read them.
11:40:35 <elliott> You could, y'know, look at recent changes.
11:42:58 -!- ais523 has joined.
11:43:25 <elliott> and here we see an expertly-executed example of the Drive-By Mindfuck
11:43:28 <ais523> Type mismatch: ais523 is not of type command
11:43:42 <elliott> ais523: no, but hi : person -> command
11:43:50 <elliott> I suppose that has to be value rather than person or something.
11:44:01 <elliott> Phantom_Hoover: church-turing thesis
11:44:05 <ais523> fwiw, Feather isn't of type command or expression, either
11:44:07 <ais523> and the sequence operator I have can only handle base types
11:44:32 <elliott> ais523: was that an actual error or do they look more like "?"
11:45:11 <Phantom_Hoover> ais523, is it telling that I have meta-deja vu from that exchange between you and elliott?
11:45:16 <elliott> it's not, just the rest of the article is kind of crappy too
11:45:32 <ais523> Phantom_Hoover: it's much what you'd expect from me/elliott banter
11:46:17 <Phantom_Hoover> elliott, well, it's certainly not a theorem, so he's correct by that standard.
11:47:18 <ais523> you know, I've got really good about not thinking about Feather
11:47:42 -!- elliott_ has joined.
11:47:52 <ais523> much like it takes me about three or four minutes to remember the rules of The Game
11:47:55 <elliott_> wow, it should /not/ be that easy to throw away data irreversibly
11:48:23 <elliott_> ais523: you should really set some time aside dedicated to going insane sometime
11:48:27 -!- elliott has quit (Read error: Connection reset by peer).
11:48:29 <elliott_> ais523: then you could get Feather over with nice and quickly
11:48:33 <elliott_> also, no, <power button> <enter>
11:48:43 <elliott_> but it shut down my computer instead
11:48:48 <elliott_> and threw away all my open programs
11:48:57 <ais523> OK, that's a great typo
11:48:59 <elliott_> another enter key would have thrown away any unsaved documents I had open, too, if I had any
11:49:09 <ais523> many programs will autosave in response to the sighup
11:49:13 -!- boily has joined.
11:49:28 <elliott_> gui programs will generally just ask you instead
11:49:40 <ais523> Emacs doesn't, even the GUI version
11:49:41 <elliott_> although I think <enter> is save for most of them
11:49:44 <ais523> nor does Nethack, or Firefox
11:49:48 <elliott_> but GNOME tends to be really hasty
11:49:55 <elliott_> and start asking whether you want to kill them
11:50:34 <elliott_> I wonder if it's actually possible for me to not think of ais as "ais"
11:50:42 <ais523> Phantom_Hoover: it's fine, shred?(1) isn't a real command
11:50:46 <ais523> and if it were, would probably prompt first
11:51:00 <elliott_> ais523: you should change your legal name to "ais DXXIII"
11:51:11 <Phantom_Hoover> ais523, you have a symlink to shred called shredd in the current directory.
11:51:23 <elliott_> ais523: but it preserves your heritage!
11:51:24 <ais523> I've used aisDXXIII in posts about INTERCAL before now
11:51:33 <ais523> Phantom_Hoover: nope, I removed . from the current directory
11:51:42 <elliott_> `addquote <ais523> Phantom_Hoover: nope, I removed . from the current directory
11:51:46 <HackEgo> 482) <ais523> Phantom_Hoover: nope, I removed . from the current directory
11:51:51 <ais523> elliott_: good catch, that's a great thinko
11:51:59 <Phantom_Hoover> You coincidentally have an enhanced version of shred called shred2.
11:52:06 <elliott_> elliott@katia:~/hello$ rm -rf .
11:52:07 <elliott_> rm: cannot remove directory: `.'
11:52:11 <ais523> apparently ESR uses . on path, some of thescripts he wrote required it
11:52:12 <elliott_> STOP ARGUING WITH ME I TOLD YOU TO REMOVE IT
11:52:18 <ais523> elliott_: rm is allowed to special-case .
11:52:31 <ais523> this is the same reasoning that allows it to special-case /
11:52:40 <ais523> on the basis that rm -r / inevitably has to remove . at some point
11:52:57 <ais523> I love the way that the BSD people were looking for a loophole in POSIX to allow rm -rf / to not work by default
11:53:09 <ais523> whereas the GNU people just did it, without caring that it probably violated the standard
11:53:25 <elliott_> http://esolangs.org/wiki/Schrodilang ;; heh, those categories
11:54:10 <ais523> yep, that's a nice touch
11:54:42 <ais523> hmm, [[Nandypants]], someone made a stupid BF derivative by mistake?
11:55:05 <ais523> people must really start thinking less imperatively
11:55:22 <ais523> I think any imperative tarpit will end up close to BF unless you go to a lot of effort to make it different
11:56:35 <ais523> elliott_: as for the Church-Turing thesis, there's a part of Gödel, Escher, Bach which lists about twenty different formulations of it
11:56:48 <lambdabot> Not in scope: `Data.Map.lookupWithDefault'
11:56:49 <ais523> some of which are trivially true, some of which are obviously only-on-faith, some of which are somewhere in between
11:57:06 <Vorpal> <ais523> I think any imperative tarpit will end up close to BF unless you go to a lot of effort to make it different <-- hm... what other imperative tarpits exist that are different?
11:57:08 <lambdabot> forall a k. (Ord k) => a -> k -> M.Map k a -> a
11:57:18 <ais523> Vorpal: I can't think of any offhand
11:57:23 <ais523> although I wouldn't be completely surprised if there was one
11:57:31 <elliott_> ?pl \x -> findWithDefault x x m
11:57:34 <ais523> I suppose MiniMAX is relatively different, although I'm not so certain it's imperative
11:58:23 <ais523> Malbolge isn't a tarpit
11:59:38 <Vorpal> ais523, a befunge98-inf-space tarpit could be made. Remove instructions until you get a small set that is still TC
12:01:00 <Vorpal> ais523, what about OISCs?
12:01:14 <ais523> I suppose that explains why MiniMAX is different, because it's an OISC
12:01:27 <ais523> an OISC can't be massively BF-like, because none of BF's instructions are TC by themselves
12:01:27 <Vorpal> and the befunge subset?
12:01:57 <ais523> I imagine a befunge subset would be rather larger than BF, due to p and g being the only way to get infinite memory, and those requiring coordinates and a separate stack
12:03:29 <elliott_> aww, lsystems were as easy to do in haskell as i suspected
12:04:02 <Vorpal> ais523, it wouldn't need the numbers would it? You could construct all numbers from 1 and - I think. 11- (0) 11-1- (-1) 11-11-1-- (0-(-1) = 1, can be extended to 2 and so on, but I can't be bothered)
12:04:18 <ais523> Vorpal: indeed, but it's still being rather complicated
12:04:29 -!- derrik has joined.
12:04:57 <Vorpal> ais523, you will need a stack and p and g. I suggest w for turning. You can feed it constant values to do fixed turning
12:05:13 <Vorpal> then we can dispose []<>^vx etc
12:06:31 <Vorpal> ais523, no need for string mode, simple byte based IO is enough etc. I guess I'll try to make a serious attempt at this perhaps...
12:07:04 <Patashu> 'w' pops a value and determines direction?
12:07:06 <ais523> Vorpal: it's still going to end up more complex than BF
12:07:30 <ais523> Patashu: I think it turns left or right depending on zero or nonzero
12:07:35 <Vorpal> Patashu, it does a<b and goes straight ahead if equal
12:07:36 <ais523> I can't remember which way round
12:07:42 <Vorpal> and turns left/right depending on which one is largest
12:07:45 <ais523> ah, it's positive/negative/zero?
12:08:00 <Vorpal> | and _ are the ones ais523 described
12:08:19 <Vorpal> do we need logical not hm? I guess that can be emulated with w
12:08:49 <ais523> Vorpal: | and _ don't do turn left and turn right, they turn in two specific directions depending on negative or positive
12:08:49 <elliott_> :t Text.ParserCombinators.Parsec.sepBy
12:08:50 <lambdabot> forall tok st a sep. Text.ParserCombinators.Parsec.Prim.GenParser tok st a -> Text.ParserCombinators.Parsec.Prim.GenParser tok st sep -> Text.ParserCombinators.Parsec.Prim.GenParser tok st [a]
12:08:57 <ais523> it's quite common to approach a _ from the left, for instance
12:09:00 <ais523> *depending on zero or nonzero
12:09:39 <Vorpal> duplicate top of stack shouldn't be needed
12:10:02 <Vorpal> (11-11-p11-11-g11-11-g should do the trick)
12:10:44 <Vorpal> can be used to swap, but I can't be arsed to write that one out
12:13:35 <Vorpal> ais523, I *think* this should be bf-complete " ,-1@gpw~" (quotes not part of string, but needed to show that space is included, otherwise wire crossing issue would probably arise)
12:13:37 <elliott_> http://esolangs.org/wiki/Black_and_white_and_read_all_over stupid
12:14:00 <ais523> Vorpal: you can probably arrange for commands to cancel each other out in each direction, thus not needing space
12:14:39 <Vorpal> ais523, possibly. Anyway it isn't that much larger than bf in number of instructions
12:15:30 <Vorpal> ais523, this would require befunge, not unefunge of course, since unefunge lacks w, instead I think it uses _ and # (and possibly j) to be able to branch
12:19:00 <elliott_> oolzybub and murphy programs are pretty
12:20:27 <Vorpal> !befunge98 11-11-1--.a,@
12:20:34 <elliott_> (. do (. if? not? exists/dynast 5 ,then
12:20:34 <elliott_> create/countably/many/dynasts #myself#, 5 .) .) ,then
12:20:34 <elliott_> (. for each prime /p*|p/ below #myself#+2 do
12:20:34 <elliott_> for each prime /q*|q/ below /p*|pp/+1 do
12:20:36 <elliott_> if? not? exists/dynast /p*|p|p/+/q*|q|q/ ,then
12:20:38 <elliott_> copy/dynast #myself#, /p*|ppp/, /q*|qqq/ .)
12:20:51 <Vorpal> !befunge98 11-11-1-11-1---.a,@
12:20:56 <Vorpal> !befunge98 11-11-1-11-1--.a,@
12:21:00 <Vorpal> !befunge98 11-11-1-11-1-.a,@
12:21:20 <Vorpal> !befunge98 11-11-1-1--.a,@
12:22:14 <Vorpal> !befunge98 211p11g11g..a,@
12:32:41 -!- pumpkin has quit (Remote host closed the connection).
12:32:52 -!- copumpkin has joined.
12:32:52 -!- copumpkin has quit (Changing host).
12:32:52 -!- copumpkin has joined.
12:34:17 <Vorpal> Deewiant, ais523, should the funge-space in this tarpit version warp around as usual or should an IP head out into the "void" forever instead?
12:34:56 <ais523> Vorpal: I doubt it matters, it depends a lot on what you consider a tarpit to be
12:35:00 <Patashu> wrapping sounds more useful
12:36:48 <elliott_> wrapping makes it less of a tarpit
12:38:32 <elliott_> ais523: Can I ask questions about VHDL of you in the form of an IRC log?
12:38:56 <ais523> elliott_: you're physically capable of doing so, certainly
12:38:59 <ais523> you may even get replies
12:39:07 <ais523> and I won't be offended by the attempt to ask
12:39:33 <elliott_> http://codu.org/logs/log/_esoteric-minecraft/2011-07-06 <-- /What I don't understand how to do/ onwards (it's mostly Vorpal telling me to ask you instead)
12:39:57 <elliott_> Vorpal: Yeah, but that doesn't actually help me go from "logical tree with clock input" => "MC circuit".
12:40:05 <elliott_> There is no "clock input" block in Minecraft.
12:40:31 <elliott_> ais523: (The context is a synthesiser for Redstone logic in Minecraft.)
12:40:35 <Vorpal> elliott_, that is where synthesis comes into it. And I have no clue how to write a program that does that.
12:40:39 <elliott_> (Which is basically just NOR wires.)
12:41:17 <Vorpal> elliott_, you need to synth D-flipflops and possibly SR-latches too
12:41:24 <ais523> elliott_: the usual trick, and the one VHDL is obviously intended to use (and I suspect the synthesizers use behind the scenes) is to split your circuit up into two different sorts of blocks: combinational logic (arbitrary logic with no time dependence), and 1-cycle delays
12:41:52 <Vorpal> ais523, what about gate delay then?
12:41:53 <ais523> in fact, FPGAs are made up out of elements that consist of a lookup table (with four or six bits of input), followed by an optional 1-cycle delay
12:42:15 <elliott_> ais523: Hmm, so I make a bunch of "sub-components" which are just pure logic trees involving no clock, and then I have connections like "Output X of block abc connected to input Y of block def with one cycle delay"?
12:42:18 <Vorpal> ais523, and how does it do latches then?
12:42:33 <ais523> Vorpal: normally the length of a cycle is chosen to be large enough that gate delay is irrelevant compared to cycle length
12:42:37 <Vorpal> elliott_, yes then you reduced it to a problem of wire routing
12:42:48 <ais523> elliott_: yep, pretty much
12:43:19 <ais523> now, if you're on a hardware system where gate delay is very large, or where clock routing would be difficult, it's normally better to make an asynchronous circuit rather than a synchronous circuit
12:43:28 <ais523> that doesn't require a separate clock at all
12:43:36 <elliott_> ais523: I would say "I'm still not sure how I go from a tree of expressions with a clock input to that form", but I suspect the answer is either "you don't" or "that's an entire research field and industry, here's a link to ten classic papers".
12:44:22 <ais523> elliott_: it's not actually masssively hard, as long as the expressions themselves aren't doing anything particularly nonstandard
12:44:26 <Vorpal> elliott_, how would you do latches in a tree of that form?
12:44:31 <ais523> and if they are, your synthesis tool normally shouts and you and spouts warnings
12:44:38 <ais523> Vorpal: a D latch is a one-cycle delay
12:44:47 <Vorpal> ais523, hm. What about SR-latch?
12:45:13 <ais523> it's ((output OR S) AND NOT R) followed by a one-cycle delay
12:45:21 <ais523> where "output" is the output of that delay
12:45:23 <Vorpal> elliott_, anyway you need to be able to calculate shortest clock cycle that would work I think.
12:45:25 <Phantom_Hoover> elliott_, erm, if you have a tree of expressions, how does time actually matter?
12:45:31 <elliott_> ais523: I have a feeling my components will look something like:
12:45:38 <elliott_> ais523: Where C could be a clock, say.
12:45:42 <elliott_> ais523: So literally as simple as it gets.
12:45:46 -!- pikhq has quit (Ping timeout: 250 seconds).
12:45:49 <ais523> elliott_: that syntax is confusing me, is it reverse VHDL?
12:45:51 <elliott_> I'll probably have a few other primitive logical operations to "simplify" things.
12:45:56 <elliott_> Phantom_Hoover: Because you can have a clock input.
12:45:56 <ais523> (VHDL does D <= A nor B nor not C)
12:46:09 <elliott_> ais523: Inputs are ABC, outputs are DEF.
12:46:17 <ais523> well, that's combinational
12:46:24 <ais523> no clock dependence there
12:46:26 <elliott_> Phantom_Hoover: In a file elsewhere, you specify that C gets a clock input.
12:46:39 <elliott_> You'd also specify literal Minecraft block locations for the other inputs and the final output of the main component.
12:46:43 <ais523> what you're doing wrong, compared to standard calculation, is making both edges of the clock relevant
12:46:51 <elliott_> Phantom_Hoover: "A nor B nor ~C" is a tree.
12:47:06 <elliott_> ais523: You're going to be shocked by me not quite understanding, I'm sure.
12:47:28 <ais523> elliott_: let's see... in ordinary circuit design, you make everything in the circuit update at the "leading edge" of the clock, when it changes from 0 to 1
12:47:34 <ais523> and have the change from 1 to 0 have no effect
12:47:53 <ais523> there are physical reasons why doing that is a good idea
12:48:00 <elliott_> I literally made that example up without thinking because Vorpal said to use a clock input ;)
12:48:08 <elliott_> Gah, ;) looks way sleazier than I always intend
12:48:23 <ais523> (Vorpal's mention of DDR memory is relevant, that's memory which uses both edges of the clock in order to go twice as fast as anything else on the board, it's a bit of a disgusting hack)
12:48:27 <Vorpal> elliott_, no I meant in general, not for purely combinatorial circuits of course
12:48:32 <elliott_> ais523: Well, with Minecraft there's fun things like the not gates burning out if you flip them too much.
12:48:32 <Phantom_Hoover> ais523, yeah, my suggestion was to do that but with the physics ticks as the clock.
12:48:53 <elliott_> Phantom_Hoover: Wait, is there still that sixteen block limit?
12:48:56 <ais523> anyway, the trick is to not use your clock input like other sorts of logic input
12:49:03 <ais523> elliott_: can you get around that by doing A nor A?
12:49:09 <ais523> or does that burn out too?
12:49:20 <elliott_> ais523: I think you can, but a not gate (one redstone torch) is a lot smaller.
12:49:24 <Vorpal> ais523, there are some stuff that uses two clocks 90 degrees out of phase, to do QDR
12:49:43 <Vorpal> ais523, and I think there is some insane memory used in gaming consoles (PS3 and such) that has octal data rate...
12:49:45 <ais523> that's even more of a disgusting hack, and likely causes all sorts of problems for the engineers making those things
12:49:50 <elliott_> Hmm, does fancy ASIC synthesis involve any kind of three-dimensional layout?
12:50:02 <elliott_> I have a feeling the kind of complexities involved here are super-super-exponential :)
12:50:03 <ais523> probably, even if it's just to cross wires
12:50:04 <Patashu> minecraft redstone is disgusting, no way around it
12:50:16 <elliott_> "Pack this circuit into a twenty by twenty by twenty box for me." "No. Argh. My brain. Stop. It hurts."
12:50:29 <ais523> standard ASIC synthesis techniques wouldn't like having to do that, but they'd be capable of doing it
12:50:41 <Vorpal> elliott_, no no, "here is the outline made out of intersecting cuboids that you have to fit it into"
12:50:45 <ais523> also, you really don't want to know how circuits are place and routed for FPGAs and ASICs in real life
12:50:55 <Patashu> to do a complex sequence of pistons you have to activate them with slight delay?
12:51:04 <ais523> so I'll tell you anyway: they get powerful computers to run overnight trying lots of placements with genetic algorithms, until it happens to fit
12:51:07 <ais523> and then just run with it
12:51:09 <ais523> the result is generally a mess
12:51:31 <Vorpal> ais523, for smaller ones in FPGAs it just takes a few minutes usually
12:51:40 <Vorpal> or do you mean the silicon layout?
12:51:47 <ais523> Vorpal: no, I mean that layout
12:51:59 <ais523> it takes just a few minutes for small programs, because the routing doesn't need to be very good to make it fit
12:52:02 <elliott_> ais523: Anyway, is this high-level type of design correct?: You define your combinatorial circuits and whatever as the main bulk of the thing, and then you have a separate file naming the "main" circuit, and giving the Minecraft block positions of where each input signal should come from, and where each output signal should go to
12:52:05 <ais523> the larger the program, the harder it is to fit it on the board
12:52:11 <elliott_> Obviously I'm still not sure how to do clocks, but that's the basic idea
12:52:23 <elliott_> Then you'd build buttons and levers and whatnot on top of it so you can actually use the inputs
12:52:25 <Vorpal> elliott_, how do you plan to do latches?
12:52:29 <ais523> elliott_: yep, that'd probably work
12:52:30 <elliott_> And, I dunno, noteblocks or doors or whatever at the outputs
12:52:31 <Patashu> what are you guys planning? minecraft circuit design?
12:52:37 <Patashu> oh, you're making a song creator
12:52:49 <ais523> elliott_: look up the "master/slave J/K flip-flop" somewhere
12:52:54 <elliott_> Patashu: I'm trying to figure out how feasible a Minecraft synthesis tool is :)
12:53:06 <Vorpal> ais523, I know what a J/K one is, but not what a master/slave J/K one is...
12:53:06 <elliott_> Vorpal: Do latches require any special handling?
12:53:09 <ais523> it's a standard circuit that you can make into various types of flip/flop
12:53:16 <Patashu> would a midi -> minecraft noteblock approximator be easier or harder
12:53:25 <Vorpal> elliott_, probably, do you plan to use VHDL syntax?
12:53:28 <ais523> Vorpal: it's basically a particular set of internals for a J/K, which has the advantage that it can be done entirely with combinatorial components
12:53:38 <elliott_> Vorpal: Dunno; if VHDL, definitely a subset.
12:53:47 <elliott_> And the actual layout file will be custom because it's, you know, Minecraft-specific.
12:53:58 <ais523> the clock speed is going to be freakishly low, but it's Minecraft so it probably doesn't matter
12:54:13 <Vorpal> elliott_, then look up how you define a process in vhdl, for sequential circuits. That is like a FSM written in VHDL basically
12:54:16 <elliott_> Sure it matters, you don't want your door opening two seconds after you hit your button
12:54:51 <elliott_> ais523: But yeah, how should I handle clock inputs if not through a regular logical input?
12:55:07 <ais523> it's just a regular logical input in terms of synthesis
12:55:14 <ais523> you just only use it as the clock input to a delay block
12:55:17 <ais523> and not in any other way
12:55:41 <Vorpal> ais523, err routing needs to be done so all parts get the clock at the same time
12:55:59 <ais523> Vorpal: actually, that's not strictly necessary as long as the clock is slow enough
12:56:07 <Vorpal> and in actual FPGAs I would guess that the clock wires are hard-wired, no?
12:56:09 <ais523> it's just that the more symmetrical the clock routing, the faster you can clock it
12:56:23 <elliott_> ais523: Would it be fair to say that a redstone synthesiser would be way beyond my knowledge and abilities of synthesis at this point? :-P
12:56:23 <ais523> and in actual FPGAs, there are hardwired symmetrical clock wires in order to help bring the clock speed up
12:56:32 <elliott_> "How hard can it be?", I thought. "It's just NOR gates."
12:56:33 <ais523> elliott_: I wouldn't say way beyond
12:56:51 <ais523> I'd say if you really cared about doing it, and focused on it for a few weeks, you could probably get there
12:56:54 <ais523> but you'd likely get bored first
12:57:05 <elliott_> That's just a general me-related assessment, nothing related to the project :P
12:57:10 <Vorpal> elliott_, if you just want combinatorial expressions without any state then yes, it is much simpler
12:57:21 <elliott_> Vorpal: Surely you can simulate state with the former.
12:57:32 <ais523> Minecraft seems pretty much perfectly suited for asynchronous design, actually
12:57:35 <elliott_> I just want delay handling and basic logics.
12:57:45 <ais523> but it has the downside of making the input programs harder to write
12:57:51 <elliott_> Without handling of time it's pretty much useless because you can't make circuits that actuall ydo aynthing.
12:58:02 <Vorpal> ais523, indeed, everything is clocked in a way, redstone updates on ticks of the game engine
12:58:14 <ais523> Vorpal: which would make the main problem of asynchronous design way easier to solve
12:58:17 <elliott_> ais523: Well, it can't be harder than the current method of creating redstone circuits (= manually designing and laying them out by hand)
12:58:21 <Vorpal> ais523, I think almost all my redstone circuits (some fairly complex) have been mostly asynchronous
12:58:32 <Patashu> I thought there was a redstone developer tool?
12:58:36 <Patashu> sounds better than 'by hand'
12:58:37 <ais523> you can rely on wires to transmit signals at a consistent rate
12:58:40 <Vorpal> I have done a few clocked ones, but usually only for some part
12:58:43 <ais523> what are the semantics of redstone, anyway?
12:58:48 <elliott_> Patashu: Probably just "Paint: The Redstone Edition"
12:59:01 <elliott_> ais523: NOR wires and a NOT torch, as I understand it
12:59:12 <elliott_> ais523: Plus signals only travel along a wire for sixteen blocks and then you need a repeater
12:59:12 <ais523> what do you mean by "NOR wires"?
12:59:16 <elliott_> Repeaters also have a delay setting
12:59:20 <Vorpal> ais523, well, the redstone wire transmits a wire instantly up to 15 blocks along the wire. Then you need to add a repeater (adds a 1 tick delay)
12:59:28 <Vorpal> if you want it going any further I mean
12:59:30 <elliott_> ais523: If you're up for opening a browser... http://www.minecraftwiki.net/wiki/Redstone_circuits
12:59:40 <Phantom_Hoover> <elliott_> ais523: NOR wires and a NOT torch, as I understand it
12:59:41 <elliott_> It summarises the mechanism briefly
13:00:10 <elliott_> You create the gate by laying wire, that's all that matters.
13:00:23 <Vorpal> ais523, then there are redstone torches, which are basically inverters. Can be used to make a NOR gate. You can make "connect wire-together" style OR of course, but that has the obvious disadvantage of flowing back into the inputs
13:00:26 <Phantom_Hoover> No, the gate needs a torch and a semiconducting block.
13:00:49 <Vorpal> Phantom_Hoover, "semiconducting block"?
13:01:44 <Vorpal> ais523, there are a number of quirks as well, like repeater in front of solid block doesn't just power the block, but actually powers through it. (can be used to make a physical OR or AND gate with pistons, that is quite a bit slower though)
13:02:11 <ais523> hmm, I think I prefer CUBE's way of doing things
13:02:21 <Phantom_Hoover> Vorpal, a lot of the edge cases are frankly nondeterministic.
13:02:24 <Vorpal> Phantom_Hoover, http://www.minecraftwiki.net/wiki/File:Pistongates.png <-- I seen those before (I made one of them)
13:02:28 <Vorpal> (not me who took the screenshot)
13:03:03 <Vorpal> <Phantom_Hoover> Vorpal, a lot of the edge cases are frankly nondeterministic. <-- some are deterministic and can be exploited
13:03:19 <elliott_> Yeah yeah, but that's not relevant to synthesis.
13:03:32 <Vorpal> Phantom_Hoover, yeah that depends on chunk boundary as far as I can tell
13:03:49 <Patashu> wow, chunk boundaries affect redstone processing?
13:04:21 <elliott_> I think we've successfully scared ais523 away.
13:04:42 <ais523> this Minecraft stuff is just too complex for me to visualise
13:04:49 <ais523> it seems like a particularly crazy set of primitives to use
13:04:53 <elliott_> ais523: It's not; Vorpal is overcomplicating things because he's Vorpal.
13:04:56 <Vorpal> elliott_, well.. library IEEE; using ... blah blah; entity foo is port (A,B,C: in std_logic; D, E, F: out std_logic) end foo;
13:05:17 <ais523> elliott_: based on the page you linked
13:05:34 <elliott_> ais523: They're also overcomplicating things because they're a minutiae wiki.
13:05:40 <Vorpal> architecture whatever of foo is begin D <= A nor B nor not C; E <= A nor not C; F <= A; end whatever;
13:05:49 <elliott_> I should have just referred you to Phantom_Hoover, GOD OF ALL EXPLANATION.
13:05:54 <elliott_> Vorpal: Wow well fuck that I'm using my own syntax.
13:06:04 <ais523> I noticed that page has a design for an edge-triggered D flip-flop, though
13:06:13 <ais523> which is the only sequential circuit you need
13:06:20 <ais523> and everything else can just be logic gates
13:06:21 <Vorpal> ais523, the issue with mc redstone is basically that there are quite a few edge cases. If you keep away from them it is quite simple
13:06:40 <elliott_> ais523: So I take it combinatorial circuits can't call out to other circuits? You have to lay it out more manually.
13:06:47 <Phantom_Hoover> ais523, OK, basically, torches can be placed on a block, and will power all blocks they are immediately adjacent to when on.
13:06:58 <ais523> elliott_: sure they can, as long as you know what you mean by "call out"
13:07:17 <Phantom_Hoover> If the block they're placed on is powered, the torch is deactivated.
13:07:25 <Vorpal> Phantom_Hoover, is that ground-torch or wall torch?
13:07:33 <ais523> the normal equivalent to function calls in VHDL is effectively just #define from C
13:07:38 <Vorpal> Phantom_Hoover, wall torch powers block below?
13:07:48 <ais523> you just have standard arrangements of wires, that you inline in more complicated versions
13:07:51 <elliott_> ais523: I mean e.g. foo(A,B) => C; begin C <= bar(A,B) nor A; end;
13:08:03 <elliott_> ais523: Yeah, I suppose inlining is basically the name of the game
13:08:07 <ais523> elliott_: yes, you just inline
13:08:11 <elliott_> ais523: At the end of it all there's only one circuit
13:08:17 <elliott_> With a bunch of fixed-position outputs and inputs
13:08:35 <Vorpal> elliott_, nope, that doesn't make sense. You do some wire connecting to an entity instead.
13:08:38 <ais523> well, /I/ don't just inline, because my whole Master's project (that lead into my PhD) was looking into ways to not have to inline
13:08:41 <ais523> but everyone else does
13:08:56 <Vorpal> functions are usually built in ones, like rising_edge(signal) iirc
13:09:12 <Vorpal> ais523, so how did you manage to not inline?
13:09:12 <ais523> Vorpal: actually, that's an abbreviation for signal'event and signal = '1'
13:09:25 <Vorpal> ais523, okay I was using signal as a variable name here
13:09:29 <Vorpal> forgot that it was a keyword
13:09:36 <ais523> I also forgot it was a keyword
13:09:36 <elliott_> <Vorpal> elliott_, nope, that doesn't make sense. You do some wire connecting to an entity instead.
13:09:41 <elliott_> Um, ais523 just said what I said made sense.
13:09:46 <Vorpal> ais523, I think it is?
13:10:00 <ais523> Vorpal: yes it is, I couldn't have forgotten it was a keyword if it wasn't a keyword
13:10:26 <ais523> Vorpal: as long as you know a function isn't being accessed from two places simultaneously, you can basically connect it to a multiplexer/demultiplexer
13:10:34 <ais523> hmm, I should so abbreviate that to mudem
13:11:03 <ais523> there's a lot of mathematical basis behind calculating when that optimisation is safe and when it isn't
13:11:43 <Vorpal> ais523, btw it is interesting how not (a xor b) is a == b (if a and b are single bits).
13:11:54 <ais523> why is that interesting?
13:12:04 <Vorpal> hm, I just think it is
13:13:18 <elliott_> Hmm, is "Q" usually used as the variable name for the final output of a logical operation?
13:13:30 <Vorpal> ais523, how do you make a monostable circuit in vhdl?
13:13:43 <ais523> same way you make any other time-dependent circuit
13:13:59 <Patashu> I want to know how too actually
13:14:05 <Phantom_Hoover> <elliott_> Hmm, is "Q" usually used as the variable name for the final output of a logical operation?
13:14:16 <ais523> a one-cycle monostable is simplest, it's just a one-cycle delay
13:14:22 <Phantom_Hoover> Clearly it's for charge, representing the charge passed through the wire.
13:14:28 <ais523> for a multiple-cycle monostable, it's probably clearest to use a counter
13:14:35 <ais523> or else a shift register
13:14:38 <ais523> depending on what you're trying to do
13:14:45 <elliott_> <elliott_> Hmm, is "Q" usually used as the variable name for the final output of a logical operation?
13:14:52 <ais523> counters are going to be better for long delays
13:15:01 <ais523> elliott_: my yes was an answer to your question about q
13:15:11 <ais523> Phantom_Hoover was joking, I think
13:15:32 <elliott_> Wow, what the hell is XNOR for.
13:15:48 <elliott_> Also: Is it just me, or is a good thirty percent of what synthesisers do common subexpression elimination?
13:15:53 <ais523> XNOR or EQV comes in useful sometimes
13:16:14 <ais523> elliott_: hmm, I didn't actually know they did CSE, although it wouldn't surprise me
13:16:24 <ais523> sometimes they do common subexpression introduction, for fanout reasons
13:16:33 <elliott_> ais523: Well, if your primary method of composing programs is inlining...
13:16:42 <elliott_> ais523: "An XNOR gate can be constructed from four NOR gates implementing the expression "(A NOR N) NOR (B NOR N) where N = A NOR B"."
13:16:47 <elliott_> ais523: Surely at the lower level, N would be inlined here?
13:16:56 <elliott_> And thus it would be up to CSE to find out that it didn't have to construct two identical (A nor B) gates.
13:17:07 <ais523> elliott_: actually, it all gets converted into lookup tables
13:17:21 <ais523> it'll see there's only two inputs, and just put the truth table for an XNOR right into the FPGA
13:17:33 <ais523> FPGAs aren't based on NOR/NAND behind the scenes
13:17:52 <Vorpal> ais523, how is a lookup table constructed in silicon hm...
13:17:58 <elliott_> ais523: Well OK yes but redstone is.
13:18:06 <elliott_> ais523: Maybe I should convert it all to lookup tables and then convert it back to redstone.
13:18:14 <ais523> elliott_: yep, so standard synthesis techniques wouldn't map directly onto Minecraft
13:18:28 <ais523> what causes a redstone torch to burn out?
13:18:34 <elliott_> I have a feeling that making that := construction do anything but introduce a macro-esque thing is a Bad Idea.
13:18:40 <elliott_> (I mean, relying on it to not duplicate things.)
13:18:43 <Vorpal> <ais523> what causes a redstone torch to burn out? <-- toggling too fast
13:18:49 <ais523> Vorpal: ah, that makes sense
13:19:06 <elliott_> Vorpal: I really hate Notch for that.
13:19:12 <elliott_> "Hmm... a virtual world... anything is possible..."
13:19:13 <Vorpal> ais523, I think it is basically to stop lag killing the game. Toggling every third cycle seems to work fine.
13:19:21 <elliott_> "I know! I'll introduce arbitrary physical limitations!"
13:19:32 <Vorpal> elliott_, like... falling too far kills you?
13:19:37 <Patashu> there's a bukkit plugin for redstone chips
13:19:41 <Patashu> but that's not esoteric anymore
13:19:47 <Vorpal> Patashu, there are several iirc
13:19:54 <Patashu> redstonechips, craftbook...
13:19:57 <ais523> yep, I was thinking that it was probably going to be something to do with preventing circuits taking up too much processor power
13:20:20 <Vorpal> Patashu, I "love" how craftbook has a NOT-chip that is larger than a pure redstone inverter
13:20:30 <Patashu> it's probably for consistency
13:20:37 <Patashu> like if you put a craftbook chip down and realize 'darn, I actually need NOT'
13:20:41 <Vorpal> on the other hand, craftbook *does* have some useful ones. Like light detector, water detector, and so on
13:21:05 <ais523> Patashu: it reminds me of the 0-ohm resistors you can buy
13:21:09 <Vorpal> the IO ones are moderately useful in craftbook. PRNG too.
13:21:19 <ais523> in case you happen to need a wire with the form factor of a resistor, say for wire-crossing on PCBs
13:21:26 <Patashu> I've suggested a circuitry system for terraria that involves wireless connections only, to < 1309976515 323147 :Gregor!Gregor@codu.org PRIVMSG #esoteric :Something has gone terribly amiss on Codu :P
18:22:03 <elliott_> confidence in prgmr rising and rising
18:22:08 <elliott_> IM GETTING MY FIRST MONTH OF PRGMR FREE
18:22:35 <Phantom_Hoover> <oklopol> but the mouse was struggling till the end, is it just like mouse reflexes?
18:23:13 <Vorpal> <elliott_> confidence in prgmr rising and rising <-- you are kidding right?
18:23:30 <Phantom_Hoover> I'm guessing the nervous system that controls the twitches is disabled after higher brain functions.
18:23:55 <Vorpal> elliott_, so you won't get prgmr next time I guess
18:24:05 <elliott_> Vorpal: nothin' wrong with them
18:24:41 <Vorpal> elliott_, you didn't get your vps yet
18:25:29 <oklopol> Phantom_Hoover: maybe we should tell the youtube people that only the hamster's nervous system was tortured. although probably torturing a large logical gate constitutes a horrible thing to do if it comes in a cute container.
18:26:00 <Gregor> `addquote <oklopol> ... only the hamster's nervous system was tortured. although probably torturing a large logical gate constitutes a horrible thing to do if it comes in a cute container.
18:26:05 <HackEgo> 483) <oklopol> ... only the hamster's nervous system was tortured. although probably torturing a large logical gate constitutes a horrible thing to do if it comes in a cute container.
18:26:11 <oklopol> Phantom_Hoover: well at least i have some looping going on
18:26:37 <Phantom_Hoover> oklopol, somehow I doubt that hamsters are a fixed boolean gate.
18:26:46 <oklopol> but i think the twitching system is.
18:27:53 <oklopol> probably it's like incredibly complicated, but it certainly doesn't seem very interesting.
18:28:07 <oklopol> but i guess that doesn't really matter when discussing how bad it is to torture it
18:28:39 <oklopol> because for instance torturing people without IO is considered horrible (even more horrible than torturing those with IO)
18:29:10 <oklopol> although different rules apply to humans so that's a bad example
18:29:18 <oklopol> Phantom_Hoover: you mean at torturing?
18:29:55 <oklopol> they are at least as cute as mice
18:30:09 <oklopol> so i don't think it's that unethical if they torture mice
18:30:50 <monqy> http://www.google.com/search?q=ugly%20cat&tbm=isch
18:30:52 <oklopol> i wish someone would write these rules down in a nice and accessible way, it has taken me years and years to deduce them from listening to idiots
18:36:35 -!- Gregor has set topic: TOPIC: Are hamsters Turing-complete? | Logs: http://codu.org/logs/_esoteric/ and http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
18:36:56 <elliott_> <monqy> http://www.google.com/search?q=ugly%20cat&tbm=isch
18:37:20 <elliott_> `addquote <oklopol> [...] only the hamster's nervous system was tortured. although probably torturing a large logical gate constitutes a horrible thing to do if it comes in a cute container.
18:37:21 <HackEgo> 483) <oklopol> [...] only the hamster's nervous system was tortured. although probably torturing a large logical gate constitutes a horrible thing to do if it comes in a cute container.
18:37:54 <oklopol> the problem with that is every idiot in the planet wants to repeat what Phantom_Hoover said when they see it
18:38:30 <oklopol> i'm not saying you're an idiot
18:38:44 <Phantom_Hoover> Yeah, I'm just wondering which thing you're referring to.
18:38:52 <oklopol> just the says the large logical gate
18:39:16 <oklopol> i mean it's funny but it's kind old
18:39:32 <oklopol> humor. humor is kinda old after this many years.
18:40:29 <Phantom_Hoover> In other news, someone on /r/AskScience thinks Minkowski space is hyperspace from Star Wars.
18:40:52 <pikhq> Is there any relation at all?
18:41:37 <Phantom_Hoover> The most often-used Minkowski space is the 3+1 dimensional one, which is a hyperspace by one definition.
18:41:58 <Gregor> Phantom_Hoover: Not the Star Wars one though ;P
18:42:04 <Phantom_Hoover> oklopol, well, no, it's a maths thing used in physics.
18:42:06 <pikhq> Yes, but Star Wars "hyperspace" is nothing more than advanced phlebotinum.
18:42:19 <Gregor> And yet, subspace is BETTER.
18:42:30 <pikhq> Gregor: That's Star Trek.
18:42:44 <Gregor> Like I said: Better :P
18:42:48 <pikhq> ... No argument there. :P
18:42:49 <Phantom_Hoover> pikhq, yes, please stop lecturing me on things you know damn well I understand.
18:43:45 <pikhq> Phantom_Hoover: ... I was lecturing?
18:44:37 <Phantom_Hoover> pikhq, you were about to launch into one of your "hey let me tell you all about this thing you just brought up", even though I know perfectly well what the difference is.
18:45:01 <pikhq> Phantom_Hoover: Actually, no, I wasn't.
18:45:28 <pikhq> There's really nothing more to be said about Star Wars "hyperspace". It's advanced phlebotinum. Absolutely nothing else *exists* about it.
18:45:57 <Gregor> pikhq: Related: http://codu.org/tmp/doubletie2.jpg
18:46:02 <Phantom_Hoover> oklopol, so yeah, it normally means R^4 with a weird distance metric.
18:46:18 <pikhq> Gregor: T3h awesome.
18:46:27 <Gregor> I have invented the future of neckties.
18:47:34 <pikhq> According to the documentary "Back to the Future", it will be custom to wear multiple ties in a mere 4 years.
18:48:00 <Gregor> OK, you're the second person to mention that, I guess I need to find that scene :P
18:48:07 <pikhq> http://images.wikia.com/bttf/images/1/19/Mockfry.jpg
18:49:04 <Gregor> On a scale from one to ten, my doubletie style is far, far better than that :P
18:49:25 <Vorpal> <Gregor> pikhq: Related: http://codu.org/tmp/doubletie2.jpg <-- Is that two different ties in one?
18:50:15 <pikhq> God. 2015 is 4 years from now. Where's my flying Delorean?
18:51:13 <Gregor> Two works well because humans are all symmetrically :P
18:51:14 <Phantom_Hoover> The past just keeps coming up to us and tries to make us feel guilty.
18:51:34 <elliott_> `addquote <Phantom_Hoover> pikhq, living in the future sucks. <Phantom_Hoover> The past just keeps coming up to us and tries to make us feel guilty.
18:51:35 <HackEgo> 484) <Phantom_Hoover> pikhq, living in the future sucks. <Phantom_Hoover> The past just keeps coming up to us and tries to make us feel guilty.
18:51:42 <Vorpal> Gregor, but yours are intertwined anyway
18:51:57 <Gregor> Vorpal: Yeah, but to get them that way I have to wrap them 'round my neck somehow.
18:52:03 <Gregor> Vorpal: And the way I do that is one in each direction.
18:52:08 <Gregor> Vorpal: Any other way would create an imbalance.
18:52:13 <Phantom_Hoover> `addquote <Phantom_Hoover> pikhq, living in the future sucks. <Phantom_Hoover> The past just keeps coming up to us and trying to make us feel guilty.
18:52:14 <Vorpal> Gregor, ah so two 4 then, two at front, two at back
18:52:15 <HackEgo> 484) <Phantom_Hoover> pikhq, living in the future sucks. <Phantom_Hoover> The past just keeps coming up to us and trying to make us feel guilty.
18:52:32 <Vorpal> Gregor, like the idea?
18:52:42 <Vorpal> Gregor, you know you have to try it
18:53:07 <Vorpal> Gregor, anyway isn't having only one tie imbalanced?
18:53:33 <Gregor> Vorpal: Yeah, half of what goes into tying a tie is about balancing it again.
18:54:30 <Gregor> Anyway, the point is that doubleties rule and >=tripleties will have to wait 'til at least 2015 :P
18:55:02 -!- Lymee has quit (Ping timeout: 255 seconds).
18:55:58 <Vorpal> Gregor, hm... what about ties all around?
18:56:18 <Vorpal> probably the actual mechanism for them being attached to you would have to be modified
18:56:35 <Vorpal> I mean, it would likely be bulky otherwise
18:57:16 <Gregor> Here I go and invent the future of neckties.
18:57:24 <Gregor> And everybody's like "Oh we want the future of the future of neckties"
18:57:46 <oklopol> i'm not, all i'm saying is you shouldn't wear a tie at all
18:58:02 <oklopol> the future is about taking your clothes off, not putting more of them on
18:58:15 <Vorpal> Gregor, have you tried wearing it like in back to the future?
18:58:52 <Gregor> Vorpal: That doesn't even make any sense with a normal collar ... hell, it barely makes sense with a modified collar, you'd need to clip them for them to not get in each others' way and they'd always make you look stout.
18:59:21 <oklopol> Gregor: imo tie number two doesn't show enough, it might as well just be coloring on tie #1.
18:59:37 <oklopol> you don't see its glans for instance
18:59:46 <Gregor> oklopol: But it adds /texture/ as well as color.
18:59:49 <oklopol> well you won't with a suit anyway i guess
18:59:56 <Vorpal> Gregor, anything wrong with stoutness?
19:00:26 <Gregor> Vorpal: If you're >6ft tall, you can probably afford to look a bit stout, otherwise you should be aiming in the other direction :P
19:00:42 <Vorpal> Gregor, what is that in SI?
19:01:21 <Vorpal> Gregor, 1.8? that is short :P
19:01:52 <oklopol> i'm 1.8 and i consider myself pretty short
19:01:52 <Vorpal> actually last I checked I was 1.895, which means I should round it to 1.9
19:02:14 <oklopol> in europe, everyone's just tiny
19:02:48 <Vorpal> Gregor, are we unusually tall? I thought that was a myth
19:02:56 <oklopol> everything's a myth, everything is true
19:03:02 <Vorpal> I mean, you surely have tall people in US too
19:03:10 <Vorpal> there are short peoples here in Sweden as well
19:03:15 <Gregor> Vorpal: The average is taller.
19:03:29 <Vorpal> I know someone in my age who is like 1.5-1.6 or so
19:03:38 <Gregor> I'm (I guess) about 1.77m, and slightly above average for American men.
19:03:53 <Vorpal> wait that preposition was a Swedishism right?
19:04:02 <Vorpal> it isn't "in my age" in English is it?
19:04:30 <oklopol> Gregor is just kind of a wank
19:04:31 <Gregor> "in my age group" would be right in some circumstances, but just "my age"
19:04:33 <Vorpal> Gregor, what is the correct way to say it then, someone who is about as old as you are
19:04:46 <Vorpal> Gregor, with no preposition for the latter?
19:04:47 <Gregor> "about my age" to emphasize that it's an estimate.
19:05:00 <Gregor> "I know someone about my age who ..."
19:05:17 <oklopol> sorry i'm not actually reading what Vorpal is saying
19:05:21 <Vorpal> "i min ålder" is idiomatic in Swedish, but obviously not in English
19:05:27 <elliott_> Vorpal would not believe my height :P
19:05:38 <Vorpal> elliott_, I know you are short, forgot how short.
19:06:10 <Gregor> But he's also probably still at a growin' age.
19:06:16 <Vorpal> elliott_, you aren't fully grown yet though. The person who I mentioned above is.
19:06:21 <olsner> I was also short when I was 8
19:07:12 <Gregor> I was like 10ft tall when I was 8. I shrank. A lot.
19:07:18 <Vorpal> olsner, oh so was I, I was only second tallest in my class in school :P
19:07:27 <Vorpal> I forgot how tall that was though
19:07:50 <oklopol> "in my age" is most certainly correct english but mostly as in "in your age i already had a job" but when talking to yourself
19:08:07 -!- Lymee has joined.
19:08:32 <Gregor> oklopol: That's "at your age" or "at my age", not "in your age" or "in my age". "In <something> age" would be talking about age in the sense of an epoch of time.
19:08:39 -!- BeedaWeeda has joined.
19:08:39 -!- BeedaWeeda has quit (Changing host).
19:08:39 -!- BeedaWeeda has joined.
19:08:51 <monqy> when i was your age
19:08:54 <Gregor> Like "in my age" would probably mean "in the era of my youth"
19:09:56 <Gregor> Long story short: oklopol lies, trust those who natively speak English and its over-the-pond derivative.
19:10:31 <oklopol> you can certainly say things like "you shouldn't do that in your age"
19:10:38 <Vorpal> besides, even I feel short sometimes. At the local Aikido club there is one guy who I estimate is about 2 meters tall.
19:10:46 <elliott_> <Vorpal> elliott_, you aren't fully grown yet though. The person who I mentioned above is.
19:10:56 <elliott_> i'm a few inches taller than my mother, so don't get too hasty :)
19:11:01 <Vorpal> Gregor, well he is definitely above average up here
19:11:13 <Gregor> Vorpal: 2m is above average (nearly?) everywhere :P
19:11:47 <Vorpal> elliott_, well I'm taller than both my parents (who are already rather tall)
19:11:56 <Vorpal> Gregor, how tall are you?
19:12:01 <Phantom_Hoover> <oklopol> you can certainly say things like "you shouldn't do that in your age"
19:12:05 <Gregor> In metric, I guess about 1.77m
19:12:11 <Vorpal> Gregor, ah, quite short
19:12:24 <Gregor> Vorpal: SLIGHTLY TALL >_<
19:12:29 <Vorpal> Phantom_Hoover, it was a language mixup indeed
19:12:39 <Gregor> Phantom_Hoover: I've given up :P
19:12:57 <oklopol> i'm sure i'll find a use that sounds okay
19:13:06 <Gregor> Short Mother, the new gangsta' rap hit by monqy.
19:13:16 <oklopol> you people just lack imagination
19:13:21 <Gregor> oklopol: I told you one :P
19:13:35 <oklopol> "<Phantom_Hoover> I've never heard 'in' used that way." <<< me neither, what does that have to do with anything
19:14:17 <oklopol> Gregor: but not a whole sentence that sounds good
19:14:52 <Gregor> In my age, we entertained ourselves by pushing a hoop with a stick down a dirt road.
19:14:53 <olsner> Gregor: 1.77m isn't quite "short" just because Vorpal says so, but it's not exactly tall either... untall perhaps
19:16:26 <oklopol> "you shouldn't do that in your age" is rather hard to interpret
19:16:42 <Gregor> Y'know, I'll bet that hoop-with-a-stick game is actually really friggin' difficult.
19:16:51 <Gregor> I guess it depends on the shape of the hoop.
19:17:02 <Gregor> If it's like a hula-hoop, it'd be nigh on impossible.
19:17:03 <olsner> the average is 1.815m apparently
19:17:19 <Gregor> olsner: Average where?
19:17:57 <Vorpal> <Gregor> Y'know, I'll bet that hoop-with-a-stick game is actually really friggin' difficult. <-- hm?
19:18:12 <Gregor> oklopol: Well, coulda been Scandinavia, or all the Nordic countries.
19:18:25 <Gregor> Vorpal: Where you push a hoop with a stick, trying to keep it upright.
19:19:09 <Vorpal> Gregor, I'm not familiar with that game
19:19:21 <Gregor> oklopol: "<Gregor> I guess it depends on the shape of the hoop. <Gregor> If it's like a hula-hoop, it'd be nigh on impossible."
19:20:10 <Vorpal> W|A on "average human height in Sweden": Input interpretation: "human | height | Sweden | highest point"
19:20:18 <Vorpal> "Assuming a list | Use multiplication instead"
19:21:22 <oklopol> Gregor: usually it's like a bike wheel
19:21:43 <Gregor> Well, that's better than a hula-hoop ...
19:21:43 <oklopol> i mean without the actual tire
19:21:52 <Gregor> Then that's a lot easier, yes.
19:22:01 <Gregor> Because it's actually relatively stable upright.
19:22:24 <Gregor> oklopol: Why do you have so much experience with hoop-and-stick? :P
19:22:34 <oklopol> well exactly as stable as one with the tire if it's moving, point is you can actually do something with the stick
19:22:50 <oklopol> Gregor: my fetish: learning pointless skills
19:23:23 <elliott_> `addquote <Gregor> oklopol: Why do you have so much experience with hoop-and-stick? :P <oklopol> Gregor: my fetish: learning pointless skills
19:23:24 <HackEgo> 485) <Gregor> oklopol: Why do you have so much experience with hoop-and-stick? :P <oklopol> Gregor: my fetish: learning pointless skills
19:23:48 <oklopol> i have actually tried that only once but there's really nothing to learn
19:25:58 <oklopol> Gregor: okay i give up, can you make "in your age" make sense as well? :D
19:26:31 <oklopol> maybe just the same way but that sounds just kind of weird
19:26:45 <Gregor> oklopol: In my age, we entertained ourselves by pushing a hoop with a stick down a dirt road; in your age, you entertained yourself with heroin and prostitutes.
19:27:07 <oklopol> hmm right like when HE was a kiddo
19:27:31 <oklopol> btw i saw my first prostitute about a week ago
19:27:56 <elliott_> `addquote <oklopol> btw i saw my first prostitute about a week ago
19:27:57 <HackEgo> 486) <oklopol> btw i saw my first prostitute about a week ago
19:27:59 <Gregor> Is "saw" a euphemism here :P
19:28:19 <oklopol> they were usually kind of ugly
19:28:45 <oklopol> i (literally) saw some cute ones in germany of all places, but i was not alone so didn't try
19:29:08 <oklopol> ..."try" because sex is so hard to get right.
19:29:43 <Gregor> With a legit partner, sure. With a prostitute, not so much :P
19:30:08 <elliott_> lesson learned: partners make sex unneccessarily difficult
19:30:50 <elliott_> good thing my partner is an ex con........... SEX con.........
19:31:09 <oklopol> have you lost the bet yet?
19:31:20 <oklopol> wait what were the rules, can you take it up the old blackie?
19:31:45 <elliott_> if im still a virgin by seventeen you give me money, hint, you are going to be giving me money
19:32:12 <oklopol> and i'm asking what is considered virginity
19:33:10 <oklopol> okay i thought i got tachycardia but it was just the neighbor playing music
19:33:12 <Vorpal> elliott_, wait what? oklopol gives money to people who are virgins at a certain age?
19:33:40 <oklopol> yeah Vorpal i'm not giving you bonus for being virgin at 20
19:33:55 <Vorpal> oklopol, what about 22?
19:34:18 <oklopol> i'm not sure i could feed the whole channel
19:34:18 <Vorpal> oklopol, anyway I has already been 17
19:35:06 <oklopol> "anyway I has already been 17" is actually more valid english than your earlier sentence, since it's actually in use by many interesting people
19:36:51 <oklopol> in your age you probably don't hear much as a general i have my own grammar type of thing, but it seems to be a relatively common swedishism
19:37:24 <oklopol> anyway 22 is nothing compared to SOME PEOPLE i know who are still virgins
19:39:57 <Vorpal> oklopol, so why wouldn't elliott_ be a virgin by 17? the odds are in his favour
19:40:18 <oklopol> well let me let you in on it
19:40:23 <oklopol> everyone else ignore me for just a little bit
19:41:03 <oklopol> so Vorpal see i'm actually a devout christian and i'm trying to keep him a virgin until he gets married
19:41:34 <oklopol> with most people on the channel i have some sort of technique of doing this, with elliott it's an open bet
19:41:45 <oklopol> with you, well, i really didn't have to do anything
19:41:52 <oklopol> okay everyone can unignore me now
19:42:11 -!- azaq23 has joined.
19:42:19 <oklopol> Vorpal: could you please tell them?
19:42:31 <oklopol> i don't wanna be silent :\
19:43:03 <oklopol> thank god i was ignored because i certainly didn't want anyone in on *that*
19:44:03 <elliott_> <Vorpal> oklopol, so why wouldn't elliott_ be a virgin by 17? the odds are in his favour
19:44:04 <Gregor> What are you trying to do :P
19:44:12 <oklopol> Gregor: trying to get people to unignore me
19:44:15 <elliott_> <oklopol> and i'm asking what is considered virginity
19:44:18 <elliott_> we hashed out the entire definition
19:44:21 <Gregor> `echo It's echo, genius :P
19:44:37 <Vorpal> <oklopol> i wanna be hurd <-- gnu hurd?
19:44:41 <oklopol> `echo please unignore me now okay, says oklopol
19:44:42 <HackEgo> please unignore me now okay, says oklopol
19:45:24 <Vorpal> <elliott_> gee thanks :D <-- well come on, you are a geek.
19:45:45 <oklopol> Gregor: `echo is kind of silly
19:45:53 <Gregor> oklopol: Dood ... it's UNIX >_<
19:46:05 <olsner> who's ignoring the oklo?
19:46:15 <elliott_> Vorpal: geek =/= socially retarded
19:46:22 <elliott_> i happen to be socially retarded, but they're not the same thing.
19:46:26 <oklopol> olsner: everyone ignored me for a while
19:46:33 <Gregor> elliott_: No, more like geek (subsetof) socially retarded :P
19:47:01 <oklopol> i'm neither a geek nor socially retarded, i'm just kind of stupid
19:47:17 <oklopol> olsner: well then you're an asshole i guess :(
19:47:26 <oklopol> olsner: don't tell anyone what you heard plz
19:47:27 <monqy> i ignored oklopol when he told me to ignore him
19:48:01 <monqy> i did not heed his command
19:48:13 <monqy> i heard the whole thing
19:48:14 <Gregor> `run ln -s /bin/echo bin/say
19:48:15 <olsner> oklopol: heard? I saw text but heard nothing
19:48:22 <Gregor> `say lulstupidcommands
19:48:35 <oklopol> Gregor: thanks, that's actually possible to guess
19:48:50 <oklopol> unlike echo, what the fuck is that supposed to mean
19:49:36 <Gregor> Except that `echo is quite guessable if you know what HackEgo is :P
19:50:27 -!- CakeProphet has joined.
19:50:27 -!- CakeProphet has quit (Changing host).
19:50:27 -!- CakeProphet has joined.
19:50:43 <oklopol> Gregor: well i know, didn't actively remember because it's so incredibly uninteresting
19:50:43 <olsner> flip some consonants in that name and you'll get HagEcho
19:51:00 <oklopol> olsner: now there's something i can understand
19:51:01 -!- Lymia has joined.
19:51:02 <elliott_> <Gregor> elliott_: No, more like geek (subsetof) socially retarded :P
19:51:06 <CakeProphet> foldl, applied to a binary operator, a starting value (typically the left-identity of the operator), and a list, reduces the list using the binary operator, from left to right
19:51:14 <CakeProphet> the idea of having two different identites intrigues me.
19:51:50 <oklopol> i saw the most horrible geek, he was like the most geek geek ever and he was at this party and he was being such a geek and everyone was like wow now that guy's a geek
19:51:53 <oklopol> i tell the best stories i know
19:53:04 <oklopol> his shirt looked like one of those star trek shirts although it was slightly different
19:53:10 <olsner> geekhood and social retardation may be correlated but loads of people have either without having both
19:54:01 -!- Lymee has quit (Ping timeout: 246 seconds).
19:57:18 <oklopol> i usually try to tell people i'm a mathematician as fast as possible so they know i'm a geek
19:58:10 <oklopol> people have very different reactions really
19:58:10 <Gregor> I say I'm an informatician.
19:58:52 <Gregor> #1 reason to use the word "informatics" instead of "computer science": Nobody thinks they know what informatics means, whereas people think they know (but in fact do not know) what computer science means :)
19:59:10 <olsner> my title is "Developer" ... I guess I'm a programmer
19:59:28 <Gregor> #2 reason: Nobody asks you to fix their computer if you tell them you're an informatician.
19:59:30 <oklopol> same with math really, could someone supply me with the math version of informatics
19:59:53 <oklopol> i actually told this norwegian woman i do math
20:00:05 <oklopol> oh that's cool, i'm reading a book on numerology
20:02:49 <olsner> ok, I now proclaimed me a Certified WOMM Certification Engineer
20:04:59 <oklopol> oh and then there was another norwegian who was like "wow i love math, i remember when our math teacher taught us that one is not actually REALLY one!"
20:07:05 <oklopol> just think about it, the one thing she has committed in her memory about WHAT MATH REALLY IS ABOUT is some misunderstanding of set theory of her teacher's
20:07:19 <oklopol> or whatever, i don't really know what her teacher had misunderstood
20:07:46 <elliott_> <Gregor> I say I'm an informatician.
20:07:55 <elliott_> i kind of like "computing theorist" but it sounds really pretentious :D
20:08:05 <monqy> computing theorist is good
20:08:47 <oklopol> i guess i could just say i study informatics as well, ca theory is just computer science anyway
20:09:14 <oklopol> says majority voting of unis at least
20:10:01 <oklopol> what if i started saying i study symbolic dynamics
20:10:27 <oklopol> (the theory of CA when you only run them for a single step.)
20:11:01 <oklopol> (but same topology, measures and techniques)
20:12:05 <oklopol> (and has more mathy content because you it mixes well with linear algebra when you take the n states as the basis of R^n)
20:12:48 <oklopol> mm i love talking about math
20:13:10 <oklopol> i could just barely drag myself out of the university because there was just so much math there
20:16:36 <oklopol> what does "symbolic dynamics" sound if you don't know anything about anythign?
20:16:52 <Vorpal> <elliott_> i happen to be socially retarded, but they're not the same thing. <-- there is a correlation though I would say
20:17:53 <Vorpal> <oklopol> unlike echo, what the fuck is that supposed to mean <-- that is a what the command is called on *nix, and on DOS too iirc. And so on.
20:17:57 <olsner> Vorpal: I already said there's a correlation
20:18:03 <oklopol> Vorpal: obviously i know that
20:18:05 <Vorpal> olsner, yes saw that a bit down
20:18:12 <Vorpal> oklopol, so what was the issue with "echo" then
20:19:16 <oklopol> obviously i couldn't guess it or no one would've asked me what i was doing
20:19:34 <Phantom_Hoover> <oklopol> unlike echo, what the fuck is that supposed to mean
20:20:00 <oklopol> "<oklopol> unlike echo, what the fuck is that supposed to mean" <<< um, that's like the most used command for that... come one man learn ur stuffs....
20:20:17 <oklopol> what a social retard that oklopol
20:27:02 <oklopol> bisexuals are people too...
20:27:03 <elliott_> `addquote <oklopol> such a famous bisexual <Phantom_Hoover> Yeah, like Marlon Brando. <Phantom_Hoover> And Caligula. <Phantom_Hoover> And... Keeley Hawes? <Phantom_Hoover> I feel cheated by Ashes to Ashes now.
20:27:04 <HackEgo> 487) <oklopol> such a famous bisexual <Phantom_Hoover> Yeah, like Marlon Brando. <Phantom_Hoover> And Caligula. <Phantom_Hoover> And... Keeley Hawes? <Phantom_Hoover> I feel cheated by Ashes to Ashes now.
20:34:00 <oklopol> ...wait was that a frog on my floor
20:34:05 -!- Lymia has changed nick to Lymee.
20:34:39 <oklopol> i swear i saw something jump in the air
20:35:53 -!- boily has quit (Ping timeout: 276 seconds).
20:36:58 <oklopol> i have to go to the office
20:37:17 -!- BeedaWeeda has quit (Ping timeout: 264 seconds).
20:37:52 -!- BeedaWeeda has joined.
20:37:53 -!- BeedaWeeda has quit (Changing host).
20:37:53 -!- BeedaWeeda has joined.
20:40:37 <Phantom_Hoover> oklopol and offices, two things which could not be more opposed.
21:03:11 -!- Tritonio has joined.
21:49:09 -!- pumpkin has joined.
21:49:09 -!- pumpkin has quit (Changing host).
21:49:09 -!- pumpkin has joined.
21:51:01 -!- Lymia has joined.
21:51:55 -!- copumpkin has quit (Ping timeout: 240 seconds).
21:52:17 -!- pumpkin has changed nick to copumpkin.
21:53:01 -!- Lymee has quit (Disconnected by services).
21:53:01 -!- Lymia has changed nick to Lymee.
22:21:12 <elliott_> Vorpal: What happens if you synthesise (a <= not a)
22:29:57 -!- Lymee has quit (Read error: Connection reset by peer).
22:30:47 -!- Lymee has joined.
22:32:22 <elliott_> Phantom_Hoover: Erm, it has no "after time", so I presume it's just a halt-and-catch-fire scenario.
22:48:39 -!- pikhq_ has joined.
22:51:17 -!- pikhq has quit (Ping timeout: 255 seconds).
22:54:23 -!- Lymee has quit (Ping timeout: 260 seconds).
22:54:43 <pikhq_> I haven't a clue what best to do right now.
22:55:13 <pikhq_> A recruiter from Google emailed me.
22:55:17 -!- Sgeo_ has joined.
22:56:14 -!- Sgeo has quit (Ping timeout: 255 seconds).
22:56:27 <pikhq_> I have no idea how best to say "I am currently a student, but please feel free to hire me." :P
22:56:56 -!- Tritonio has quit (Quit: Leaving).
22:59:05 <elliott_> the day pikhq_ discovered spam
23:00:54 <Vorpal> <elliott_> Vorpal: What happens if you synthesise (a <= not a) <-- no idea
23:02:46 <pikhq_> elliott_: Piss-poor spam. What sort of spammer uses an @google.com address and gives the phone number of Google's main campus?
23:04:59 <monqy> i dunno a bad one????
23:06:33 -!- Lymee has joined.
23:07:03 -!- NihilistDandy has quit (Remote host closed the connection).
23:10:13 <pikhq_> It just seems so utterly improbable yet legit.
23:10:57 <Phantom_Hoover> pikhq_, you can totally trust us to give you a reference.
23:21:09 -!- myndzi\ has joined.
23:21:09 -!- myndzi has quit (Read error: Connection reset by peer).
23:32:54 -!- elliott_ has quit (Ping timeout: 258 seconds).
23:34:02 -!- Lymee has quit (Ping timeout: 255 seconds).
23:36:50 -!- Phantom_Hoover has left ("Leaving").
23:36:54 -!- Phantom_Hoover has quit (Quit: Leaving).
23:47:04 -!- Lymee has joined.